圖像采集是安全和監(jiān)控視頻鏈中最關(guān)鍵的部分,,這是因?yàn)閷?duì)于從視頻流提取有效信息的圖像信號(hào)處理能力是與獲取的圖像質(zhì)量密切相關(guān)的,或許看似深?yuàn)W,,其實(shí)本質(zhì)上是傳感器質(zhì)量和傳感器輸出處理質(zhì)量的組合,。安全監(jiān)控系統(tǒng)的發(fā)展趨勢(shì)是圖像處理功能向網(wǎng)絡(luò)邊緣遷移-即移到攝像機(jī)里面, 靠近傳感器,?!?/span>
靈活性和效率是產(chǎn)品開發(fā)周期中的最高目標(biāo)。本文探討了在FPGA內(nèi)針對(duì)CMOS圖像傳感器的微控制器和信號(hào)處理單元的整合,。就其性質(zhì)而言,,FPGA和微控制器相當(dāng)靈活,但問(wèn)題是使用這些器件是否會(huì)形成一個(gè)有效率的設(shè)計(jì),?
一般而言,,一個(gè)簡(jiǎn)單的規(guī)則是用FPGA取代標(biāo)準(zhǔn)的微控制器不能夠產(chǎn)生一個(gè)節(jié)約成本的替代方案,。只有不能通過(guò)在微控制器內(nèi)集成外設(shè)來(lái)滿足設(shè)計(jì)的邊界條件情況下,FPGA的解決方案才變得更加具有吸引力,,例如PWM通道的數(shù)量,,計(jì)數(shù)器/定時(shí)器或I/O端口的數(shù)量。
同樣,,DSP算法轉(zhuǎn)移至FPGA可顯著提升數(shù)據(jù)吞吐量和控制功能的執(zhí)行速度,。然而,可能會(huì)有一些靈活性方面的損失,。不過(guò),,通常DSP開發(fā)人員可以利用FPGA的優(yōu)勢(shì),因?yàn)檫@些功能可以用VHDL或Verilog HDL來(lái)描述并直接用硬件實(shí)現(xiàn)。即使一些模塊是預(yù)制的IP模塊,這個(gè)任務(wù)仍然是集成這些模塊到一個(gè)完整的設(shè)計(jì)之中,。
Helion是一家致力于利用FPGA和DSP從事圖像信號(hào)處理領(lǐng)域開發(fā)的公司。他們的核心知識(shí)在于驅(qū)動(dòng)和接口至CMOS圖像傳感器,,動(dòng)態(tài)擴(kuò)展和進(jìn)行信號(hào)預(yù)處理到TFT的領(lǐng)域。使用Helion系統(tǒng)意味著決定圖像質(zhì)量的很多功能可以直接在攝像機(jī)中實(shí)現(xiàn),。根據(jù)系統(tǒng)要求,,這些解決方案基于DSP,FPGA或兩者兼而有之,。
Helion已經(jīng)選擇了萊迪思半導(dǎo)體公司的低成本系列FPGA技術(shù),。LatticeXP2和MachXO是非易失器件,單芯片解決方案特別適用于緊湊的攝像機(jī)設(shè)計(jì),。由于LatticeXP2包括RAM塊和DSP模塊,,可實(shí)現(xiàn)最佳圖像處理計(jì)算。如果只需要一個(gè)簡(jiǎn)單的傳感器和控制功能,,MachXO是最節(jié)省成本的解決方案,。萊迪思還有SRAM FPGA系列,LatticeECP2,、ECP2M和ECP3,。這些器件中還包括DSP塊,以及1.5MBit至 5.3MBit內(nèi)部存儲(chǔ)器的“M”類型,。
Helion的大多數(shù)項(xiàng)目也使用了32位微控制器-LatticeMico32,,它是免費(fèi)提供的,,采用開發(fā)環(huán)境為開放源代碼許可證模式。這種軟核的主要特點(diǎn)是使關(guān)鍵控制路徑的時(shí)間更少,,通過(guò)FPGA的數(shù)據(jù)是直接通過(guò)獨(dú)立的布線資源,?!?/span>
用Mico System-Builder (MSB)軟件構(gòu)建該項(xiàng)目的特殊Mico32配置,裝配各種可用元件,,包括用戶的特定IP模塊,。對(duì)于這些IP模塊和用戶特殊的外設(shè)的互連,Mico32 使用按照Wishbone規(guī)范操作的總線接口,。 MSB自動(dòng)互連設(shè)計(jì)的內(nèi)部元件,,當(dāng)所需的IP塊都在MSB內(nèi)時(shí),無(wú)需編寫VHDL或Verilog HDL就能完成FPGA設(shè)計(jì),?!?/span>
圖1 Mico System-Builder屏幕
一個(gè)簡(jiǎn)單的例子可以說(shuō)明基于Mico32方法的優(yōu)勢(shì)。對(duì)于圖片位置的控制,,通過(guò)I2C總線用外部微處理器給FPGA中的顯示控制器規(guī)定路線,。總共有256個(gè)控制和參數(shù)寄存器,。為了避免電視干擾出現(xiàn),,通過(guò)I2C寫的參數(shù)必須在消隱期間處理。數(shù)據(jù)集輸入一致且可以被激活時(shí),,該處理器釋放控制寄存器,。進(jìn)一步通過(guò)寄存器,處理器獲得當(dāng)前顯示控制器的行數(shù),。
這些功能可以在FPGA設(shè)計(jì)內(nèi)直接解決,。針對(duì) IC2寄存器組的監(jiān)控,設(shè)計(jì)人員需要IC2從器件(slave),、I/O端口,、狀態(tài)機(jī),并復(fù)制這些參數(shù),,針對(duì)訪問(wèn)IC2從器件(slave)的內(nèi)部存儲(chǔ)器接口,,提供仲裁。對(duì)于用VHDL或VerilogHDL開發(fā)FPGA所花費(fèi)的時(shí)間相對(duì)比較多,,代碼的可重用性受限于HDL編碼控制器,。
另一種Helion Mico32解決方案利用已經(jīng)由萊迪思MSB提供的元件:I2C從器件(slave)、GPIO,、存儲(chǔ)器,、DMA和用戶特殊的元件,諸如端口監(jiān)控到啟動(dòng)存儲(chǔ)器傳輸,。MSB提供了針對(duì) “共享總線”或” Slave Side-Arbitration “配置器件的功能,,這意味著以正確的形式自動(dòng)產(chǎn)生仲裁。針對(duì)在MSB中組合這些元件,,使用這種方法在幾分鐘之內(nèi)就可產(chǎn)生FPGA代碼,。 于是針對(duì)Mico32,,可以編寫C代碼,用所提供的調(diào)試手段進(jìn)行檢查,。所有的元件都很容易重復(fù)使用,。
用這個(gè)例子,更多為數(shù)據(jù)路徑而準(zhǔn)備的IP模塊可以組合在MSB中,,例如,,色彩流水線或圖像傳感器接口。對(duì)于圖像傳輸,,Slave Side-Arbitration是最佳的,,因?yàn)?/span>MSB產(chǎn)生自己的Wishbone總線。用這種方法,,數(shù)據(jù)流不是限于通過(guò)微控制器和仲裁邏輯,,在一個(gè)實(shí)體中所有元件均是自動(dòng)連接的,即對(duì)片上系統(tǒng)設(shè)計(jì)的理想情況,。MSB中更復(fù)雜的設(shè)計(jì)說(shuō)明了這個(gè)觀點(diǎn),,系統(tǒng)的描述大大超過(guò)在第一個(gè)例子中用VHDL或VerilogHDL的要求。
圖2 Mico32調(diào)試屏幕
基于MSB提供的簡(jiǎn)捷和節(jié)省時(shí)間的處理方式,, Helion整合了圖像傳感器驅(qū)動(dòng)電路的大部分和以其自己的元件形式的數(shù)據(jù)預(yù)處理,,這些元件可作為IP核?!〔⒁阅K化的方式和MSB中驗(yàn)證的功能設(shè)想和實(shí)現(xiàn)系統(tǒng),。圖3為一個(gè)實(shí)例的框圖。
圖3系統(tǒng)實(shí)例
除了MSB,,對(duì)于整個(gè)系統(tǒng)開發(fā)環(huán)境,,還需要萊迪思的ispLEVER FPGA設(shè)計(jì)軟件。由MSB產(chǎn)生的Verilog HDL代碼用ispLEVER進(jìn)行綜合和實(shí)現(xiàn),。該工具中包含了Reveal邏輯分析儀,,調(diào)試μC的代碼后,用戶選擇對(duì)數(shù)據(jù)進(jìn)行故障分析或?qū)崟r(shí)控制路徑進(jìn)行檢查,。Reveal提供了大量的觸發(fā)和跟蹤選項(xiàng),。完整的圖像處理不是完全逼真的,對(duì)μC的源代碼級(jí)調(diào)試不能包括FPGA中的所有事件或數(shù)據(jù)序列,。然而使用觸發(fā)信號(hào)和邏輯組合的方式,, Reveal可以實(shí)時(shí)記錄時(shí)序并將結(jié)果傳送至主機(jī)。例如,,如果設(shè)計(jì)人員考慮設(shè)置Mico32位的端口位作為Reveal的觸發(fā),,并將此與控制的特定條件和數(shù)據(jù)信號(hào)相結(jié)合,就可能用μC軟件很快地切換邏輯分析儀,,這也適用于調(diào)試器,。
總結(jié)
MICO System Builder能夠分擔(dān)通常所做的工作。FPGA設(shè)計(jì)人員指定自己的IP模塊并集成這些組元件至MSB,。該軟件開發(fā)者將項(xiàng)目中的元件連接在一起,,針對(duì)Mico32開發(fā)C/C++程序。通過(guò)靈巧的劃分與分配數(shù)據(jù)流到自己的總線結(jié)構(gòu),,實(shí)現(xiàn)高的數(shù)據(jù)吞吐量,。在開發(fā)階段除了靈活性之外,微控制器帶來(lái)了FPGA高效率的優(yōu)點(diǎn),。另一方面在許多情況下,,控制的效率和預(yù)處理允許跟隨信號(hào)鏈后進(jìn)一步進(jìn)行DSP處理,或選擇更小更節(jié)省成本的DSP,。