解码器的滤波器
-
H.264解碼器中一種新穎的去塊效應(yīng)濾波器設(shè)計(jì)
-
圖像的編解碼技術(shù)是多媒體技術(shù)的關(guān)鍵,H.264/AVC是國(guó)際上最先進(jìn)的視頻壓縮技術(shù),其主要特點(diǎn)是采用小尺寸整數(shù)余弦變換、1/4像素的運(yùn)動(dòng)估計(jì)精度、多參考幀預(yù)測(cè),基于上下文可變長(zhǎng)度編碼和環(huán)路內(nèi)去塊效應(yīng)濾波器等技術(shù)。由于去塊效應(yīng)濾波器大約占整個(gè)解碼器1/3的運(yùn)算量,因此該部分的設(shè)計(jì)成為整個(gè)解碼器設(shè)計(jì)的瓶頸,在此研究了一種新穎的環(huán)路內(nèi)去塊效應(yīng)濾波器設(shè)計(jì)。設(shè)計(jì)中采用5階流水線的去塊效應(yīng)模塊,利用混合濾波順序與打亂的存儲(chǔ)更新機(jī)制的方法提高了流水線暢順性,濾波一個(gè)16×16大小的宏塊僅需要198個(gè)時(shí)鐘周期。
1 H.264/AVC的去塊效應(yīng)
在基于塊的視頻編碼方法中,各個(gè)塊的編解碼是互相獨(dú)立的,由于預(yù)測(cè)、補(bǔ)償、變化、量化等引起塊與塊之間的邊界處會(huì)產(chǎn)生不連續(xù),因此新版H.264/AVC標(biāo)準(zhǔn)采用了環(huán)路內(nèi)去塊濾波器來(lái)解決每個(gè)16×16宏塊重建后的邊界扭曲問(wèn)題。去塊效應(yīng)濾波有兩種方法:后處理去塊效應(yīng)濾波;環(huán)路內(nèi)去塊效應(yīng)濾波。H.264/AVC采用環(huán)路內(nèi)去塊效應(yīng)濾波(見(jiàn)圖1),即濾波后的幀作為后面預(yù)測(cè)的參考幀。與之前的H.263或MPEG的濾波器相比較,新版H.264標(biāo)準(zhǔn)采用的濾波器基于更小的4×4的基本宏塊,基本宏塊的邊界根據(jù)片級(jí)/宏塊級(jí)的特性與根據(jù)像素穿過(guò)濾波邊界的漸變度,對(duì)需要濾波的宏塊邊界進(jìn)行有條件的濾波。重建幀的每個(gè)像素都需要從外部存儲(chǔ)器中重調(diào)出來(lái)以進(jìn)行濾波處理或作為相鄰像素來(lái)判斷當(dāng)前像素是否需要進(jìn)行濾波。顯然,這些操作需要消耗巨大的存儲(chǔ)器帶寬,對(duì)像素值進(jìn)行修改。
本文設(shè)計(jì)的去塊效應(yīng)濾波模塊采用流水線技術(shù)來(lái)提高系統(tǒng)吞吐量。理想流水線的高效率實(shí)現(xiàn)基于相鄰的濾波操作沒(méi)有數(shù)據(jù)性。文獻(xiàn)[3,4]采用了非流水線的架構(gòu),因此無(wú)法提高系統(tǒng)的吞吐量。而對(duì)于流水線架構(gòu),如若不優(yōu)化濾波順序與存儲(chǔ)器訪問(wèn)次序,則所產(chǎn)生的數(shù)據(jù)與結(jié)構(gòu)冒險(xiǎn)也將大大降低流水線的效率。有人使用雙端口的片上SRAM來(lái)減少片外存儲(chǔ)器的帶寬,增加了系統(tǒng)的吞吐量,但是雙端口存儲(chǔ)器面積較大且增加功耗。與流水線的濾波器相比,非流水線濾波器的操作(包括條件判斷、查表、像素計(jì)算等)是順序化的,即每個(gè)時(shí)鐘僅處理一個(gè)操作類型,因此它所能達(dá)到的最大系統(tǒng)頻率要低很多。
采用不同的邊界濾波順序,會(huì)大大的影響去塊效應(yīng)濾波器的性能。在H.264/AVC標(biāo)準(zhǔn)中,每個(gè)宏塊的濾波順序得到了描述,只要保持濾波數(shù)據(jù)依賴性,H.264/AVC標(biāo)準(zhǔn)所描述的濾波順序可以被改進(jìn)。其濾波順序包括兩類:順序?yàn)V波和混合濾波。但是其濾波順序以及相應(yīng)的存儲(chǔ)更新機(jī)制都是針對(duì)非流水線結(jié)構(gòu)的,因此如果直接將之應(yīng)用于本文的流水線設(shè)計(jì),就有可能引發(fā)嚴(yán)重的競(jìng)爭(zhēng)與冒險(xiǎn)從而降低流水線的性能。
2 去塊效應(yīng)濾波器的存儲(chǔ)管理與濾波算法
H.264/AvC標(biāo)準(zhǔn)基于4×4宏塊作為濾波的基本宏塊,它有5種濾波強(qiáng)度,分別是Bs=0,1,2,3,4。濾波方式分為強(qiáng)濾波、標(biāo)準(zhǔn)濾波和直通3種方式,其中強(qiáng)濾波影響邊界兩邊的共6個(gè)像素,標(biāo)準(zhǔn)濾波影響邊界兩邊的共4個(gè)像素,直通方式不修改邊界兩側(cè)的像素。H.264/AVC標(biāo)準(zhǔn)規(guī)定先對(duì)垂直邊界進(jìn)行濾波,然后再對(duì)水平邊界進(jìn)行濾波,只有對(duì)垂直與水平邊界全部濾波完成后,才可以對(duì)下一個(gè)宏塊進(jìn)行濾波。同一個(gè)宏塊中,先對(duì)亮度部分進(jìn)行濾波,再對(duì)色度部分進(jìn)行濾波;色度部分濾波時(shí),先對(duì)C6部分進(jìn)行濾波,再對(duì)Cr部分進(jìn)行濾波,對(duì)整個(gè)16×16宏塊的濾波順序如圖2所示。
(1)邊界濾波強(qiáng)度與像素濾波的存儲(chǔ)器
按照H.264/AVC的標(biāo)準(zhǔn),需要對(duì)被濾波的邊界兩側(cè)的像素進(jìn)行有條件的濾波。該條件決定于邊界強(qiáng)度BS與像素穿越邊界的傾斜度。邊界強(qiáng)度BS:0,1,2,3或4,在進(jìn)行濾波之前被賦給相應(yīng)的邊界。BS=4表示強(qiáng)濾波,BS=0表示不需要進(jìn)行濾波,即直通方式;否則,BS=1,2,3表示中等強(qiáng)度的濾波,色度部分邊界的濾波強(qiáng)度與對(duì)應(yīng)亮度部分是相同的。濾波每條水平或垂直邊界需要被提供邊界兩邊的8個(gè)像素,p0~p3&q0~q3;需要更新的像素共6個(gè)或4個(gè):p0~p2&q0~q2或聲p0,p1&q0,q1。
對(duì)一個(gè)16×16宏塊進(jìn)行濾波需要提供左邊相鄰像素、右邊相鄰像素和本宏塊的像素。對(duì)于宏塊邊界,比如最左邊界與最右邊界而言,p0~p3與q0~q3來(lái)自不同的模塊(即分別來(lái)自相鄰宏塊的像素與本宏塊的像素);對(duì)于非16×16宏塊的邊界濾波,像素p0~p3與q0~q3均來(lái)自16×16宏塊本身,因此至少需要4個(gè)存儲(chǔ)單元:左相鄰像素存儲(chǔ)單元、上相鄰像素存儲(chǔ)單元、本身模塊的像素存儲(chǔ)單元和轉(zhuǎn)換緩沖單元,每個(gè)存儲(chǔ)單元的帶寬是32位。
當(dāng)濾波從垂直邊界向水平邊界變換時(shí),為了方便濾波過(guò)程中的存儲(chǔ)器訪問(wèn),這里利用額外的轉(zhuǎn)換緩沖器BUF0~BUF3來(lái)緩存中間濾波數(shù)據(jù),采用轉(zhuǎn)換緩沖器后獲取一行或一列像素的值(即p0~p3&q0~q3)只需要1個(gè)時(shí)鐘周期,否則需要4個(gè)時(shí)鐘周期。
(2)濾波算法
環(huán)路濾波的基本思想是:判斷該邊界是圖像的真實(shí)邊界還是編碼所形成的塊效應(yīng)邊界;對(duì)真實(shí)邊界不濾波,對(duì)偽邊界根據(jù)像素穿越邊界的漸變度和編碼方式進(jìn)行濾波;根據(jù)濾波強(qiáng)度,選擇不同的濾波系數(shù)對(duì)邊界兩側(cè)像素進(jìn)行濾波操作。濾波強(qiáng)度Bs=0的邊界將不會(huì)進(jìn)行濾波,而濾波強(qiáng)度Bs不為0的邊界,依賴于獲取的量化參數(shù)α與β,進(jìn)行閾值判斷,對(duì)鄰近的像素進(jìn)行有條件的濾波。當(dāng)濾波強(qiáng)度Bs不是0,并且下面3個(gè)條件成立時(shí),才對(duì)鄰近像素進(jìn)行濾波。
直接計(jì)算α,β是非常困難,而且消耗了很多硬件資源,因此通過(guò)查找表(LUT)獲取α,β的操作。像素的計(jì)算可以被分成下述兩種類型:
(1)Bs=4
如果以下的兩個(gè)條件成立,一個(gè)非常強(qiáng)的4抽頭或5抽頭濾波器將被用來(lái)對(duì)鄰近像素進(jìn)行濾波,修改像素p0,p1,p2。
否則,若式(2)中有一個(gè)不成立,將不會(huì)對(duì)p1與p2進(jìn)行濾波,只會(huì)對(duì)p0進(jìn)行弱強(qiáng)度的濾波。對(duì)于色度部分邊界的濾波,如果式(2)成立,只會(huì)對(duì)p0與q0進(jìn)行濾波。
(2)Bs=1~3
亮度像素p0與q0的計(jì)算如下:
而d[_]0是在裁減操作中被定義的:
式中:c0來(lái)自于c1,而c1是通過(guò)查找兩維的LUT表獲取的。
像素p1僅在式(3)成立的時(shí)候進(jìn)行修改,同p0與q0修改的方式相同;而像素p2與q2對(duì)于濾波強(qiáng)度Bs不為4的情況下,不進(jìn)行濾波。在色度分量進(jìn)行濾波時(shí),只有對(duì)p0與q0進(jìn)行濾波,濾波的方式與亮度濾波的方式相同。
3 流水線濾波架構(gòu)
3.1 流水線分析
流水線技術(shù)適合于連續(xù)的批處理任務(wù),當(dāng)一個(gè)N階流水線被灌滿以后,系統(tǒng)在一個(gè)周期內(nèi)可以并行處理N個(gè)任務(wù),由此提高了整組任務(wù)的處理速度并增大了系統(tǒng)吞吐能力。如果相鄰的濾波操作沒(méi)有數(shù)據(jù)競(jìng)爭(zhēng),并且所有的階段都被很好地進(jìn)行了平衡,則濾波過(guò)程能夠被進(jìn)行流水線操作化并可將速度提高N倍數(shù)。然而,如若存在競(jìng)爭(zhēng)與冒險(xiǎn)問(wèn)題,則無(wú)法實(shí)現(xiàn)。此時(shí)的主要任務(wù)是如何均衡流水線的各個(gè)階段,如何把總的操作盡可能平均的分配給不同的流水線階段,如何避免或消除競(jìng)爭(zhēng)與冒險(xiǎn),以便獲得一個(gè)比較平衡暢順的流水線架構(gòu)。按照去塊效應(yīng)濾波器模塊的實(shí)現(xiàn)算法,大多數(shù)的關(guān)鍵路徑位于以下操作中。
(1)查找表操作:取得α,β,c1參數(shù)。α,β參數(shù)均需在查找表操作之前進(jìn)行基于量化參數(shù)與片級(jí)偏移參數(shù)的計(jì)算中使用。當(dāng)Bs=1,2,3時(shí),為獲取c1進(jìn)行LUT操作,該操作比獲取α,β的LUT操作大3倍。
(2)當(dāng)Bs=4時(shí),需用4或5抽頭的濾波器進(jìn)行濾波,原來(lái)的p,q像素值需要進(jìn)行移位、相加等操作,以得到最后的結(jié)果。
3.2 流水線架構(gòu)
基于上述分析,這里提出了5階流水線以提高吞吐量,見(jiàn)圖3。由于整個(gè)任務(wù)被分配到不同的階段實(shí)現(xiàn),降低濾波的平均時(shí)間。
4 階流水線每個(gè)階段的任務(wù)
階流水線每個(gè)階段的任務(wù)為:獲取像素與濾波強(qiáng)度;閾值判斷;預(yù)濾波;二次濾波;回寫(xiě)。操作類型轉(zhuǎn)換與可重新配置路徑設(shè)計(jì):首先進(jìn)行操作類型的變換,使用加法與移位操作硬件替換了原來(lái)所有的乘法與除法硬件。當(dāng)Bs=4時(shí),濾波被3,4,5抽頭的濾波器執(zhí)行,盡管應(yīng)用不同抽頭數(shù)目的濾波器,仍考慮硬件復(fù)用以及輸入數(shù)據(jù)路徑重新配置。由于設(shè)計(jì)中的表達(dá)式采用兩輸入加法,因而可以公用加法的中間結(jié)果。此外,通過(guò)重新配置在不同濾波抽頭系數(shù)時(shí)的加法器的輸入,達(dá)到共享資源的目的。同理,當(dāng)Bs=1,2,3時(shí),通過(guò)輸入路徑的重新配置,同樣達(dá)到共享加法與減法器,達(dá)到共享資源的目的,資源使用前后對(duì)比見(jiàn)表1。
5 流水線競(jìng)爭(zhēng)與混合濾波順序
5.1 流水線競(jìng)爭(zhēng)的原因
(1)數(shù)據(jù)競(jìng)爭(zhēng):當(dāng)目的結(jié)果需要用作源操作數(shù)時(shí);
(2)結(jié)構(gòu)競(jìng)爭(zhēng):由于有限的存儲(chǔ)器帶寬,大量而頻繁的像素訪問(wèn)需要以及存儲(chǔ)器的低效率管理而引起;
(3)控制競(jìng)爭(zhēng):相鄰邊界的濾波是相對(duì)獨(dú)立的,當(dāng)一條邊界進(jìn)入它的流水線階段時(shí),它不能夠停止,直到它的第5階段新像素值回寫(xiě)存儲(chǔ)器操作結(jié)束。控制競(jìng)爭(zhēng),由于分支語(yǔ)句或延遲等待引起的。
5.2 一種新穎的混合濾波順序
傳統(tǒng)的設(shè)計(jì)按照H.264/AVC標(biāo)準(zhǔn)使用了基本的順序?yàn)V波,沒(méi)有考慮到相鄰濾波邊界的數(shù)據(jù)重用與數(shù)據(jù)相互依賴性以及存儲(chǔ)器的讀與寫(xiě)訪問(wèn)延時(shí),因此這里提出了新穎的濾波方法。新穎的濾波順序仍然遵守先左后右,先上后下的原則,但是考慮了相鄰邊界的數(shù)據(jù)依賴性與重用性,解決了數(shù)據(jù)冒險(xiǎn)與結(jié)構(gòu)冒險(xiǎn)問(wèn)題,避免了流水線的延遲。濾波包括亮度部分與色度部分,共48條邊界,濾波順序按照如圖4所示的從小到大的數(shù)字進(jìn)行。
5.3 新穎的存儲(chǔ)更新策略
考慮到外部存儲(chǔ)器的帶寬是32位的,為了配合這里提出的邊界濾波順序,避免由于存儲(chǔ)器的帶寬限制而引起的結(jié)構(gòu)競(jìng)爭(zhēng)從而導(dǎo)致流水線出現(xiàn)延遲,這里提出了新穎的存儲(chǔ)器更新機(jī)制,即給不同的4×4宏塊分配不同的時(shí)隙進(jìn)行像素回寫(xiě)。
去塊效應(yīng)模塊被分配在整個(gè)解碼模塊的最后一步實(shí)現(xiàn),而其它的重建步驟、像幀內(nèi)濾波模塊、幀間濾波模塊均以4×4宏塊為基本單位來(lái)進(jìn)行流水線處理,但是由于去塊效應(yīng)濾波模塊中不同邊界之間的數(shù)據(jù)依賴關(guān)系,因而它是以整個(gè)16×16宏塊為基本單位進(jìn)行濾波的。此外,只有整個(gè)16×16宏塊的像素重建完畢之后.才可以進(jìn)行該宏塊的濾波,因而使用了2個(gè)SRAM,一個(gè)為像素重建提供像素;另一個(gè)為像素濾波提供像素,當(dāng)一個(gè)宏塊被處理完畢,兩個(gè)SRAM交換角色,這樣避免在兩個(gè)SRAM之間傳遞數(shù)據(jù)導(dǎo)致的時(shí)間與功耗開(kāi)銷。使用仿真工具對(duì)整個(gè)去塊效應(yīng)頂層模塊DF[_]top進(jìn)行了仿真,仿真部分結(jié)果如圖5所示。
6 結(jié) 語(yǔ)
使用硬件描述語(yǔ)言完成了設(shè)計(jì),并在FPGA平臺(tái)上得到驗(yàn)證。設(shè)計(jì)采用流水線技術(shù),混合濾波方法,配合新穎的存儲(chǔ)器更新機(jī)制等方案,實(shí)時(shí)濾波頻率上限約為200 MHz,吞吐量為濾波每個(gè)16×16宏塊需要198個(gè)時(shí)鐘周期。使用HJTC,CMOS工藝,使用Syn-opsys Co.的DC工具進(jìn)行綜合,時(shí)序分析以及功耗分析,結(jié)論是時(shí)序滿足收斂要求,并且完成單個(gè)宏塊的濾波消耗的能量大約為2μW,功耗得到了很大的降低。
-
-
基于USB2.0芯片的H.264解碼器芯片設(shè)計(jì)
-
H.264/AVC標(biāo)準(zhǔn)具有一系列優(yōu)于 MPEG4和H.263的新特性,在相同的重建圖像質(zhì)量下,H.264比H.263節(jié)約50%左右的碼率。但是節(jié)約碼率的代價(jià)是增加了算法復(fù)雜度。由于僅 用軟件已經(jīng)無(wú)法實(shí)現(xiàn)實(shí)時(shí)地解碼過(guò)程。所以必須利用硬件加速,這正是本解碼器設(shè)計(jì)的初衷。
雖然H.264相較同質(zhì)量的H.263圖像,碼率節(jié)約 一半,但是由于本解碼器的目標(biāo)是解決H.264的高清圖像(1080i)的解碼工作,同時(shí)也要適用于普遍的視頻外設(shè),所以選用的接口既需要完成高速的碼流 源文件的傳輸工作也要易于插拔。而USB接口恰好符合這兩個(gè)條件。高質(zhì)量的源碼文件數(shù)據(jù)量較大,對(duì)傳輸接口要求較高。并且在FPGA的仿真環(huán)境下,USB 接口還要擔(dān)負(fù)起向PC上位機(jī)回傳解碼結(jié)果的任務(wù)。這就要求傳輸速度至少要保證超越解碼速度。和USB 1.1接口相比,USB 2.0接口的傳輸更加符合本設(shè)計(jì)的要求。
經(jīng)過(guò)計(jì)算可知,傳輸接口需要至少30MB/s的傳輸速率,才能保證對(duì)1080i的圖像進(jìn)行解碼。
器件選型
使用FPGA進(jìn)行仿真和驗(yàn)證基本已成為IC設(shè)計(jì)過(guò)程中必不 可少的環(huán)節(jié),尤其對(duì)于大規(guī)模的設(shè)計(jì)。本解碼器IC的設(shè)計(jì)使用Virtex II FPGA作為仿真環(huán)境。對(duì)于本設(shè)計(jì),利用FF1517 BGA封裝的XC2V6000已經(jīng)充分滿足設(shè)計(jì)要求。在考慮設(shè)計(jì)成本的前提下,該款FPGA是相對(duì)高性價(jià)比的選擇。
Cypress公司的EZ-USB FX2是一款集成了USB 2.0的微處理器,它集成了USB 2.0收發(fā)器、SIE(串行接口引擎)、增強(qiáng)的8051微控制器和可編程的外圍接口。FX2的這種優(yōu)化設(shè)計(jì),幾乎能達(dá)到56MB/s的數(shù)據(jù)傳輸率,而 USB 2.0允許的最大帶寬是480Mb/s,即60MB/s。該芯片在對(duì)傳輸帶寬影響很小的前提下,增加了許多集成的控制功能。GPIF和Slave FIFO模式為外部的FPGA、DSP和ATA等提供了簡(jiǎn)單和無(wú)縫的連接接口。
系統(tǒng)構(gòu)架
本設(shè)計(jì)的主體如圖1所示,在FPGA的仿真平臺(tái)中, Virtex II包括了解碼器主體和FPGA的接口模塊。USB 2.0芯片68013A作為獨(dú)立部分,負(fù)責(zé)FPGA和PC之間的USB數(shù)據(jù)傳輸。FPGA片外的SRAM與DRAM作為FPGA的擴(kuò)展存儲(chǔ)設(shè)備,用于存放 解碼器所需的源碼文件,解碼后的文件以及解碼器中用到的軟件程序文件。 本設(shè)計(jì)中,解碼器端具備強(qiáng)大的功能,內(nèi)嵌有一個(gè)CPU。可以進(jìn)行主動(dòng)識(shí)別命令的功 能。所以PC端和解碼器處于對(duì)等的地位。PC端的工作包括發(fā)送命令頭,發(fā)送命令,發(fā)送碼流,接收回傳解碼結(jié)果等;FPGA端的工作包括接收并識(shí)別命令頭與 PC命令,接收并向SRAM和DRAM中存儲(chǔ)碼流,讀取SRAM和DRAM中的解碼結(jié)果并且回傳給PC端。
USB 2.0芯片的工作方式及固件編寫(xiě)
1 芯片工作方式的確定
在設(shè)計(jì)中,存在兩個(gè)過(guò)程涉及到大批量的數(shù)據(jù)文件傳輸:PC 向下傳輸源碼文件,FPGA向上位PC傳輸解碼結(jié)果文件。其對(duì)USB傳輸要求最高。如果當(dāng)傳輸?shù)脑创a文件無(wú)法適應(yīng)解碼速度時(shí),會(huì)導(dǎo)致解碼器停頓;如果當(dāng)回 傳解碼結(jié)果滯后時(shí),會(huì)造成未被傳輸?shù)慕獯a結(jié)果被覆蓋。任何一種情況的出現(xiàn),都將直接導(dǎo)致解碼器工作失敗。
在傳輸要求甚高的情況下,選用EZ-USB FX2提供的Slave FIFO的BULK(批量傳輸)模式,能很好的滿足傳輸要求。在這種模式下,USB芯片內(nèi)存單元中劃分出6個(gè)端點(diǎn)(endpoint),以下簡(jiǎn)稱為EP。 EP0和EP1被保留作為芯片配置FIFO。EP2、4、6、8可作為用戶傳輸,并且4個(gè)EP采用雙重FIFO(double FIFO)的方式組織構(gòu)成。
舉例來(lái)說(shuō),如圖2所示,USB執(zhí)行OUT傳輸,將 EP2端點(diǎn)設(shè)成512字節(jié)雙重FIFO。在外部器件看來(lái),USB端只要有1個(gè)512字節(jié)的FIFO為“半滿”,就可以繼續(xù)發(fā)送數(shù)據(jù)。當(dāng)操作的FIFO寫(xiě) “滿”時(shí),FX2自動(dòng)將其轉(zhuǎn)換到外部接口端,排除等候讀取;并將USB接口隊(duì)列中下一個(gè)為“空”的FIFO轉(zhuǎn)移到USB接口上,供其繼續(xù)寫(xiě)數(shù)據(jù)。外部接口 端與此類似,只要有1個(gè)FIFO為“半滿”,就可以繼續(xù)讀取數(shù)據(jù)。當(dāng)前操作的FIFO讀“空”時(shí),FX2自動(dòng)將其轉(zhuǎn)換到USB接口端,排除等候?qū)懖⑼獠?接口隊(duì)列中下一個(gè)為“滿”的FIFO轉(zhuǎn)移到接口上,供外部器件使用。
為雙重FIFO的工作過(guò)程。當(dāng)一個(gè)512字節(jié)的 FIFO滿時(shí),FPGA可以取出里面的數(shù)據(jù),同時(shí)PC可以向另一個(gè)FIFO寫(xiě)入數(shù)據(jù)(一組實(shí)箭頭)。當(dāng)一個(gè)512字節(jié)的FIFO空時(shí),PC可以寫(xiě)入數(shù)據(jù)。 同時(shí)FPGA可以讀取另一個(gè)仍然有數(shù)據(jù)的FIFO(一組虛箭頭)。
雙重EP運(yùn)作模式
2 固件程序設(shè)計(jì)
在通過(guò)編寫(xiě)固件程序初始化USB設(shè)備過(guò)程中,以下重要的配置寄存器需要設(shè)置。
IFCONFIG;設(shè)置USB時(shí)鐘由外部提供,并且選用Slave FIFO模式。
EPXCFG(X=2,4,6,8);配置4個(gè)EP(端點(diǎn)FIFO)的模式。
EPXFIFOCFG(X=2,4,6,8);配置4個(gè)EP的自動(dòng)傳輸模式以及傳輸位寬。
其他一些寄存器,根據(jù)實(shí)際的需要可以單獨(dú)配置。本設(shè)計(jì)中配置EP2用于傳輸命令頭,EP4用于傳輸源碼文件,EP6用于傳輸命令,EP8用于傳輸解碼結(jié)果文件。
在完成固件程序的設(shè)計(jì)之后,可以利用FX2自帶的Control Panel將固件程序的編譯結(jié)果下載到68013A的芯片中,或者存放在外部的I2C中,以便下次復(fù)位時(shí),芯片自己讀取。
3 電路設(shè)計(jì)原理圖
電路設(shè)計(jì)原理圖
圖4為本設(shè)計(jì)的電路設(shè)計(jì)原理圖,原件按左起以及上起順序分別為:CY7C68013A芯片、電源耦合電容組、USB 2.0標(biāo)準(zhǔn)接口、標(biāo)準(zhǔn)RS232串行口、外部晶體振蕩器和HIN232串口芯片。本設(shè)計(jì)是按照這一電路原理圖制作電路板圖,完成USB 2.0的功能的。
FPGA上解碼器與USB接口模塊的設(shè)計(jì)
SLAVE FIFO的模式下,FPGA可以主動(dòng)決定是否有必要讀取USB內(nèi)部FIFO中的數(shù)據(jù),而不僅僅是被動(dòng)的接受PC發(fā)送的數(shù)據(jù)。如圖5所示,控制方式: SLOE、SLRD和SLWR作為EP的讀寫(xiě)信號(hào)與使能控制信號(hào)。FIFOADR[1:0]作為4個(gè)EP的選擇信號(hào),即選擇當(dāng)前操作的目標(biāo)EP。 PKTEND是FPGA主動(dòng)命令USB芯片向上位PC發(fā)送數(shù)據(jù)的控制端。FLAGX(X=A,B,C,D)表示當(dāng)前選中的FIFO的空滿信息。FD(8位 或者16位)為雙向的數(shù)據(jù)傳輸口。FPGA接口控制這些端口,達(dá)到對(duì)USB進(jìn)行操作的目的。
解碼器與USB接口
FPGA接口中,本設(shè)計(jì)還定義了一個(gè)深度為256,寬度為32位的FIFO(內(nèi)部 FIFO)。原因在于:本設(shè)計(jì)中SRAM和DRAM部分要不斷地被解碼器調(diào)用,這樣就導(dǎo)致存儲(chǔ)單元被占用。此時(shí)USB是無(wú)法對(duì)存儲(chǔ)單元操作的。所以在 FPGA接口中,先將多個(gè)USB傳輸?shù)臄?shù)據(jù)FD(8位或者16位)拼接成32位數(shù)據(jù)存入內(nèi)部FIFO,當(dāng)SRAM和DRAM空閑時(shí),再向其傳輸。這樣的處 理,使得USB傳輸不依賴于存儲(chǔ)單元的工作狀態(tài),進(jìn)一步提高了USB傳輸?shù)乃俣?#xff0c;以滿足傳輸?shù)囊蟆?/span>
設(shè)計(jì)驗(yàn)證及結(jié)果分析
當(dāng)開(kāi)發(fā)完Windows操作系統(tǒng)下的USB驅(qū)動(dòng)程序后,本設(shè)計(jì)成功的利用EZ- USB芯片與Virtex II FPGA完成了視頻數(shù)據(jù)的傳輸工作。并且在FPGA工作的66MHz以下的頻率時(shí),完成了對(duì)H.264格式視頻的實(shí)時(shí)傳輸、解碼。傳輸速率的檢測(cè)中, USB對(duì)大批量數(shù)據(jù)的傳輸可以達(dá)到33MB/s以上的速度,完全適應(yīng)解碼器的要求。
設(shè)計(jì)分析:本設(shè)計(jì)利用了兩級(jí)的FIFO,充分的發(fā)揮了USB 2.0的速度優(yōu)勢(shì)。設(shè)計(jì)方案解除了傳輸與解碼過(guò)程中的瓶頸,實(shí)現(xiàn)了無(wú)縫連接。不足之處是由于USB芯片的Slave FIFO模式限制,PC與解碼器直接必須使用命令交互的方式進(jìn)行通信,占用了一定的帶寬。在命令過(guò)于頻繁的狀態(tài)下,效率不高,但對(duì)大批量數(shù)據(jù)傳輸影響很 小。
結(jié)束語(yǔ)
驗(yàn)證平臺(tái)下成功,并且實(shí)際通過(guò)多種壓縮率的源碼文件測(cè)試,實(shí)現(xiàn)了平均33MB/s,最高40MB/s的速率。完成并且超過(guò)了設(shè)計(jì)要求。
-
-
解碼器安裝方法
-
解碼器按照云臺(tái)供電電壓分為交流解碼器和直流解碼器。交流解碼器為交流云臺(tái)提供交流230V或24V電壓驅(qū)動(dòng)云臺(tái)轉(zhuǎn)動(dòng);直流云臺(tái)為直流云臺(tái)提供直流12V或24V電源,如果云臺(tái)是變速控制的還要要求直流解碼器為云臺(tái)提供0-33或36V直流電壓信號(hào),來(lái)控制直流云臺(tái)的變速轉(zhuǎn)動(dòng)。
按照通訊方式分為單向通訊解碼器和雙向通訊解碼器。單向通訊解碼器只接收來(lái)自控制器的通訊信號(hào)并將其翻譯為對(duì)應(yīng)動(dòng)作的電壓/電流信號(hào)驅(qū)動(dòng)前端設(shè)備;雙向通訊的解碼器除了具有單向通訊解碼器的性能外還向控制器發(fā)送通訊信號(hào),因此可以實(shí)時(shí)將解碼器的工作狀態(tài)傳送給控制器進(jìn)行分析,另外可以將報(bào)警探測(cè)器等前端設(shè)備信號(hào)直接輸入到解碼器中由雙向通訊來(lái)傳誦現(xiàn)場(chǎng)的報(bào)警探測(cè)信號(hào),減少線纜的使用。
按照通訊信號(hào)的傳輸方式可分為同軸傳輸和雙絞線傳輸。一般的解碼器都支持雙絞線傳輸?shù)耐ㄓ嵭盘?hào),而有些解碼器還支持或者同時(shí)支持同軸電纜傳輸方式,也就是將通訊信號(hào)經(jīng)過(guò)調(diào)制與視頻信號(hào)以不同的頻率共同傳輸在同一條視頻電纜上。
解碼器的電路是以單片機(jī)為核心,由電源電路、通訊接口電路、自檢及地址輸入電路、輸出驅(qū)動(dòng)電路、報(bào)警輸入接口等電路組成。
解碼器一般不能單獨(dú)使用,需要與系統(tǒng)主機(jī)配合使用。
第一步:把變倍鏡頭或一體機(jī)、云臺(tái)的電纜接入解碼器(不可帶電操作!!!):
參照鏡頭或一體機(jī)、云臺(tái)的說(shuō)明書(shū)、標(biāo)簽,對(duì)照解碼器的接線圖,仔細(xì)準(zhǔn)確地把所有電纜接入解碼器的接線端子,兩者的接口必須完全對(duì)應(yīng)連接。注意:線頭根據(jù)接線端子的尺寸做到芯線與接線柱接觸良好、牢固,芯線不外露。做好在安裝前先把以上設(shè)備檢測(cè)后再實(shí)際安裝。(以經(jīng)濟(jì)型解碼器為例)
第二步:接出攝像機(jī)電源、云臺(tái)電源、設(shè)定地址碼和波特率開(kāi)關(guān):
根據(jù)鏡頭或攝像機(jī)、云臺(tái)的要求,從解碼器的電源輸出端接出攝像機(jī)電源并調(diào)整云臺(tái)的電源,并根據(jù)主機(jī)的設(shè)定或壓縮卡的設(shè)定,調(diào)整好地址碼和波特率。接入220V電源線。最后接出485控制線:正負(fù)極必須完全對(duì)應(yīng)。
調(diào)整主機(jī)、加電測(cè)試
將485控制器的連接線接入主機(jī)的COM1或COM2口,調(diào)整主機(jī)的相關(guān)參數(shù),全部安裝完畢后,再次檢查接線端口和電源、電壓,確認(rèn)無(wú)誤后,給解碼器加電測(cè)試,以下的設(shè)置以8008軟件為例:
選擇攝像機(jī)的控制端口:
選擇和設(shè)置與解碼器匹配的協(xié)議:
-
-
解碼器與譯碼器使用注意事項(xiàng)
-
1. OUT輸出的交流電壓取決于IN輸入的交流電壓.出廠是為220V;O/C是常開(kāi)或常閉的可負(fù)載最多64個(gè)解碼器.與計(jì)算機(jī)相連,COM口連接3正,5負(fù)的發(fā)碼線。
3. 解碼器故障:1.是否電源沒(méi)連接好;2.芯片是否壓反或沒(méi)壓緊;3.地址碼是否撥對(duì);4.COM口是否屏蔽;5.協(xié)議設(shè)置是否正確。
4. 譯碼器是控制解碼器和智能球等.它是連接收碼線2正,5負(fù)的。
5. 如何接一體球:譯碼器的RS-232接主機(jī)的COM;T+接一體球的T-,T-接一體球的T+;,如果要連接好幾個(gè)一體球,直接把譯碼器的RS-232并聯(lián)起來(lái)就可以了.譯碼器的地址碼是第N路減1的二進(jìn)制.而一體球的地址碼是第N路的二進(jìn)制。
6. 當(dāng)與主機(jī)相連接時(shí)用解碼器3.5針相連接的發(fā)碼線.當(dāng)與一體球相連接時(shí)用譯碼器2.5針相連接的收碼線。
7. 當(dāng)解碼器里的燈閃爍不正常時(shí),可將電源斷電,然后重新上電即可。
8. 當(dāng)用422轉(zhuǎn)接頭時(shí),注意正負(fù)極,如果轉(zhuǎn)接頭這邊是接負(fù),那么解碼器那邊就接正,如果轉(zhuǎn)接頭這邊接正,那么解碼器那邊接負(fù)。
------------------
先存著慢慢看。
-
總結(jié)
- 上一篇: Cannot lock Java com
- 下一篇: 错题本——数据库系统工程师 2009