新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 語音信號的A律編解碼的DSP實現

        語音信號的A律編解碼的DSP實現

        作者: 時間:2010-09-07 來源:網絡 收藏

        3 A律算法的軟件設計
        在TI提供的開發工具CCS中進行源程序的編輯和調試,源程序采用'C54x系列的匯編語言編寫。首先完成對芯片必要的初始化、McBSP的初始化及開放McBSP中斷,然后執行A律壓縮解壓算法。

        1d.jpg

        1e.jpg


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

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



        關鍵詞: DSP 語音

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 栾城县| 普兰店市| 云浮市| 即墨市| 抚州市| 溧阳市| 遂宁市| 靖江市| 桓台县| 黄梅县| 个旧市| 东乡族自治县| 康乐县| 建水县| 理塘县| 鲁山县| 诸城市| 无锡市| 竹溪县| 彭山县| 分宜县| 榆树市| 盐津县| 卫辉市| 正镶白旗| 额尔古纳市| 阿拉善右旗| 芦溪县| 南投市| 利津县| 达日县| 普兰店市| 西和县| 新沂市| 景德镇市| 留坝县| 东乡| 朝阳市| 商城县| 什邡市| 梅州市|