新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 語(yǔ)音信號(hào)的A律編解碼的DSP實(shí)現(xiàn)

語(yǔ)音信號(hào)的A律編解碼的DSP實(shí)現(xiàn)

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

3 A律算法的軟件設(shè)計(jì)
在TI提供的開(kāi)發(fā)工具CCS中進(jìn)行源程序的編輯和調(diào)試,源程序采用'C54x系列的匯編語(yǔ)言編寫(xiě)。首先完成對(duì)芯片必要的初始化、McBSP的初始化及開(kāi)放McBSP中斷,然后執(zhí)行A律壓縮解壓算法。

1d.jpg

1e.jpg


一般地,用程序進(jìn)行A律編碼解碼有兩種方法:一種是查表法,這種方法程序代碼小,執(zhí)行速度快,但需要占用較多的內(nèi)存以存儲(chǔ)查找表(表的大小為212=4096個(gè)字),另一種方法是直接計(jì)算法,這種程序代碼較多,執(zhí)行速度慢一些,但可以節(jié)省內(nèi)存空間。對(duì)照表l,可以畫(huà)出A律壓縮編碼直接計(jì)算方法的流程如圖2所示。待壓縮的數(shù)據(jù)來(lái)自voidin變量空間(見(jiàn)附錄1),該變量空間保存著McBSP中的數(shù)據(jù),保存符號(hào)位就是將待壓縮數(shù)據(jù)的位11放入壓縮數(shù)據(jù)的位7,并通過(guò)測(cè)試位11決定是否對(duì)該數(shù)求補(bǔ)即對(duì)負(fù)數(shù)求絕對(duì)值(A/D轉(zhuǎn)換后的數(shù)據(jù)用二進(jìn)制補(bǔ)碼表示),求絕對(duì)值的目的是為了減小直接對(duì)負(fù)值壓縮時(shí)帶來(lái)的量化誤差。另外,還將兩個(gè)8位的壓縮數(shù)據(jù)組成一個(gè)16位的字保存至compress變量空間。
解壓一般是壓縮的逆過(guò)程,但有時(shí)為了使得量化誤差不超過(guò)△i/2,可在解壓后的數(shù)據(jù)位增加一個(gè)最低有效位,該最低有效位為1時(shí)經(jīng)過(guò)D/A轉(zhuǎn)換后對(duì)應(yīng)△min/2電壓,即將8位的壓縮數(shù)據(jù)解壓成13位的數(shù)據(jù)。本文中解壓仍然按照解壓成12位的數(shù)據(jù),其解壓流程如圖3所示。圖3中壓縮數(shù)據(jù)暫存單元com的位6~4的段碼值若大于l時(shí),需將這4位段內(nèi)碼的前后相鄰位都置1,然后將這6位送至解壓數(shù)據(jù)暫存單元dcom的位(段碼值+3)~位(段碼值-2)即可,代碼(見(jiàn)附錄2)中采用的方法是對(duì)這6位邏輯左移(段碼值-2)位。

4 實(shí)驗(yàn)分析及結(jié)論
由于信號(hào)可以分解成許多正弦頻率的和,實(shí)驗(yàn)中采用200Hz的正弦信號(hào)代替實(shí)際的信號(hào)。將匯編語(yǔ)言編寫(xiě)的源程序和命令連接文件都添加到新建立的工程文件夾中,并編譯、鏈接及裝載程序運(yùn)行,然后執(zhí)行集成開(kāi)發(fā)環(huán)境ccs的菜單命令View|Graph|Time Frenquency,打開(kāi)Graph Property Dialog對(duì)話框,在此分兩次輸入標(biāo)題名sine和decompress sine、起始地址0x0082和0x065E(命令連接文件.cmd中將.bss段定位到DARAM的org=0080h上),并選擇數(shù)據(jù)的長(zhǎng)度為200及數(shù)據(jù)類型為16-bit signed integer,然后點(diǎn)擊ok按鈕即可生成圖4和圖5的曲線。



關(guān)鍵詞: DSP 語(yǔ)音

評(píng)論


相關(guān)推薦

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

關(guān)閉