新聞中心

EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 一種面向H.264視頻編碼器的SoC驗(yàn)證平臺(tái)

一種面向H.264視頻編碼器的SoC驗(yàn)證平臺(tái)

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

3.1 讀寫端口和讀寫仲裁器
圖2中有一個(gè)讀端口和一個(gè)寫端口,分別用于H.264讀出數(shù)據(jù)和圖像采集模塊寫入數(shù)據(jù)。其實(shí)還有一個(gè)用于VGA顯示的讀端口,其時(shí)序與圖像采集模塊的寫時(shí)序相同,都是逐行掃描,在此處略去了。
在讀&寫仲裁器(Read&Write Arbiter)中處理來(lái)自讀端口的讀請(qǐng)求和來(lái)自寫端口的寫請(qǐng)求。寫請(qǐng)求的優(yōu)先級(jí)高于讀請(qǐng)求的優(yōu)先級(jí)。寫端口由寫緩存器(WE_FIFO)和寫地址生成器(WE_Addr Generator)組成。WE_FIFO的深度為512字(每個(gè)字32位,存一個(gè)像素),當(dāng)圖像采集模塊在WE_FIFO中寫夠256個(gè)字之后,就會(huì)發(fā)起一次寫請(qǐng)求。寫地址生成器每完成一次寫請(qǐng)求之后便會(huì)增加256,地址增加的順序與CMOS圖像傳感器的掃描順序相同。
讀端口由讀緩存器(RD_FIFO)、讀地址生成器(RD_Addr Generator)、讀狀態(tài)機(jī)(RD_FSM)和行計(jì)數(shù)器(Line_Cnt)組成。RD_FIFO的深度為256字,載入宏塊地址(addr_load)的命令發(fā)出后,RD_FSM就進(jìn)入了工作狀態(tài)(read_stat信號(hào)為1)。同時(shí),讀地址生成器已經(jīng)根據(jù)宏塊的水平位置(mb_num_h)和垂直位置(mb_num_v)計(jì)算出了宏塊所在SDRAM中的基地址。當(dāng)RD_FSM處于工作狀態(tài)時(shí),讀請(qǐng)求一直有效,如果此時(shí)寫請(qǐng)求無(wú)效,就會(huì)發(fā)起一次長(zhǎng)度為16的突發(fā)讀傳輸,從SDRAM中讀取16個(gè)像素?cái)?shù)據(jù)到RD_FIFO。當(dāng)完成一次讀傳輸之后,讀地址生成器會(huì)自動(dòng)加一行的長(zhǎng)度(可配置,此處為800),也就是指向當(dāng)前宏塊下一行的基地址處。與此同時(shí),Read&Write Arbiter模塊會(huì)檢測(cè)寫請(qǐng)求是否有效,如果有效則優(yōu)先發(fā)起長(zhǎng)度為256的突發(fā)寫傳輸,等寫傳輸完成后再完成下一次長(zhǎng)度為16的突發(fā)讀傳輸。如此,當(dāng)完成16次突發(fā)讀傳輸后,所讀宏塊的數(shù)據(jù)也就完全寫入到RD_FIFO中了,此時(shí),RD_FSM由工作狀態(tài)轉(zhuǎn)為閑置狀態(tài),等待下一次的宏塊讀請(qǐng)求。
當(dāng)RD_FIFO中的數(shù)據(jù)數(shù)量(rd_usedw)不為零時(shí),H.264即可從RD_FIFO中讀取數(shù)據(jù)。當(dāng)讀完256個(gè)數(shù)據(jù),即一個(gè)宏塊的數(shù)據(jù)后,rd_u sedw的值變?yōu)榱?,一個(gè)宏塊數(shù)據(jù)也便讀完了。
3.2 SDRAM命令生成器和命令仲裁器
SDRAM命令生成器(Command Generator)主要作用是根據(jù)SDRAM的控制時(shí)序生成SDRAM接口處的控制命令,這些命令是有可能發(fā)生沖突的。命令仲裁器(Command Arbiter)的作用就是對(duì)命令生成器產(chǎn)生的命令進(jìn)行仲裁。
SDRAM的初始化過(guò)程可分成初始化延遲、預(yù)充電、刷新、設(shè)置模式寄存器4個(gè)階段,這4個(gè)階段由一個(gè)初始化計(jì)數(shù)器(initial timer)控制。SDRAM命令生成器根據(jù)初始化計(jì)數(shù)器的值會(huì)產(chǎn)生初始化延遲(initial)命令、預(yù)充電(precharge)命令、刷新(refresh)命令和設(shè)置模式寄存器(load_mode)命令。其中,刷新(refresh)命令也可以在SDRAM的工作過(guò)程中根據(jù)刷新計(jì)數(shù)器(refresh timer)的值產(chǎn)生。這是因?yàn)镾DRAM的特性要求每64 ms就要對(duì)SDRAM的所有行刷新一遍。由于此設(shè)計(jì)中SDRAM工作在自動(dòng)預(yù)充電模式,所以說(shuō)預(yù)充電命令也只會(huì)在初始化過(guò)程中出現(xiàn)。
命令生成器還會(huì)根據(jù)Read&Write Arbiter傳過(guò)來(lái)的讀寫請(qǐng)求產(chǎn)生讀寫(read/write)命令。讀寫(read/write)命令的優(yōu)先級(jí)是最低的,當(dāng)SDRAM控制器處于初始化過(guò)程,或者正在執(zhí)行刷新命令時(shí),命令仲裁器就會(huì)讓讀寫請(qǐng)求一直等待更高優(yōu)先級(jí)的命令執(zhí)行完畢。此外,由于SDRAM是工作在full-page模式,需要根據(jù)寫或讀的突發(fā)長(zhǎng)度產(chǎn)生突發(fā)終止命令。突發(fā)終止命令根據(jù)讀計(jì)數(shù)器(write timer)和寫計(jì)數(shù)器(read timer)的值產(chǎn)生,它的優(yōu)先級(jí)低于刷新(refresh)命令,卻高于讀寫(read/write)命令。

4 的軟件支持
參照參考文獻(xiàn),設(shè)計(jì)了DM9000A的控制端口,并在所設(shè)計(jì)的上移植了μC/OS-II實(shí)時(shí)操作系統(tǒng)和μC/TCP-IP協(xié)議棧。這是為了方便把H.264所生成的比特流數(shù)據(jù)傳送到PC機(jī)端作進(jìn)一步。

5 實(shí)驗(yàn)結(jié)果
設(shè)計(jì)了一個(gè)H.264編碼器模型,它主要實(shí)現(xiàn)的功能就是模擬H.264編碼器與SDRAM控制器接口處的讀時(shí)序,從SDRAM中讀取數(shù)據(jù)。同時(shí),它也帶有一個(gè)Wish-bone從接口,可以把讀取的數(shù)據(jù)傳送給OR1200微處理器,OR1200微處理器再經(jīng)過(guò)網(wǎng)口把圖像數(shù)據(jù)傳送到PC機(jī),以所讀取的數(shù)據(jù)是否正確。利用Wishbone總線功能模型(BFM)在ModelSim SE 6.5f環(huán)境下對(duì)所設(shè)計(jì)的模塊進(jìn)行了RTL級(jí)的仿真,方案框架圖如圖3所示。

本文引用地址:http://butianyuan.cn/article/165871.htm

d.jpg


此外,對(duì)整個(gè)系統(tǒng)選用Altera公司的Cyclone II系列FPGA EP2C70F896C6進(jìn)行了綜合,并在臺(tái)灣友晶科技公司的DE2-70開(kāi)發(fā)板上實(shí)現(xiàn)。整個(gè)的所占用資源為:邏輯單元10 662個(gè),寄存器4 689個(gè),存儲(chǔ)器418104位。
將圖像采集模塊的時(shí)鐘設(shè)為25 MHz,SDRAM控制器的時(shí)鐘設(shè)置為100 MHz,其他各個(gè)模塊均運(yùn)行在50MHz。前述方法把從SDRAM控制器中以宏塊為順序采集到的YUV圖像數(shù)據(jù)通過(guò)網(wǎng)口傳輸?shù)絇C機(jī),在PC機(jī)端YUV圖像數(shù)據(jù)轉(zhuǎn)換成正常的圖像順序,把Y分量以灰度位圖的格式顯示,并與VGA顯示器中所顯示的圖像(RGB通道都輸入變換后的Y分量)進(jìn)行對(duì)比。

結(jié)語(yǔ)
本文基于OR1200微處理器設(shè)計(jì)了一種H.264編碼器的SoC驗(yàn)證平臺(tái),在集成了常用的各類IP核的基礎(chǔ)上,重點(diǎn)對(duì)與H.264編碼器特性相關(guān)的多端口SDRAM控制器進(jìn)行了設(shè)計(jì)。經(jīng)過(guò)RTL級(jí)以及FPGA驗(yàn)證,所設(shè)計(jì)的平臺(tái)可以滿足H.264編碼器軟硬件協(xié)同驗(yàn)證的各種要求,可大大縮短H.264編碼器的開(kāi)發(fā)時(shí)間。


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉