DAV数字音视工程网_会议系统、指挥调度、演艺科技、智能楼宇等音视频工程信息行业门户

DAV首頁
數字音視工程網

微信公眾號

數字音視工程網

手機DAV

null
null
null
卓華,
招商,
null
null
null
快捷,
null

我的位置:

share

MPEG音頻實時解碼系統的DSP實現

來源:視頻網視頻技術編碼與解碼        編輯:merry    2011-11-08 12:31:20     加入收藏    咨詢

咨詢
所在單位:*
姓名:*
手機:*
職位:
郵箱:*
其他聯系方式:
咨詢內容:
驗證碼:
不能為空 驗證碼錯誤
確定

為了使用單片DSP實現MPEG音頻實時解碼,本文對MPEG音頻解碼算法的運算量和存儲量要求進行了分析,并根據編碼質量和處理器速度的要求結合計算機仿真結果,介紹了充分利用ADSP2181為音頻處理優化的硬件結構,對MPEG解碼算法及DSP設計優化的方法。

  為了使用單片DSP實現MPEG音頻實時解碼,本文對MPEG音頻解碼算法的運算量和存儲量要求進行了分析,并根據編碼質量和處理器速度的要求結合計算機仿真結果,介紹了充分利用ADSP2181為音頻處理優化的硬件結構,對MPEG解碼算法及DSP設計優化的方法。

  MPEG音頻解碼過程是通過I/O口獲得MPEG音頻碼流數據,依照MPEG標準進行解碼,并以PCM碼流格式存放在數據空間的緩沖單元中,供直接存儲器存取(DMA)方式使用。MPEG音頻解碼的主程序流程如下:開始-->輸入比特流查找標題-->側信息解碼-->比例因子解碼-->哈夫曼數據解碼-->反量化采樣-->頻譜重排序-->減小混疊-->通過IMDCT綜合并重疊-->通過多相濾波器組綜合-->輸出PCM樣點-->結束。

  可以看出對輸入碼流進行解碼先要經過幀同步,讀入同步頭的信息,得到該MPEG音頻碼流的采樣頻率、碼流速率等參數,并且記錄所解碼的MPEG碼流的幀數,接著獲取側信息。從側信息中根據同步頭中所得的MPEG碼流的壓縮類型來讀取信息,獲得對應于各自顆粒中各自通道的相關參數。然后,對一幀中的兩個顆粒進行解碼,首先從碼流中獲取每個顆粒所對應的比例因子,并對每個顆粒下的數據進行霍夫曼解碼,這個霍夫曼解碼過程需要34個霍夫曼碼表之一進行解碼,可以從側信息中含有的每個顆粒選擇碼表的信息來進行選擇。

  經過霍夫曼解碼的數據接下來要經過反量化采樣。在這一步中,各個子帶的數據根據所使用窗的類型,利用在側信息中獲得參數反量化。然后是立體聲處理模塊,這個模塊根據MP3碼流所采用的壓縮類型進行相應的處理。如果MPEG音頻碼流是立體聲或雙聲道壓縮的,那么就要對每一個通道的音頻數據進行如下處理:

  重新排序處理:根據窗變換標記和所使用窗的類型所決定長窗、短窗和混和窗三種方式進行數據的重新排列;

  抗鋸齒處理:這一步中使用抗鋸齒蝶型對每個子帶中的數據進行處理;

  IMDCT:對每通道中的32個子帶的數據根據所使用窗的不同進行變換,在這一步中需要兩組144點的表用以存儲窗類型數據和正弦數據;

  多相頻率倒置:對于經過IMDCT的子帶數據按照在偶數號子帶中偶數號數據符號取反的原則進行處理,然后將所得數據輸入到子帶合成濾波器的輸入緩沖中;

  子帶合成:這一步需要4.5KB的緩沖用來存儲同步濾波器參數和同步窗數據。

  這樣,當處理完一個顆粒中所有通道的數據后,就可以將這一顆粒已解碼好的數據輸出到輸出緩沖區中。當將下一顆粒的數據解碼并輸出后,這樣一幀數據解碼完成,這幀數據就可以輸入到D/A部分進行播放,并將輸出緩沖清空,等待下一幀的解碼數據輸入。解碼程序直到碼流中再也找不到一幀的同步頭時,就完成這一音頻流的解碼。

  MPEG音頻解碼系統設計

  MPEG音頻解碼器的解碼算法完全由DSP芯片實現,其控制部分用CPLD實現。電路的整體設計與開發需要綜合考慮前面兩部分程序算法接口內容,可以在進行詳細程序設計的基礎上進行。這樣,可以把MPEG音頻解碼器的開發工作分為兩大模塊:MPEG音頻解碼程序DSP實現,即軟件設計,以及CPLD控制程序開發和電路板設計部分,即硬件設計。各個模塊的開發工作針對該開發模塊的特點進行。MPEG音頻解碼系統開發從模塊上可以劃分為硬件開發和軟件開發兩個部分。軟件主要實現MPEG音頻解碼算法,硬件實現存儲器訪問控制、MPEG音頻文件播放控制以及電源供給等功能。系統總體的功能結構如圖1所示。

  軟件系統設計方案是用DSP軟件實現MPEG音頻解碼算法功能,并完成相應的接口訪問功能,軟件功能見圖2所示。

  通過分析,我們可以看出使用DSP作為MPEG音頻解碼系統的核心芯片,并輔助相應的擴展功能模塊,就能夠方便地實現一個獨立的解碼系統。這樣的系統還能夠方便地通過修改DSP中的程序進行系統升級。

  系統實現的框圖見圖3,該框圖為MPEG音頻解碼系統的基本組成部分,在圖中與計算機的接口芯片采用USB接口芯片,通過USB接口將MPEG等格式的音頻流下載到FLASH存儲器中。除了用于存儲音樂的FLASH之外,還應有存儲MPEG音頻解碼程序及其所用碼表的FLASH存儲器,這種FLASH的速度要求比較快,容量不必很大,一般256K就可以。如果使用ADSP2181,因為其內部RAM只有16k,那么片外擴展RAM是必要的。

  在一般情況下,該系統可以通過其USB接口借助計算機從因特網上下載音頻文件,并將這些文件存儲到FLASH記憶棒中。當聽音樂的時候,啟動該系統的解碼部分,將存于FLASH中的DSP解碼程序加載到DSP中的內部RAM中,DSP開始運行解碼程序,從存儲音樂的FLASH中讀取要解碼音頻流,在這種情況下,ADSP2181具有的6通道DMA控制器為系統的設計帶來了很大的便利。ADSP2181在處理器全速運行的情況下可以自動完成DMA口的接收和發送數據,而不需要處理器的干預。利用這個特點,可以通過DMA口來實現ADDSP2181讀入和讀出數據。將解碼后的音頻流經過D/A后輸出到耳機,就可以聽到MPEG音頻解碼后的音樂了。這個系統的優點在于可以根據音頻技術的發展,加入新的DSP解碼程序就可以滿足升級的需要。

  MPEG音頻解碼算法的DSP設計和優化

  1. 程序空間和數據空間的安排和優化

  MP3解碼程序所需的程序區空間約為24KB,所需存儲變量的空間約為10KB,而其在解碼中所需要的各種碼表和參數所需要的存儲空間約為10KB,因為在MP3解碼中生成和變換的數據量比較大,所以需要比較大的堆棧段,經過多次測試和比較,其所需空間的大小至少為10KB。另外,在程序運行時還要考慮其所需要的動態空間的大小。所以根據以上的要求就可以編寫該程序的CMD文件。

  在ADSP2181的軟件仿真器下運行該程序,在該仿真器下給出可以利用的資源如下:

  a. 可以映射到程序區地址范圍和存儲器類型

  (0x80到0x2000):/雙口RAM/

  (0x2000到0x8000):/單口RAM,SARAMl/

  (0x8000:到0x10000):/外部擴展RAM和ROM/

  (0x18000到0x20000):/單口RAM,SARAM2/

  b. 可以映射到數據區地址范圍和存儲器類型

  (0x0到0x60):/內存寄存器/

  (0x60到0x2000):/雙口RAM/

  (0x2000到0x8000):/單口RAM,SARAMl/

  (0x8000到0x10000):/外部擴展RAM和ROM/

  將DSP設置于微處理器模式,并使OVLY為1,編寫CMD文件。如下所示:

  MEMORY

  {

  PAGE 0: DRAM (RWI) :0=0x0080, 1=0x0500

  PROG (RWXI) :0=0x18000, l=0x8000

  PAGE 1: DATAl (RW) :0=0x580, l=0x500

  RAMl (RW) :0=0xa80, l=0x580

  RAM2 (RW) :0=0xl000, l=0x 1000

  DATA2 (RW) :0=0x2000, 1=0x6000

  DA'I'A (RW) : 0=0x 8000, 1=0x8000

  }

  SECTIONS

  {

  .text :>PROG PAGE 0

  .cinit :>DRAM PAGE 0

  .cio :>DRAM PAGE 0

  .switch :>DRAM PAGE 0

  .bss :>DATA PAGE 1

  .const : >DATA1 PAGE 1

  .sysmem :>DATA PAGE 1

  .stack :>DATA2 PAGE 1

  .input : fill=0x00,>RAMl PACE 1,align(256)

  }

  2.解碼程序各個模塊計算量的優化

  在進行MPEG音頻解碼之前,有必要做一些準備工作:

  a. 在數據空間劃分大約4.5KB的空間,將在霍夫曼解碼中所用的34個碼表寫入,這部分數據地址可以映射到片外擴展的FLASH ROM中去;

  b. 可以將在IMDCT模塊中的正弦表和窗函數表寫入到片外擴展的FLASH ROM中,因為這些數據都是浮點的,用DSP實時生成比較費時;

  c. 片外擴展FLASH ROM中還應該有一個4KB的碼表用以存儲用于子帶合成濾波器組的參數,這些數據都是正弦浮點表示,用查表的方式來得到其值是比較快的一種方法。

  做完這些工作后就可以進行解碼。在解碼的各個模塊中計算量主要集中在反量化采樣、IMDCT和子帶合成濾波模塊,并且以后兩者的計算量為最大。以下將說明在這三個模塊中如何簡化計算量:

  反量化采樣模塊

  在這個模塊中涉及較多的是冪指數運算,并且冪指數一般不是整數。如果直接使用C語言所帶的POWER函數,那么匯編的代碼太長。對其優化的辦法是觀察其計算公式,因為公式中所取的各個變量的取值個數是有限的,所以其計算結果也就是可數的,因此可以預先計算出這些結果,編成一個表格,根據實際的變量的選取來作為查表的索引。

  IMDCT模塊

  在這個模塊中主要涉及到兩個問題,一是找到一種快速方法來實現求余算法,二是如何快速實現大量的乘累加計算。對于前者,可以使用如下語句來代替求余函數:

  n1=2*p+19;

  n2=2*m+l;

  n=_smpy(nl,n2);

  j=n/144;

  n=n-144*j

  這樣做可以較大幅度地提高計算速度。對于后者,因為在DSP中有專用的匯編指令來實現乘法累加功能,理論上對定點的乘法累加計算速度比較快。但是在本程序中參加乘法累加運算的都至少是單精度的浮點數,其運算速度比較慢。因此,有必要將浮點轉定點運算,因為在MPEG音頻流中的數據都是16位定點數據,可以確定其值的取值范圍,可以將用于乘法累加運算的數據乘以一個比較大的系數,通過舍入運算使其值變為整型,利用一個字16位比特可以用32,768到32,767之間的整數來表示這些數據。這樣一來就可以利用在CCS中所提供的INTRISIC函數庫中的快速運算指令。

  但是,在以上所說的過程中需要注意防止乘以較大系數后溢出問題,因為加法器是40位,乘法器是17位乘17位,所以乘法累加的中間結果是不會出現溢出和誤差,因此經過放大后的乘累加結果最后再除以放大系數仍然可以用一個字來表示。這樣的處理使程序結構變復雜,并且帶來一定的舍入噪聲。由于是采用的16位量化,引入的舍入噪聲影響不大。而使用INTRISIC函數庫中的快速運算指令,需要注意DSP的流水線指令操作,以免引起流水線沖突。

  子帶合成模塊 該模塊主要涉及到乘法累加運算的簡化。

免責聲明:本文來源于視頻網視頻技術編碼與解碼,本文僅代表作者個人觀點,本站不作任何保證和承諾,若有任何疑問,請與本文作者聯系或有侵權行為聯系本站刪除。(原創稿件未經許可,不可轉載,轉載請注明來源)
掃一掃關注數字音視工程網公眾號

相關閱讀related

評論comment

 
驗證碼:
您還能輸入500
    主站蜘蛛池模板: 小耳朵电源_安防监控电源|小耳朵官网|电源适配器|摄像机电源|开关电源|小耳朵监控电源 | 优质课网_收录全国及各省市最新优质课视频,说课视频,名师课例课堂实录,高效课堂教学视频,观摩展示公开示范优秀课视频,教学大赛视频! | 三菱plc_触摸屏_变频器_欧姆龙plc_普洛菲斯_安川伺服电机-广州凌控 | 济南货架|济南仓储货架|济南仓库货架|山东蕴达金属制品有限公司 济南海纳特科技有限公司 | 清河县隆鑫密封件有限公司,汽车用密封条,配电箱柜、集装箱密封胶条,建筑门窗、家具用密封条,无毒环保医用密封条,船舶、农机用密封条,异型产品 | 优质课网_收录全国及各省市最新优质课视频,说课视频,名师课例课堂实录,高效课堂教学视频,观摩展示公开示范优秀课视频,教学大赛视频! | 危废处理_危废处置_危废处理公司-江苏绿瑞特环境科技股份有限公司 | 无机纤维抗菌板-A级不燃纤维板-石英纤维板厂家-医疗抗菌板-浙江德耐姆 | 医疗器械,理化实验室设备,微生物,培养基,一站式采购 - 杭州润泽仪器商城 | 找网页游戏鬼服 高返利鬼服游戏平台 鬼服开服表 - 猫游戏鬼服大全 | 聚合氯化铝pac-聚氯化铝-饮水级工业级聚合氯化铝-聚合氯化铝厂家价格 | 铁行火车票_铁行火车票网上订票_铁行火车票客户端【铁行官网】 | 一次性妇科用品_一次性医疗用品_一次性口腔器械盒_天津市双利医疗器械有限责任公司 | 猴脑立体定位仪-无菌动物隔离器-格罗贝尔百科 | 山东万通液压股份有限公司-自卸车专用油缸,能源采掘设备油缸,机械装备用油缸,油气弹簧,工程机械油缸,液压元件 | 智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒 | 无尘投料站-真空上料机-旋振筛|超声波振动筛|摇摆筛|筛分机-新乡市欧霖佳机械有限公司 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 新中式家具,广东新中式家具,广州新中式家具,佛山新中式家具,顺德新中式家具,乐从新中式家具,新中式家具厂家直销--唐明雅居 | 压力试验机,万能试验机-北京大地华宇仪器设备有限公司 官网 | 真空泵维修保养-真空泵-真空泵油-真空泵过滤器-真空泵碳片-东莞市海扬真空设备有限公司 | 智能档案柜,回转柜,密集架,密集柜厂家-北京及尚智能家具 | 泊头市天一泵业有限公司_齿轮泵,高粘度齿轮泵,螺杆泵,三螺杆泵 | 重庆自考网-重庆自学考试 | ?神龙上古堂全国官网_颈腰椎调理服务中心_萨迦藏式秘方渗透法 | 诸城市瑞特机械有限公司_洗筐机,周转箱,托盘清洗机,风淋室 | 太原重卡叔叔运输有限公司-山西太原大件运输、太原物流公司、太原货运物流、太原大件运输、太原货运信息、长治物流公司、长治大件运输、晋城物流公司、晋城大件运输、忻州大件运输、朔州大件运输、阳泉大件运输、大同大件运输、吕梁大件运输、临汾大件运输、运城大件运城 | 医用手摇病床,医用电动病床,康养手摇病床,康养电动病床-河北丁丁医疗器械有限公司 | 潍坊劲昊磁电科技有限公司-电磁除铁器,永磁除铁器,管道式除铁器,金属探测仪,磁滚筒,输送设备,给料设备,破碎设备 | 河北瑞峰医疗-河北护理床-河北医用病床-河北养老院护理床-河北护理床厂家-河北病床厂家-河北瑞峰医疗 | 江西挤塑板_挤塑板厂家_挤塑板价格-江合保温材料 | 手持电能质量测量仪-TD-1168多功能高空接线钳-上海妙定电气有限公司 | 厦门鼎星五金制品有限公司-厦门弹簧,电池簧,扣簧 | 自走式缠绕机_上海德目包装设备厂家_在线式缠绕机_缠绕膜打包机 自装卸(挂桶)车|钩臂垃圾车|压缩垃圾车|密封自卸车|环卫垃圾车|餐厨车泔水车湖北程力专用车厂家 | 乐贝贝童装批发网-外贸童装批发厂家直销|网上品牌童装批发市场|儿童服装批发首选 | 无缝钢管生产厂家-20G-L360N无缝钢管价格-天津海诚无缝钢管集团 无尘投料站-真空上料机-旋振筛|超声波振动筛|摇摆筛|筛分机-新乡市欧霖佳机械有限公司 | 易众拍卖行-事故车拍卖,残值车拍卖,水淹车拍卖,全损车拍卖,修复车拍卖,碰橦车拍卖,瑕疵车拍卖,报废车拍卖,泡水车拍卖,拆车件拍卖,配件拍卖,火烧车拍卖,二手车拍卖专业线上平台 | 苏州洁仪净化科技有限公司| 四方光电(武汉)仪器有限公司_四方仪器首页-烟气分析仪|尾气分析仪|煤气分析仪|沼气分析仪|天然气分析仪|超声波流量计|在线气体分析系统|红外气体传感器 | 实木中药柜,实木中药斗,木制中药柜,木制中药柜的价格,实木中草药柜,安国美佳中药柜厂家 | 全自动包装机械设备_液体灌装机-迈驰日化包装流水线厂家 |