基于FPGA NiosII的MPEG-4視頻播放器
基于8×8矩陣的IDCT算法,在FPGA上按照圖4所示的結(jié)構(gòu)加以硬件實(shí)現(xiàn)。
2.1.3 運(yùn)動補(bǔ)償
運(yùn)動補(bǔ)償是一種大量、單調(diào)的運(yùn)算。為了能實(shí)現(xiàn)運(yùn)動補(bǔ)償,采用了多級、多個(gè)運(yùn)算單元并行流水運(yùn)算的方式,如圖5所示。
運(yùn)動補(bǔ)償模塊的控制很復(fù)雜。實(shí)際設(shè)計(jì)時(shí)將它分成幾個(gè)子模塊:補(bǔ)償控制、補(bǔ)償?shù)刂樊a(chǎn)生、差分?jǐn)?shù)據(jù)提供以及補(bǔ)償運(yùn)算。這幾個(gè)子模塊直接采用硬件邏輯設(shè)計(jì),運(yùn)行時(shí)無需NiosII處理器干預(yù)。其中補(bǔ)償控制是完成整個(gè)運(yùn)動補(bǔ)償?shù)目刂?,提供輸入控制信號、輸出控制信號、緩存控制信號、預(yù)測數(shù)據(jù)和差分?jǐn)?shù)據(jù)等;補(bǔ)償?shù)刂樊a(chǎn)生用于生成預(yù)測數(shù)據(jù)在幀緩存中的地址及補(bǔ)償結(jié)果的寫地址;差分?jǐn)?shù)據(jù)負(fù)責(zé)接收IDCT的結(jié)果,通過緩存在適當(dāng)時(shí)機(jī)提供補(bǔ)償使用;補(bǔ)償運(yùn)算則完成最終預(yù)測數(shù)據(jù)的計(jì)算。
2.1.4 YUV-RGB轉(zhuǎn)換
根據(jù)YUV到RGB色彩空間的轉(zhuǎn)換關(guān)系,對每個(gè)乘積項(xiàng)都預(yù)先做出結(jié)果,存放在ROM當(dāng)中。對每一個(gè)YUV分量的輸入,由硬件邏輯產(chǎn)生存取地址,并進(jìn)行加法運(yùn)算,從而得到對應(yīng)的結(jié)果。其實(shí)現(xiàn)結(jié)構(gòu)如圖6所示。
2.2 系統(tǒng)軟件工作流程
本系統(tǒng)的軟件工作流程如圖7所示。
結(jié) 語
該系統(tǒng)采用基于Altera FPGA嵌入式NiosII軟核的SOPC平臺實(shí)現(xiàn),具有較低的硬件成本,IP核的大量使用,良好的系統(tǒng)擴(kuò)展性的特點(diǎn)。
評論