• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2014-09-10 01:01:50朱彩霞
      淮陰工學院學報 2014年1期
      關鍵詞:游程解碼器字節(jié)

      朱彩霞

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

      0 引言

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

      1 WMA 簡介

      WMA是微軟公司提出的一種音頻標準,是Microsoft Windows Media技術中的一部分,它包含了對音頻格式的一個完整定義,包括音頻編碼和加密。相比于MP3,它具有更好的高頻音質和更低的壓縮率,相比于AAC,它具有更高的接受度[2],又因為WMA具有DRM版權保護,所以具有更好的市場價值。

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

      圖1 WMA的解碼過程

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

      2 解碼器設計

      WMA解碼的設計過程如圖2所示。

      圖2 WMA解碼的設計圖

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

      2.1 游程解碼(Run-Level Decoder)

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

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

      在解碼WMA文件時,首先讀出SD卡中的WMA文件,因為WMA文件是ASF格式封裝的,而MP3/FLAC/APE等文件都不是ASF文件,所以通過文件前四個字節(jié)可以檢測文件是否確實是WMA格式的文件,防止錯誤文件解碼。正確文件解碼開始首先通過AHB填寫256個字節(jié)到RLD的內部RAM,稱為初始化過程。

      讀比特的過程如下:

      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 游程解碼語法描述

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

      圖3 Run-Level Decoder解碼

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

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

      LMIT解碼功能示意圖見圖4。

      圖4 IMLT解碼功能示意圖

      2.2 IMLT解碼

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

      DCT-IV的數(shù)學表達如下:

      for0≤N<2n

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

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

      圖5 IMLT硬件解碼圖

      3 實驗結果

      實驗過程中測試了大約10個文件,每個文件大約在4分鐘,以對ARM7的時鐘需求為分析標準,實驗分析的結果如表2所示。芯片功耗在同等面積下與芯片工作頻率的成正比,降低芯片工作頻率是優(yōu)化功耗最快的方法,該項設計達到了降低系統(tǒng)功耗的目的。

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

      4 結束語

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

      參考文獻:

      [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解碼器設計及其可測性報告[D].北京:中國科學院計算技術研究所,2003.

      [3] 張海濱,李揮.基于S3C2410的WMA開源解碼程序優(yōu)化[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é)
      基于劃分組參考數(shù)的差值編碼壓縮方法
      科學解碼器(一)
      No.8 字節(jié)跳動將推出獨立出口電商APP
      中國羽毛球組合鄭思維/黃雅瓊連續(xù)得失分規(guī)律研究
      科學解碼器(二)
      科學解碼器(三)
      線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍蜻蜓解碼器
      改進型相對游程長度編碼方法
      No.10 “字節(jié)跳動手機”要來了?
      簡談MC7字節(jié)碼
      新宾| 梓潼县| 鲁甸县| 邹城市| 邢台市| 墨竹工卡县| 博爱县| 囊谦县| 罗山县| 绩溪县| 连南| 黔南| 五大连池市| 新丰县| 九寨沟县| 汉沽区| 道真| 昭平县| 施秉县| 和田市| 基隆市| 维西| 名山县| 平武县| 扬州市| 浑源县| 寻甸| 高陵县| 化州市| 瑞昌市| 新巴尔虎右旗| 电白县| 南开区| 赤壁市| 鄂托克前旗| 东乌珠穆沁旗| 永清县| 扶风县| 泗水县| 环江| 盐源县|