任勇峰,王國忠,儲成群,焦新泉
(中北大學(xué),電子測試技術(shù)國家重點實驗室,山西太原 030051)
CMOS圖像傳感器是一種新型的科學(xué)級集成芯片,其內(nèi)部采用全新的集成電路制造工藝,在速度、分辨率、動態(tài)范圍和讀出噪聲等方面都有了較好的改進和提升,再加上其本身所擁有的體積小、質(zhì)量輕、功耗低、開發(fā)簡單容易的優(yōu)點,為高性能圖像采集系統(tǒng)的發(fā)展提供了新的方向[1]。本設(shè)計采用低功耗CMOS圖像傳感器MT9P031作為圖像采集前端,設(shè)計了一套高性能、小型化、低功耗的圖像采集系統(tǒng)。
系統(tǒng)總體方案設(shè)計如圖1所示,由圖像采集模塊、控制模塊、數(shù)據(jù)傳輸模塊3部分組成。圖像采集模塊采用MT9P031 CMOS圖像傳感器作為圖像采集系統(tǒng)的前端,通過配置其內(nèi)部寄存器從而使其正常工作,把12位圖像數(shù)據(jù)、幀同步信號FV、行同步信號LV以及像素時鐘PIXCLK輸出到控制模塊;控制模塊分為FPGA控制模塊和DDR2控制模塊,F(xiàn)PGA控制模塊通過接收采集模塊傳來的FV和LV來控制DDR2緩沖圖像數(shù)據(jù),同時接收傳輸模塊下發(fā)的配置命令來重新配置采集模塊和接收重傳命令實現(xiàn)數(shù)據(jù)重傳,DDR2控制模塊主要控制數(shù)據(jù)的存儲和接收重傳數(shù)據(jù)的地址,從而找到需要重傳的數(shù)據(jù),再把數(shù)據(jù)重新上傳到傳輸模塊;傳輸模塊負責(zé)把圖像數(shù)據(jù)通過網(wǎng)線上傳到上位機軟件,進行圖像顯示,同時還接收上位機軟件下發(fā)曝光、增益、圖像分辨率等配置命令,然后傳輸?shù)娇刂颇K實現(xiàn)對采集模塊的配置,如果上位機軟件校驗數(shù)據(jù)有誤的話,還會下發(fā)重傳命令。
圖1 總體方案設(shè)計
FPGA作為系統(tǒng)的硬件控制核心,在整個圖像采集系統(tǒng)中占有重要地位,負責(zé)對CMOS圖像傳感器的控制以及對采集的圖像數(shù)據(jù)進行解碼,并把解碼后的圖像數(shù)據(jù)緩沖到DDR2中,同時解析上位機軟件下發(fā)的命令,把圖像數(shù)據(jù)實時上傳到上位機進行圖像顯示。所以本系統(tǒng)選擇內(nèi)部資源豐富,處理速度快的XC6SLX45-2CSG324I作為主控芯片。
本設(shè)計在提高圖像清晰度的同時為了降低整個系統(tǒng)的功耗以及滿足小型化的設(shè)計,采用了低功耗CMOS圖像傳感器MT9P031作為圖像采集前端,MT9P031最高分別率可達2592H×1944V(500萬像素)、最大幀頻可達60 幀/s,內(nèi)部集成了12位A/D轉(zhuǎn)換器,可以同時輸出12位數(shù)字圖像數(shù)據(jù),為整個系統(tǒng)提供了圖像數(shù)據(jù)的來源,圖2為MT9P031與FPGA的硬件連接圖[2]。
圖2 MT9P031與FPGA的硬件連接圖
MT9P031圖像傳感器采用獨立的48 MHz外部有源晶振作為其輸入時鐘,再通過內(nèi)部PLL控制器產(chǎn)生像素時鐘,然后經(jīng)PIXCLK引腳輸出到外部控制器,其最大輸出像素時鐘達96 MHz;FRAME_VALID、LINE_VALID分別為圖像數(shù)據(jù)的幀同步信號和行同步信號,供外部控制電路讀取圖像數(shù)據(jù)流;STROBE信號為觸發(fā)信號的輸出使能信號,當(dāng)觸發(fā)快照有效時,STROBE信號為高電平輸出;TRIGGER信號為快拍照觸發(fā)信號,即當(dāng)外部只需要1幀圖像數(shù)據(jù)時,此信號有效,通過控制內(nèi)部寄存器來輸出1幅圖像數(shù)據(jù);SDATA為I2C總線的雙向數(shù)據(jù)線、SCLK為I2C總線的時鐘信號線,F(xiàn)PGA通過I2C總線對MT9P031內(nèi)部寄存器進行配置,主要配置的寄存器有起始位置、圖像大小、曝光時間、增益;RESET_BAR為復(fù)位信號,當(dāng)上位機重新配置圖像傳感器的有關(guān)參數(shù)時,F(xiàn)PGA要對MT9P031進行復(fù)位操作,清空寄存器原始數(shù)據(jù),并對其進行重新配置[3]。
本設(shè)計根據(jù)實際需求采用千兆以太網(wǎng)進行數(shù)據(jù)傳輸,使用88E1518作為千兆以太網(wǎng)的物理層(PHY)芯片,通信協(xié)議采用UDP通信協(xié)議。FPGA控制器通過RGMII總線與88E1518物理層芯片進行數(shù)據(jù)傳輸,88E1518再把圖像數(shù)據(jù)通過網(wǎng)線傳輸?shù)缴衔粰C軟件進行圖像顯示。
圖3為千兆以太網(wǎng)的硬件電路圖。千兆以太網(wǎng)是全雙工數(shù)據(jù)傳輸模式,TXD[3:0]和RXD[3:0]分別為4位并行接收和發(fā)送數(shù)據(jù)線,在時鐘的上升沿和下降沿都進行數(shù)據(jù)傳輸,因此其在一個時鐘周期內(nèi)實際傳輸?shù)臄?shù)據(jù)位數(shù)為8位;TX_CLK與FPGA的全局時鐘線相連,可提供高達125 MHz的接口頻率,伴隨數(shù)據(jù)一同輸出到物理層芯片;TX_CTRL為發(fā)送數(shù)據(jù)的使能控制信號線,該信號高電平有效,通過FPGA內(nèi)部的以太網(wǎng)控制器來控制何時輸出數(shù)據(jù);RX_CLK同樣與FPGA的全局時鐘線相連,可接收高達125 MHz的時鐘頻率,伴隨數(shù)據(jù)一同輸入到FPGA內(nèi)部;RX_CTRL為接收數(shù)據(jù)使能控制信號線,物理層芯片發(fā)送數(shù)據(jù)時,同時發(fā)送一個使能控制信號,當(dāng)FPGA判斷該信號為高電平時,開始接收數(shù)據(jù);MDC和MDIO為寄存器可配置引腳,通過該引腳配置88E1518內(nèi)部寄存器;RESETn為88E1518物理層芯片的復(fù)位引腳,每次上電之前以及傳輸完1包數(shù)據(jù)時進行復(fù)位,該引腳為低電平時復(fù)位有效;RSET為恒壓基準引腳,該引腳通過外部4.99 kΩ電阻連接到地上,將該引腳拉低使芯片在恒壓下才可以正常工作;CONFIG為88E1518硬件可配置引腳,而本設(shè)計采用了標準以太網(wǎng)協(xié)議,所以將該引腳接地。ZXRJ-286-02NL為網(wǎng)口,其內(nèi)部是通過4個變壓器實現(xiàn)與網(wǎng)線之間進行數(shù)據(jù)傳輸,所以在畫PCB板圖時,把其下面的銅全部扣掉,避免引入電磁干擾[4]。
圖3 以太網(wǎng)的硬件電路
本系統(tǒng)采用外部24 V供電,然后通過電源芯片TPS54331將其轉(zhuǎn)為5 V,供FPGA、DDR2和以太網(wǎng)電源芯片以及圖像傳感器的穩(wěn)壓芯片使用。為了避免單個電源芯片功率不夠以及電源之間相互干擾的影響,本設(shè)計采用了各個模塊獨立供電,互不干擾,圖4為電源芯片TPS54331的硬件電路圖[5]。
圖4 TPS54331硬件電路圖
該電源芯片為輸入和輸出均可調(diào)的DC-DC電源管理芯片,芯片內(nèi)部集成了欠壓鎖定電路,當(dāng)電壓低于一定數(shù)字時,該芯片使能無效,不再工作,從而提高了輸出電源的可靠性、安全性以及穩(wěn)定性,為本系統(tǒng)提供了穩(wěn)定的外部輸入電源。輸入使能電壓可以通過R2、R3來調(diào)整,其可調(diào)范圍為7~28 V,輸出電壓通過R1、R5來調(diào)整,調(diào)整結(jié)果為Vout=0.8×(R1/R5+1),本設(shè)計需要輸出電壓為5 V,通過計算得R1、R5阻值為53.6 kΩ和10.2 kΩ。
MT9P031圖像傳感器采集的數(shù)據(jù)是原始圖像數(shù)
據(jù),除了將12 bits的原始圖像數(shù)據(jù)和由片上鎖相環(huán)產(chǎn)生的表示像素點采樣頻率的像素時鐘PIXCLK輸出到FPGA,還同時將幀同步信號FV和行同步信號LV輸出給FPGA,作為1幀圖像數(shù)據(jù)和1行圖像數(shù)據(jù)結(jié)束的標志位[6]。當(dāng)PIXCLK為高電平,F(xiàn)V同時也為高電平時則說明有效數(shù)據(jù)開始采集,當(dāng)像素時鐘PIXCLK的下降沿到來時則預(yù)示著圖像數(shù)據(jù)的產(chǎn)生,并且此時外部不斷讀取圖像數(shù)據(jù),直到下一個幀同步信號FV的上升沿到來時,1幀圖像數(shù)據(jù)采集結(jié)束,圖5為圖像采集前端的邏輯設(shè)計時序圖。
圖5 圖像采集前端邏輯設(shè)計時序圖
根據(jù)實際需求,本設(shè)計只讀取了MT9P031圖像數(shù)據(jù)的高8位,作為本系統(tǒng)圖像數(shù)據(jù)的來源。圖6為邏輯分析儀的截圖,圖中顯示了在幀同步信號FV為高電平期間,行同步信號LV出現(xiàn)2次高電平的波形圖,當(dāng)行同步信號LV為低電平期間,輸出的圖像數(shù)據(jù)全為0時,此時處于場消隱區(qū)[7]。當(dāng)FV和LV均為高電平期間,輸出有效的圖像數(shù)據(jù),在此期間像素時鐘PIXCLK每出現(xiàn)一個下降沿,便輸出1位數(shù)據(jù),當(dāng)行同步信號LV為高電平期間,共輸出2 592位數(shù)據(jù)。也即是在1幀圖像數(shù)據(jù)中幀同步信號FV為高電平期間,行同步信號LV出現(xiàn)1 944次高電平,當(dāng)下一個幀同步信號FV的上升沿到來時說明分辨率為2 592×1 944的圖像數(shù)據(jù)采集結(jié)束??梢酝ㄟ^配置MT9P031圖像傳感器內(nèi)部寄存器的值,來改變圖像傳感器的分別率[8]。
本設(shè)計為了提高系統(tǒng)的可靠性,在以太網(wǎng)控制器中增加了重傳的邏輯設(shè)計模塊。當(dāng)圖像數(shù)據(jù)上傳到上位機軟件的緩沖區(qū),經(jīng)上位機校驗如果發(fā)現(xiàn)數(shù)據(jù)有丟失或有誤時,下發(fā)一個重傳指令并中斷數(shù)據(jù)上傳,同時把丟失或有誤的數(shù)據(jù)地址以及對應(yīng)的包地址下發(fā)給FPGA控制模塊,然后FPGA控制模塊再控制DDR2控制器把有誤的數(shù)據(jù)重新送到以太網(wǎng)傳輸模塊實現(xiàn)重傳,圖7為重傳邏輯設(shè)計圖。
圖7 重傳邏輯設(shè)計圖
DDR2控制模塊接收圖像傳感器采集的圖像數(shù)據(jù),并按每個bank存儲1幀圖像數(shù)據(jù)的格式進行緩沖,然后DDR2控制器每次以16位數(shù)據(jù)傳輸?shù)揭蕴W(wǎng)發(fā)送模塊,在時鐘的上升沿和下降沿均進行數(shù)據(jù)傳輸。當(dāng)以太網(wǎng)發(fā)送模塊接收到發(fā)送使能信號時,把圖像數(shù)據(jù)以4位數(shù)據(jù)位寬送入以太網(wǎng)傳輸模塊,且在時鐘的上升沿和下降沿均進行數(shù)據(jù)傳輸,然后以太網(wǎng)控制模塊把圖像數(shù)據(jù)上傳到上位機軟件進行圖像顯示[9]。當(dāng)以太網(wǎng)控制模塊接收到重傳指令以后中斷數(shù)據(jù)上傳并同時把包地址add_pack和塊地址add_black下發(fā)到DDR2控制模塊中,然后DDR2控制模塊通過塊地址找到緩沖區(qū)對應(yīng)的圖像數(shù)據(jù),并把數(shù)據(jù)重新送到以太網(wǎng)發(fā)送數(shù)據(jù)模塊ET_tx,然后控制使能發(fā)送,從而實現(xiàn)數(shù)據(jù)的重傳。
本系統(tǒng)采用MT9P031作為圖像采集前端,采集到的圖像分辨率為2 592×1 944,幀頻為14幀/s,且顯示為256級8位灰度圖像,因此每s采集到的數(shù)據(jù)量為68 MB(2 592×1 944×14 B),即采集1幅圖像需要72 ms[10]。DDR2工作在125 MHz時鐘下,其傳輸速度峰值高達500 MB/s,除去其自動刷新、預(yù)充電、狀態(tài)信息等消耗的時鐘,實際平均數(shù)據(jù)吞吐量為456 MB/s,通過計算讀取1幅圖像所需要的時間為11 ms。千兆以太網(wǎng)的傳輸速度為125 MB/s,傳輸1幀圖像數(shù)據(jù)需要52 ms,通過邏輯分析儀發(fā)現(xiàn)重傳1幀圖像數(shù)據(jù)需要130 ms,而DDR2中可以緩沖8幅圖像,通過分析,本系統(tǒng)除了可以正常工作外,還可以實現(xiàn)數(shù)據(jù)重傳。而且經(jīng)過長時間重復(fù)測試,在沒有上位機引起其他開銷的情況下,采集的圖像如圖8所示。其畫面清晰、流暢,且實時性較好,證明了本系統(tǒng)能夠?qū)崟r進行圖像數(shù)據(jù)上傳,且穩(wěn)定可靠。
圖8 采集的圖像截圖
本設(shè)計中,采用了低功耗、高分別率、高集成度的MT9P031圖像傳感器作為圖像采集前端,采用傳輸速度快、而且穩(wěn)定可靠的千兆以太網(wǎng)作為數(shù)據(jù)傳輸接口,設(shè)計了一套高性能圖像采集系統(tǒng),顯著降低了整個系統(tǒng)的功耗,同時實現(xiàn)了小型化的設(shè)計思想,在邏輯設(shè)計中增加了重傳模塊,提高了圖像數(shù)據(jù)的可靠性,確保圖像顯示的準確率。