鄭建立,漆榮輝,張 璐
(上海理工大學(xué) 醫(yī)療器械與食品學(xué)院,上海 200093)
?
基于AXI4-Stream總線的數(shù)字視頻接口IP核設(shè)計(jì)
鄭建立,漆榮輝,張璐
(上海理工大學(xué) 醫(yī)療器械與食品學(xué)院,上海 200093)
針對數(shù)字視頻IP核間高速流數(shù)據(jù)傳輸,設(shè)計(jì)并實(shí)現(xiàn)了一種基于AXI4-Stream總線的數(shù)字視頻接口IP核,對外部輸入ITU601格式的數(shù)字視頻信號,將其格式轉(zhuǎn)化為符合AXI4-Stream總線協(xié)議的信號,并通過IP核的主端口輸出到下一級IP核的從端口。采用XilinxISEDesignSuite14.6軟件綜合設(shè)計(jì)實(shí)現(xiàn),結(jié)合ISE自帶ISim軟件完成功能仿真,通過實(shí)際硬件電路驗(yàn)證了設(shè)計(jì)的正確性及可行性。
AXI4-Stream;數(shù)字視頻信號;IP核
在SOC系統(tǒng)設(shè)計(jì)中,高級微控制器總線結(jié)構(gòu)(AdvancedMicrocontrollerBusArchitecture,AMBA)被廣泛采用,已經(jīng)迅速成為SOC結(jié)構(gòu)和IP核開發(fā)的標(biāo)準(zhǔn)[1]。AXI4、AXI4-Lite、AXI4-Stream這3種總線標(biāo)準(zhǔn)是AMBA第4版的重要組成部分。AXI4總線有助于最大化性能和能效;AXI4-Lite總線和AXI4-Stream總線是FPGA實(shí)現(xiàn)的理想選擇。AMBA4.0總線是標(biāo)準(zhǔn)接口規(guī)范,由多家企業(yè)共同為行業(yè)而設(shè)定,包括業(yè)界領(lǐng)先的OEM廠商、半導(dǎo)體及EDA供應(yīng)商等[2],可確保不同IP核的兼容,加快SOC設(shè)計(jì)效率。
本文在深入分析和研究AXI4-Stream總線協(xié)議的基礎(chǔ)上,通過VHDL硬件描述語言實(shí)現(xiàn)了對ITU601格式的數(shù)字視頻輸入信號轉(zhuǎn)化為符合AXI4-Stream協(xié)議的視頻輸出信號,并通過ISim軟件仿真及在基于XilinxZynq7000芯片設(shè)計(jì)的內(nèi)窺鏡視頻處理系統(tǒng)電路上得到驗(yàn)證。
AXI4-Stream總線是以突發(fā)傳輸為機(jī)制并沒有突發(fā)長度限制的總線[3]??偩€采用握手機(jī)制實(shí)現(xiàn)數(shù)據(jù)的收發(fā),沒有地址通道,沒有讀寫使能,一般情況均是寫數(shù)據(jù)從主設(shè)備到從設(shè)備的傳輸。AXI4-Stream總線接口協(xié)議主要面向高速流數(shù)據(jù)傳輸,可用于連接一個(gè)產(chǎn)生數(shù)據(jù)的主機(jī)和一個(gè)接受數(shù)據(jù)的從機(jī),當(dāng)然也可用于連接多個(gè)主機(jī)和從機(jī)。該協(xié)議支持多種數(shù)據(jù)流使用相同共享總線集合,允許建立能執(zhí)行擴(kuò)展、壓縮和路由的互聯(lián)結(jié)構(gòu)[4]。
1.1AXI4-Stream 總線接口信號說明
AXI4-Stream接口支持諸多不同的流類型。流協(xié)議在傳輸和包之間定義了聯(lián)系。表1 介紹了AXI4-Stream接口的信號定義。
表1 AXI4-Stream總線信號說明
1.2AXl4-Stream總線協(xié)議信號與時(shí)序的關(guān)系
TVALID和TREADY握手信號用來確定跨越接口數(shù)據(jù)的時(shí)間。雙向流控制機(jī)制使得主設(shè)備和從設(shè)備能控制跨越接口所發(fā)送的數(shù)據(jù)和控制信息的速度。對于一個(gè)發(fā)生的傳輸,必須確認(rèn)TVALID和TREADY信號。一個(gè)主設(shè)備不允許在確認(rèn)TVALID前等待確認(rèn)TREADY。一旦確認(rèn)TVALID,必須一直保持這個(gè)狀態(tài),直到產(chǎn)生握手信號。在確認(rèn)相應(yīng)的TREADY信號前,一個(gè)從設(shè)備允許等待確認(rèn)TVALID。如果從設(shè)備確認(rèn)了TREADY,在TVALID信號確認(rèn)前,允許不確認(rèn)TREADY[5]。
AXI4-Stream協(xié)議中的TLAST和TUSER信號在本文設(shè)計(jì)的IP核中分別以EOL和SOF表示,當(dāng)一行像素傳輸?shù)阶詈笠粋€(gè)像素時(shí)EOL信號置高電平有效,表示一行像素的結(jié)束,EOL脈沖寬度為一個(gè)時(shí)鐘周期;SOF幀起始標(biāo)志表示一幀視頻的第一個(gè)像素開始傳輸,一般當(dāng)作幀同步信號,在TVALID信號沒有置位且第一個(gè)像素沒到來之前SOF的脈寬可是任意個(gè)時(shí)鐘周期[6]。
圖1為AXl4-Stream總線協(xié)議的TREADY和TVALID握手信號及EOL、SOF標(biāo)志信號的時(shí)序關(guān)系圖,從圖中可看出,從設(shè)備在數(shù)據(jù)和控制信號有效前驅(qū)動(dòng)TREADY信號為高。表明目的設(shè)備能在一個(gè)ACLK周期內(nèi)接收數(shù)據(jù)和控制信息。在此種情況下,一旦主機(jī)確認(rèn)TVALID信號為高,則在時(shí)鐘周期ACLK的上升沿?cái)?shù)據(jù)就開始傳輸。當(dāng)一行最后一個(gè)像素?cái)?shù)據(jù)傳輸時(shí)EOL信號置高一個(gè)時(shí)鐘周期,表明一行傳輸完畢。當(dāng)一幀視頻的第一個(gè)像素開始傳輸時(shí)SOF幀起始標(biāo)志位置高電平。
圖1 主從設(shè)備握手信號及傳輸波形時(shí)序圖
在充分研究了外部輸入的數(shù)字視頻格式和AXI4-Stream總線協(xié)議的基礎(chǔ)上,本文采用VHDL硬件描述語言實(shí)現(xiàn)了對外部輸入ITU601格式的數(shù)字視頻轉(zhuǎn)化為符合AXI4-Stream總線協(xié)議的視頻輸出IP核。
2.1ITU601格式數(shù)字視頻輸入
ITU60l是長寬比為16:9和4:3的數(shù)字電視信號標(biāo)準(zhǔn),其對數(shù)字電視的各項(xiàng)參數(shù)進(jìn)行了詳細(xì)的規(guī)范和描述[7]。我國通常采用4:2:2采樣格式、PAL制式、長寬比為4:3的數(shù)字電視信號[8]。本文所用到的外部輸入視頻信號正是這一格式的信號。其主要特征包括:(1)有3個(gè)正交分量:亮度分量Y、色度分量U和V;(2)25幀/s的幀率,每幀兩場,每幀掃描625行;(3)對于亮度分量Y,每行抽樣864,對于色度分量每行抽樣432次;(4)有3個(gè)信號用于同步數(shù)據(jù)分別是:行同步hsync(15 625Hz)、場同步vsync(50Hz)、像素?cái)?shù)據(jù)同步時(shí)鐘clk(13.5MHz)。包括消隱期在內(nèi),每幀數(shù)據(jù)掃描625行,每行抽樣864個(gè)像素點(diǎn),因此總分辨率為864×625。一幀數(shù)據(jù)又包含奇偶兩場,從上一幀的624行到本幀的310行是奇場,其中上一幀的624行到本幀的22行是奇場消隱期,從23行到310行是奇場有效行;從本幀311行到623行是偶場,其中311~335行是偶場消隱期,從336~623行為偶場有效行數(shù)據(jù)。對于幀內(nèi)的每一行,共有864個(gè)像素,其中從第0個(gè)到第719個(gè)為有效像素。共計(jì)720個(gè)點(diǎn),從720~863個(gè)為消隱期像素。每個(gè)象素都抽取Y分量,每兩個(gè)像素則抽取一個(gè)U分量和一個(gè)V分量。
2.2ITU601 to AXI4-stream IP核設(shè)計(jì)實(shí)現(xiàn)
ITU601toAXI4-streamIPCore接口及內(nèi)部各模塊間主要信號傳遞如圖2所示,其中clk為外部輸入視頻的像素時(shí)鐘信號13.5,MHz、io_vsync為外部視頻場同步信號,io_hsync為外部輸入視頻行同步信號,io_field為外部視頻奇偶場標(biāo)志信號,io_uvid為外部輸入視頻UV信號的標(biāo)志,io_video[15:0]為輸入16位數(shù)字視頻信號,視頻數(shù)據(jù)格式為YUV422。IP核視頻輸出主接口為符合AXI4-Stream協(xié)議的總線接口M_AXIS_VIDEO,其中包括系統(tǒng)數(shù)據(jù)讀寫時(shí)鐘信號aclk,在本文的驗(yàn)證實(shí)驗(yàn)中此系統(tǒng)時(shí)鐘為150MHz,m_axis_tdata[23:0] 24位寬的視頻數(shù)據(jù)總線,m_axis_tvalid為主機(jī)數(shù)據(jù)同步信號,為高電平表示主機(jī)準(zhǔn)備好發(fā)送數(shù)據(jù),m_axis_tlast為主機(jī)最后一個(gè)字指示,在該IP中表示視頻數(shù)據(jù)一行的結(jié)束即eol信號,m_axis_sof表示一幀視頻數(shù)據(jù)的開始,m_axis_tready為從機(jī)數(shù)據(jù)同步信號,其值為高表示從機(jī)準(zhǔn)備好接收數(shù)據(jù)。TVALID、TREADY這兩根信號線完成了主機(jī)與從機(jī)的握手信號,一旦二者都置高有效,則數(shù)據(jù)流開始傳輸。
圖2 ITU601 to AXI4-stream IP接口及內(nèi)部模塊結(jié)構(gòu)
IP核內(nèi)部3個(gè)主要的模塊都采用VHDL語言設(shè)計(jì)而成。videoin模塊是一個(gè)視頻輸入接口,根據(jù)輸入視頻信號時(shí)序?qū)UV422 16位寬的信號轉(zhuǎn)化為YUV444 24位寬的視頻信號。videoformatter模塊是視頻協(xié)議轉(zhuǎn)換的核心模塊,完成視頻格式轉(zhuǎn)化,通過對輸入視頻時(shí)序分析產(chǎn)生一行結(jié)束標(biāo)志(eol)即vid_eol,幀起始標(biāo)志(sof)即vid_sof,以及主機(jī)握手信號vid_tvalid。通過該模塊后輸出的視頻數(shù)據(jù)格式就符合AXI4-stream總線協(xié)議規(guī)范。主要實(shí)現(xiàn)代碼如下
io_iregs_1:process(Clk)
begin
ifrising_Edge(Clk)then
vsync_1 <=xsvi_vsync;
vsync_2 <=vsync_1;
de_1 <=xsvi_active;
de_2 <=de_1;
de_3 <=de_2;
data_1 <=xsvi_video;
data_2 <=data_1;
data_3 <=data_2;
eol<=de_falling;
sof<=de_risingandvert_blanking_intvl;
sof_1 <=sof;
endif;
endprocess;
io_iregs_2 :process(Clk)
begin
iffalling_Edge(Clk)then
if(vsync_rising= '1')then//risingedgeofvsync
vert_blanking_intvl<=notfield; //field=1:odd0:even
elsif(de_falling= '1')then//fallingedgeofdataenable
vert_blanking_intvl<= '0';
else
vert_blanking_intvl<=vert_blanking_intvl;
endif;
endif;
endprocess;
de_rising<=notde_2andde_1; //de_rising保持一個(gè)時(shí)鐘周期高電平
de_falling<=de_2andnotde_1; //de_falling保持一個(gè)時(shí)鐘周期高電平
vsync_rising<=notvsync_2andvsync_1;
vid_data<=data_3;
vid_tvalid<=de_3;
vid_eol<=eol;
vid_sof<=sof_1;
以上VHDL代碼的兩個(gè)進(jìn)程功能是實(shí)現(xiàn)sof、eol及主機(jī)握手信號tvalid。如何正確地產(chǎn)生sof是整個(gè)設(shè)計(jì)的難點(diǎn),幀起始信號sof在每幀視頻的第一個(gè)有效像素出現(xiàn)時(shí)置一個(gè)時(shí)鐘周期高電平且一幀視頻數(shù)據(jù)中sof只產(chǎn)生一次。sof由xsvi_active信號的上升沿和場同步信號xsvi_vsync共同決定。進(jìn)程io_iregs_2的功能是確保sof在奇場同步信號上升沿到第一個(gè)像素時(shí)產(chǎn)生,一幀視頻分為奇偶兩場,sof相當(dāng)于幀同步,因而只在奇數(shù)場的第一個(gè)有效像素時(shí)產(chǎn)生。eol主要是根據(jù)xsvi_active視頻數(shù)據(jù)有效信號的跳變來產(chǎn)生,當(dāng)xsvi_active為高電平時(shí)表示像素?cái)?shù)據(jù)有效,為低電平表示處于消隱區(qū),所以一行最后一個(gè)像素點(diǎn)傳輸結(jié)束時(shí)xsvi_active會(huì)發(fā)生從高電平到低電平的跳變,在進(jìn)程io_iregs_1中de_falling正是表示xsvi_active從高到低的跳變,故將其賦值給eol。
Outputbuffer模塊是輸出接口緩存模塊,由于視頻數(shù)據(jù)輸入的時(shí)鐘是13.5MHz、輸出是150MHz,讀寫是跨時(shí)鐘域的,所以在Outputbuffer模塊中引入了一組異步FIFO控制模塊,使用異步FIFO可在兩個(gè)不同時(shí)鐘系統(tǒng)之間快速而方便地傳輸實(shí)時(shí)數(shù)據(jù)。
為驗(yàn)證所實(shí)現(xiàn)的AXI4-stream接口總線時(shí)序的正確性,本文主要采用功能仿真和實(shí)際電路測試。
首先進(jìn)行功能仿真測試,功能仿真采用XilinxISEDesignTools自帶的仿真器ISimSimulator,通過VHDL語言編寫仿真測試用例,主要是用來驗(yàn)證當(dāng)外部輸入ITU601格式的視頻信號后通過視頻接口IP核,在該IP核的輸出端M_AXIS_VIDEO總線接口時(shí)序是否滿足AXI4-stream總線時(shí)序要求。圖3為ITU601toAXI4-streamIP核接口功能仿真時(shí)序圖,從圖中可看出從設(shè)備的TREADY(m_axis_tready)信號一直為高電平,等待主機(jī)端口傳送有效握手信號和數(shù)據(jù),每當(dāng)要傳送一個(gè)像素點(diǎn),主端口m_axis_tvalid(Tvalid)就置高電平,完成主從設(shè)備握手,在時(shí)鐘ACLK的上升沿到來時(shí)就發(fā)生數(shù)據(jù)傳輸,當(dāng)一行720個(gè)像素均傳送完畢時(shí)m_axis_tlast(Tlast)即eol置高電平,表示一行數(shù)據(jù)傳送完畢;由圖4可看到IP核輸入端視頻數(shù)據(jù)的行同步video_hsync信號,場同步信號video_vsync,在輸出端口m_axis_tuser_sof為幀起始標(biāo)志,奇數(shù)場和偶數(shù)場合并成一幀,輸入端出現(xiàn)了兩次場同步信號即奇數(shù)場和偶數(shù)場video_vsync后,輸出端出現(xiàn)一次幀起始標(biāo)志信號,表明奇數(shù)場和偶數(shù)場合成一幀。通過功能仿真可驗(yàn)證,所實(shí)現(xiàn)的IP核主接口符合AXI4-stream總線時(shí)序要求。
圖3 ITU601 to AXI4-stream 接口時(shí)序1
圖4 ITU601 to AXI4-stream 接口時(shí)序2
硬件測試平臺是一款基于XilinxZynq7000設(shè)計(jì)的醫(yī)療內(nèi)窺鏡,XilinxZynq7000 全可編程SoC(APSoC) 器件集成ARMCortex-A9MPCore處理器的軟件可編程性與FPGA的硬件可編程性,不僅可實(shí)現(xiàn)重要分析與硬件加速,同時(shí)還在單個(gè)器件上高度集成CPU、DSP、ASSP以及混合信號功能,Zynq-7000APSoC的這些特性使其在醫(yī)療內(nèi)窺鏡、機(jī)器視覺、高級駕駛員輔助系統(tǒng)、專業(yè)照相機(jī)等各種場合都得到了廣泛應(yīng)用[9]。本試驗(yàn)的醫(yī)療內(nèi)窺鏡視頻處理系統(tǒng)正是基于Zynq-7000APSOC的以上特性設(shè)計(jì)而成的。該內(nèi)窺鏡CCDcolorCamera拍攝的視頻信號經(jīng)過前期處理板后,輸出視頻數(shù)據(jù)格式為ITU601 格式的數(shù)字視頻信號,此視頻信號正是通過ITU601toAXI4-streamIP核視頻接口送入基于XilinxZynq7000SOC設(shè)計(jì)的內(nèi)窺鏡視頻處理系統(tǒng)。
XilinxChipScope工具能夠捕獲和顯示系統(tǒng)設(shè)計(jì)中實(shí)時(shí)信號的狀態(tài)[10],在完成功能驗(yàn)證后,將配置文件下載到內(nèi)窺鏡視頻處理系統(tǒng)電路中,利用ChipScope工具可實(shí)時(shí)捕捉主端口信號并進(jìn)行時(shí)序分析,從而驗(yàn)證所設(shè)計(jì)的IP核主接口輸出信號時(shí)序關(guān)系是否滿足AXI4-stream協(xié)議的規(guī)定。圖 5為利用ChipScope抓取到的IP核主接口信號波形圖,從圖中可以看出從端口Tready一直為高,等待主端口傳送有效數(shù)據(jù),當(dāng)有效像素?cái)?shù)據(jù)要從主端口傳送至從端口時(shí),主端口Tvalid信號就置高電平。axi_s_tuser即sof信號在每幀視頻的第一個(gè)像素位置出現(xiàn)一次,當(dāng)一行第720個(gè)像素傳送時(shí),axi_s_tlast即eol置高電平表示一行的結(jié)束。
圖5 ITU601 to AXI4-stream IP 核主端口時(shí)序
AXI4-Stream總線協(xié)議作為嵌入式系統(tǒng)內(nèi)部高速流數(shù)據(jù)傳輸常用的總線協(xié)議,得到第三方EDA廠商和IP開發(fā)廠商普遍采用[11]。為滿足AXI4-Stream總線主從設(shè)備間的數(shù)據(jù)傳輸,本文通過研究AXI4-Stream總線時(shí)序,采用VHDL語言設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)視頻協(xié)議轉(zhuǎn)換IP核,該IP核可將外部輸入的ITU601格式視頻信號轉(zhuǎn)化為符合AXI4-Stream總線協(xié)議的視頻輸出信號,方便與其他具有AXI4-Stream流接口的IP核進(jìn)行互聯(lián)。通過軟件仿真及實(shí)際硬件電路測試表明本文設(shè)計(jì)的IP核主接口符合AXI4-Stream總線時(shí)序要求,主從設(shè)備之間能正確地傳輸數(shù)據(jù),實(shí)驗(yàn)視頻顯示清晰、實(shí)時(shí)性良好。
[1]蔡曉光.基于AMBA總線SoC的IP核設(shè)計(jì)與應(yīng)用[D].西安:西安電子科技大學(xué),2010.
[2]楊舜琪.AMBAAXI4總線的研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[3]賀理,趙鶴鳴,邵雷.AXI4Stream總線的FPGA視頻系統(tǒng)的開發(fā)研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015,15(12):42-45.
[4]TanidaH,YoshidaH,FujitaM.EvaluationofFPGAimplementationtechniquesforhigh-performancesoprototypes[J].IeiceTechnicalReportDependableComputing,2010, 110(2):79-84.
[5]何賓.XilinxFPGA設(shè)計(jì)權(quán)威指南[M].北京:清華大學(xué)出版社,2014.
[6]鐘雪燕,夏前亮,趙德生,等.基于AXI總線的視頻數(shù)據(jù)傳輸處理的FPGA實(shí)現(xiàn)[J].計(jì)算機(jī)測量與控制,2015,23(11):3825-3827.
[7]嚴(yán)衛(wèi)健.模擬電視信號數(shù)字解碼及視頻處理研究與設(shè)計(jì)[D].成都:電子科技大學(xué),2006.
[8]虞衛(wèi)峰,唐慧明.一種用CPLD實(shí)現(xiàn)視頻信號運(yùn)動(dòng)檢測的方法[J].電子技術(shù)應(yīng)用,2004,29(11):64-67.
[9]王瑩.Xilinx可擴(kuò)展處理平臺:ZYNQ嵌入式處理器與FPGA集成的獨(dú)特創(chuàng)舉[J].電子產(chǎn)品世界,2012,19(2):27-32.
[10] 曾波.在系統(tǒng)邏輯分析儀的電路設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2012.
[11] 馬飛,劉琦,包斌.基于FPGA的AXI4總線時(shí)序設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2015,41(6):13-15.
Design and Implementation of Video Interface IP Core Based on AXI4-Stream Bus
ZHENGJianli,QIRonghui,ZHANGLu
(SchoolofMedicalInstrumentandFoodEngineering,UniversityofShanghaiforScienceandTechnology,Shanghai200093,China)
ForthehighspeedstreamdatatransmissionbetweentheIPcoreofthedigitalvideo,wedesignandimplementaninterfaceIPcoreofthedigitalvideobasedontheAXI4-Streambus.ThedigitalvideosignalfromtheexternalinputintheITU601formatistranslatedintothesignalconformingwiththebusprotocolofAXI4-Stream,andthenexportedtotheportofthenextlevelIPcorethroughthemainportoftheIPcore.TheaccuracyandfeasibilityoftheproposeddesignhavebeenvalidatedbytheactualhardwarecircuitusingXilinxISEDesignSuite14.6.
AXI4-Stream;digitalvideosignal;IPcore
2015- 12- 21
上海市科委重點(diǎn)科技攻關(guān)基金資助項(xiàng)目(11441902302)
鄭建立(1965-),男,博士,副教授。研究方向:醫(yī)學(xué)信息集成技術(shù)和嵌入式應(yīng)用。漆榮輝(1988-),男,碩士研究生。研究方向:嵌入式系統(tǒng)及數(shù)字化醫(yī)療儀器。
10.16180/j.cnki.issn1007-7820.2016.09.045
TN943;TP336
A
1007-7820(2016)09-161-05