| [日期:2008-2-26] |
來源:北京科技大學 作者:周劍波 鞏憲鋒 王長松 孫宏林 |
[字型:大 中 小] |
摘要 構建了以FPGA為核心晶片的高速映像採集與處理系統,圖形採集頻率可達13.5 MHz在該系統中,採用了視頻A/D晶片SAA7111A將電視訊號轉換成數字訊號,並由FPGA作為控制器將數字訊號存入SRAM中,以便進行處理,提取有用資料;系統還採用了EZUSB2131Q晶片來進行處理後的資料與PC機的傳輸.
關鍵詞 視頻映像;訊號處理;FPGA;VHDL;EZUSB;視頻A/D
傳統的基於ISA,PCI等匯流排的映像採集卡已經應用非常廣泛,但速度慢、處理功能簡單,對於特殊要求往往需要後續處理部分 因此,本文構建了一種高速映像採集系統它主要由FPGA(field programmable gate array)、視頻A/D晶片SAA7111A以及USB匯流排構成.該系統可以根據需要進行現場可程式化,具有通用性好、成本低等優點.在FPGA中利用硬體描述語言VHDL編程實現FPGA可以在資料擷取系統中取代單片機和DSP對資料擷取過程進行控制.
PHILIP公司的視頻A/D晶片SAA7111A具有四路視頻輸入,抗混濾波、梳狀濾波都被整合到晶片內部,帶來了極大的方便,但系統內部鎖相環技術的整合使得可靠性和設計複雜度都有極大的降低.
CYPRESS的EZUSB2131QC晶片是針對USB 1.1協議開發的,相容全速和低速傳輸,功能高度整合化.該晶片整合了一個增強型8051處理器、一個“智能型”串列介面引擎(SIE)、一個USB收發器、整合I2C匯流排控制器、片上RAM和FIFO.
1 映像採集與處理系統設計
系統由視頻A/D晶片、FPGA控制模組、資料存放區模組SRAM、EZUSB介面模組和PC機應用程式組成.FPGA程式用VHDL語言編寫.整體框圖1所示.
2 視頻訊號的A/D轉換
SAA7111A提供了 4個類比輸入通道,可以編程選擇使用其中的一個或多個通道視頻訊號輸入晶片後,一路經過緩衝器從AOUT引腳輸出,這個訊號作為視頻監控訊號,以檢測是否有視頻訊號輸入;另外一路訊號經過模/數轉換後產生數字色度訊號和亮度訊號,分別進行亮度訊號處理和色度訊號處理.亮度訊號處理的結果,一路送到色度訊號處理器,以進行綜合處理,產生灰階訊號Y和UV訊號,格式化後從資料線VPO[15:00]輸出,其中高8位為Y、低8位為UV;另一路進入同步分離器,經過PLL產生相應的行同步訊號HS和場同步訊號VS,同時數字PLL驅動時鐘發生器模組,從而產生視頻訊號上作頻率為27MHz的LLC和13.5MHz的LLC2時鐘訊號.SAA7111A正常工作需要對內部32個寄存器正確配置,通過I2C匯流排由EZUSB AN2131Q寫入SAA7lllA的內部寄存器.
3 FPGA控制模組
經過對系統功能的分析和劃分,可以將設計劃分為若干個子模組.每個子模組通過內部握手訊號相互關聯並完成相對獨立的功能.最後將子模組組合起來就能得到系統級的功能晶片.將FPGA劃分為以下幾個功能子模組:輸入訊號緩衝模組、消除抖動模組、SAA7111A介面模組、SRAM介面模組、即時插入結束標識模組、緩衝模組FIF0、多路選取器DATA-MUX、資料處理模組DATA_Proc等幾個部分,2所示模組之間通過中間訊號進行通訊,從而實現資料的傳輸和控制.
3.1 SAA-INTERFACE模組
SAA_INTERFACE模組的主要功能是接收來自SAA7111A的資料訊號和狀態訊號,實現FPGA與視頻A/D晶片SAA7111A的介面,並根據這些訊號產生相應像素灰階資訊的儲存地址,在時鐘訊號LLC2的控制下,完成資料在SRAM中的儲存寫入地址和讀出地址及對兩片SRAM進行乒乓操作的指示訊號的產生.
分析SAA7111A輸出的狀態訊號的時序圖,可以分析得到以下結論:
(1)每行映像共有864個像素,其中0~719為有效像素、720~863為水平消隱階段,在消隱期間的像素為無效像素.
(2)每行映像起始條件是:場參考訊號VREF為邏輯‘1’時,HREF產生一個上升沿.每行映像結束條件是:HREF訊號的出現下降沿當VREF為邏輯‘0’狀態時,處於場消隱階段,此時為無效映像.
(3)每幀映像起始的條件是:RTS0為邏輯‘l’期間,VREF產生一個上升沿.而每幀映像結束的條件是:RTS0為邏輯‘O’期間,VREF產生一個下降沿.
由於複合視頻訊號CVBS是由隔行掃描的方式得到的,而電腦顯示器是漸進式掃描來顯示映像的,所以寫入SRAM的資料必須隔行寫入,而讀山SRAM的資料必須逐行讀出.讀取SRAM時,由於奇偶場已經“隔行”寫入SRAM中,所以只需要逐行順序讀取即可.
3.2 SRAM_INTERFACE模組
介面模組SRAM_INTERFACE的主要功能是完成與SRAM儲存空間的介面工作.由於採用了兩片SRAM,所以FPGA中的SRAM介面模組也應該有兩個,該模組根據目前狀態做出判斷,從而對SRAM發出相應的控制訊號和地址訊號,完成資料的寫入和讀出工作.
3.3 INSERT_FLAGS模組
為了在上位機顯示所採集到的映像,除了需要相應的像素資訊外,還必須提供行同步訊號和、場同步訊號本系統沒有另外提供專門的行同步訊號、幀同步訊號,而是通過在恰當的時刻插入標識資料的方法來代替視頻流的行同步訊號和幀同步訊號.
INSERT_FLAGS模組將在行結束時,將自訂的行結束標識插入到資料流中;在幀結束時,將幀結束標識插入到視頻流中,從而為上位機實現對映像資訊的再現和處理創造了方便條件.
3.4 DATA_MUX模組
DATA_MUX模組實現了對資料的流向的控制和資料處理工作.它接收來自SAA71llA的未經處理資料VPO和即時插入的行、幀結束標識訊號VP()_FLAGS,併產生最終的連續的含有場、幀結束標識的資料流VPO_ALL,並控制VPO_ALL的流向.當WRlRD2為邏輯‘1’時,VPO_ALL寫入SRAMl,同時將已經儲存到SRAM2的資料讀出到DATA_Proc模組中;當WRlRD2為邏輯‘0’時,VPO_ALL的資料寫入SRAM2中,同時將SRAM1的資料讀出到DATA_Proc模組中.
3.5 DATA_Proc資料處理模組
DATA_Proc模組用於對採集的資料進行處理,根據項目要求,其上作主要是對訊號進行濾波和邊緣提取,從而提取有效資料,減少資料的傳輸量.為了減少工作量,採用了Xilinx公司的SystemGenerator軟體來設計這部分模組.
System(Ceneratcor是Xilinx公司和Mathworks合作開發的FPGA輔助設計工具,只需在simulink中完成模型的搭建,啟動SystemGenerator,就能自動產生VHDL來源程式及其他一些工程檔案,並將系統模型映射到目標器件FPGA上進行硬體實現.
3.6 FIFO模組
視頻訊號進入FPGA的時鐘為13.5 MHz,而USB介面晶片的時鐘為12MHz,兩者時脈速率不匹配.這就出現了非同步時序設計問題.由於需要進行跨時鐘領域的資料轉送,必須在FPGA和EZ_USB之間加入緩衝資料單元.這個緩衝器一般由非同步First-In-First-Out(FIFO)實現.非同步FIFO在每個寫時鐘時寫入資料,而用每一個讀時鐘時讀出資料,這兩個時鐘是非同步.
FIFO的工作原理是:在寫時鐘的上升沿,當寫允許有效時,將寫資料匯流排上的資料寫入雙口RAM中寫地址對應的儲存單元中;而始終將讀地址對應的雙口RAM中的資料輸出到讀資料匯流排上,在讀允許有效時,輸出資料.
4 EZUSB模組
在系統中,EZUSB2131主要完成兩方面的工作:完成對SAA7111A的配置和基於快速同步傳輸方式的資料轉送.
為了使視頻解碼晶片SAA7111A正常工作,必須通過I2C匯流排對其內部的寄存器進行正確的配置,當通過I2C配置SAA7111A時,寫入資料格式為:首先為起始訊號,然後是7位的從機地址和方向位(‘0’表示寫入SAA7111A寄存器,‘l’表示讀出相應寄存器)共8位元據,此時從機應該向主機發送一位響應訊號.然後是從機中被寫入的寄存器的地址和從機的響應訊號,然後才是要寫入子地址寄存器的的資料,最後是結束訊號.
USB匯流排支援4種資料轉送方式:控制傳輸、中斷傳輸、等時傳輸和塊傳輸.EZUSB系列的2131Q支援快速等時傳輸方式,為了提高資料轉送的速度,應用這種方式進行資料轉送,能夠使FPGA內部的FIFO模組直接與EZUSB內部的資料匯流排通訊.
為了使用快速同步方式傳輸資料,需對2131進行如下設定:
(1)能使SOF中斷,使51核心能接受SOF中斷,從而保證1 ms傳輸一楨資料.
(2)本系統使用了等時傳輸IN8端點,所以須設定INISOVAL為“00000001”.
(3)設定IN8端點將使用的等時FIFO的大小為了加快資料轉送的速度,這裡設定該FIFO的大小為1024.
(4)設定寄存器PORTACFG,設定PA口第4位和第5位複用功能.其複用功能是快速等時傳輸的FRD和FWR訊號.
(5)設定寄存器FASTXFR,使能快速等時傳輸方式,設定nFRD低電平有效,並且設定了nFRD的寬度和相位.
為了響應SOF中斷,需要在中斷響應函數ISR_Sof()中編寫資料處理程式,將資料傳送到內部寄存器IN8DATA,另一方面清SOF插斷要求和USB插斷要求,以便程式能對下一個SOF做出正確的響應.
5 PC機應用程式
EZUSB通用驅動程式GPD(general purposedriver)用來和EZUSB外設介面的通用裝置驅動程式,為應用程式訪問EZUSB硬體提供了途徑.EZUSB開發包提供了預設的驅動程式檔案:EZUSB.SYS. 對於應用程式而言,調用CreateFile()來開啟裝置並取得訪問裝置驅動程式的控制代碼.使用者程式使用函數DeviceIoControl()來提交控制碼,並為CreateFile()函數返回的裝置控制代碼設定I/O緩衝區.
串連到主機的EZUSB裝置,GPD為其建立一個連結符.一個連結符.調用函數CreateFile(),實質上就是擷取驅動程式產生的目標裝置控制代碼.EZIU3SHW 開發包中提供了 I/O控制碼,使用這些I/O控制碼能非常方便地實USB通訊當使用快速傳輸方式時,需要將IOCTL_EZUSB_START_ISO_STREAM,IOCTL_EZUSB_READ_ISO_BUFFER,IOCTL_EZUSB_STOP_ISO_STREAM等控制碼提供給函數DcviceIoControl(),從而實現開啟等時傳輸、讀取等時傳輸資料、停止等時傳輸等功能.
6 結論
系統採用FPGA作為採集處理部分,可以提高系統處理的速度,大大增強系統的靈活性和適應性,具體表現為:
(1)系統效能得到大大提高.由於採用雙SRAM作為資料交換區,FPGA採用乒乓技術傳輸資料,提高了傳輸的速度.
(2)系統的適應性與靈活性強由於採用FPGA可程式邏輯元件採集與處理資料,對於不同的視頻映像訊號,只要對FPGA邏輯稍作修改,便可實現訊號採集.
(3)設計結構簡單,調試方便.FPGA的外圍硬體電路簡單,在硬體設計中,可以大大地減小硬體設計的複雜程度.
FPGA技術和USB的組合,資料處理能力得到了極大的提高,且有利於系統升級.本設計用於傳輸當前處理後的資料量已經足夠,採用EZUSB2131晶片已經可以完成.如果需要傳輸更大資料量,可以採用CPYRESS公司USB2.0晶片cy7c68013代替.該執行個體還可應用於即時資料採集、音頻及壓縮視頻資料轉送等領域.