基于FPGA的圖像采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1、引言
視頻圖像采集是視頻信號(hào)處理系統(tǒng)的前端部分,正在向高速、高分辨率、高集成化、高可靠性方向發(fā)展。圖像采集系統(tǒng)在當(dāng)今工業(yè)、軍事、醫(yī)學(xué)各個(gè)領(lǐng)域都有著極其廣泛的應(yīng)用,如使用在遠(yuǎn)程監(jiān)控、安防、遠(yuǎn)程抄表、可視電話、工業(yè)控制、圖像模式識(shí)別、醫(yī)療器械等各個(gè)領(lǐng)域都有著廣泛的應(yīng)用[1]。本文介紹了一種基于FPGA的圖像采集系統(tǒng),用戶可以根據(jù)需要對FPGA 內(nèi)部的邏輯模塊和I/O模塊重新配置,以實(shí)現(xiàn)系統(tǒng)的重構(gòu)[1][2];而且采用這種設(shè)計(jì)方案 ,便于及時(shí)地發(fā)現(xiàn)設(shè)計(jì)中的錯(cuò)誤,能夠有效地縮短研發(fā)時(shí)間,提高工作效率。
2、系統(tǒng)的總體框架和工作原理
整個(gè)系統(tǒng)主要分為四個(gè)模塊:視頻解碼模塊、視頻編碼模塊、存儲(chǔ)器模塊和FPGA核心控制模塊,系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)的總體框圖
其中FPGA實(shí)現(xiàn)的主要功能有:視頻編解碼器件的初始化,視頻圖像的采集存儲(chǔ)以及將采集的圖像數(shù)據(jù)通過視頻編碼芯片送到監(jiān)視器上顯示。
系統(tǒng)的工作原理為:系統(tǒng)上電后,F(xiàn)PGA通過FLASH中的程序?qū)ν瓿梢曨l解碼和編碼芯片的初始化配置;在接到視頻AD轉(zhuǎn)換的中斷信號(hào)后,F(xiàn)PGA將轉(zhuǎn)換的數(shù)字圖像數(shù)據(jù)傳送到SRAM保存;一幀圖像轉(zhuǎn)換結(jié)束后FPGA再將SRAM中的數(shù)字圖像傳遞給視頻編碼芯片以便在監(jiān)視器上顯示,同時(shí)開始控制下一幀圖像的采集。
3、硬件電路設(shè)計(jì)
3.1 AD和DA轉(zhuǎn)換模塊
本系統(tǒng)采用的視頻編解碼芯片是ADV7181和ADV7177,下面分別介紹AD和DA轉(zhuǎn)換器件的硬件電路設(shè)計(jì)。
3.1.1 AD轉(zhuǎn)換模塊
ADV7181系統(tǒng)是AD公司推出的一款視頻解碼芯片[3],它具有如下特點(diǎn): I2C總線接口,6通道模擬視頻輸入,支持NTSC、PAL、SECAM視頻制式,支持多種模擬輸入格式和多種數(shù)字輸出格式。
本系統(tǒng)中選用其中的通道1作為PAL制CVBS視頻輸入,數(shù)據(jù)輸出可根據(jù)需要采用8位或16位的格式輸出。ADV7181與FPGA的接口電路如圖2所示。
圖2 ADV7181與FPGA的接口電路
系統(tǒng)上電后通過FPGA的I2C模塊完成對ADV7181的初始化配置,其中ADC_SCLK、ADC_SDATA分別為I2C總線的時(shí)鐘線和數(shù)據(jù)線。ADV7181正常工作后分別輸出水平同步信號(hào)ADV_HS、垂直同步信號(hào)ADV_VS、 場同步信號(hào)ADV_FIELD、中斷信號(hào)ADC_/INTRQ、ADC_LLC同步信號(hào)和圖像數(shù)據(jù)信號(hào)ADC_DATA(8位或16位可配置輸出),另外ADC_/PWRDN信號(hào)控制ADV7181是否工作于省電模式。用戶可以根據(jù)需要選擇水平、垂直和場同步信號(hào)(CCIR-601格式)或ADC¬_LLC信號(hào)(CCIR-656格式)來實(shí)現(xiàn)系統(tǒng)與視頻輸入的同步,并利用這些同步信號(hào)控制對轉(zhuǎn)換完成的視頻數(shù)據(jù)的寫存儲(chǔ)器操作。
3.1.2 DA轉(zhuǎn)換模塊
DA轉(zhuǎn)換采用的是AD公司的ADV7177[4],它具有如下特點(diǎn):I2C接口,3路模擬視頻輸出,支持多種數(shù)字輸入格式和多種模擬輸出格式,用戶可根據(jù)需要選擇使用。它的電路設(shè)計(jì)與ADV7181類似,ADV7177與FPGA的接口電路如圖3所示。
圖3 ADV7177與FPGA的接口電路
其中DAC_DATA為輸入數(shù)字視頻信號(hào),DAC_/HSYNC、DAC_/VSYNC分別為水平和垂直同步信號(hào),DAC_CLOCK2為ADV7177輸出的27M或13.5M同步時(shí)鐘( 與寄存器的配置數(shù)據(jù)有關(guān)),DAC_SCLK、DAC_SDATA為ADV7177的I2C配置總線。
3.2 FPGA核心控制模塊
FPGA核心控制模塊采用的是ALTERA公司Cyclone II系列的EP2C20[5],它具有較高的性價(jià)比:EP2C20最多用戶管腳數(shù)為315,四個(gè)PLL,26個(gè)嵌入式18*18乘法器,52個(gè)M4K RAM塊,186752個(gè)邏輯單元;共分8個(gè)I/O Bank,每個(gè)Bank可以根據(jù)需要配置為1.2V或3.3V的I/O電平,方便與外圍電路連接??紤]到系統(tǒng)的實(shí)際需求,在該系統(tǒng)中采用具有240個(gè)引腳PQFP封裝的EP2C20Q240。
在該系統(tǒng)中,F(xiàn)PGA主要完成對視頻AD、DA的初始化配置和存儲(chǔ)器的讀寫控制,它通過AD的中斷信號(hào)完成對視頻數(shù)據(jù)的采集,并將采集的數(shù)據(jù)放到存儲(chǔ)模塊中,當(dāng)采集完一幀后將數(shù)據(jù)傳遞給視頻編碼芯片并在監(jiān)視器上顯示同時(shí)開始采集下一幀圖像。
在本系統(tǒng)中FPGA采用了JTAG和AS兩種配置模式,具體的設(shè)計(jì)可參考ALTERA數(shù)據(jù)手冊[5]。
3.3 存儲(chǔ)器及其他模塊
由于FPGA芯片內(nèi)部的RAM資源有限,不能存儲(chǔ)過多的視頻數(shù)據(jù)并對其進(jìn)行處理,因此在本系統(tǒng)設(shè)計(jì)中,外加了兩片SRAM芯片來輔助FPGA進(jìn)行視頻信號(hào)采集。兩片SRAM可以進(jìn)行16位的數(shù)據(jù)存儲(chǔ),這樣ADV7181和ADV7177可以根據(jù)需要配置為8位或16位數(shù)據(jù)的工作模式,提高了系統(tǒng)的靈活性。
本系統(tǒng)設(shè)計(jì)中采用的SRAM芯片是美國IDT公司生產(chǎn)的IDT71V424[6],它是采用高性能與可靠性的CMOS工藝生產(chǎn)的高速靜態(tài)存儲(chǔ)器,其單片存儲(chǔ)容量為512K*8Bit,具有高速的訪問時(shí)間,10或12ns。其內(nèi)部完全由靜態(tài)異步電路構(gòu)成,無需輸入時(shí)鐘信號(hào),也不必對芯片進(jìn)行刷新,即可直接對無用數(shù)據(jù)進(jìn)行覆蓋。
在實(shí)際的設(shè)計(jì)中為了保證控制信號(hào)的有效性,3條控制線SRAM_/WE、SRAM_/OE, SRAM_/CS分別加了一個(gè)4.7K的上拉電阻后才與FPGA芯片連接。具體電路如圖4所示:
圖4 SRAM與FPGA的接口電路
此外,為了減少模擬與數(shù)字系統(tǒng)之間的相互干擾,電源模塊采用的是數(shù)字電源和模擬電源分開設(shè)計(jì)最后一點(diǎn)共地的設(shè)計(jì)方案。主要采用了TI公司的TPS54612、TPS64616分別提供FPGA 1.2V核心電壓和3.3V IO電壓;模擬1.8V和3.3V采用的是AMS1117系列的電源芯片。
4、系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件是在Quartus II 環(huán)境下采用Verilog語言開發(fā)完成的。主要包括:1、AD和DA芯片的初始化配置,2、視頻圖像的采集,3、視頻圖像的存儲(chǔ)與DA轉(zhuǎn)換。
4.1 I2C配置模塊
系統(tǒng)上電后,分別將AD和DA芯片復(fù)位,因此需要對它們進(jìn)行初始化配置。程序?qū)⒓拇嫫鞒跏贾凳孪却鎯?chǔ)在數(shù)組中,設(shè)置控制寄存器時(shí),F(xiàn)PGA通過I2C總線按照AD或DA的配置地址、控制寄存器地址、寄存器值的順序依次寫入數(shù)據(jù),完成對AD和DA的初始化。I2C的配置模塊的流程[7][8]如圖5所示。
圖5 I2C配置的流程圖
4.2 視頻圖像的采集模塊
在本系統(tǒng)中,ADV7181芯片輸出8位為CCIR-656格式(也可根據(jù)需要配置為16位輸出),它的有效分辨率為720*576,隔行掃描。它輸出的數(shù)字視頻數(shù)據(jù)格式如表1所示。
表1 ADV7181輸出的數(shù)字視頻格式表
在實(shí)際的邏輯設(shè)計(jì)中,主要的任務(wù)就是對CCIR-656格式的行起始標(biāo)志碼和行結(jié)束標(biāo)志碼的判別與檢測。具體的設(shè)計(jì)如下:在27MHz像素時(shí)鐘信號(hào)ADC_LLC的同步控制下,8位的數(shù)字視頻數(shù)據(jù)由ADV7181芯片不斷地輸入到FPGA芯片,F(xiàn)PGA首先檢測“FF 00 00”這三個(gè)字節(jié),對于這三個(gè)字節(jié)的檢測只需要設(shè)計(jì)一個(gè)簡單的有限狀態(tài)機(jī)即可實(shí)現(xiàn)。檢測到上述的三個(gè)字節(jié)之后,F(xiàn)PGA接著檢測緊隨這三個(gè)字節(jié)之后的那個(gè)未知字節(jié),如果未知字節(jié)第4位的值為0,則說明它是SAV字節(jié),如果為1,則說明它是EAV字節(jié)。表2為SAV和EAV的數(shù)據(jù)格式。
表2 SAV和EAV的數(shù)據(jù)格式表
有了以上的分析可得到如圖6所示的有效視頻數(shù)據(jù)的采集流程[7][8]圖。
文中按照上述流程設(shè)計(jì)完成了圖像采集程序,圖7為利用Quartus II自帶的邏輯分析儀工具得到的采集圖像數(shù)據(jù)波形圖,其中邏輯分析儀的采樣時(shí)鐘為27M的ADC_LLC信號(hào),data_in為圖像數(shù)據(jù),ad_hs為水平同步信號(hào)。
圖6 有效視頻的采集流程
圖7 FPGA采集得到的圖像數(shù)據(jù)信號(hào)
4.3 視頻圖像存儲(chǔ)模塊和DA轉(zhuǎn)換模塊
由于FPGA內(nèi)的RAM資源有限,并為了以后擴(kuò)展方便系統(tǒng)外加了兩片512K*8的SRAM存儲(chǔ)器緩存采集的視頻數(shù)據(jù)。當(dāng)一幀圖像采集完成后,F(xiàn)PGA將SRAM中的數(shù)據(jù)寫入DA轉(zhuǎn)換芯片,同時(shí)開始下一幀的采集。在本系統(tǒng)中視頻編碼芯片接收標(biāo)準(zhǔn)的8位CCIR-656數(shù)據(jù),輸出為CVBS復(fù)合視頻信號(hào)。ADV7177的初始化配置和工作過程與ADV7181類似,這里不再贅述。
5、實(shí)驗(yàn)結(jié)果
按照以上設(shè)計(jì)方案,完成了系統(tǒng)的硬件設(shè)計(jì)和軟件調(diào)試,圖8為系統(tǒng)采集得到的在監(jiān)視器上顯示的一幅視頻圖像,其中ADV7181采用的是8位CCIR-656輸出格式,ADV7177的輸出格式為CVBS視頻信號(hào)。
圖8 系統(tǒng)采集的一幅視頻圖像
6、結(jié)論
實(shí)驗(yàn)結(jié)果表明,本系統(tǒng)工作穩(wěn)定可靠,可滿足于高性能的實(shí)時(shí)圖像處理系統(tǒng)要求。此外,系統(tǒng)采用了FPGA設(shè)計(jì)方案,集成度高、設(shè)計(jì)靈活,而且用戶可根據(jù)自己的需求進(jìn)行系統(tǒng)重構(gòu),方便快捷,具有較高的應(yīng)用價(jià)值。