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