李 華
(商洛學(xué)院電子信息與電氣工程學(xué)院,陜西商洛726000)
基于FPGA的圖像發(fā)生器的設(shè)計
李 華
(商洛學(xué)院電子信息與電氣工程學(xué)院,陜西商洛726000)
為了驗證圖像采集系統(tǒng)的正確性,設(shè)計了一套基于FPGA的圖像發(fā)生裝置。系統(tǒng)將規(guī)律變化的圖像集成到FPGA片內(nèi),結(jié)合連續(xù)變化的行頭和幀頭信息,按照一般圖像探測器輸出的格式進行輸出,從而達到檢驗采集系統(tǒng)的目的。系統(tǒng)以一片Xilinx公司FPGA作為硬件運行平臺,使用Verilog-HDL硬件描述語言并采用自上而下的模塊化設(shè)計對整個系統(tǒng)進行硬件描述。試驗結(jié)果表明,所設(shè)計的圖像發(fā)生器產(chǎn)生的圖像邊緣銳利、規(guī)律性強,系統(tǒng)復(fù)雜度低、易于硬件實現(xiàn),具有較好工程應(yīng)用價值。
FPGA;Verilog-HDL語言;圖像探測器;仿真
隨著多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展的速度不斷提高,各領(lǐng)域中數(shù)字圖像處理被廣泛地應(yīng)用,相應(yīng)的對于圖像處理的要求也隨之不斷提高。一方面,圖像處理依靠軟件實現(xiàn)的實時性、高效性效果欠佳;另一方面,高速發(fā)展的微電子技術(shù),促使基于各種硬件平臺的數(shù)字圖像處理的優(yōu)勢愈加明顯[1]。特別是近些年,隨著可編程邏輯器件技術(shù)的進步,基于FPGA的圖像處理得到了長足的發(fā)展[2-3]。本文正是在這種大背景下,對基于FPGA硬件實現(xiàn)的圖像發(fā)生器設(shè)計進行了深入研究,為將來開展以FPGA為核心圖像處理系統(tǒng)的新型數(shù)字圖像處理算法的開發(fā)、應(yīng)用及硬件實現(xiàn)奠定了穩(wěn)固的基礎(chǔ)。
本文圖像發(fā)生系統(tǒng)的原理框圖如圖1所示。系統(tǒng)以一片F(xiàn)PGA為核心,+5V供電,僅配置外圍輔助電路就可以根據(jù)用戶需要完成不同分辨率和幀頻的圖像輸出功能。其中,F(xiàn)PGA使用了Xilinx公司的Virtex-4,型號為XC4VSX55。程序存儲器選用一片Xilinx公司的大容量FLASHXCF32P。FPGA正常工作需要三種電源,分別是+2.5 V、+3.3 V和核電壓+1.2 V,其中,+2.5 V和+3.3 V由+5 V經(jīng)LDO變換而來,而+1.2 V與+5 V壓差較大,因此,為了考慮變換效率,此處選用DC/DC進行變換。晶振選用64 MHz,以適應(yīng)較寬的頻率應(yīng)用范圍。
圖1 圖像發(fā)生器原理框圖
系統(tǒng)的工作過程為:當(dāng)FPGA上電穩(wěn)定后,根據(jù)默認的分辨率和幀頻進行工作,通過LVDS向外界輸出并行圖像數(shù)據(jù)。由于本設(shè)計使用的是并行輸出模式,輸出圖像由幀有效、行有效、像素時鐘和數(shù)據(jù)組成。當(dāng)用戶需要改變輸出圖像的分辨率或幀頻等參數(shù)時,通過RS422進行設(shè)置,同時,在設(shè)置成功后,F(xiàn)PGA會通過RS422接口返回工作狀態(tài),以告訴用戶是否設(shè)置成功。
本設(shè)計選擇的Virtex-4系列FPGA采用90 nm工藝設(shè)計的高性能平臺級邏輯器件,該產(chǎn)品是基于新的高級硅片(ASMBL)架構(gòu),有550萬個邏輯門,位列全球邏輯密度最高的器件之一,適合于對邏輯門需求較高的設(shè)計應(yīng)用。
Xilinx公司推出的ISE軟件開發(fā)平臺是針對Xilinx的FPGA和CPLD器件開發(fā)的軟件工具,涵蓋了軟件開發(fā)、基于HDL硬件語言設(shè)計、驗證、調(diào)試等設(shè)計流程。ISE的開發(fā)流程包含設(shè)計輸入、綜合、仿真、實現(xiàn)和下載,包括了FPGA開發(fā)的全過程[4]。
本設(shè)計主要是結(jié)合Xilinx公司的XC4VSX55和ISE進行開發(fā)。
2.1 圖像發(fā)生器設(shè)計
2.1.1 圖像探測器輸出格式
一般的圖像探測器,不管是并行輸出或者是LVDS輸出,其最終的格式都將由四部分組成:幀有效、行有效、像素時鐘和圖像數(shù)據(jù)[5],如圖2所示。其中,幀有效、行有效用于標(biāo)識有效數(shù)據(jù),高電平有效。像素時鐘用于圖像數(shù)據(jù)的同步,便于后續(xù)圖像采集系統(tǒng)對圖像數(shù)據(jù)的采集,一般在時鐘的上升沿輸出圖像數(shù)據(jù)。圖像數(shù)據(jù)有8 bit、10 bit或12 bit等位寬,取決于探測器使用的AD。直到這些關(guān)系是設(shè)計圖像發(fā)生裝置的前提。
圖2 探測器圖像輸出格式
2.1.2 設(shè)計原理與過程
1)設(shè)計原理
本設(shè)計的思路即利用FPGA模擬圖2所示的圖像格式,這樣,圖像采集裝置即使在圖像探測器沒有到位的情況下照樣可以驗證其正確性。為了便于找問題,本設(shè)計使用了諸多技巧:首先,圖像數(shù)據(jù)的設(shè)計,使用了由大到小遞減的格式,而且每次變化都是減1,這樣,反映到灰度圖像上就是亮度由亮逐漸變暗,直到全黑為止,不管是主觀感覺還是客觀查找,都很容易發(fā)現(xiàn)問題;其次,圖像每一行的第一個像元代表幀號,即第幾幀,這個信息會顯示圖像采集是否連續(xù),有沒有丟幀現(xiàn)象,因為圖像的存儲往往都是若干幀一起存儲,因此,連續(xù)存儲的圖像,如果其幀號不連續(xù),就說明有丟幀現(xiàn)象;最后,仿照幀有效的原理,在圖像數(shù)據(jù)每一行的第二個像元放置行號,用來判斷圖像有沒有丟行,一幀圖像是由若干行組成,從上往下行號是逐行遞加的關(guān)系,因此,很容易找到丟行問題。
本設(shè)計就是按照以上思路,結(jié)合幀有效和行有效,組成圖像數(shù)據(jù)送給圖像采集裝置[6],用于驗證其正確性。
2)主要信號的設(shè)計與取值
按照某采集系統(tǒng)的要求,本設(shè)計用于產(chǎn)生2352×1728分辨率的圖像,具體設(shè)計方面的參數(shù)取值如下:
像素時鐘信號:像素時鐘用64 MHz的系統(tǒng)時鐘。
幀同步信號(fsync):fsync信號由兩部分組成,幀有效和幀逆程。幀有效的長度總共需要包含2 352個行時間、第一個行有效前的時間(取200像素時鐘)和最后一個行有效后的時間(取200像素時鐘),有效時為高電平。幀逆程時為低電平,長度取為兩行的長度,即2352×2= 4704像素時鐘。幀有效信號的跳變在時鐘的下降沿發(fā)生。
行有效信號(lsync):行有效的長度也由兩部分組成,行有效和行逆程。行有效的長度為2352像素時鐘,行逆程的長度為600像素時鐘。行有效信號的跳變也在時鐘的下降沿發(fā)生。
數(shù)據(jù)信號:圖像數(shù)據(jù)采用12 bit的形式,總共有2352×1728像素。一幀中每一行的第一個像元為幀計數(shù),從0開始計數(shù),直到4 095又重新賦0。第二個像元為行計數(shù),也由0一直遞增到1 727。其它像元每一行都一樣,從2 350一直遞減至0。
當(dāng)然,以上參數(shù)是在全幀模式下設(shè)定的,如果用戶要求改變幀頻和分辨率時,只需要將相應(yīng)的參數(shù)仿照全幀模式進行修改即可,此處不再贅述。
3)FPGA設(shè)計過程
基于以上思路的FPGA設(shè)計過程如下:首先,產(chǎn)生行有效信號,方法是采用計數(shù)器的方式,即行有效和行逆程總共2352+200=2552,計數(shù)器為1時,行有效變?yōu)楦唠娖街钡? 352,在2 353時變?yōu)榈碗娖?,直? 552,這樣,一行就產(chǎn)生了,當(dāng)有1 728行時,停止產(chǎn)生行有效,此時,一個1 728行,每行2 352個像元且行逆程為200的灰度圖像就產(chǎn)生了。下來就是給行逆程內(nèi)填充數(shù)據(jù),當(dāng)計數(shù)器為1時,給圖像數(shù)據(jù)賦幀號,等于2時賦行號,3以后直到2 353賦從2 350逐一遞減的計數(shù)值[7]。
整個過程以一個三段式狀態(tài)機控制[8],它可將一個個狀態(tài)分變量集合,能記住當(dāng)前的狀態(tài)和所有的輸入信息,目的是將輸入信息劃分為狀態(tài)和數(shù)據(jù)兩部分,利用狀態(tài)機中的譯碼器進行檢測,從而將輸入信息完整輸出。整個過程從空閑狀態(tài)→第一行前→行功能→最后一行后→空閑狀態(tài),如此反復(fù),達到連續(xù)不斷產(chǎn)生圖像的目的。
圖3是本設(shè)計的Modelsim仿真波形。其中,時鐘信號為clk_in、幀信號是fsync、行信號是lsync、圖像數(shù)據(jù)為data。其中,圖3(b)是圖3(a)第一行的放大??梢钥闯觯O(shè)計完全滿足圖像輸出格式要求,證明了設(shè)計的可行性與正確性。
圖3 圖像發(fā)生器時序仿真波形
2.2 串口通訊協(xié)議設(shè)計
根據(jù)需要,本系統(tǒng)用RS422串行接口(簡稱串口)與外界進行通訊,接收控制命令以及發(fā)送圖像發(fā)生器的工作參數(shù),速率為9 600 bps。硬件接口電路如圖4所示。
圖4 RS422接口電路
2.2.1 串口設(shè)計原理
串口是一種串行通信接口標(biāo)準(zhǔn),使用它連接的串行設(shè)備之間的距離可達25 m,傳輸速度可達38.4 Kbps。雖然串口作為一種連接標(biāo)準(zhǔn)正逐漸被高速網(wǎng)絡(luò)取代,但是,它對于嵌入式系統(tǒng)來說仍然是一種非常有用而且簡單的連接工具[9]。
目前,大部分處理器芯片都集成了UART,但是一般FPGA芯片卻沒有這個特點,所以使用FPGA作為處理器來實現(xiàn)串口功能可以有兩個選擇,第一個是使用UART芯片進行串并轉(zhuǎn)換,第二個選擇是在FPGA內(nèi)部實現(xiàn)UART功能。本設(shè)計選擇了第二種,通過FPGA將串口協(xié)議及其附加的緩沖模塊整合到FPGA內(nèi)部,這樣很大程度上節(jié)省了電路的物理面積和成本,增強了系統(tǒng)的可擴展性。FPGA的串口模塊工作時,當(dāng)任意一路接收數(shù)據(jù)時,F(xiàn)PGA內(nèi)部與其對應(yīng)的接收模塊按照協(xié)議將接收到的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),在FPGA內(nèi)部進行處理,從而完成與串口的通訊過程。
2.2.2 串口通訊設(shè)計
串口的接收模塊與發(fā)送模塊工作原理基本一致,都可以在FPGA內(nèi)部由狀態(tài)機來實現(xiàn),通過分析發(fā)送數(shù)據(jù)起始位、數(shù)據(jù)位、奇偶校驗位和停止位的發(fā)送順序,依次完成Start,Shift,Parity,Stop四個狀態(tài),完成串口通訊。發(fā)送和接收過程如圖5所示。
圖5 串口FPGA實現(xiàn)過程
將串口協(xié)議嵌入到FPGA后,就可以應(yīng)用其與外界進行通訊了,本設(shè)計應(yīng)用串口分別控制圖像的分辨率、幀頻和級數(shù)等。當(dāng)然,這里事先有約定協(xié)議在里面,例如分辨率的控制,沒有必要逐行逐列的進行設(shè)置,這樣不但麻煩,而且沒有必要,因為分辨率要幾個典型的就足夠了。因此,分辨率從最大的2352×1728開始,成倍遞減,而且采用的是寄存器的方式,例如:0x11表示2352×1728、0x22表示1176×864、0x33表示2352×864、……。這樣,只要向串口發(fā)送寄存器的值,相應(yīng)的分辨率就會由FPGA設(shè)置到圖像里面。本設(shè)計定義了每次通訊由三級命令組成,其格式如圖6所示。
圖6 FPGA串口與外部通訊協(xié)議
其中,命令級參數(shù):0xaa表示串口接收,0x55表示串口發(fā)送;寄存器級參數(shù):0x11表示圖像分辨率,0x22表示幀頻,0x33表示級數(shù)等;數(shù)值級參數(shù):表示相應(yīng)的寫入值。例如命令:0xaa+0x11+ 0x11就表示串口在接收外部指令,對分辨率進行修改,修改的值為2352×1728。
按照以上約定,利用串口向圖像發(fā)生器發(fā)送了分辨率、幀頻等參數(shù),并從系統(tǒng)讀取了一個參數(shù),得到的仿真波形如圖7所示。
圖7 串口仿真波形
其中,exptime代表圖像發(fā)生器的幀頻,step代表圖像發(fā)生器的分辨率,gain代表圖像發(fā)生器的級數(shù)。可以看出,系統(tǒng)相應(yīng)的工作狀態(tài)都隨著外部指令的改變而改變,通訊接口的設(shè)計完全滿足項目的需要。
系統(tǒng)設(shè)計完畢,燒寫至FPGA,通過數(shù)據(jù)線連接到圖像采集卡,采集得到的圖像如圖8所示,可以看出,圖像規(guī)律比較器,從左邊由最亮逐漸遞減至最暗,因為本文實驗的圖像采集卡采集的是8位圖像,因此,最亮的值是255,最暗的值是0,這樣,查找問題就很容易。特別是每行圖像的第一個像元代表幀號,一幀內(nèi)都是一致的,第二個像元代表行號,一幀圖像中從上到下遞增,而且是連續(xù)的,這樣,圖像是否丟幀、丟行一目了然??傊?,這些特點對保證圖像采集系統(tǒng)的正確工作奠定了堅實的基礎(chǔ)。
圖8 本系統(tǒng)輸出圖像
本文設(shè)計了一套以Xilinx公司FPGA為核心器件的圖像發(fā)生裝置,系統(tǒng)可以根據(jù)應(yīng)用需要產(chǎn)生不同幀頻和分辨率的規(guī)律變化灰度圖像,并結(jié)合連續(xù)變化的幀頭和行頭信息,從而更容易的找到圖像采集系統(tǒng)的問題。整個成像系統(tǒng)不管是在功能,還是圖像質(zhì)量方面都具有較好的表現(xiàn)。目前,該圖像發(fā)生系統(tǒng)已經(jīng)用于數(shù)套圖像采集系統(tǒng)的檢測,其優(yōu)良性能得到了用戶的好評。
[1]李娟,劉艷瀅.基于FPGA的圖像采集模塊的設(shè)計[J].儀表技術(shù)與傳感器,2012(10):27-30.
[2]李華.基于FPGA+COMS的小型彩色數(shù)字相機系統(tǒng)設(shè)計[J].商洛學(xué)院學(xué)報,2014,28(4):27-31.
[3]李華.基于FPGA的成像系統(tǒng)自動曝光算法設(shè)計[J].商洛學(xué)院學(xué)報,2014,28(2):17-20.
[4]田耘,徐文波,胡彬,等.Xilinx ISE Design Suite 10.x FPGA開發(fā)指南—邏輯設(shè)計[M].北京:人民郵電出版社,2008:3-10.
[5]劉賢得.CCD及其應(yīng)用原理[M].武漢:華中理工大學(xué)出版社,2008:10-35.
[6]吳燦.基于DSP的圖像采集實驗裝置的研制[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007:31-39.
[7]余輝龍.CMOS一體化相機關(guān)鍵技術(shù)研究[D].長春:中國科學(xué)院長春光學(xué)精密機械與物理研究所,2010:93-96.
[8]高書莉,羅朝霞.可編程邏輯設(shè)計技術(shù)及應(yīng)用[M].北京:人民郵電出版社,2006:44-56.
[9]劉艷瀅,李桂菊,馮曉勇.高速數(shù)字式攝像機的控制與數(shù)據(jù)流遠距離傳輸?shù)难芯浚跩].長春理工大學(xué)學(xué)報,2004,27(2):22-25.
(責(zé)任編輯:李堆淑)
Design of Image Generator Based on FPGA
LI Hua
(College of Electronic Information and Electrical Engineering,Shangluo University,Shangluo 726000,Shaanxi)
In order to verify the correctness of the image acquisition system,a set of image generator based on FPGA is designed.Regular image combined with continuous change of line-head and frame-head information is integrated into the FPGA chip.Image output is done with the general imagedetectoroutputformattoachievethepurposeofsysteminspection.OneXilinxField Programmable Gate Array(FPGA)is chosen as the hardware design platform,and the algorithm is described with Verilog-HDL to perform the modularization design from top to bottom.Experimental results show that image obtained from the system is sharp with strong regularity,low complexity and easy hardware implementation,and has a good engineering application value.
FPGA;Verilog-HDL language;image sensor;simulation
TP391.4
A
1674-0033(2015)04-0015-05
10.13440/j.slxy.1674-0033.2015.04.005
2015-05-11
收稿日期:陜西省教育廳專項科研計劃項目(2013JK1057)
李華,女,陜西臨潼人,碩士,副教授