摘要: 基于AXI4Stream總線協(xié)議,在Xilinx公司提供的FPGA上實現(xiàn)了一個具有缺陷像素校正、色彩濾波陣列插值、圖像降噪實時圖像采集與顯示功能的視頻系統(tǒng)。AXI4Stream總線協(xié)議由ARM公司提出,該協(xié)議專門針對視頻、音頻、數(shù)組等數(shù)據(jù)在片內(nèi)通信設計。利用IP核進行嵌入式系統(tǒng)開發(fā)具有簡化設計、縮短開發(fā)周期等明顯優(yōu)勢。設計結果顯示,基于AXI4Stream總線的視頻系統(tǒng)具有通用性強、獨立、簡潔易維護等優(yōu)勢。
引言
隨著科技的發(fā)展,實時視頻處理技術作為數(shù)字信號處理領域最活躍的研究方向之一得到了普遍的研究關注,并在通信、航空航天、雷達、遙測遙感和多媒體等行業(yè)中廣泛應用。與用分離元器件構建電路的模式相比,基于現(xiàn)場可編程門陣列(FPGA)技術的新型視頻采集系統(tǒng)在處理速度、可靠性、成本、擴展能力和開發(fā)周期等方面具有明顯的優(yōu)勢。
近年來,基于FPGA的視頻采集系統(tǒng)得到了充分的研究[1,2,3,4],但鑒于此類研究對圖像數(shù)據(jù)未做通用的格式處理,使得系統(tǒng)過于集成,模塊間過于依賴,降低了系統(tǒng)通用性。AXI(Advanced eXtensible Interface)是一種總線協(xié)議,該協(xié)議是ARM公司提出的AMBA(Advanced Microcontroller Bust Architecutre)協(xié)議中重要部分,是一種面向高性能、高帶寬、低延遲的片內(nèi)總線。AXI4于2010年由ARM公司發(fā)布,其中AXI4Stream屬于AXI4的子類,特別適宜流媒體數(shù)據(jù)的傳輸[5]。本文以一種專門針對視頻數(shù)據(jù)傳輸?shù)目偩€,即AXI4Stream總線,對整個視頻采集系統(tǒng)進行重新研究。在保證高集成度的情況下,通過簡化模塊間通信接口大大提高了系統(tǒng)的通用性,具備良好的實用性和可擴展性。
1 AXI4Stream總線介紹
AXI4Stream總線主要應用于數(shù)字信息單向傳遞的系統(tǒng)中。經(jīng)過采樣的物理量,例如圖像像素點數(shù)據(jù)、音頻采樣數(shù)據(jù)和經(jīng)過離散數(shù)字信號系統(tǒng)處理的數(shù)據(jù)等,尤其適用于此總線協(xié)議。AXI4Stream 是一種單向的,由主機(master)到從機(slave)的基于握手信號傳遞數(shù)據(jù)的總線。系統(tǒng)采用的AXI4Stream總線是基于ARM公司發(fā)布的AMBA4 AXI4Stream Protocol v1.0參考手冊[6],該標準已廣泛應用在主流市場上的嵌入式系統(tǒng)當中。在保證功能完整的情況下,設計僅采用了部分信號線進行數(shù)據(jù)傳輸。相關信號線名稱和功能解釋圖略——編者注。
2 系統(tǒng)結構簡介
系統(tǒng)基于AXIStream總線,以FPGA為主控芯片,由DDR2緩存圖像數(shù)據(jù),從CMOS圖像傳感器讀取數(shù)據(jù)并處理后,送入視頻編碼芯片,最終通過DVI接口輸出,實現(xiàn)了一個實時圖像采集與顯示的視頻系統(tǒng)。該系統(tǒng)硬件框圖如圖1所示。
?
圖1 系統(tǒng)硬件結構框圖
系統(tǒng)選用芯片組分別為:CMOS圖像傳感器選用Aptina公司的MT9V022,有效分辨率為752H×481V,該芯片廣泛應用于視頻監(jiān)控、機器視覺等系統(tǒng)中;FPGA主控芯片選用Xilinx公司的Spartan6LX16,該芯片采用45 nm低功耗工藝技術,提供多達15 000個邏輯單元,滿足了低成本、大容量應用的市場要求,并極大地降低了總功耗;DDR緩存芯片選用Micro公司提供的MT47H64M16HR25E,存儲容量為1 Gb;視頻編碼芯片選用Chrontel公司提供的CH7301芯片,該芯片已廣泛應用于顯示接口電路中。
由于主控芯片選用Xilinx公司生產(chǎn)的FPGA,所以開發(fā)軟件采用由該公司提供的ISE(Integrated Software Environment) Design Suit套件。
系統(tǒng)功能模塊結構圖如圖2所示,所有模塊均采用硬件描述語言Verilog HDL在ISE內(nèi)實現(xiàn)。
?
圖2 系統(tǒng)功能模塊結構框圖
對于圖1中所示功能模塊主要考慮以下幾點:
① CMOS圖像傳感器芯片和視頻編碼芯片與主控FPGA芯片通信采用的是I2 C協(xié)議,所以加入了專門的I2C通信模塊。
② 由CMOS圖像傳感器送出的圖像數(shù)據(jù)并非基于AXI4Stream總線,引入了一個通用視頻數(shù)據(jù)轉AXI4Stream模塊對數(shù)據(jù)進行AXI4Stream格式化處理。
③ 圖像傳感器存在缺陷像素(Defective Pixel),需要算法進行去除,所以數(shù)據(jù)需經(jīng)過缺陷像素校正(Defective Pixel Correction)模塊處理。
④ 從圖像傳感器獲取來的像素數(shù)據(jù)是Bayer格式(Bayer Patten)的,需要轉換為RGB格式,引入了色彩濾波陣列插值(Color Filter Array Interpolation)模塊。
⑤ 經(jīng)過格式轉換后的原始數(shù)據(jù)噪點較多,需要引入圖像降噪(Image Noise Reduction)模塊。
⑥ 圖像數(shù)據(jù)量龐大,而FPGA有限的存儲空間不能滿足數(shù)據(jù)吞吐需求,為了解決這個問題本文引入了外部存儲芯片DDR2,并采用專用的內(nèi)存接口管理(Memory Interface Controller)模塊進行管理。
⑦ 圖像數(shù)據(jù)需要匹配相應的時序信號進行輸出,所以系統(tǒng)內(nèi)設計了一個視頻時序信號控制(Video Timing Controller)模塊解決這個問題。
⑧ 送入視頻編碼芯片的數(shù)據(jù)格式基于AXI4Stream協(xié)議,需要引入AXI4Stream轉視頻數(shù)據(jù)模塊將圖像數(shù)據(jù)和視頻時序控制信號進行整合,轉換為編碼芯片可直接利用的數(shù)據(jù)格式。
3 功能實現(xiàn)模塊
3.1 I2C總線通信模塊
I2C總線協(xié)議有以下幾種不同的傳輸編碼,按順序依次為:開始位(start bit)、從設備地址(slave device address)、應答位(acknowledge bit)、數(shù)據(jù)信息(data message),以及停止位(stop bit)。一個典型的I2C總線讀、寫時序如圖3所示。其中SCK為時鐘信號線,SDA為數(shù)據(jù)信號線。空閑狀態(tài)下SCK和SDA都為高電平,讀寫開始的標志是SDA信號線拉低電平,生成一個開始位,隨后主設備送出8位從設備地址信號。從設備地址的最后一位決定了此次操作的讀寫性質(zhì),低電平表示寫操作,高電平表示讀操作。從設備隨后拉低SDA信號線以應答。主設備隨后以8位為單位進行讀或寫操作,并在應答后拉高SDA信號線表示停止位,回到空閑狀態(tài)。
?
圖3 I2C總線時序傳輸圖
3.2 視頻數(shù)據(jù)轉AXI4Stream模塊
由CMOS圖像傳感器MT9V022輸出的時序如圖4所示,其中LINE_VALID表示行數(shù)據(jù)有效,F(xiàn)RAME_VALID表示幀數(shù)據(jù)有效。本模塊通過偵測FRAME_VALID和LINE_VALID信號的上升和下降沿,以判斷圖像中每一行數(shù)據(jù)的開始和結束,通過結合并行傳輸?shù)?0位像素點信息,對AXI4Stream接口信號進行匹配。該模塊以主模式(master mode)接口輸出,接口信號包含:tdata表示像素點數(shù)據(jù);TVALID和tready表示握手信號;tuser表示一幀圖像第一行第一個像素點;tlast表示每一行最后一個像素點。
該模塊在ModelSim軟件中的功能仿真圖略——編者注。經(jīng)驗證,該模塊可實現(xiàn)數(shù)據(jù)格式轉換功能。
3.3 缺陷像素校正模塊
由于生產(chǎn)制造上的缺陷、日常操作中的故障,或是基于溫度或曝光差異等引起像素點電壓變化,從圖像傳感器獲取來的數(shù)據(jù)存在一定數(shù)目的缺陷像素數(shù)據(jù)。這些缺陷像素的特征大體可概括為以下幾個方面:失活(總為低),活躍(總為高),粘連(固定值)。這些異常可以進一步表征為靜態(tài)的(總是存在的)或動態(tài)的(作為曝光量或溫度的函數(shù))。
模塊核心代碼采用Xilinx公司提供的IP核——Defective Pixel Correction IP Core[7],其編程接口如圖5所示。
?
圖5 缺陷像素校正模塊編程接口
對于圖像中較大的固定區(qū)域,此模塊需要去判斷該區(qū)域是圖像里靜止的部分還是奇異點,也就是有缺陷的像素。由于處理的數(shù)據(jù)是原始的Bayer格式,此模塊將對一個像素點相鄰且相同格式(例如同為綠色分量)的像素點進行追蹤比對,并將差值超過閾值的像素點間的信息記錄下來。
模塊里預先設定好閾值和連續(xù)比對幀數(shù),當像素點差異在連續(xù)若干幀內(nèi)都超出預定的閾值時,即可定為缺陷像素點。對于缺陷像素點,本模塊通過內(nèi)插的方式將相鄰格式像素數(shù)據(jù)替換過來。
3.4 色彩濾波陣列插值模塊
由于多數(shù)圖像傳感芯片有一層色彩濾波陣列,所輸出的圖像數(shù)據(jù)是Bayer格式的,每個像素點只含有紅、綠或者藍中的一種顏色分量。要生成一幅彩色圖像,每個像素點都需要的三原色信息:紅、綠、藍。為了獲得每一個像素點的其他顏色分量,需要用該像素點相鄰區(qū)域像素的數(shù)據(jù)近似計算出其他兩種顏色分量。本模塊中采用線性插值法實現(xiàn)對每一個像素點的R、G、B分量的獲取。
本模塊核心代碼采用Xilinx公司提供的IP核:Color Filter Array Interpolation IP Core[8],模塊編程接口與缺陷像素校正模塊編程接口相同,所以沒有給出編程接口示意圖。模塊基本原理如下:以藍色分量這一行(BG行)的插值為例,BG行的藍色像素點的RGB分量值計算如式(1)所示,BG行的綠色像素點的RGB分量值計算如式(2)所示。
?
3.5 圖像降噪模塊
噪聲是干擾圖像質(zhì)量的重要因素。一副圖像在實際應用中可能存在各種各樣的噪聲,這些噪聲可能在傳輸中產(chǎn)生,也可能在量化等處理過程中產(chǎn)生。此模塊核心代碼利用了Xilinx公司所提供的3個IP核,分別是:RGB to YCrCb ColorSpace Converter[9]、Image Noise Reduction[10]和YCrCb to RGB ColorSpace Converter[11]。3個IP間的結構原理如圖6所示。
圖像降噪模塊降噪核心采用平滑濾波器對圖像進行降噪處理?;驹韴D略——編者注。
3.6 內(nèi)存接口管理模塊
本系統(tǒng)采用的FPGA芯片內(nèi)部已經(jīng)集成了MCB(Memory Controlling Block)硬核,并支持大部分廠家的存儲芯片[12]。MCB硬核能夠進行誤碼校驗和偏移時鐘校驗。另外,Xilinx提供的原語PLL_ADV工作比較穩(wěn)定,而且精度較高,這些特點保證了研發(fā)產(chǎn)品的質(zhì)量。
MIG是一種用來生成DDR2控制器IP核的軟件工具。該DDR2控制器模塊包含可修改的HDL源代碼以及相關的引腳約束和時序約束文件。用戶可以在MIG的圖形界面中選擇存儲器芯片、總線位寬,并設置CAS延遲、突發(fā)長度、引腳分配等參數(shù)。經(jīng)驗證,只需在ISE軟件內(nèi)配置好相關參數(shù),并在接口編寫好簡單的讀寫控制模塊,便可實現(xiàn)對DDR的讀寫。
理想情況下CMOS圖像傳感器輸入數(shù)據(jù)速率和視頻編碼芯片輸出數(shù)據(jù)速率相同。但CMOS圖像傳感器需要根據(jù)光線、場景等變化實時調(diào)整曝光時長,這樣便引起了兩者數(shù)據(jù)間時序上的位移,即時序無法得到實時匹配。為了解決這個問題,在本系統(tǒng)中,通過內(nèi)存接口管理模塊先緩存3幅圖像數(shù)據(jù)。當CMOS圖像傳感器和視頻編碼芯片吞吐速率相等時,內(nèi)存里數(shù)據(jù)保持動態(tài)平衡。當CMOS圖像傳感器輸入速率小于視頻數(shù)據(jù)輸出速率時,內(nèi)存里的數(shù)據(jù)面臨被讀空的風險,這時該模塊會提前進行判斷,以決定是否將上一幅圖像數(shù)據(jù)重讀一遍。由于CMOS圖像傳感器的時鐘速率和視頻編碼芯片的時鐘速率相等,故不會出現(xiàn)CMOS圖像數(shù)據(jù)速率超出編碼芯片數(shù)據(jù)速率(即數(shù)據(jù)溢出)的情況。
3.7 視頻時序信號控制模塊
所有的視頻顯示系統(tǒng)需要時序信號進行控制,一般包含了5根信號線:數(shù)據(jù)有效(data_valid),行空白(horizontal_blank),行同步(horizontal_sync),場空白(vertical_blank),場同步(vertical_sync)。所有這些信號結合起來就能讓一幅幅圖像在顯示終端連續(xù)的顯示出來。
本模塊采用有效分辨率為640×480的時序控制信號,參照視頻電子標準協(xié)會(VESA, Video Electronics Standards Association)顯示器時序標準設定參數(shù)指標。該模塊在ModelSim仿真軟件環(huán)境下的功能仿真圖略——編者注。該模塊可按照設計要求正常工作。
3.8 AXI4Stream轉視頻數(shù)據(jù)模塊
該模塊將AXI4Stream數(shù)據(jù)和視頻時序控制信號整合,使圖像中每個像素的數(shù)據(jù)按照標準的視頻時序輸出。該模塊核心代碼使用了Xilinx公司提供的IP核——AXI4Stream to Video Out IP Core[13],該模塊一般與視頻時序信號控制模塊(Video Timing Controller)結合起來使用,其功能原理框圖略——編者注。該框圖中有3個主要部分:流數(shù)據(jù)聯(lián)結器(Stream Coupler)、數(shù)據(jù)格式化器(Data Formatter)和輸出同步器(Output Synchronizer)。
流數(shù)據(jù)聯(lián)結器主要由異步讀寫FIFO(Async FIFO)和寫邏輯塊(Write Logic)組成,對該FIFO的讀寫由輸出同步器控制。該FIFO有兩個主要功能:不同主頻時鐘間緩沖,即跨時鐘域緩沖;在AXI4Stream數(shù)據(jù)和輸出處視頻信號間緩存數(shù)據(jù),即數(shù)據(jù)緩存。數(shù)據(jù)格式化器接收來自流數(shù)據(jù)聯(lián)結器的數(shù)據(jù)和視頻信號控制模塊輸出的控制信號,并由此控制輸出同步器。
AXI4Stream數(shù)據(jù)并無一定的周期性,數(shù)據(jù)間隔時鐘周期多數(shù)沒有規(guī)律。輸出同步器作為主設備通過控制視頻信號控制模塊,使AXI4Stream數(shù)據(jù)和控制信號達到同步,同時送入數(shù)據(jù)格式化器,最終通過視頻信號輸出接口輸出。
4 系統(tǒng)驗證與分析
基于FPGA視頻系統(tǒng)的PCB板已經(jīng)制作完成,并通過了板級實驗驗證。系統(tǒng)圖像分辨率采用標準的640×480,CMOS圖像傳感器和視頻編碼芯片工作頻率為25 MHz,主控芯片主頻為100 MHz,DDR內(nèi)存芯片工作頻率為200 MHz。使用硬件描述語言Verilog HDL編寫好所有的程序代碼,并進行代碼綜合、布局布線、最后下載到Spartan6芯片內(nèi)部。系統(tǒng)首先通過I2C通信模塊配置好CMOS圖像傳感器芯片和視頻編碼芯片,然后以末向始的順序重置所有模塊,握手信號由后一個模塊依次向前傳遞,當位于最開始的視頻數(shù)據(jù)轉AXI4Stream模塊收到后置模塊tready的信號后,系統(tǒng)開始正常工作。
系統(tǒng)工作效果如圖7所示,測試結果可以看到,系統(tǒng)實時圖像顯示清晰、畫面穩(wěn)定、功能符合設計要求。但視頻圖像顯示效果并非為彩色,經(jīng)過分析,原因是采用的圖像傳感器MT9V022并不支持彩色模式。接下來的工作就是改進CMOS圖像傳感器,采用分辨率較高且支持彩色模式的傳感器。
?
圖7 系統(tǒng)工作效果圖
結語
利用FPGA進行嵌入式系統(tǒng)開發(fā)具有設計方法靈活高效、易于實現(xiàn)、可移植性強、通用性強等優(yōu)勢。利用多個成熟IP核進行系統(tǒng)開發(fā),不僅大大減輕了設計人員的工作量,提高了工作效率,還使得個人完成大型復雜嵌入式系統(tǒng)變得現(xiàn)實可行。本文充分利用了Xilinx公司提供的IP核,系統(tǒng)結構清晰簡潔,各個模塊既獨立又通用,從而使得整個系統(tǒng)更加易于維護和升級。AXI4Stream總線協(xié)議為系統(tǒng)模塊間通信提供了方便。利用該總線協(xié)議不僅簡化了系統(tǒng)內(nèi)部開發(fā),還使得該系統(tǒng)與其他系統(tǒng)對接變得更為便利。受篇幅所限,本文僅就功能框架進行了描述,并對各個模塊進行簡要介紹。本文介紹的實例開發(fā)與設計思路具有較好的工程應用與參考價值。
評論