基于FPGA的紅外圖像存儲與回放系統(tǒng)設計
目前,紅外熱像儀應用廣泛,多用于偵查或監(jiān)控,并且大部分紅外熱像儀并沒有配備大容量存儲器,但在一些特殊場合如導彈發(fā)射試驗中的跟蹤導彈的飛行軌跡,需要記錄整個過程,以備事后分析。因此,基于系統(tǒng)設計體積和功耗考慮,這里提出一個基于FPGA的視頻圖像存儲與回放系統(tǒng)設計方案。該系統(tǒng)采用16片1 GB NAND Flash,紅外熱像儀輸出的每場320x240個像素點,場頻50 Hz,16 bit的不壓縮數(shù)字視頻圖像并保持至少30 min。為了擴展數(shù)據(jù)存儲量,該系統(tǒng)還配備USB通信接口,便于將記錄數(shù)據(jù)上傳至計算機,或?qū)⒂嬎銠C保存數(shù)據(jù)下載到該系統(tǒng)播放。
2 系統(tǒng)硬件設計
系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示,F(xiàn)PGA將接收的視頻數(shù)據(jù)編幀后送至Flash進行存儲,播放時讀取數(shù)據(jù)并按特定時序送至視頻D/A轉(zhuǎn)換器,再經(jīng)D/A轉(zhuǎn)換后送至電視機。USB單片機除與計算機傳輸數(shù)據(jù)外,還可通過I2C總線配置視頻D/A轉(zhuǎn)換器的寄存器以及顯示控制LCD模塊。
考慮到該系統(tǒng)FPGA的內(nèi)部各模塊邏輯復雜,尤其是在視頻回放時需要多種控制方式,如暫停、快進快退、慢放慢退、逐場播放回放等,實現(xiàn)這些控制需占用較多的邏輯資源,因此,F(xiàn)PGA選用Xilinx公司的Spartan-IIE系列的XC2S-150E-6P0208,該器件內(nèi)部邏輯高達15萬門,具有48 Kbit的Block RAM,可作為FIFO。
視頻D/A轉(zhuǎn)換器選用ADV7175A,該器件是一款性能卓越的數(shù)字視頻編碼器。可將符合CCIR601 4:2:2標準的數(shù)字視頻信號轉(zhuǎn)換為標準的PAL/NTSC制的全電視信號,轉(zhuǎn)換精度為10 bit,采用單一27MHz的時鐘源,SNR最高達80 dB,其內(nèi)部D/A轉(zhuǎn)換器的獨立開關可降低系統(tǒng)功耗。
根據(jù)該系統(tǒng)數(shù)據(jù)存儲順序進行操作,其存儲器選用K9K8G08IJOM型NAND Flash。該器件的容量為8 Gbit,是由8 192個塊組成,每塊由64頁組成,8位I/O總線作為命令、地址、數(shù)據(jù)總線分時復用。
USB通信部分選用CY7C68013A。該器件是新一代高速EZ—USB FX2.內(nèi)部集成了USB 2.0收發(fā)器,其SIE(串行接口引擎)可工作在高速(480 Mh/s)傳輸速率下,具有USB2.0的全帶寬;CPU采用增強型805l,具有更快的運行速度;簡單易用的可編程邏輯接口(GPIF)為外部的FPGA提供無縫連接四;另外還具有其3.3 V的工作電壓和內(nèi)部集成的I2C總線控制器。
2.1 Flash讀寫速度的匹配
由于16片F(xiàn)lash并聯(lián),存儲數(shù)據(jù)時,F(xiàn)PGA只能對一片F(xiàn)lash操作,又因為Flash的頁編程時間過長(最大為700μs),所以存儲時應在寫完第一片F(xiàn)lash的第一頁后接著寫第二片F(xiàn)lash,當輪詢完其余15片F(xiàn)lash后再回寫第一片F(xiàn)lash的第二頁,這樣可免去頁編程等待時間,如圖2所示。另外還需考慮:寫完15片F(xiàn)lash的page0的最短時間為25 ns(Flash的最小讀數(shù)周期)×2 048(每頁2 K字節(jié))×15(片)=768μs,該時間大于頁編程時間700μs,即寫完其余15片F(xiàn)lash的page0后,再回寫第一片F(xiàn)lash的pagel,而第一片F(xiàn)lash的頁編程已結(jié)束,這樣則不會造成數(shù)據(jù)丟失。
視頻回放時要考慮Flash與ADV7175A之間的讀數(shù)速度匹配問題。最壞情況下:ADV7175拾取數(shù)據(jù)時鐘是13.5 MHz如圖3所示。假設每個時鐘周期都是有效數(shù)據(jù),F(xiàn)lash的讀數(shù)時鐘周期TR最小值為25 ns,即極限讀數(shù)速度為:fMAX=1/25 ns=40 MHz>13.5 MHz,滿足系統(tǒng)要求。但Flash的頁讀緩沖時間tMAX=20μs,即每讀取2 K字節(jié)需等待時間20μs(最大值)。要滿足數(shù)據(jù)的連續(xù)性,需在Flash和ADV7175之間建立緩沖模塊,則采用l KB的深度足以滿足系統(tǒng)要求。
2.2 多段記錄和選段播放
為了方便操作和觀察,系統(tǒng)具備選段播放功能,即在記錄時將不同時間段記錄的內(nèi)容予以分段和標記;而在播放時保證每場圖像的各像素點要嚴格對齊,否則會造成圖像錯位。若要防止這種情況發(fā)生,可在記錄時在每場圖像數(shù)據(jù)前加一個字0xAA55作為場標志,由于每場圖像的數(shù)據(jù)量為320x240x2=153 600(字節(jié)),在加入場標志后的數(shù)據(jù)流如圖4所示。這樣設計的優(yōu)點在于:
(1)在快進、快退播放時,F(xiàn)lash跳地址后可檢測該標志重新調(diào)整圖像,另外也為數(shù)據(jù)上傳后,上位機軟件播放提供方便。
(2)加入場標志可實現(xiàn)多段記錄。由于存儲時確保每段視頻數(shù)據(jù)的首字節(jié)都寫入Flash_0的block_x(x表示block地址號)的page0的首地址,如圖2中‘·’。在上電后信息掃描時只需掃描Flash_0的各block中page0的前個字節(jié),如果是0xAA和0x55則表明新記錄段,如果不是則再讀取后2個字節(jié)。如果連續(xù)4個block中page0的前4個字節(jié)都是0xFF,則表明已掃描所有段,此時應將段總數(shù)和存儲器的已用空間以及系統(tǒng)狀態(tài)信息等發(fā)送至單片機進而送到LCD顯示。
2.3 ADV7175與FPGA的接口設計
CCIR一601標準規(guī)定,在數(shù)字編碼時,不使用A/D轉(zhuǎn)換的整個動態(tài)范圍,只給亮度信號分配220個量化級,黑電平對應于量化級16,白電平對應于量化級235,為每個色差信號分配224個量化級,色差信號的零電平對應于量化級128,如圖5所示。即每個樣本點亮度信號占220級,色度信號占225級。
由于紅外熱像儀提供的數(shù)據(jù)是16位灰度值而無色度值,所以應將ADV7175A的低8位(P7~P0)輸入0x80,具體電路連接如圖6所示,高8位輸入亮度信號,播放時需將16位的亮度信號轉(zhuǎn)換為8位再送入ADV7l75A。
3 FPGA邏輯設計
圖7為FPGA內(nèi)部各邏輯功能模塊框圖。各模塊主要功能如下:RECV模塊根據(jù)紅外熱像儀提供的特定時序接收數(shù)據(jù)并編幀;Flash控制器控制16片F(xiàn)lash,用于掃描無效塊和記錄段,計算Flash已用空間和剩余空間及對Flash的擦除和讀寫操作;信息記錄表負責記錄Flash控制器傳送的無效塊號及已記錄的段總數(shù)和各段的起始地址與結(jié)束地址;灰度調(diào)節(jié)模塊將16位的灰度圖像數(shù)據(jù)轉(zhuǎn)化為8位,因為ADV7175A最多可輸入8位灰度信息;PALl模塊控制ADV7175A;PAL2模塊生成原格式的行場時序,主要的控制信號是行同步信號(Hsync)和場同步信號(Vsync);FIF01和FIF02作為數(shù)據(jù)緩沖模塊;TO一68013模塊可在系統(tǒng)與計算機通信時互換TO一68013A的數(shù)據(jù);還可向68013A發(fā)送一些需要顯示的實時信息;鍵盤的掃描及按鍵的去抖則由鍵值處理模塊完成.最后由CPU模塊協(xié)調(diào)各子模塊工作。
4 結(jié)語
該系統(tǒng)采用FPGA作為主控制器,對于不同分辨率的紅外圖像數(shù)據(jù),只需修改FPGA中的RECV模塊和PAL模塊程序即可,因此,該系統(tǒng)設計具有一定的靈活性。