国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種軟硬件協(xié)同的WMA解碼器的設(shè)計(jì)

2014-09-10 01:01朱彩霞
關(guān)鍵詞:游程解碼器字節(jié)

朱彩霞

(淮安信息職業(yè)技術(shù)學(xué)院 電子工程學(xué)院,江蘇 淮安 223003)

0 引言

隨著人們對(duì)于便攜播放的需求越來(lái)越高和集成電路生產(chǎn)工藝的越來(lái)越精密,采用軟硬件協(xié)調(diào)的方法實(shí)現(xiàn)超低功耗音頻解碼已成為一種趨勢(shì)。目前,大部分的MP3解碼和WMA解碼都是使用DSP實(shí)現(xiàn),該方法的缺點(diǎn)是軟件開(kāi)發(fā)難度大、功耗也比較大。采用純硬件實(shí)現(xiàn)的缺點(diǎn)在于格式擴(kuò)展不方便、設(shè)計(jì)周期長(zhǎng)和文件兼容性不夠。ARM7TDMI具有成本低、功耗低、代碼密度高和容易開(kāi)發(fā)等特點(diǎn)。硬件設(shè)計(jì)具有低功耗、低成本等優(yōu)點(diǎn),其缺點(diǎn)是一旦生產(chǎn)就不可更改,所以一般設(shè)計(jì)都是把沒(méi)有兼容性需求、計(jì)算量大的部分采用硬件設(shè)計(jì),而有兼容性需求的部分采用軟件設(shè)計(jì)[1]。

1 WMA 簡(jiǎn)介

WMA是微軟公司提出的一種音頻標(biāo)準(zhǔn),是Microsoft Windows Media技術(shù)中的一部分,它包含了對(duì)音頻格式的一個(gè)完整定義,包括音頻編碼和加密。相比于MP3,它具有更好的高頻音質(zhì)和更低的壓縮率,相比于AAC,它具有更高的接受度[2],又因?yàn)閃MA具有DRM版權(quán)保護(hù),所以具有更好的市場(chǎng)價(jià)值。

圖1給出了WMA的解碼過(guò)程,通過(guò)游程解碼(Run-Level Decoder)和控制信息解碼得到殘差系數(shù),反量化(Inverse Quantizer)后得到頻域系數(shù),噪聲產(chǎn)生模塊用于生成舒適噪聲以改善頻域過(guò)于集中時(shí)候的音質(zhì),多聲道變換得到立體聲的雙聲道單獨(dú)系數(shù),最后通過(guò)反重疊變換(Inverse MLT)得到時(shí)域音頻信號(hào)[3]。

圖1 WMA的解碼過(guò)程

在圖1中,Run-Level Decoder和Inverse MLT部分采用硬件實(shí)現(xiàn),其它部分采用軟件實(shí)現(xiàn)。Run-Level Decoder的運(yùn)算單位都是BIT,ARM7的指令運(yùn)算單位都是字節(jié),用軟件的方式會(huì)浪費(fèi)功耗。Inverse MLT 類(lèi)似FFT運(yùn)算,該步驟在整個(gè)WMA解碼中占大約40%的MIPS,采用硬件會(huì)大大減少功耗[4]。

2 解碼器設(shè)計(jì)

WMA解碼的設(shè)計(jì)過(guò)程如圖2所示。

圖2 WMA解碼的設(shè)計(jì)圖

ARM7上運(yùn)行的系統(tǒng)軟件采用UCOS-II + UCFS,采用FAT32文件系統(tǒng),WMA存儲(chǔ)在SD卡中,解碼器首先讀出WMA文件,進(jìn)行ASF頭解析,判斷其是否為正確的WMA文件,如果是,則繼續(xù)解析ASF頭、Packet、Frame和SubFrame等。

2.1 游程解碼(Run-Level Decoder)

游程解碼的讀碼流文件的過(guò)程如表1所示。

讀比特的過(guò)程和游程解碼VLC采用硬件設(shè)計(jì),RLD解碼器具有兩種功能:一種是ShowBits和GetBits,ShowBits是查看nLength長(zhǎng)度比特的數(shù)值,不移動(dòng)硬件bitstream的指針,GetBits是讀取nLength長(zhǎng)度比特的數(shù)值并且移動(dòng)硬件bitstream的指針;另一種功能是自動(dòng)解碼VLC的系數(shù),解碼系數(shù)自動(dòng)寫(xiě)到SRAM。

在解碼WMA文件時(shí),首先讀出SD卡中的WMA文件,因?yàn)閃MA文件是ASF格式封裝的,而MP3/FLAC/APE等文件都不是ASF文件,所以通過(guò)文件前四個(gè)字節(jié)可以檢測(cè)文件是否確實(shí)是WMA格式的文件,防止錯(cuò)誤文件解碼。正確文件解碼開(kāi)始首先通過(guò)AHB填寫(xiě)256個(gè)字節(jié)到RLD的內(nèi)部RAM,稱(chēng)為初始化過(guò)程。

讀比特的過(guò)程如下:

uint_32 bs_read( sint_32 i_count )

{

DEC_BSI_UVLC_CTL_REG = (4<<6) | (i_count<<1) | 1 ;

do{

status = DEC_BSI_UVLC_STA_REG ;

}while( (status&1)==0) ;

return (status>>8) ;

}

uint_32 bs_show( sint_32 i_count )

{

DEC_BSI_UVLC_CTL_REG = (5<<6) | (i_count<<1) | 1 ;

do{

status = DEC_BSI_UVLC_STA_REG ;

}while( (status&1)==0) ;

return (status>>8) ;

}

表1 游程解碼語(yǔ)法描述

Run-Level Decoder解碼的流程如圖3所示。

圖3 Run-Level Decoder解碼

首先CPU通過(guò)AHB接口填寫(xiě)256個(gè)字節(jié)數(shù)據(jù)到RLD的內(nèi)部RAM,ShowBits和GetBits時(shí),只需要配置一個(gè)寄存器,然后讀取狀態(tài)寄存器,內(nèi)部運(yùn)算完成后,讀取數(shù)據(jù)寄存器的內(nèi)容,每次最多讀取24Bit;

在殘差系數(shù)VLD解碼時(shí),解碼過(guò)程不需要CPU干涉,由CPU配置num_coded_coeff參數(shù)到寄存器,然后啟動(dòng)VLD解碼器,軟件處于等待狀態(tài),如果256個(gè)字節(jié)數(shù)據(jù)用完,內(nèi)部硬件設(shè)置標(biāo)志位并暫停解碼,CPU根據(jù)狀態(tài)寄存器標(biāo)志位重新填寫(xiě)256個(gè)字節(jié),直到硬件解碼完畢。VLD硬件解碼首先初始化RAM輸出,全部寫(xiě)0,然后將解碼數(shù)據(jù)寫(xiě)到RAM中,由CPU來(lái)讀取。

LMIT解碼功能示意圖見(jiàn)圖4。

圖4 IMLT解碼功能示意圖

2.2 IMLT解碼

IMLT解碼包含兩個(gè)部分,DCT-IV和加窗計(jì)算。其中DCT-IV的計(jì)算是主要部分,使用了兩個(gè)模塊,IMLT根據(jù)CPU配置輸入和輸出的RAM地址,到系統(tǒng)RAM中讀取輸入,把DCT-IV計(jì)算后的結(jié)果寫(xiě)到輸入RAM中,加窗計(jì)算從輸出RAM的讀取數(shù)據(jù),計(jì)算完成后寫(xiě)回輸出RAM。

DCT-IV的數(shù)學(xué)表達(dá)如下:

for0≤N<2n

在計(jì)算的時(shí)候采用快速算法,首先進(jìn)行preTwiddle,該模塊是把輸入數(shù)據(jù)進(jìn)行FFT轉(zhuǎn)換,計(jì)算復(fù)數(shù)輸入,然后繼續(xù)FFT運(yùn)算,最后調(diào)用postTwiddle把FFT運(yùn)算的結(jié)果轉(zhuǎn)換為DCT-IV的輸出,這些運(yùn)算的中間結(jié)果都存儲(chǔ)輸出RAM中。

圖5為IMLT硬件解碼圖,其中DCT_IV_CTRL是總體控制模塊,負(fù)責(zé)和CPU交互,模塊內(nèi)部包含解碼控制狀態(tài)機(jī),用于啟動(dòng)和停止四個(gè)流程的模塊,在四個(gè)模塊的工作全部完成后,產(chǎn)生中斷通知CPU。四個(gè)模塊都是采用狀態(tài)機(jī)設(shè)計(jì),每個(gè)模塊之間沒(méi)有關(guān)系,數(shù)據(jù)的存取都是來(lái)自RAM,這樣可以最大限度的實(shí)現(xiàn)模塊化設(shè)計(jì)。

圖5 IMLT硬件解碼圖

3 實(shí)驗(yàn)結(jié)果

實(shí)驗(yàn)過(guò)程中測(cè)試了大約10個(gè)文件,每個(gè)文件大約在4分鐘,以對(duì)ARM7的時(shí)鐘需求為分析標(biāo)準(zhǔn),實(shí)驗(yàn)分析的結(jié)果如表2所示。芯片功耗在同等面積下與芯片工作頻率的成正比,降低芯片工作頻率是優(yōu)化功耗最快的方法,該項(xiàng)設(shè)計(jì)達(dá)到了降低系統(tǒng)功耗的目的。

表2 硬件優(yōu)化比較

4 結(jié)束語(yǔ)

本文采用ARM7為CPU,結(jié)合游程解碼和DCT-IV硬件計(jì)算單元,降低WMA解碼的功耗,為實(shí)現(xiàn)便攜式音頻解碼SOC提供了一種開(kāi)發(fā)速度快、可擴(kuò)展性強(qiáng)的方法。另外,在后續(xù)的研究中,音頻格式MP3/FLAC/APE等解碼將全部共享RAM,因此在多格式音頻解碼時(shí),該方法能夠更好地降低系統(tǒng)成本。

參考文獻(xiàn):

[1] Charles D,Murphy,K.Anandakumar.Real-Time MPEG-1 Audio Coding and Decoding on a DSP Chip[J].Trans.on Consumer Electronics,1997,43(1):347-353.

[2] 周錦峰,倪光南.低功耗MP3解碼器設(shè)計(jì)及其可測(cè)性報(bào)告[D].北京:中國(guó)科學(xué)院計(jì)算技術(shù)研究所,2003.

[3] 張海濱,李揮.基于S3C2410的WMA開(kāi)源解碼程序優(yōu)化[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(1):13-15.

[4] Pramod,Kumar,Meher.LUT optimization for memory-based computation[J].IEEE Transaction on Circuits and System,2010,57(4):285-289.

猜你喜歡
游程解碼器字節(jié)
科學(xué)解碼器(一)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
中國(guó)羽毛球組合鄭思維/黃雅瓊連續(xù)得失分規(guī)律研究
科學(xué)解碼器(二)
科學(xué)解碼器(三)
線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍(lán)蜻蜓解碼器
改進(jìn)型相對(duì)游程長(zhǎng)度編碼方法
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
簡(jiǎn)談MC7字節(jié)碼
RPT方法在多元游程檢驗(yàn)中的應(yīng)用