999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ACELP 算法的DSP 全匯編實現

2012-07-20 09:40:06權進國林孝康
微處理機 2012年2期
關鍵詞:指令程序

權進國,夏 晶,林孝康

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

1 ACELP 算法的原理

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

之后,進行長時預測分析。長時預測分析的目的是發現最佳基音參數:基音濾波器的延遲和增益。為簡化長時預測分析,該過程通常分成開環基音搜索和閉環基音搜索兩步進行。開環基音搜索是進行基音粗估計。閉環基音搜索是基音周期的細搜索過程。

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

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

2 ACELP 算法在TI C54x DSP 上的全匯編實現

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

2.1 編程及調試

2.1.1 編程

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

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

2.1.2 優化

編寫DSP 程序,要想提高效率就要充分利用DSP 芯片的各種硬件資源,并適當對結構進行一些調整,下面是用到的一些方法:

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

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

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

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

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

(3)展開循環次數較少的循環

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

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

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

(5)移位

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

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

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

(7)針對具體函數進行結構上的調整

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

(8)使用并行指令

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

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

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

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

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

又如跳轉指令banz,使用banz 比使用一般的跳轉指令節省指令周期。移動緩沖區指令delay,可以快速地在兩個相鄰變量間進行賦值,調整變量存儲器的結構以方便的使用delay 指令很重要。尤其是在D4i60_16的最內層循環中使用delay 指令可以大大降低運算量。

2.1.3 調試

ETSI 提供ACELP 算法C 程序的同時也提供了相應的測試序列,只要通過了這些測試序列即可認為程序基本正確。測試文件包括三個: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 作為解碼器和編碼器的輸入,并將經解碼和編碼后得到的數據分別與TE2_128.PCM 和TE3_46.SPE 比較。

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

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

3 實驗結果

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

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

4 結束語

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

[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].西安:西安電子科技大學出版社,2002.

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

[4]劉益成.TMS320C54x DSP 應用程序設計與開發[M].北京:北京航空航天大學出版社,2002.

猜你喜歡
指令程序
聽我指令:大催眠術
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 丁香亚洲综合五月天婷婷| 凹凸精品免费精品视频| 国产主播一区二区三区| 特级做a爰片毛片免费69| 欧美性精品不卡在线观看| 国产中文一区二区苍井空| 亚洲首页在线观看| 色婷婷电影网| 香蕉久久国产精品免| 最新国语自产精品视频在| 国产精品va免费视频| 日韩123欧美字幕| 999国内精品久久免费视频| 国产69精品久久久久孕妇大杂乱| 国产清纯在线一区二区WWW| 国产精品一区二区不卡的视频| 国产欧美日韩免费| 亚洲综合狠狠| 爆操波多野结衣| 久久精品亚洲热综合一区二区| 日本在线免费网站| 欧美福利在线播放| 国产成人精品一区二区不卡| 亚洲人成电影在线播放| 粗大猛烈进出高潮视频无码| 欧美日本一区二区三区免费| 国产成人无码Av在线播放无广告| 国产呦视频免费视频在线观看| 在线观看免费国产| 一本大道东京热无码av| 欧美成人a∨视频免费观看| 国产青青草视频| 九九热视频精品在线| 亚洲精品不卡午夜精品| 国产欧美日韩va| 综合天天色| 天天色天天综合网| 欧美啪啪精品| 亚洲第一天堂无码专区| 国产成人调教在线视频| 亚洲二三区| 幺女国产一级毛片| 日本免费高清一区| 国产亚洲精品无码专| 一级毛片无毒不卡直接观看| 无遮挡国产高潮视频免费观看 | 亚洲国产成人综合精品2020 | 在线另类稀缺国产呦| 精品视频在线一区| 2024av在线无码中文最新| 成人综合网址| 国产在线一区视频| 日a本亚洲中文在线观看| 亚洲欧美天堂网| 一区二区三区毛片无码| 亚洲精品免费网站| 亚洲欧美成人在线视频| 国产极品嫩模在线观看91| 国产原创自拍不卡第一页| 伦伦影院精品一区| 日韩区欧美区| 国产欧美日韩视频一区二区三区| 亚洲天堂日本| 最新痴汉在线无码AV| 欧美另类精品一区二区三区| 国产三级国产精品国产普男人 | 亚洲成A人V欧美综合| 视频一区视频二区日韩专区| 亚洲日本www| 国国产a国产片免费麻豆| 国产精品露脸视频| 亚洲 欧美 日韩综合一区| 波多野吉衣一区二区三区av| 午夜国产小视频| 亚洲成人黄色网址| 欧美日本在线观看| 特级欧美视频aaaaaa| 老司机久久精品视频| 五月天婷婷网亚洲综合在线| 日本不卡视频在线| 91免费精品国偷自产在线在线| 中文字幕无码电影|