亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ACELP 算法的DSP 全匯編實現(xiàn)

        2012-07-20 09:40:06權(quán)進國林孝康
        微處理機 2012年2期
        關(guān)鍵詞:基音碼本子程序

        權(quán)進國,夏 晶,林孝康

        (清華大學(xué)深圳研究生院信息學(xué)部,深圳 518055)

        1 ACELP 算法的原理

        TETRA 標(biāo)準(zhǔn)中的語音壓縮編解碼采用ACELP算法,這是一種改進型的CELP,其碼率被壓縮至4.567kb/s。ACELP 算法以30ms為一幀,每幀又分成4個子幀,每子幀7.5ms。采用8k 采樣速率,每幀有240個抽樣,每子幀有60個抽樣。ACELP 算法的輸入為16bit 線性PCM 編碼后的數(shù)字語音信號。輸入語音在編碼器中經(jīng)過預(yù)處理和加窗后,首先進行LP 分析,用Levinson-Durbin 算法求出LP參數(shù)。由于LP參數(shù)較敏感,微小的變動可能影響整個頻譜,直接量化傳輸LP參數(shù)會嚴(yán)重影響合成語音質(zhì)量。因此,通常將LP參數(shù)轉(zhuǎn)化成LSP參數(shù)進行量化編碼并傳輸。LSP參數(shù)與LP參數(shù)是等效的,但變動單個LSP參數(shù)僅影響局部頻譜。由于編解碼器中的濾波器實際使用的是LP參數(shù),因此,還需要再將LSP參數(shù)變換成LP參數(shù)。

        之后,進行長時預(yù)測分析。長時預(yù)測分析的目的是發(fā)現(xiàn)最佳基音參數(shù):基音濾波器的延遲和增益。為簡化長時預(yù)測分析,該過程通常分成開環(huán)基音搜索和閉環(huán)基音搜索兩步進行。開環(huán)基音搜索是進行基音粗估計。閉環(huán)基音搜索是基音周期的細(xì)搜索過程。

        完成長時預(yù)測分析后,下一步將進行固定碼本搜索。在固定碼本搜索中,采用代數(shù)碼本結(jié)構(gòu)和聚焦搜索技術(shù)。固定碼本搜索的目的是找到最佳代數(shù)碼字和增益參數(shù)。

        解碼功能包括對傳輸參數(shù)的解碼(LP 濾波器參數(shù)解碼、自適應(yīng)碼本矢量解碼、固定碼矢量解碼、自適應(yīng)碼本和固定碼本增益解碼)以及合成重建語音。

        2 ACELP 算法在TI C54x DSP 上的全匯編實現(xiàn)

        TMS320C54x是TI 公司生產(chǎn)的16 位定點DSP,適合遠程通信等實時嵌入式應(yīng)用的需要。經(jīng)統(tǒng)計,若用C 語言在C54x DSP 上實現(xiàn)ACELP 算法,那么未經(jīng)優(yōu)化的C 程序需要約700MIPS的處理能力才能保證在30ms 內(nèi)完成ACELP 算法,C45x DSP的處理能力與之相差甚遠。由此可見,若用C 語言實現(xiàn),那么ACELP 算法難以應(yīng)用到需要實時處理的場合。因此,為了能在C54x 上實時實現(xiàn)ACELP 算法,需要將C 程序轉(zhuǎn)成C54x的匯編程序,并盡量優(yōu)化以降低運算量和存儲量。在進行DSP的軟件調(diào)試和開發(fā)過程中,采用了TI 公司的集成開發(fā)環(huán)境TMS320C5000 CCS2.0。

        2.1 編程及調(diào)試

        2.1.1 編程

        由于程序規(guī)模較大,又是在DSP 匯編級別上實現(xiàn),因此保持原C 程序所具有的模塊化和結(jié)構(gòu)化有利于程序的編寫、檢查和閱讀,尤其有利于匯編程序的調(diào)試。所以在編寫匯編程序時盡量保持與原C程序在結(jié)構(gòu)和流程上一致,只在極少需要優(yōu)化的地方對匯編程序結(jié)構(gòu)進行調(diào)整。

        匯編程序要解決的一個重要問題是函數(shù)調(diào)用時的參數(shù)傳遞問題。為此,定義了coeff_1,coeff_2......coeff_10 等10個16bit的全局變量。如果參數(shù)是32bit,則用累加器A 和B 傳遞。對于靜態(tài)變量,需要在數(shù)據(jù)區(qū)開辟專門的區(qū)域進行存儲,以保證不會被錯誤的更改。函數(shù)內(nèi)需要使用臨時變量時,則從堆棧中開辟一段存儲區(qū),函數(shù)調(diào)用結(jié)束即可釋放這段存儲區(qū)。

        2.1.2 優(yōu)化

        編寫DSP 程序,要想提高效率就要充分利用DSP 芯片的各種硬件資源,并適當(dāng)對結(jié)構(gòu)進行一些調(diào)整,下面是用到的一些方法:

        (1)去掉一些不必要的子程序調(diào)用

        C 程序中有大量的子程序調(diào)用,其中有不少子程序在匯編中用簡單的幾條指令就可以實現(xiàn),這樣的子程序在匯編中可以去掉,因為調(diào)用這些子程序所造成的流水線中斷相對于子程序本身來說代價過高。去掉一些不必要的子程序并對主程序進行少許結(jié)構(gòu)上的調(diào)整可以達到優(yōu)化程序的目的。

        (2)循環(huán)指令rptb 和rpt的使用

        C54x 專門提供了塊循環(huán)指令rptb,充分使用該指令可以有效的減少指令周期。對于多重循環(huán),塊循環(huán)應(yīng)盡量放在最內(nèi)層,尤其是在代數(shù)碼本搜索函數(shù)中。

        把循環(huán)盡可能的壓縮至一條指令,這樣可以用rpt 指令實現(xiàn),以便減少循環(huán)開銷。

        (3)展開循環(huán)次數(shù)較少的循環(huán)

        循環(huán)會造成流水線中斷、增加循環(huán)開銷,為盡可能避免這一點,可以將循環(huán)次數(shù)較少的循環(huán)展開。比如:Chebps 函數(shù)被調(diào)用次數(shù)很多,該函數(shù)中存在一個循環(huán),其循環(huán)次數(shù)僅為4,該循環(huán)應(yīng)該展開。

        (4)充分利用存儲器映射寄存器

        存儲器映射寄存器間傳遞參數(shù)及間接尋址等都是行之有效的優(yōu)化方法。

        (5)移位

        對于某些移位位數(shù)未定的移位,可以考慮使用rpt 和sfta 結(jié)合來完成。另外使用指令中的移位功能,利用帶ASM的移位指令格式,一般可以節(jié)約一個指令周期,在一般情況下也許不必在意,但是對于調(diào)用次數(shù)多達100 來次的Chebps 函數(shù),節(jié)省每一條指令都意義重大。

        (6)充分利用各種延遲指令

        轉(zhuǎn)移指令會造成指令中斷,浪費指令周期,可以利用指令的流水線等待周期預(yù)先執(zhí)行一兩條其他指令,但應(yīng)注意這一兩條指令不應(yīng)影響延時指令的執(zhí)行條件。

        (7)針對具體函數(shù)進行結(jié)構(gòu)上的調(diào)整

        比如:代數(shù)碼本搜索D4i60_16 函數(shù),由于最內(nèi)層和次內(nèi)層會有門限判斷,只有超過門限時下一層循環(huán)才會開始執(zhí)行。因此,可以考慮將那些只在下一層循環(huán)才會用到的一些變量放到門限判斷之后去計算,這樣就避免了一些無謂的運算。但是對于前兩層循環(huán),則應(yīng)盡量把計算放在第一層循環(huán)。

        (8)使用并行指令

        并行指令使用的場合一般比較苛刻,但如果能夠比較好的使用并行指令,仍然不失為一種優(yōu)化的方法。

        (9)巧妙使用DSP 匯編指令

        巧妙的使用DSP 匯編指令可以有效的降低運算量,提高運算速度。

        如使用ADDM 指令,C54x 可以使用ADDM 指令把存儲器變量直接加上一個立即數(shù),這在某些循環(huán)中十分有用。

        盡量使用xc 指令代替條件轉(zhuǎn)移指令,使用xc指令比使用條件轉(zhuǎn)移指令節(jié)省指令周期,但是只有某些場合適合用xc 代替條件轉(zhuǎn)移指令,有時需要注意潛在的流水線沖突。

        又如跳轉(zhuǎn)指令banz,使用banz 比使用一般的跳轉(zhuǎn)指令節(jié)省指令周期。移動緩沖區(qū)指令delay,可以快速地在兩個相鄰變量間進行賦值,調(diào)整變量存儲器的結(jié)構(gòu)以方便的使用delay 指令很重要。尤其是在D4i60_16的最內(nèi)層循環(huán)中使用delay 指令可以大大降低運算量。

        2.1.3 調(diào)試

        ETSI 提供ACELP 算法C 程序的同時也提供了相應(yīng)的測試序列,只要通過了這些測試序列即可認(rèn)為程序基本正確。測試文件包括三個:TE1 _46.CHD、TE2_128.PCM、TE3_46.SPE。解碼器輸入TE1_46.CHD,輸出TE2_128.PCM;編碼器輸入TE2_128.PCM,輸出TE3_46.SPE。程序編寫完畢后需要分別以TE1_46.CHD 和TE2_128.PCM 作為解碼器和編碼器的輸入,并將經(jīng)解碼和編碼后得到的數(shù)據(jù)分別與TE2_128.PCM 和TE3_46.SPE 比較。

        在CCS 里讀文件與在VC 中不一樣,CCS 里每次只能讀出8 位并存放在低8 位,高8 位將置零。因此每一個抽樣的16 位數(shù)據(jù)將讀兩次,并需要編程將兩次讀出的8 位合并成一個完整的16 位數(shù)據(jù)。寫文件則相反,首先需要將一個完整的16 位數(shù)據(jù)分成兩個8 位數(shù)據(jù),存在兩個字的低8 位,再將這兩個字寫入文件。具體來講,編碼器每次需讀出480 字的數(shù)據(jù),再將這480 字的數(shù)據(jù)合并成240 字,即得到240 抽樣的16bit 量化數(shù)據(jù),以此作為編碼器輸入。最后得到的輸出為138bit,ACELP 算法實際用138字來表示該輸出,寫文件前需要先將138 字拆成276 字,然后再寫入文件。

        采用以上步驟,用全匯編實現(xiàn)并優(yōu)化ACELP 算法,經(jīng)過統(tǒng)計,運算量和存儲量為:編碼部分13.3MIPS,解碼部分1.2MIPS,程序空間13.8K 字,數(shù)據(jù)空間13K 字。TMS320VC5410的處理能力達100MIPS,內(nèi) 部RAM 有64K × 16bit,這 樣 采 用TMS320C5410 芯片即可實時實現(xiàn)ACELP 算法。

        3 實驗結(jié)果

        圖1(a)是長為1 分鐘的原始語音波形,圖1(b)是編解碼器對(a)處理后得到的合成語音。其中橫軸表示采樣點數(shù),縱軸表示幅度??梢钥闯?,盡管ACELP 編解碼是參數(shù)編碼,而不是波形編碼,但ACELP 仍然相當(dāng)好的從波形上恢復(fù)出了原始語音。試聽結(jié)果也表明,ACELP 算法可以獲得很高的合成語音質(zhì)量。

        圖1 原始語音與合成語音的波形比較

        4 結(jié)束語

        為實現(xiàn)全數(shù)字集群系統(tǒng)TETRA的語音編碼方案,需設(shè)計DSP 系統(tǒng)優(yōu)化以實現(xiàn)其核心代數(shù)碼激勵線性預(yù)測(ACELP)算法。這是一種CELP 改進算法,在碼率降到4kb/s~8kb/s時,仍然能保證很高的語音質(zhì)量。課題重點研究了這種ACELP 算法在TI DSP TMS320C5410 芯片上實現(xiàn)的軟、硬件設(shè)計,以及用全匯編實現(xiàn)此算法的一些關(guān)鍵技術(shù),并給出了實際實驗結(jié)果。實驗結(jié)果表明,經(jīng)該方法實現(xiàn)后的ACELP 算法可以獲得很高的合成語音質(zhì)量。

        [1]ETSI.Terrestrial Trunked Radio(TETRA);Speech codec for full- rate traffic channel;Part2:TETRA codec[S].ETS 300 395-2.ETSI.February 1998.Second Edition.

        [2]王炳錫.語音編碼[M].西安:西安電子科技大學(xué)出版社,2002.

        [3]汪安民.TMS320C54xx DSP 實用技術(shù)[M].北京:清華大學(xué)出版社,2002.

        [4]劉益成.TMS320C54x DSP 應(yīng)用程序設(shè)計與開發(fā)[M].北京:北京航空航天大學(xué)出版社,2002.

        猜你喜歡
        基音碼本子程序
        Galois 環(huán)上漸近最優(yōu)碼本的構(gòu)造
        免調(diào)度NOMA系統(tǒng)中擴頻碼優(yōu)化設(shè)計
        基于有限域上仿射空間構(gòu)造新碼本
        基于基音跟蹤的語音增強研究
        幾類近似達到Welch界碼本的構(gòu)造
        淺談子程序在數(shù)控車編程中的應(yīng)用
        樂理小知識
        小演奏家(2014年11期)2014-12-17 01:18:52
        子程序在數(shù)控車加工槽中的應(yīng)用探索
        一種改進的基音周期提取算法
        西門子840D系統(tǒng)JOG模式下PLC調(diào)用并執(zhí)行NC程序
        很黄很色的女同视频一区二区| 丰满少妇人妻无码超清| s级爆乳玩具酱国产vip皮裤| 国产熟妇另类久久久久| 2021国产精品国产精华| 久久精品国产亚洲av蜜臀| 亚洲av无码乱观看明星换脸va| 国产精品乱码在线观看| 精品一区二区av天堂| 无码中文字幕av免费放| 国产熟女av一区二区三区四季| 一区二区三区岛国av毛片| 丰满少妇av一区二区三区| 久久久精品亚洲人与狗| 国产人妻熟女呻吟在线观看| 真人做爰试看120秒| 久久亚洲精品成人无码| 亚洲国产精品va在线播放| 国产高潮国产高潮久久久| www插插插无码视频网站| 日本香蕉久久一区二区视频| 亚洲一区二区成人在线视频| 99久久精品人妻一区| 蜜桃av人妻精品一区二区三区 | 国产杨幂AV在线播放| 手机av在线播放网站| 一边摸一边抽搐一进一出视频| 亚洲av精品一区二区三区| 狠狠色狠狠色综合| 日产精品久久久久久久性色| 久久久久中文字幕无码少妇| 五月天无码| 日韩精品久久不卡中文字幕| 日本高清视频在线观看一区二区| 亚洲av高清一区二区三| 日本精品久久久久中文字幕| 丰满多毛的大隂户毛茸茸| 国产在线观看www污污污| 精品人妻VA出轨中文字幕| 无码视频一区二区三区在线播放| 手机av在线观看视频|