孟令軍,彭晴晴,藺志強(qiáng)
(中北大學(xué) 電子測試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051)
隨著圖像采集器件性能的提高,圖像的采集速率和信息量也在不斷增加[1],同時,由于LVDS技術(shù)在圖像數(shù)據(jù)傳輸中的廣泛應(yīng)用,圖像數(shù)據(jù)的實(shí)時處理和下傳已經(jīng)成為圖像采集系統(tǒng)中非常關(guān)鍵的部分[2]。以SRAM陣列的存儲方式可以有效地緩解圖像數(shù)據(jù)的傳輸速率,為CPU進(jìn)行圖像數(shù)據(jù)處理爭取了大量時間,并保證了穩(wěn)定下傳。本文以微處理器為核心,用FPGA控制SRAM陣列進(jìn)行存儲和下傳,CPU負(fù)責(zé)陣列存儲區(qū)的管理和可靠穩(wěn)定的記錄數(shù)據(jù),完成圖像數(shù)據(jù)在陣列中的分布存儲。
圖像數(shù)據(jù)采集系統(tǒng)主要負(fù)責(zé)實(shí)時接收圖像采集裝置的高速圖像數(shù)據(jù),同時將數(shù)據(jù)連續(xù)串行下發(fā)給采編器。本文以CPU處理器為核心,主要控制系統(tǒng)的總體工作流程,同時以FPGA或CPLD為輔助,完成系統(tǒng)各模塊與處理器之間的通信,實(shí)現(xiàn)圖像數(shù)據(jù)的分區(qū)存儲和連續(xù)下發(fā)?;谇度胧教幚砥鞯膱D像存儲系統(tǒng)硬件電路采用CPU+FPGA器件進(jìn)行時序控制,遙測圖像數(shù)據(jù)首先通過LVDS接口芯片將串行數(shù)據(jù)解串為并行數(shù)據(jù),存入單幀緩存中(由1片SRAM構(gòu)成)。由于圖像數(shù)據(jù)發(fā)送速率和接收速率之間存在差距,為了保證20幅圖像數(shù)據(jù)的有效接收,主存儲器使用20片SRAM構(gòu)成存儲陣列以實(shí)現(xiàn)20幀圖像數(shù)據(jù)的有效存儲。CPU是整個系統(tǒng)的中心控制器,負(fù)責(zé)控制圖像數(shù)據(jù)的接收和轉(zhuǎn)發(fā)編碼。FPGA主要負(fù)責(zé)依據(jù)CPU的控制信號接收圖像數(shù)據(jù)存至單幀緩存,轉(zhuǎn)存至存儲陣列和以PCM碼形式轉(zhuǎn)發(fā)至采編器。為了保證轉(zhuǎn)發(fā)數(shù)據(jù)的無縫傳輸,在轉(zhuǎn)發(fā)時使用FIFO進(jìn)行緩存。本設(shè)計(jì)總體結(jié)構(gòu)如圖1所示,主要包括7個部分:LVDS接口電路、FPGA數(shù)據(jù)處理模塊、單幀緩存讀寫模塊、CPU控制模塊、主存儲陣列、FIFO緩存模塊以及RS-422接口電路。
LVDS技術(shù)以其低誤碼、低功耗和高傳輸速度等優(yōu)點(diǎn)而廣泛應(yīng)用于圖像數(shù)據(jù)的高速傳輸中,可以實(shí)現(xiàn)一對多或者一對一傳輸[3]。本文采用點(diǎn)對點(diǎn)的數(shù)據(jù)傳輸方式,使用專門的LVDS串化/解串芯片,相同的串化/解串時鐘頻率控制,保證數(shù)據(jù)的同步傳輸。LVDS解串器完成LVDS電平到TTL電平的轉(zhuǎn)換,實(shí)現(xiàn)圖像幀、行同步信號與圖像數(shù)據(jù)的分離和輸出,并輸入到FPGA中進(jìn)行處理。圖像數(shù)據(jù)是在幀同步信號VSYN為高電平時有效,故將幀同步信號VSYN與數(shù)據(jù)使能信號DE_IN連接,在幀同步信號VSYN有效時,解串芯片輸出DE_OUT,有效輸出16位圖像數(shù)據(jù)及控制信號。并行數(shù)據(jù)輸出時序如圖2所示。
由于圖像數(shù)據(jù)傳輸速率遠(yuǎn)大于主存儲設(shè)備的存儲速度,并且在數(shù)據(jù)轉(zhuǎn)存的同時還要對每幀圖像數(shù)據(jù)進(jìn)行編碼,因此為了實(shí)現(xiàn)接收和轉(zhuǎn)發(fā)數(shù)據(jù)流之間的速度匹配,需要在主存儲器之前使用緩存,并且要在下一幀數(shù)據(jù)到來之前將數(shù)據(jù)轉(zhuǎn)存,以保證圖像數(shù)據(jù)的無縫緩存[4]。本文選用1片SRAM構(gòu)成單幀緩存,在幀同步VSYN和行同步HSYN同時為高時,SRAM寫地址跟據(jù)PCLK的上升沿遞推,PCLK低電平時將數(shù)據(jù)寫入SRAM中緩存,時序如圖3所示。
陣列存儲模塊作為主存儲器主要負(fù)責(zé)圖像數(shù)據(jù)的存儲,同時還要在幀間隔時間完成單幀緩存到主存儲器的自動轉(zhuǎn)存,即在CPU控制下FPGA將圖像數(shù)據(jù)從單幀緩存中讀出寫入到陣列存儲器中。本文數(shù)字圖像信號分辨力為320×240,16位模式;陣列存儲器由20片256×16 kbit高速SRAM構(gòu)成。陣列存儲模塊的原理如圖4所示。其中共用16位數(shù)據(jù)線和18位地址線,采用獨(dú)立片選線。
自動轉(zhuǎn)存能否成功進(jìn)行是整個系統(tǒng)的關(guān)鍵部分。如圖5所示,兩幀間的間隔決定了自動緩存時間。圖像數(shù)據(jù)在VSYN為高時寫入單幀緩存中,為低時開始圖像數(shù)據(jù)的自動轉(zhuǎn)存。依據(jù)設(shè)計(jì)需要,兩幀間的最小間隔為15 ms,所以用于自動轉(zhuǎn)存的時間必須小于15 ms。
自動轉(zhuǎn)存一幀的圖像數(shù)據(jù)量約為(320×240×2)bit=153.6 kbit,由此可得出自動轉(zhuǎn)存最小理論頻率為[0.015/(320×240)]-1Hz≈5 MHz。實(shí)際操作時,要留有一定的后操作時間,本文確定的轉(zhuǎn)存時鐘為8 MHz,寫入陣列存儲器一幀圖像的時間約為(320×240/(8×106))s=9.6 ms。因此,根據(jù)計(jì)算有足夠的時間將單幀緩存中的圖像數(shù)據(jù)轉(zhuǎn)存入陣列存儲器中。
PCM碼是無線遙測系統(tǒng)中常用的一種編碼過程,本系統(tǒng)由采編器提供碼同步(YCK)和字同步(YZM)信號,將并行圖像數(shù)據(jù)編碼輸出為串行PCM碼流。在YZM變?yōu)楦唠娖綍r,系統(tǒng)在YCK的上升沿輸出一個圖像數(shù)據(jù)位,每個圖像數(shù)據(jù)字節(jié)用8個YCK輸出。在讀主存儲器之前,CPU首先向FIFO寫入幀頭和幀計(jì)數(shù),然后CPU控制FPGA讀取圖像數(shù)據(jù)寫入FIFO,最后依據(jù)YCK和YZM信號從FIFO中讀出數(shù)據(jù)進(jìn)行PCM編碼,以60 kbyte/s的速率通過RS-422接口下發(fā)給采編器。
圖6為初始20幀的單幀緩存狀態(tài),CH1為圖像數(shù)據(jù)的幀同步信號,CH2為寫單幀緩存信號。在陣列存儲器沒寫滿時,圖像數(shù)據(jù)先存入單幀緩存,然后自動轉(zhuǎn)存到陣列存儲器。編碼測試如圖7所示,F(xiàn)IFO中讀出的圖像數(shù)據(jù)在YZM為高時進(jìn)行PCM編碼,CH1為編碼數(shù)據(jù)YDT,CH2為字同步Y(jié)ZM,CH3為碼同步Y(jié)CK,圖中下發(fā)的YDT為0x0D和0x0E。
本文利用CPU+FPGA的組合設(shè)計(jì)方法,實(shí)現(xiàn)了遙測圖像數(shù)據(jù)的無縫緩存,完成圖像數(shù)據(jù)的PCM方式串行下傳。設(shè)計(jì)中采用單幀緩存和陣列存儲的數(shù)據(jù)處理方式,并對圖像數(shù)據(jù)自動轉(zhuǎn)存的關(guān)鍵參數(shù)進(jìn)行了詳細(xì)的分析,針對系統(tǒng)的功能進(jìn)行了實(shí)際測試,測試結(jié)果表明陣列存儲可以高速有效地緩存圖像數(shù)據(jù)。
[1]孫榕,劉峰.高清視頻編解碼芯片選型及壓存系統(tǒng)的設(shè)計(jì)[J].電視技術(shù),2007,31(11):26-28.
[2]蔡波.視頻實(shí)時圖像處理系統(tǒng)研究及設(shè)計(jì)[J].電視技術(shù),2005,29(5):23-25.
[3]孫春鳳,袁峰,丁振良,等.基于LVDS技術(shù)的高速圖像采集系統(tǒng)的設(shè)計(jì)[J].儀表技術(shù)與傳感器,2009(3):46-48.
[4]張國兵.基于LVDS的圖像存儲轉(zhuǎn)發(fā)裝置的設(shè)計(jì)與實(shí)現(xiàn)[D].太原:中北大學(xué),2010.