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