摘要:由FPGA控制視頻譯碼芯片ADV7170,接收來自紅外熱像儀輸出的數字圖像,從而把數字圖像轉化為PAL制模擬信號并由電視機進行顯示。該紅外數字圖像顯示系統具有小型化、低功耗、靈活性強等特點,能夠廣泛應用于國防科技中。
ADV7170芯片是AD公司推出的一款較新且功能較強的視頻譯碼器,這款高度集成的芯片,既包含精密的模擬電路,又包含高速數字電路。ADV7170應用廣泛,適用于DVD播放器、便攜式視頻設備、視頻監視器和機頂盒等場合。
紅外熱像儀將物體表面的溫度轉換成人眼可見的圖像,并以不同灰度值顯示物體表面的溫度分布。紅外熱像儀具有超遠距離成像特點,成像距離主要由物體溫度決定,從而克服傳統成像器件成像距離短的弊端。文中利用這一特點實現對熱像儀周圍空域的實時監測,達到預警的效果。
1 設計方案
文中嵌入式數字圖像顯示系統硬件系統結構如圖1所示,在此圖像顯示系統中,采用Altera公司的Cyclone 3系列FPGA:EP3C80F484C6,Analog Device公司的視頻譯碼芯片ADV7170。首先FPGA使用I2C總線對ADV7170的內部寄存器進行配置,然后FPGA接收來自紅外熱像儀輸出的數字圖像,并轉化為ADV7170可識別的數據格式,最后由ADV7170把數字圖像轉化為PAL制模擬信號給電視機顯示。

2 ADV7170的配置
Analog Device公司生產的ADV7170是一款通用性強的視頻譯碼芯片。它是一款集成的數字視頻譯碼器,將數字形式的ITU_R_BT656組合視頻數據,轉換成標準的模擬基帶電視信號。它可以同時輸出一路復合視頻信號及一組RGB信號,或一路復合視頻信號及一組YUV信號,或二路復合視頻信號及一組亮度與色度信號。ADV7170的數據輸入有兩種模式:8位與16位。當工作于8位模式時,引腳P7~P0作為數據輸入口,輸入數據序列為Cb0、Y0、Cr0、Y1、Cb1、Y2……,在每個時鐘的上升沿采樣數據;當工作于16位模式時,引腳P7~P0輸入Y信號,引腳P15~P8輸入Cb、cr信號,每兩個時鐘的上升沿采樣數據。無論工作在那種數據輸入模式,在輸入數據流中都需要嵌入同步控制數據。對該芯片應用的關鍵就是要設置ADV7170內部的一些寄存器使ADV7170能正常工作。而ADV7170采用了I2C總線接口標準,所以對該芯片的控制就主要是通過I2C總線進行寄存器的配置。
(1)I2C總線的基本原理。I2C總線是Philps公司開發的一種用于芯片間通訊的串行數據傳輸總線,它由串行時鐘線SCLOCK和串行數據線SDATA完成全雙工數據傳送。串行的8位雙向數據傳輸速率,在標準模式下可達100 kbit·s-1,快速模式下可達400 kbit·s-1,高速模式下可達3.4Mbit·s-1。I2C總線數據傳輸時,在時鐘高電平期間數據線上必須保持有穩定的邏輯電平轉態,高電平為數據1,低電平為數據0。只有在時鐘線為低電平時,才允許數據線的電平狀態變化。發送到串行數據線SDATA線上的每個字節必須為8位,每次傳輸發送的字節數量不受限制。每個字節后鼻血跟一個相應位,首先傳輸的是數據的最高為。如果從機要完成一些其他功能后才能接受或發送下一個完整的數據字節,可以使時鐘線SCLOCK保持低電平迫使主機進入等待狀態。當從機準備好接收下一個數據字節并釋放時鐘線SCLOCK后,數據傳輸繼續。
I2C總線起始信號:在時鐘線保持高電平期間,數據線出現由高電平向低電平變化時啟動I2C總線,為I2C總線的起始信號。
I2C總線終止信號:在時鐘線保持高電平期間,數據線出現由低電平向高電平變化時停止I2C總線數據傳輸,為I2C總線的終止信號。
I2C總線應答信號:I2C總線數據傳送時,每傳送1Byte數據后必須有應答信號。應答信號在第9個時鐘位上出現,接受器輸出低電平為應答信號,輸出高電平則為非應答信號。
圖2為ADV7170的I2C總線的一次完整的數據傳輸。

(2)I2C模塊設計與VHDL實現。設計需要配置的ADV7170內部寄存器如表1所示。

采用狀態機方式實現I2C模塊的功能,圖3所示狀態機中有6個狀態,分別是St_idle,St_start,St_write,St_read,St_stop和St_ac k。系統復位之后進入St_idle狀態,收到go和start命令后進入St_start狀態,在St_start狀態下判斷隨后到達的命令,如果是寫寄存器命令,則進入寫狀態;如果是其他命令,則進入相應的狀態。每次數據傳輸完成后會讀取ack信號,判斷寄存器是否配置完成。如果完成則進入停止狀態,由于實際工作中不需要讀寄存器的值,所以讀命令只在調試中應用到。圖4是FPGA實現I2C模塊。

如圖4所示,用VHDL語言實現了I2C總線對ADV7170內部寄存器的配置,圖5~圖6為使用中的寫時序和讀時序圖。

(2)圖像數據格式轉換。在PAL制模式下ADV7170能接受的圖像數據大小為625×1 728,即每幀圖像有625行,每行有1 728個像素點,這種格式是國際通用的TTU_R_BT656視頻圖像格式。ITU_R_BT656定義了一個并行的硬件接口,用來傳送一路4:2:2的YCbCr數字視頻流和行場所用的控制信號。ITU_R_BT656視頻圖像格式分為奇場和偶場,奇場313行,偶場312行,每場均有24個消隱行,如圖7所示。每行有行開始狀態位SAV,行結束狀態位EAV,每行對應的場信號F,行信號H,消隱信號V如圖8所示。根據BT_656的這種格式特點需要對接受到的紅外數字圖像進行格式變化。紅外熱像儀輸出的數字圖像大小為256×320,即每幀圖像有256行,每行有320個像素點。按照數字圖像的大小,每行里的每個像素點連續讀取4次,奇場和偶場各讀取一次圖像。即完成圖像的擴展,剩余的像素元素使用消隱值進行替代。

FPGA實現上述格式轉換過程:將一幀數字圖像存入FPGA內部的雙口RAM中,由于ADV7170工作在27 MHz時鐘頻率,所以需要設置一級乒乓緩存操作。乒乓操作是一個常常應用于數據流控制的處理技巧,典型的乒乓操作方法如圖9所示。乒乓操作的處理流程描述如下:輸入數據流通過“輸入數據流選擇單元”,等時地將數據流分配到兩個數據緩沖模塊。在第一個緩沖周期,將輸入的數據流緩存到“數據緩沖模塊1”。在第二個周期,通過“輸入數據流選擇單元”的切換,將輸入的數據流緩存到“數據緩沖模塊2”,與此同時,將“數據緩沖模塊1”緩存的第一個周期的數據通過“輸出數據流選擇單元”的選擇,送到“數據流處理模塊ADV7170”上。在第3個緩沖周期,通過“輸入數據流選擇單元”的再次切換,將輸入的數據流緩存到“數據緩沖模塊1”,與此同時,將“數據緩沖模塊2”緩存的第二個周期的數據通過“輸出數據流選擇單元”的切換,送到“數據流處理模塊ADV7170”,依次循環。乒乓操作的最大特點是,通過“輸入數據流選擇單元”和“輸出數據流選擇單元”按節拍、相互配合地切換,將經過緩沖的數據流沒有時間停頓地送到“數據流處理模塊ADV7170”。把乒乓操作模塊當作一個整體,站在這個模塊的兩端看數據,輸入數據流和輸出數據流連續不斷,沒有停頓,適合對數據流進行流水線式處理,所以使用乒乓操作完成數據的無縫緩沖與處理,達到低速模塊處理高速數據流的效果。設置行計數器,讀取每行的像素值,然后將讀取的像素值寫入ADV7170的數據總線上,最后可以得到ADV7170輸出的PAL制模擬信號。下面是數字圖像和電視機接收的模擬信號顯示圖像。

3 結束語
紅外數字圖像顯示系統具有小型化、低功耗、靈活性強等特點,能廣泛用于國防科技中。系統使用VHDL語言實現了I2C總線協議,完成了對ADV7170內部寄存器的配置,最終將紅外數字圖像在電視機上顯示,如圖10和圖11所示。

