文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.06.017
中文引用格式: 周敬東,沈飄海,王雷. 基于FPGA的線陣CCD圖像采集與顯示系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2016,42(6):63-66.
英文引用格式: Zhou Jingdong,Shen Piaohai,Wang Lei. Design of linear CCD image acquisition and display system based on FPGA[J].Application of Electronic Technique,2016,42(6):63-66.
0 引言
伴隨著半導(dǎo)體制造工藝的進(jìn)步,現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)器件的設(shè)計(jì)技術(shù)也取得飛躍性的發(fā)展[1]。憑借日益豐富的片內(nèi)資源以及固有的并行處理能力,F(xiàn)PGA的應(yīng)用范圍已經(jīng)超出通信行業(yè),逐漸擴(kuò)大到數(shù)字信號處理、硬件加速[2-4]、汽車電子等領(lǐng)域。色選機(jī)通過對被測物體的圖像進(jìn)行處理,判斷被測物體是否符合要求,實(shí)現(xiàn)篩選[5],其電子系統(tǒng)涉及圖像采集、信號處理、圖像顯示、串口通信等。FPGA可實(shí)現(xiàn)上述功能。與常見的FPGA+ARM/DSP+PC方案相比,在FPGA內(nèi)實(shí)現(xiàn)圖像采集、處理與顯示可簡化色選機(jī)系統(tǒng)結(jié)構(gòu),提高經(jīng)濟(jì)性。本設(shè)計(jì)搭建了實(shí)現(xiàn)圖像采集、圖像處理與圖像顯示的完整的硬件平臺,完成了圖像采集與圖像顯示的邏輯設(shè)計(jì),并預(yù)留了充裕的FPGA片內(nèi)資源,留作圖像處理模塊使用,具有較高的實(shí)用性。
1 系統(tǒng)設(shè)計(jì)
如圖1所示,本系統(tǒng)由圖像采集子系統(tǒng)與圖像顯示子系統(tǒng)組成。圖1中大虛線框內(nèi)的各模塊均為FPGA內(nèi)部邏輯設(shè)計(jì)模塊,細(xì)箭頭表示控制信號流向,空心粗箭頭表示圖像信號流向。采集子系統(tǒng)包括RS232通信芯片、總線緩沖器、線陣電荷耦合器件(Charge Coupled Device,CCD)傳感器、CCD緩沖放大器、CCD模數(shù)轉(zhuǎn)換器、雙口隨機(jī)存取存儲器(Random-Access Memory,RAM)模塊和圖像采集模塊。顯示子系統(tǒng)包括同步動態(tài)隨機(jī)存儲器(Synchronous Dynamic Random Access Memory,SDRAM)、視頻解碼芯片、視頻圖形陣列(Video Graphics Array,VGA)監(jiān)視器、圖像緩存模塊和圖像顯示模塊。頂層控制模塊統(tǒng)一控制圖像信號的采集、緩存與顯示。下文分別就兩個子系統(tǒng)進(jìn)行闡述。
1.1 圖像采集子系統(tǒng)設(shè)計(jì)
圖1中,CCD采用東芝公司生產(chǎn)的TCD2566BFG彩色線陣圖像傳感器。該型傳感器靈敏度高,暗電流小,采用兩相5 V時鐘脈沖驅(qū)動,含有3行彩色光電二極管陣列與1行黑白光電二極管陣列,每行陣列中光電二極管數(shù)量為5 340個[6]。FPGA采用Altera公司生產(chǎn)的Cyclone III型EP3C5E144C8芯片。該芯片內(nèi)含5 136個LE、46個M9K Block、23個乘法器,以及414K片內(nèi)RAM[7]。串口通信芯片為MAXIM公司生產(chǎn)的MAX3232。
圖像采集模塊完成采集子系統(tǒng)的核心功能——驅(qū)動CCD傳感器。該模塊接收外界指令,配置CCD行頻及每英寸點(diǎn)數(shù)(Dots Per Inch,DPI),產(chǎn)生CCD時鐘脈沖與控制信號。模塊由驅(qū)動子模塊、單口RAM子模塊以及RS232子模塊構(gòu)成。驅(qū)動CCD傳感器前,應(yīng)先在驅(qū)動子模塊內(nèi)設(shè)置好CCD的行頻與DPI。設(shè)置過程如下:單口RAM加載.mif文件進(jìn)行初始化,在不同的地址預(yù)存不同的配置信息。用戶根據(jù)實(shí)際需要,通過RS232子模塊,向單口RAM子模塊發(fā)送不同的讀取地址。讀取出的不同配置信息傳輸至驅(qū)動子模塊,驅(qū)動子模塊據(jù)此向CCD傳感器發(fā)送不同頻率的時鐘脈沖,達(dá)到改變行頻與DPI的目的。參照CCD技術(shù)手冊,驅(qū)動子模塊還產(chǎn)生CCD傳感器所需的控制信號,經(jīng)過總線緩沖器傳輸給CCD傳感器,實(shí)現(xiàn)驅(qū)動。驅(qū)動TCD2566BFG需要10路信號,如圖2所示。
圖2中,SW1為彩色模式與黑白模式選擇信號;SW2為時間延遲積分(Time Delay Integration,TDI)功能選擇信號;SCG為存儲清除柵(Storage Clear Gate)脈沖信號;SH為轉(zhuǎn)移柵(Shift Gate)脈沖信號,其為高電平時,轉(zhuǎn)移柵下勢阱允許MOS電容中的信號電荷包轉(zhuǎn)移到模擬移位寄存器中,為低電平時,二極管進(jìn)入光積分狀態(tài)[8]。時鐘Φ1A與Φ2A為三行彩色光電二極管陣列的驅(qū)動時鐘,頻率均為35 MHz,相位差為180°。時鐘Φ1B與Φ2B為一行黑白光電二極管陣列的驅(qū)動時鐘,CCD工作在彩色模式時維持低電平。Φ1A、SCG、SH、RS、CP可利用計(jì)數(shù)器產(chǎn)生其波形。對Φ1A取反可得Φ2A。復(fù)位信號RS與電平鉗制信號CP的占空比為1:8。關(guān)鍵源代碼如下(pixel_counter為140 MHz時鐘下的18位計(jì)數(shù)器):
always @ ( posedge clk_140m)
begin if (pixel_counter == 18’d0) scg <= 1'b1;
else if (pixel_counter == 18’d424) scg <= 1'b0;//scg高電平維持約3020ns(典型值)
if (pixel_counter == 18’d571) sh <= 1'b1;
else if (pixel_counter == 18’d1000) sh <= 1'b0;
end //sh高電平維持約3 020 ns,落后scg 1 050 ns
always @ ( posedge clk_140m)
begin if (pixel_counter[2:0] == 3'b111) rs <= 1'b1;
else rs <= 1'b0; //rs信號占空比1:8
if (pixel_counter[2:0]==3'b000) cp <= 1'b1;
else cp <=1'b0;
end //cp信號占空比1:8,落后rs約8 ns
assign fai1A = !pixel_counter[1];//Φ1A時鐘頻率35 MHz
assign fai2A = pixel_counter[1];//與Φ1A時鐘反相
assign fai1B = 1’b0; assign fai2B = 1’b0;//在彩色模式下,Φ1B、Φ2B維持低電平
assign sw1=1’b0; assign sw2=1’b0;//關(guān)閉TDI,打開彩色模式
CCD被正常驅(qū)動后,產(chǎn)生的模擬圖像信號,經(jīng)過緩沖放大器傳輸至CCD專用模數(shù)轉(zhuǎn)換器AD9945。AD9945完成圖像信號的模數(shù)轉(zhuǎn)換,并將采集到的一行數(shù)字圖像信號寫入片內(nèi)雙口RAM中。至此,采集子系統(tǒng)完成CCD圖像信號的采集。
1.2 圖像顯示子系統(tǒng)設(shè)計(jì)
顯示子系統(tǒng)中,圖像緩存模塊與圖像顯示模塊完成顯示子系統(tǒng)的核心功能,即緩存圖像與顯示圖像。圖1中,SDRAM采用Hynix公司生產(chǎn)的HY57V64820HG芯片,位寬8 bit,內(nèi)含4 個Bank,總存儲空間為64 MB,用于緩存雙口RAM輸出的圖像信號[9]。視頻解碼芯片采用Analog Devices公司生產(chǎn)的ADV7123KSTZ140,最高數(shù)據(jù)吞吐率為330 MS/s[10],可將數(shù)字圖像信號轉(zhuǎn)換為VGA標(biāo)準(zhǔn)時序的模擬圖像信號。
1.2.1 圖像緩存模塊邏輯設(shè)計(jì)
當(dāng)CCD傳感器工作在300DPI模式下且行頻為3 500 Hz時,其每秒鐘產(chǎn)生的數(shù)據(jù)量為9.345 MB,小于VGA(1366×768@60Hz)每秒鐘顯示的數(shù)據(jù)量73.764 MB,因此有必要對CCD圖像數(shù)據(jù)進(jìn)行緩存,當(dāng)緩存的圖像數(shù)據(jù)達(dá)到VGA一幀的數(shù)據(jù)量時,再將數(shù)據(jù)發(fā)送至視頻解碼芯片進(jìn)行顯示。顯然,F(xiàn)PGA片內(nèi)RAM無法提供足夠的存儲空間,使用片外SDRAM很有必要。
圖像緩存模塊內(nèi)含圖像裁剪、片內(nèi)FIFO以及SDRAM控制器3個子模塊。
在緩存圖像之前,需要對圖像信號進(jìn)行裁剪,使其符合VGA標(biāo)準(zhǔn)時序。TCD2566BFG傳感器工作在300DPI模式下,輸出圖像一行像素點(diǎn)數(shù)量為2 670,工作在600DPI模式下,一行像素點(diǎn)數(shù)量則為5 340。對于1 366×768分辨率的監(jiān)視器,每行能夠顯示的最大像素點(diǎn)數(shù)量為1 366點(diǎn)。為此,對雙口RAM輸出的圖像數(shù)據(jù)進(jìn)行了裁剪:即300DPI模式下,每讀取雙口RAM數(shù)據(jù)一次,讀取地址遞增2;600DPI模式下,每讀取一次數(shù)據(jù),讀取地址遞增4。經(jīng)過裁剪后,實(shí)際顯示的圖像每行為1 335像素,在首尾各添加15點(diǎn)空白像素后,圖像信號符合VGA顯示標(biāo)準(zhǔn)時序。采用多監(jiān)視器或高分辨率監(jiān)視器顯示,也可以解決CCD圖像與監(jiān)視器每行像素點(diǎn)數(shù)量不同的問題。
圖像信號從雙口RAM輸出的時鐘頻率是40 MHz,而SDRAM讀寫數(shù)據(jù)的時鐘頻率為100 MHz。因此,在SDRAM控制器兩端各例化一片異步先進(jìn)先出(First In First Out,F(xiàn)IFO)存儲器,實(shí)現(xiàn)圖像數(shù)據(jù)的異步讀寫。SDRAM工作在頁讀寫模式,突發(fā)長度512 B。讀寫FIFO位寬8 bit,深度1 024 word,利用其先入先出與可同時讀寫的特性,可實(shí)現(xiàn)一幀圖像的持續(xù)寫入與讀出。圖像緩存模塊的工作流程如圖3所示。
圖像經(jīng)過裁剪后,即可傳輸進(jìn)SDRAM內(nèi)。SDRAM正常讀寫數(shù)據(jù)前必須進(jìn)行初始化,以設(shè)置突發(fā)長度、列地址控制器(Column Address Strobe,CAS)潛伏期和操作模式。SDRAM初始化完畢后,即拉高wrfifo的寫使能。圖像數(shù)據(jù)以40 MHz的頻率從雙口RAM向wrfifo寫入,直到寫完一幀VGA圖像后才拉低wrfifo寫使能。當(dāng)wrfifo內(nèi)部數(shù)據(jù)大于512 word(半滿)時,則拉高wrfifo的讀使能,讀出圖像數(shù)據(jù),以100 MHz的頻率寫入SDRAM。SDRAM完成一頁(512 B)數(shù)據(jù)的寫入后,暫時關(guān)閉wrfifo的讀使能以及SDRAM的寫使能,當(dāng)wrfifo內(nèi)部數(shù)據(jù)量再次大于512 word時,則再一次讀取數(shù)據(jù),寫入SDRAM。重復(fù)該過程,持續(xù)向SDRAM寫入圖像數(shù)據(jù)。SDRAM內(nèi)部寫滿一幀圖像后,開始讀SDRAM過程。檢測rdfifo內(nèi)部數(shù)據(jù)量,小于512 word時,拉高SDRAM讀使能,以100 MHz頻率向rdfifo寫入圖像數(shù)據(jù)。讀完SDRAM內(nèi)一頁數(shù)據(jù)時,暫時關(guān)閉SDRAM讀使能以及rdfifo寫使能,等待VGA顯示請求。收到VGA模塊的顯示請求后,拉高rdfifo的讀使能,數(shù)據(jù)以85.5 MHz的頻率傳輸至顯示模塊。憑借FPGA的并行特性,緩存模塊在每一個時鐘上升沿都可檢測rdfifo的內(nèi)部數(shù)據(jù)量。在rdfifo讀出數(shù)據(jù)到VGA過程中,一旦檢測到rdfifo內(nèi)部數(shù)據(jù)量小于512 word,即拉高rdfifo的寫使能,在讀取數(shù)據(jù)的同時,寫入數(shù)據(jù)。上述過程可實(shí)現(xiàn)一幀圖像數(shù)據(jù)的連續(xù)寫入和讀出。由于系統(tǒng)采用的SDRAM無法同時進(jìn)行寫和讀兩種操作,因此本文采用了兩片HY57V64820HG進(jìn)行乒乓操作:SDRAM1進(jìn)行讀出操作,向ADV7123KSTZ140輸出信號時,SDRAM2則從雙口RAM寫入數(shù)據(jù);反之亦然。通過乒乓操作,實(shí)現(xiàn)了圖像幀與幀之間的連續(xù)傳輸。
1.2.2 圖像顯示模塊邏輯設(shè)計(jì)
VGA是IBM公司于1987年提出的一個使用模擬信號的顯示標(biāo)準(zhǔn)。在1 366×768@60 Hz模式下,掃描一幀圖像需要16.7 ms,其中實(shí)際顯示圖像的時間為12.3 ms。圖像掃描過程從左往右,從上往下。設(shè)置一個計(jì)數(shù)器記錄掃描的位置。當(dāng)掃描至一行圖像的左端點(diǎn)時,則開始將一行圖像信號傳輸至視頻解碼芯片,掃描至右端點(diǎn)時,則停止圖像信號的傳輸。縱向掃描的原理與此相似。圖像顯示模塊還生成視頻解碼芯片需要的時鐘脈沖、行場同步信號以及消隱信號。圖像顯示模塊關(guān)鍵源代碼如下:
always @ (posedge clk )//時鐘頻率為88.5 MHz
begin if (hcnt < H_TOTAL - 1'b1) hcnt <= hcnt + 1'b1;
else hcnt <= 11'd0;
end//H_TOTAL = 1792,hcnt循環(huán)計(jì)數(shù)0~1791
assign lcd_hs = (hcnt <= H_SYNC - 1'b1) ? 1'b1 : 1'b0;//H_SYNC =143,lcd_hs為行同步信號
always @ (posedge clk )
begin if(hcnt == H_TOTAL - 1'b1)
begin if(vcnt < V_TOTAL - 1'b1) vcnt <= vcnt + 1'b1;
else vcnt <= 11'd0; end
end// V_TOTAL = 798,vcnt循環(huán)計(jì)數(shù)0~797
assign lcd_vs = (vcnt <= V_SYNC - 1'b1) ? 1'b1 : 1'b0;//V_SYNC=3,lcd_vs為場同步號維持3 行像素時間的高電平
assign lcd_blank = lcd_hs & lcd_vs;//lcd_blank為消隱信號
assign lcd_en = (hcnt >= H_SYNC + H_BACK
&& hcnt < H_SYNC + H_BACK + 11’d1366)
&& (vcnt >= V_SYNC + V_BACK&& vcnt < V_SYNC + V_BACK +11’d768 ) ? 1'b1 : 1'b0;//掃描至實(shí)際顯示區(qū)域
assign lcd_rgb = lcd_en ? lcd_data : 8'h00;//掃描至實(shí)際顯示區(qū)域?qū)D像數(shù)據(jù)送出
2 軟硬件綜合調(diào)試
利用FPGA集成開發(fā)環(huán)境QuartusII 11.0軟件自帶的Signal Tap工具,可以檢測FPGA內(nèi)部信號的真實(shí)值。將邏輯設(shè)計(jì)的頂層模塊文件在QuartusII 11.0軟件中全編譯,生成.sof文件,利用JTAG接口將文件燒錄進(jìn)FPGA在線調(diào)試。驅(qū)動模塊輸出的驅(qū)動信號以及雙口RAM輸入的數(shù)字圖像信號如圖4所示。對比技術(shù)手冊時序圖,Signal Tap抓取的信號表明,驅(qū)動線陣CCD所需的10路信號被正確地產(chǎn)生了。結(jié)果如圖4中的DATA_R、DATA_G、DATA_B信號所示,F(xiàn)PGA成功接收到了由線陣CCD產(chǎn)生的數(shù)字圖像信號。圖像采集子系統(tǒng)完成了設(shè)計(jì)目標(biāo)。圖像在監(jiān)視器上顯示結(jié)果如圖5所示。線陣CCD傳感器需以特定速度掃描被測物體才能得到二維圖像。測試中,被測物體油茶果勻速通過CCD傳感器下方,CCD傳感器保持固定。顯示設(shè)備為通用即插即用監(jiān)視器,分辨率1 366×768。顯示畫面穩(wěn)定,無失幀,無噪點(diǎn)。
3 結(jié)論
Signal Tap抓取的信號波形和監(jiān)視器顯示的畫面表明系統(tǒng)基本上實(shí)現(xiàn)了設(shè)計(jì)目標(biāo),即使用FPGA芯片完成CCD圖像信號的采集和顯示,證明了系統(tǒng)軟硬件設(shè)計(jì)的正確性。全編譯結(jié)果顯示,F(xiàn)PGA內(nèi)部LE只使用了44%。利用剩余的資源,可以對圖像信號進(jìn)行圖像處理,處理結(jié)果通過串口傳輸至篩選執(zhí)行機(jī)構(gòu),執(zhí)行篩選動作。配合不同的CCD傳感器,該系統(tǒng)可廣泛應(yīng)用于安檢、醫(yī)療影像、遙感測繪等領(lǐng)域,具有較高的實(shí)用價(jià)值。
參考文獻(xiàn)
[1] 楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計(jì)技術(shù)發(fā)展綜述[J].電子與信息學(xué)報(bào),2010,32(3):714-727.
[2] RUBIN G,OMIELJANOWICZ M,PETROVSKY A.Reconfigurable FPGA-based hardware accelerator for embedded DSP[C].14th International Conference on Mixed Design of Integrated Circuits and Systems,2007:147-151.
[3] POSSA P,SCHAILLIE D,VALDERRAMA C.FPGA-based hardware acceleration:A CPU/accelerator interface exploration[C].Electronics Circuits and Systems(ICECS),2011 18th IEEE International Conference on.IEEE,2011:374-377.
[4] ZARIFI T,MALEK M.FPGA implementation of image processing technique for blood samples characterization[J].Computers & Electrical Engineering,2014,40(5):1750-1757.
[5] 溫強(qiáng),胡明明,桑楠.基于彩色線陣CDD的大米色選算法[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2008,39(10):105-108.
[6] TOSHIBA.TCD2566BFG[Z].2012.
[7] ALTERA.Cyclone III Device Handbook[Z].2011.
[8] 王慶有.CCD應(yīng)用技術(shù)[M].天津:天津大學(xué)出版社,2000.
[9] HYNIX. HY57V64820HG[Z].2002.
[10] ANALOG DEVICES. ADV7123[Z].2010.