摘 要: IP核是SoPC系統(tǒng)的重要組成部分,針對如何高速、有效地實時處理圖像的問題,提出了一種基于Avalon總線的圖像處理IP核的設(shè)計方法。根據(jù)最新的數(shù)字視頻國際編碼標準和顏色空間理論,用Verilog HDL硬件描述語言完成IP核的功能實現(xiàn),IP核被設(shè)計為Avalon總線從端口,通過Avalon總線與Nios Ⅱ處理器進行通信。IP核通過SignalTap Ⅱ在線驗證,可修改其參數(shù)使之滿足不同系統(tǒng)的需求。該方法具有良好的通用性,提高了系統(tǒng)的兼容性,能幫助其他用戶明顯縮短實時圖像處理系統(tǒng)項目的研發(fā)周期、降低工作強度。
關(guān)鍵詞: SoPC; IP核; 圖像處理; Verilog HDL; Avalon總線; SignalTap Ⅱ
中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2013)24?0086?04
Design of image processing IP core based on Avalon bus
CAI Guo?yang, ZHAO Yi, YU Liang?hui
(Nari Technology Development Co., Ltd, Nanjing 210061, China)
Abstract: IP core is an important part of SoPC system. A method of designing the image processing IP core based on Avalon bus is proposed for fast and effective real?time image processing. The function of IP core is realized by Verilog HDL according to the latest international coding standard of digital video and the theory of color space. IP core is designed as Avalon slave port, which communicates with Nios Ⅱ through Avalon bus. IP core can meet the needs of different systems through online verification of SignalTap Ⅱ to modify IP core’s parameters. The method has strong universality, can improve the compatibility of the system and help other users to significantly cut down the development period and reduce the work intensity.
Keywords: SoPC; IP core; image processing; Verilog HDL; Avalon bus; SignalTap Ⅱ
0 引 言
設(shè)計實時圖像采集系統(tǒng)時,可通過硬件解碼芯片對模擬視頻信號進行解碼,得到符合國際標準ITU?R BT.656的數(shù)字信號。要得到有效圖像信號,還需對數(shù)據(jù)流做進一步處理[1]。近年來,由于FPGA的性能不斷提高,使得可編程片上系統(tǒng)(System on Programmable Chip,SoPC)的理念得以實現(xiàn),這為實時圖像采集系統(tǒng)的設(shè)計提供了一種新的解決方案,即在Avalon總線上掛載IP核對圖像進行預(yù)處理[2]。Avalon總線是由Altera公司提出,用于連接Nios/Nios Ⅱ處理器與外設(shè)的總線結(jié)構(gòu)。基于Avalon總線的SoPC結(jié)構(gòu)可把處理器和各種外設(shè)的IP核、通信單元和控制單元集成到一塊FPGA芯片上[3?4]。
Altera提供很多免費的IP核,用戶也可以根據(jù)系統(tǒng)的需求自行設(shè)計或者購買第三方廠商的IP核,然后通過Avalon總線將其掛載到系統(tǒng)上[5]。
本文主要介紹用Verilog HDL語言設(shè)計圖像處理IP核內(nèi)部功能模塊的過程,并對IP核涉及的理論和原理進行闡述,供其他開發(fā)者參考借鑒。借助Quartus Ⅱ(Altera公司FPGA的開發(fā)工具)中的在線邏輯分析儀(SignalTap Ⅱ)對IP核進行測試與驗證。
1 圖像處理IP核的原理
在基于SoPC的圖像采集系統(tǒng)中,圖像處理IP核對硬件采集到的數(shù)據(jù)進行處理后交給Nios Ⅱ CPU做進一步處理,IP核內(nèi)部包含有效圖像信號提取與標記、圖像解交織、顏色空間轉(zhuǎn)換、時鐘域的轉(zhuǎn)換等模塊,并按照Avalon總線規(guī)范進行封裝,IP核內(nèi)部的示意圖如圖1所示。
2 圖像處理IP核的設(shè)計
模擬視頻信號通過視頻解碼芯片轉(zhuǎn)化為符合ITU?R BT.656標準的數(shù)字信號,這是一種顏色空間為YCbCr的復合信號,它把圖像信號的控制信號、有效數(shù)據(jù)信號和消隱信號按照約定的格式封裝編碼,圖像處理IP核起到圖像解碼的作用。
圖1 圖像處理IP核原理示意圖
2.1 圖像信號的提取與標記
ITU?R BT.656規(guī)定了2個計時基準序列SAV和EAV,SAV表示一行有效視頻數(shù)據(jù)的開始,EAV表示一行有效視頻數(shù)據(jù)的結(jié)束,每個計時基準序列由串行傳輸?shù)?個字節(jié)序列構(gòu)成,前3個字節(jié)的內(nèi)容固定為“FF 00 00”,是定時基準前肩標志信號,第4字節(jié)(XY)為定時基準信號,包含了行有效(h)、場有效(v)、奇/偶場標志(f)等[6]。
圖2是SignalTap Ⅱ測試到的一組實際的YCbCr信號(每行具有360個有效像素)的排列組成方式。
圖2 通過SignalTap Ⅱ工具測試到的數(shù)據(jù)流
根據(jù)ITU?R BT.656標準,檢測SAV序列并提取SAV中XY[4]位確定行有效信號的開始,再根據(jù)已經(jīng)測得的有效數(shù)據(jù)信號持續(xù)720個時鐘周期,可設(shè)置計數(shù)器使行有效信號持續(xù)720個時鐘周期的高電平來完成有效信號的標記。XY提供圖像信號的f,v,h信息,提取XY相關(guān)位可得到圖像的控制信號和同步信號。
Verilog HDL為硬件描述語言,在提取SAV序列中的XY數(shù)據(jù)時,要注意時序的同步性[7]。如圖3所示,設(shè)置4個寄存器,當img_data3[7:0],img_data2[7:0],img_data1[7:0]中的數(shù)據(jù)分別為FF,00,00時,提取img_data0[7:0]中的數(shù)據(jù)存放到另一寄存器中。
圖3 提取SAV序列中XY數(shù)據(jù)的方法
用SignalTap Ⅱ工具測試實際采集到的時鐘信號(img_clk)、數(shù)據(jù)信號(img_data3)、有效數(shù)據(jù)計數(shù)信號(pix_num)和有效像素標記信號(line_pix_valid)如圖4所示。
圖4 SignalTap Ⅱ采集到的圖像信號標記波形
2.2 圖像信號解交織
圖像數(shù)據(jù)的解交織是把YCbCr 4∶2∶2格式的數(shù)據(jù)轉(zhuǎn)換為YCbCr 4∶4∶4格式。解交織的示意圖如圖5所示,解交織過程中每個Y不變,而對應(yīng)的每個Cb,Cr分別被復用了一次。
圖5 圖像數(shù)據(jù)解交織示意圖
用Verilog HDL實現(xiàn)解交織模塊時,設(shè)置一個計數(shù)寄存器,當行有效信號為高電平時,開始計數(shù),每個時鐘周期加1,當寄存器中的數(shù)據(jù)為3時清零,其他情況寄存器清零。圖6(a)是計數(shù)寄存器程序設(shè)計流程圖,圖6(b)為分量提取程序設(shè)計流程圖。
計數(shù)寄存器從0計數(shù)到3,相當于對數(shù)據(jù)流每4個字節(jié)作一次循環(huán)操作。用case語句判斷計數(shù)寄存器,如果為0,則把數(shù)據(jù)存儲到cb[7:0]中;如果為1,則把數(shù)據(jù)存儲到y(tǒng)[7:0]中;如果為2,則把數(shù)據(jù)存儲到cr[7:0]中;如果為3,則把數(shù)據(jù)存儲到y(tǒng)[7:0]中。
同時設(shè)置一個標記信號,標記取得YCbCr 4∶4∶4格式的數(shù)據(jù)。從時序上看出,要標記YCbCr 4∶4∶4的有效數(shù)據(jù),可在計數(shù)寄存器值為2和3的時候給標記信號置高電平。用SignalTap Ⅱ工具測試實際圖像解交織的波形圖如圖7所示。
2.3 顏色空間轉(zhuǎn)換
顯示器一般采用RGB三基色合成的方法來顯示顏色,因此需對圖像信號進行YCbCr到RGB的顏色空間轉(zhuǎn)換,轉(zhuǎn)換公式如下:
[R=1.164×(Y-16)+1.596×(Cr-128)G=1.164×(Y-16)-0.813×(Cr-128)-0.392×(Cb-128)B=1.164×(Y-16)+2.017×(Cb-128)] (1)
式中:[Y∈[16,235];Cr∈[16,240];Cb∈[16,240]]。
在FPGA中,浮點運算很難實現(xiàn),計算時需對系數(shù)作一些處理,設(shè)置5個常量代表新的系數(shù),由于Verilog為硬件描述語言,在程序中常量和數(shù)據(jù)計算用二進制表示。五個常量及注釋如表1所示。
圖6 圖像數(shù)據(jù)解交織程序設(shè)計流程圖
A、B、C、D、E為10位寄存器變量,d代表10進制,b代表二進制。表1中的常量可看作把原數(shù)據(jù)小數(shù)點左移了兩位,式(1)可變換為:
[R′=A×(Y′-64)+B×(Cr′-512)G′=A×(Y′-64)-C×(Cr′-512)-D×(Cb′-512)B′=A×(Y′-64)+E×(Cb′-512)] (2)
其中,[Y′∈[64,940],Cr′∈[64,960],Cb′∈[64,960]]。
圖7 SignalTap Ⅱ采集到的圖像解交織過程波形
表1 常量設(shè)置及注釋
R,G,B均為8位,取值范圍為0~255,而運算過程可能會產(chǎn)生負數(shù)和超過255的正數(shù),因此,在獲得運算結(jié)果后將負數(shù)取為0,超過255的正數(shù)取為255。這樣雖會引入誤差,但對圖像最終的顯示效果不會有太大的影響。圖8為SignalTap Ⅱ采集到的顏色空間轉(zhuǎn)換過程波形。
圖8 SignalTap Ⅱ采集到的顏色空間轉(zhuǎn)換過程波形
2.4 時鐘域的轉(zhuǎn)換
原始圖像數(shù)據(jù)的時鐘為27 MHz,Nios Ⅱ軟核的時鐘為100 MHz(可根據(jù)系統(tǒng)需求設(shè)定),即有兩個時鐘域:27 MHz的圖像時鐘域,100 MHz的Nios Ⅱ系統(tǒng)時鐘域,時鐘域轉(zhuǎn)換的設(shè)計有2部分內(nèi)容:
(1)將27 MHz的圖像控制信號轉(zhuǎn)換到100 MHz的時鐘域中,讓Nios Ⅱ系統(tǒng)能夠識別,根據(jù)不同的場幀信號作出相應(yīng)的處理。
(2)將27 MHz的行有效數(shù)據(jù)轉(zhuǎn)到100 MHz的時鐘域中,可供Nios Ⅱ系統(tǒng)處理。
實現(xiàn)手法是采用Altera中自帶的雙口異步RAM實現(xiàn)不同時鐘域的轉(zhuǎn)換,為了能準確地存儲和接收這些異步數(shù)據(jù),還要設(shè)計部分通知信號,主要為了在不同時鐘域之間通信。數(shù)據(jù)的寫入由圖像信號時鐘和數(shù)據(jù)有效信號來完成,當數(shù)據(jù)有效信號有效時,在像素時鐘(27 MHz)的控制下,數(shù)據(jù)被寫入雙口RAM。讀取數(shù)據(jù)時,時鐘為100 MHz,在得到Nios Ⅱ下發(fā)的開始讀一行數(shù)據(jù)信號后才可以讀數(shù)據(jù),設(shè)計時要注意數(shù)據(jù)讀寫的時序,防止有效信號被覆蓋。圖9為SignalTap Ⅱ采集到的時鐘域轉(zhuǎn)換波形,圖中可看出雙端口RAM一端寫入數(shù)據(jù),一定時間后另一端開始讀數(shù)據(jù),并在下次寫數(shù)據(jù)前讀取完畢。
圖9 SignalTap Ⅱ采集到的時鐘域轉(zhuǎn)換波形
2.5 Avalon總線接口設(shè)計
圖像處理IP核通過Avalon?MM從端口連接到Avalon總線上,并通過Avalon?MM主端口掛載到Avalon總線上,Avalon?MM從端口由SoPC Builder集成環(huán)境自動生成[9]。把圖像處理IP核設(shè)計為Avalon總線從端口,遵循的時序為Avalon總線從端口的讀寫時序。設(shè)計時用到的Avalon信號如下:address: Avalon從端口的address信號,供用戶設(shè)定Nios Ⅱ讀寫從端口所用的寄存器[10];readdata和writedata:與傳輸相關(guān)的數(shù)據(jù)線;chipselect、read_n和write_n:從端口的1位輸入信號,指示一個新的讀或?qū)憘鬏敽螘r開始;Nios Ⅱ系統(tǒng)接收到一行數(shù)據(jù)采集完畢的促發(fā)信號后,Avalon總線使得chipselect和可讀信號read_n有效,Nios Ⅱ開始讀取圖像數(shù)據(jù)。設(shè)計時,設(shè)置address為2位,Nios Ⅱ讀寫數(shù)據(jù)時,利用address不同的取值進行相應(yīng)的處理,具體見表2。
表2 Avalon總線從端口寄存器設(shè)置
圖10為一行數(shù)據(jù)采集觸發(fā)信號波形圖,每次數(shù)據(jù)計數(shù)器vd_pix_num計數(shù)到2A9h時觸發(fā)此信號,數(shù)據(jù)讀取完畢后把此信號清零,等待下次觸發(fā)。
圖10 SignalTap Ⅱ采集到的一行數(shù)據(jù)采集觸發(fā)信號波形圖
3 結(jié) 語
本文設(shè)計了一種基于Avalon總線的圖像處理IP核,完成了有效信號的標記,控制信號的提取,圖像信號的解交織,顏色空間的轉(zhuǎn)換,時鐘域的轉(zhuǎn)換和Avalon總線接口的設(shè)計工作。IP核能對圖像信號進行預(yù)處理,并把采集到的每一行有效數(shù)據(jù)發(fā)送給Nios Ⅱ處理器進行下一步處理。IP核具有較強的通用性和可移植性,對于符合ITU?R BT.656格式的視頻信號,只需修改一些基本的常量和控制信號(如:每行的有效像素數(shù))便可以供其他開發(fā)者使用,也可使用多個IP核聯(lián)合工作,實現(xiàn)多方位視頻監(jiān)控。
參考文獻
[1] 許志祥.數(shù)字電視與圖像通信技術(shù)[M].北京:清華大學出版社,2009.
[2] 馬宏峰,黨建武,王宏斌.基于SoPC的通用TFT?LCD控制器IP核設(shè)計[J].現(xiàn)代電子技術(shù),2010,33(16):77?79.
[3] 周立功.SoPC嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學出版社,2006.
[4] 楊軍.基于FPGA的SoPC實踐教程[M].北京:科學出版社, 2010.
[5] 李蘭英.Nios Ⅱ嵌入式軟核SoPC設(shè)計原理及應(yīng)用[M].北京:北京航空航天大學出版社,2010.
[6] [美]KEITH Jack.視頻技術(shù)手冊[M].楊征,田尊華,張杰良,等譯.北京:人民郵電出版社,2009.
[7] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學出版社,2006.
[8] 趙毅.基于SoPC的工業(yè)內(nèi)窺鏡圖像采集處理系統(tǒng)的設(shè)計與實現(xiàn)[D].南京:南京理工大學,2013.
[9] 李歡,景存.基于Avalon總線的SD卡讀寫控制器的設(shè)計[J].現(xiàn)代電子技術(shù),2011,34(4):23?25.
[10] Altera Corporation. Avalon interface specification version1.2 [S]. US: Altera Corporation, 2008.