基于FPGA的嵌入式圖像采集系統設計
在圖像處理系統中,首先對攝像頭采集的視頻信號進行A/D轉換,將模擬圖像信號轉化為數字信號,提供給后端的處理系統進行圖像處理。而視頻圖像采集系統是多媒體信息處理、視頻監控等系統的前端子系統,是視頻處理系統中不可缺少的部分。傳統視頻采集系統一般電路復雜、成本高,而且較難滿足實時性的要求,而采用視頻攝像頭+視頻解碼器+FPGA的模式,可簡化電路的復雜性,其中視頻解碼器對攝像頭采集的信號進行AD轉換,FPGA對信號的采樣進行控制。FPGA的時鐘頻率高、時間延遲小,可以滿足實時性的要求。基于以上的優點文中采用些結構來實現視頻圖像的采集。
本文引用地址:http://www.j9360.com/article/201706/348906.htm1 視頻解碼器SAA7113H
SAA7113H是Philips公司的一種增強型視頻輸入處理器,內部有一系列寄存器,寄存器的讀、寫通過I2C總線完成。包括一個雙通道的模擬預處理電路、可編程靜態增益和自動增益控制電路、時鐘生成電路、數字多標準解碼電路、亮度、對比度、飽和度控制電路和I2C總線控制電路。SAA7113H需外接24.576 MHz晶體,內部鎖相環PLL可輸出27 MHz的時鐘。自動檢測50 Hz和60 Hz的場頻,可在PAL、NTSC兩種制式之間自動轉換。具有4路模擬視頻信號輸入,通過內部寄存器的不同配置可以實現4路信號的轉換;輸入可以是4路CVBS或2路Y/C信號或1路Y/C信號2路CVBS,輸出為標準ITU656 YUV4:2:2格式的VPO數據總線(8-bit)。SAA7113H模擬部分和數字部分采用+3.3V,數字I/O接口兼容+5V。
2 系統總體方案及工作原理
系統選用Altera公司的CycloneⅡ系列中的EP2C20Q240C8為系統的硬件平臺,該芯片內部有18752個LE,26個乘法器和4個鎖相環等。視頻解碼芯片采用Philips的SAA7113H。系統主要由SAA7113H圖像采集接口模塊、I2C總線配置模塊、控制模塊、像素存儲模塊、格式轉換模塊和顯示接口模塊組成。設計中利用VHDL語言在QuartusⅡ下進行編程和調試。系統基本結構如圖1所示。
3 主要模塊功能介紹
3.1 SAA7113H圖像采集接口模塊
該模塊負責視頻圖像的采集并將模擬視頻信號轉換為數字視頻信號,為后面的視頻處理做準備。該模塊與SAA7113H的VPO數據總線、RTS0、RTS1、及LLC相連,RTS0和RTS1分別配置為行同步和場同步信號,只有在這兩個信號同時有效時,輸出數據是有效圖像數據,否則是消隱信號。有效的視頻信號分為奇數場和偶數場,共576行有效數據,其中奇數場有效數據為23~310行,偶數場有效數據為336~623行,其余
為垂直控制信號。
SAA7113H的VP0總線輸出數據的頻率是27 MHz,在每個LLC的上升沿輸出1 Byte有效數據。標準ITU YUV 4:2:2格式視頻信號的每個像素都有各自的亮度分量Y,每兩個相鄰的像素公用一對的色差數據Cb和Cr。在存儲像素數據時,可認為每兩個連續字節表示一個像素,當需要格式轉換或進行其他的處理時,要一次提取兩個相鄰的像素的數據,進行相應處理。其中,每行有數據864個采樣點中有效數據720個,消隱期間數據144個。在完整的一幀圖像數據中第一場的消隱EAV為FF 00 00 BX,第一場消隱SAV為FF 00 00 AX;第一場有效數據SAV為FF 00 00 8X,有效數據EAV為FF 00 00 9X,其他場類推。奇數場有效數據階段的SAV為“FF 00 00 80”,偶數場有效數據階段的SAV為“FF 00 00 C7”。在每個時鐘的上升沿讀取8位數據,當檢測到一行數據的開始標志FF 00 00 XY時,檢測到SAV或EAV信號,提取H、F、V信號。然后開始對圖像數據進行解碼,根據8位數據自帶的信息,判斷該數據是Y、Cb還是Cr,從而得到Y、Cb、Cr各分量。
3.2 I2C總線配置模塊
該模塊通過I2C總線協議對SAA7113H進行配置,時鐘頻率為20 kHz。通過該模塊完成SAA7113H配置。配置模塊如圖2所示。
其中,inicio_conf信號表示啟動對SAA7113H進行配置,高電平有效。clk為時鐘信號。reset為外部復位信號高電平有效。SCL和SDA為SAA7113H配置信號。CONFIGURACION_OK表示解碼芯片配置好以后輸出一個控制信號給控制模塊,以啟動數據采集。
SAA7113H的寄存器地址從00H開始,只有01H~05H前端輸入配置部分,06H~13H、15H~17H解碼部分,40H~60H常規分離數據部分,這些可讀寫,其余為保留地址或只讀寄存器,將需要配置的寄存器數據存在查找表con_data中,并用count表示當前對哪個寄存器配置,配置時逐個寫入寄存器。
根據I2C總線數據傳輸的時序,總線控制器的狀態機分為空閑狀態、啟動狀態、數據傳輸狀態、應答狀態和停止狀態。Idle狀態表示總線空閑狀態,SCL和SDA都為高電平,若clk=1則進入Start狀態。Start狀態表示總線啟動,此時保持SCL為高電平,將SDA由高電平變為低電平,從而啟動數據傳輸。Data_trans狀態中一次傳1 Byte數據。在本狀態中,1 Byte數據的傳輸過程為將時鐘線變為低電平,然后將數據放在數據線SDA上。再將時鐘線變為高電平,讓接收方進行數據接收。傳輸完1 Byte后進入Hold。Hold狀態用來表示應答階段,主要是產生一個時鐘脈沖,讓接收方對1 Byte的數據產生應答信號。在此狀態中進行對本次數據連續傳送是否完畢進行判斷。如未傳輸完則繼續到Start狀態進行下一次數據的傳輸,并將count-1。Stop狀態表示數據傳輸結束。在SCL高電平期間將SDA由低轉為高。然后輸出一個配置完成的信號。寄存器配置狀態機如圖3所示。
3.3 控制模塊
控制模塊由control_enable模塊和control_interface模塊組成主要負責圖像采集模塊和顯示接口模塊的同步和使能。當解碼芯片配置完成后,從CONFIGURACION_OK輸入使能信號,啟動該模塊,同時通過href和odd信號啟動圖像采集模塊和顯示接口模塊,href=1表示SAA7113H通過VPO傳輸像素數據;odd=1表示奇數場,odd=0表示偶數場。
3.4 像素存儲模塊
圖像的一幀為720×625提取其中的有效像素640×576存入SDRAM中,再讀出480行數據進行格式轉換和顯示。
由于SDRAM每個單元為16位,所以將一個Y和一個Cb或Cr合存在一個地址空間中,即兩個時鐘周期產生一個地址。SDRAM有4端口模式,2個用于將FIFO中的數據寫SDRAM,2個用于將數據讀到FIFO中,讀寫采用的時鐘不同,寫時鐘采用解碼芯片的27MHz,而瀆時鐘采用VGA的25MHz,由于SDRAM的讀寫速度為50 MHz,時鐘頻率不同,不能直接寫入,因此需要一個FIFO將數據暫時儲存,再將其寫到SDRAM中。
此處關鍵問題是隔行掃描到逐行掃描的轉換。SAA7113H是先奇數場后偶數場的順序輸出,即隔行輸出,而VGA顯示是逐行顯示的,因此要進行去隔行操作。利用對SDRAM的讀寫地址的控制能夠有效解決隔行到逐行的轉換問題,數據寫入SDRAM是將隔行數據寫入到SDRAM的0-640× 576的地址空間中,其中640×23-640×310為1、3、5、…奇數場的有效數據,640×336-640×623為2、4、6、…偶數場的有效數據。兩場數據分別通過不同的FIFO讀出,格式轉換時交叉讀取兩個FIFO中的數據,這樣讀出的數據即1、2、3、4、…逐行數據。
3.5 格式轉換模塊
要將攝像頭采集的圖像顯示在顯示器上,需進行數據的格式轉換,將YUV格式的數據轉換成RGB格式的數據。YUV 4:2:2格式的數據兩個相鄰的像素共用一對Cb和Cr分量,所以在進行格式轉換時要先解交織,即一次從FIFO中提取相鄰的兩個像素數據,將Cb和Cr各復用一次,使得YUV變成4:4:4格式,然后進行格式的轉換。將轉換好的數據存放在reg_RGB中,VGA顯示的時候交叉讀取這兩個寄存器中的數據。轉換公式如下所示
由于在FPGA中進行浮點運算較困難,因此可將式(1)中的各系數轉化為整數在進行運算,采用將各系數放大1 024倍的方法,得到r、g、b后再除以1 024,放大后的公式為
根據上述公式得到r、g、b。然后將結果均右移10位完成除法運算,得到RGB值。由于r、g、b均為8位,取值范圍為0~255,而運算過程較易生成負數和超過255的正數,因此運算結果需將負數取0,超過255的正數取為255。此方法雖然會引入誤差,但對最終圖像的顯示效果不會有較大影響。
3.6 顯示接口模塊
由interface_vga負責圖像的顯示,從reg_RGB寄存器中讀取轉換好的數據,對這兩個像素的讀取由一個轉換電路負責在兩個寄存器之間切換。顯示接口模塊將r、g、b以及hsync、vsync一起發送給編碼芯片THS8134,通過VGA顯示出來,hsync和vsyne分別是行和場同步信號。在仿真中,選用CycloneⅡEP2C20Q240C8芯片,用QuartusⅡ8.0進行綜合與仿真。圖4是對顯示接口模塊的仿真。由仿真結果可以看出,行同步和場同步符合時序要求。
4 結束語
實現了一種基于CycloneII系列FPGA與視頻信號處理芯片SAA7113H的嵌入式圖像采集系統。系統結構簡單系、統穩定、功耗低、成本低、速度快以及接口方便,可以滿足視頻監控系統等的需要。圖像采集系統中采用FPGA作為采集控制部分,可以提高系統處理的速度及系統的靈活性和適應性,對于不同的視頻圖像信號,只要在FPGA內對控制邏輯稍作修改,便可實現信號采集。
評論