<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 基于USB 2.0集成芯片的H.264解碼器芯片設計

基于USB 2.0集成芯片的H.264解碼器芯片設計

作者: 時(shí)間:2007-07-19 來(lái)源:網(wǎng)絡(luò ) 收藏

/AVC標準具有一系列優(yōu)于MPEG4和H.263的新特性,在相同的重建圖像質(zhì)量下,比H.263節約50%左右的碼率。但是節約碼率的代價(jià)是增加了算法復雜度。由于僅用軟件已經(jīng)無(wú)法實(shí)現實(shí)時(shí)地解碼過(guò)程。所以必須利用硬件加速,這正是本的初衷。

雖然相較同質(zhì)量的H.263圖像,碼率節約一半,但是由于本的目標是解決H.264的高清圖像(1080i)的解碼工作,同時(shí)也要適用于普遍的視頻外設,所以選用的接口既需要完成高速的碼流源文件的傳輸工作也要易于插拔。而接口恰好符合這兩個(gè)條件。高質(zhì)量的源碼文件數據量較大,對傳輸接口要求較高。并且在FPGA的仿真環(huán)境下,接口還要擔負起向PC上位機回傳解碼結果的任務(wù)。這就要求傳輸速度至少要保證超越解碼速度。和 1.1接口相比,USB 接口的傳輸更加符合本的要求。

經(jīng)過(guò)計算可知,傳輸接口需要至少30MB/s的傳輸速率,才能保證對1080i的圖像進(jìn)行解碼。

器件選型

使用FPGA進(jìn)行仿真和驗證基本已成為IC過(guò)程中必不可少的環(huán)節,尤其對于大規模的設計。本IC的設計使用Virtex II FPGA作為仿真環(huán)境。對于本設計,利用FF1517 BGA封裝的XC2V6000已經(jīng)充分滿(mǎn)足設計要求。在考慮設計成本的前提下,該款FPGA是相對高性?xún)r(jià)比的選擇。

Cypress公司的EZ-USB FX2是一款了USB 的微處理器,它了USB 收發(fā)器、SIE(串行接口引擎)、增強的8051微控制器和可編程的外圍接口。FX2的這種優(yōu)化設計,幾乎能達到56MB/s的數據傳輸率,而USB 2.0允許的最大帶寬是480Mb/s,即60MB/s。該在對傳輸帶寬影響很小的前提下,增加了許多的控制功能。GPIF和Slave FIFO模式為外部的FPGA、DSP和ATA等提供了簡(jiǎn)單和無(wú)縫的連接接口。

系統構架

本設計的主體如圖1所示,在FPGA的仿真平臺中,Virtex II包括了解碼器主體和FPGA的接口模塊。USB 2.068013A作為獨立部分,負責FPGA和PC之間的USB數據傳輸。FPGA片外的SRAM與DRAM作為FPGA的擴展存儲設備,用于存放解碼器所需的源碼文件,解碼后的文件以及解碼器中用到的軟件程序文件。

圖1 FPGA仿真傳輸示意圖


本設計中,解碼器端具備強大的功能,內嵌有一個(gè)CPU??梢赃M(jìn)行主動(dòng)識別命令的功能。所以PC端和解碼器處于對等的地位。PC端的工作包括發(fā)送命令頭,發(fā)送命令,發(fā)送碼流,接收回傳解碼結果等;FPGA端的工作包括接收并識別命令頭與PC命令,接收并向SRAM和DRAM中存儲碼流,讀取SRAM和DRAM中的解碼結果并且回傳給PC端。

USB 2.0的工作方式及固件編寫(xiě)

1 芯片工作方式的確定

在設計中,存在兩個(gè)過(guò)程涉及到大批量的數據文件傳輸:PC向下傳輸源碼文件,FPGA向上位PC傳輸解碼結果文件。其對USB傳輸要求最高。如果當傳輸的源碼文件無(wú)法適應解碼速度時(shí),會(huì )導致解碼器停頓;如果當回傳解碼結果滯后時(shí),會(huì )造成未被傳輸的解碼結果被覆蓋。任何一種情況的出現,都將直接導致解碼器工作失敗。

在傳輸要求甚高的情況下,選用EZ-USB FX2提供的Slave FIFO的BULK(批量傳輸)模式,能很好的滿(mǎn)足傳輸要求。在這種模式下,USB芯片內存單元中劃分出6個(gè)端點(diǎn)(endpoint),以下簡(jiǎn)稱(chēng)為EP。EP0和EP1被保留作為芯片配置FIFO。EP2、4、6、8可作為用戶(hù)傳輸,并且4個(gè)EP采用雙重FIFO(double FIFO)的方式組織構成。

舉例來(lái)說(shuō),如圖2所示,USB執行OUT傳輸,將EP2端點(diǎn)設成512字節雙重FIFO。在外部器件看來(lái),USB端只要有1個(gè)512字節的FIFO為“半滿(mǎn)”,就可以繼續發(fā)送數據。當操作的FIFO寫(xiě)“滿(mǎn)”時(shí),FX2自動(dòng)將其轉換到外部接口端,排除等候讀??;并將USB接口隊列中下一個(gè)為“空”的FIFO轉移到USB接口上,供其繼續寫(xiě)數據。外部接口端與此類(lèi)似,只要有1個(gè)FIFO為“半滿(mǎn)”,就可以繼續讀取數據。當前操作的FIFO讀“空”時(shí),FX2自動(dòng)將其轉換到USB接口端,排除等候寫(xiě)并將外部接口隊列中下一個(gè)為“滿(mǎn)”的FIFO轉移到接口上,供外部器件使用。

圖2 EndPoint示意圖

圖3所示為雙重FIFO的工作過(guò)程。當一個(gè)512字節的FIFO滿(mǎn)時(shí),FPGA可以取出里面的數據,同時(shí)PC可以向另一個(gè)FIFO寫(xiě)入數據(一組實(shí)箭頭)。當一個(gè)512字節的FIFO空時(shí),PC可以寫(xiě)入數據。同時(shí)FPGA可以讀取另一個(gè)仍然有數據的FIFO(一組虛箭頭)。

圖3 雙重EP運作模式


2 固件程序設計

在通過(guò)編寫(xiě)固件程序初始化USB設備過(guò)程中,以下重要的配置寄存器需要設置。

IFCONFIG;設置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)傳輸模式以及傳輸位寬。

其他一些寄存器,根據實(shí)際的需要可以單獨配置。本設計中配置EP2用于傳輸命令頭,EP4用于傳輸源碼文件,EP6用于傳輸命令,EP8用于傳輸解碼結果文件。

在完成固件程序的設計之后,可以利用FX2自帶的Control Panel將固件程序的編譯結果下載到68013A的芯片中,或者存放在外部的I2C中,以便下次復位時(shí),芯片自己讀取。

3 電路設計原理圖

圖4為本設計的電路設計原理圖,原件按左起以及上起順序分別為:CY7C68013A芯片、電源耦合電容組、USB 2.0標準接口、標準RS232串行口、外部晶體振蕩器和HIN232串口芯片。本設計是按照這一電路原理圖制作電路板圖,完成USB 2.0的功能的。

圖4 電路設計原理圖

FPGA上解碼器與USB接口模塊的設計

SLAVE FIFO的模式下,FPGA可以主動(dòng)決定是否有必要讀取USB內部FIFO中的數據,而不僅僅是被動(dòng)的接受PC發(fā)送的數據。如圖5所示,控制方式:SLOE、SLRD和SLWR作為EP的讀寫(xiě)信號與使能控制信號。FIFOADR[1:0]作為4個(gè)EP的選擇信號,即選擇當前操作的目標EP。PKTEND是FPGA主動(dòng)命令USB芯片向上位PC發(fā)送數據的控制端。FLAGX(X=A,B,C,D)表示當前選中的FIFO的空滿(mǎn)信息。FD(8位或者16位)為雙向的數據傳輸口。FPGA接口控制這些端口,達到對USB進(jìn)行操作的目的。

圖5 解碼器與USB接口


FPGA接口中,本設計還定義了一個(gè)深度為256,寬度為32位的FIFO(內部FIFO)。原因在于:本設計中SRAM和DRAM部分要不斷地被解碼器調用,這樣就導致存儲單元被占用。此時(shí)USB是無(wú)法對存儲單元操作的。所以在FPGA接口中,先將多個(gè)USB傳輸的數據FD(8位或者16位)拼接成32位數據存入內部FIFO,當SRAM和DRAM空閑時(shí),再向其傳輸。這樣的處理,使得USB傳輸不依賴(lài)于存儲單元的工作狀態(tài),進(jìn)一步提高了USB傳輸的速度,以滿(mǎn)足傳輸的要求。

設計驗證及結果分析

當開(kāi)發(fā)完Windows操作系統下的USB驅動(dòng)程序后,本設計成功的利用EZ-USB芯片與Virtex II FPGA完成了視頻數據的傳輸工作。并且在FPGA工作的66MHz以下的頻率時(shí),完成了對H.264格式視頻的實(shí)時(shí)傳輸、解碼。傳輸速率的檢測中,USB對大批量數據的傳輸可以達到33MB/s以上的速度,完全適應解碼器的要求。

設計分析:本設計利用了兩級的FIFO,充分的發(fā)揮了USB 2.0的速度優(yōu)勢。設計方案解除了傳輸與解碼過(guò)程中的瓶頸,實(shí)現了無(wú)縫連接。不足之處是由于USB芯片的Slave FIFO模式限制,PC與解碼器直接必須使用命令交互的方式進(jìn)行通信,占用了一定的帶寬。在命令過(guò)于頻繁的狀態(tài)下,效率不高,但對大批量數據傳輸影響很小。

結束語(yǔ)

驗證平臺下成功,并且實(shí)際通過(guò)多種壓縮率的源碼文件測試,實(shí)現了平均33MB/s,最高40MB/s的速率。完成并且超過(guò)了設計要求。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>