- 相關(guān)推薦
基于DSP的信道譯碼算法優(yōu)化
摘要:在DSP上移植算法,代碼優(yōu)化程度成為提高系統性能、縮短開(kāi)發(fā)周期的瓶頸。同時(shí)針對復雜算法在DSP上的實(shí)現,也產(chǎn)生很多優(yōu)化策略、方法。本文以在數字通信系統中應用廣泛的Viterbi算法為例,簡(jiǎn)述Viterbi算法的基本原理和目標處理器(TMS320C6211)的處理能力;介紹C6000軟件編程及優(yōu)化的步驟,并提出一些具體的優(yōu)化策略和技巧。雖然Texas Instrument推出的C6000系列DSP使對信號處理的能力顯著(zhù)提高,但對信息處理能力要求的不斷提升使提對DSP程序的優(yōu)化越來(lái)越成為DSP開(kāi)發(fā)工作中非常重要的環(huán)節。本文討論2Mbps視頻數據流的Viterbi算法的移植與優(yōu)化策略、技巧。
1 Viterbi算法原理簡(jiǎn)介
Viterbi譯碼算法是由Viterbi于1967年提出的一種最大似然譯碼方法,譯碼器根據接收序列R按最大似然準則力圖找出正確的原始碼序列。隨著(zhù)大規模集成電路技術(shù)的發(fā)展,采用Viterbi算法的卷積編碼技術(shù)已成為廣泛應用的糾錯方案。Viterbi譯碼過(guò)程可用狀態(tài)圖表示,圖1表示2個(gè)狀態(tài)的狀態(tài)轉移圖。Sj,t和Sj N/2,t表示t時(shí)刻的兩個(gè)狀態(tài)。在t 1時(shí)刻,這兩個(gè)狀態(tài)值根據路徑為0或者1,轉移到狀態(tài)S2j,t 1和S2j 1,t 1。每一種可能的狀態(tài)轉移都根據接收到的有噪聲的序列R計算路徑度量,然后選擇出各個(gè)狀態(tài)的最小度量路徑(幸存路徑)。Viterbi算法就是通過(guò)在狀態(tài)圖中尋找最小量路徑向前回溯L步,最后得到的即為譯碼輸出。
在卷積碼(n,k,m)表示法中,參數k表示每次輸入信息碼位數,n表示編碼的輸出卷積碼位數,m稱(chēng)為約束長(cháng)度(一些書(shū)中采用k=m 1為約束長(cháng)度,也可稱(chēng)(2,1,2)碼網(wǎng)格圖,r=k/n稱(chēng)為信息率,即編碼效率。本文使用的是(2,1,3)碼,約速長(cháng)度為2,狀態(tài)數為2 2=-4。
2 目標處理器簡(jiǎn)介
TMS320C6000系列DSPs(數字信號處理器)是TI公司推出的一種并行處理的數字信號處理器,是基于TI的VLIW技術(shù)的。本文采用的是TMS320C6211。該處理器的工作頻率經(jīng)過(guò)倍頻可達到150MHz,每個(gè)時(shí)鐘周期最多可并行執行8條指令,從而可以實(shí)現1200MIPS定點(diǎn)運算能力。C6000系列CPU采用哈佛結構,其程序總線(xiàn)與數據總線(xiàn)分開(kāi),取指令與執行指令可以并行運行。其程序總線(xiàn)寬度為256位,每一次取指操作都是取8條指令,稱(chēng)為一個(gè)取指包,執行時(shí)每條指令占用1個(gè)功能單元。取指、指令分配和指令譯碼單元都具有每周期讀取并傳遞8條32位指令的能力。C6000系列CPU有2個(gè)類(lèi)似的可進(jìn)行數據處理的數據通道A和B,每個(gè)通路有4個(gè)功能單元(.L、.S、.M、.D)和1組包括16個(gè)(C64有32個(gè))32位寄存器的通用寄存器組,每個(gè)功能單元完成一定的算術(shù)或邏輯運算。
C6000的特殊結構使多個(gè)指令交迭地在不同功能單元內處理,大大提高了微處理器的處理能力。另外在其CPU硬件結構上,C6000的流水線(xiàn)分為三個(gè)階段:取指、譯碼、執行,每一級又包含幾個(gè)節拍。流水處理使得若干條指令的不同執行階段可以并行執行,從而能夠大幅度提高程序運行速度。
3 算法的編程實(shí)現及優(yōu)化
根據C6000的軟件編程流程,對Viterbi算法的編程及其優(yōu)化可分為三個(gè)階段來(lái)進(jìn)行。這三個(gè)階段分別為:開(kāi)發(fā)C代碼、優(yōu)化C代碼、編寫(xiě)線(xiàn)性匯編代碼。在代碼編寫(xiě)和優(yōu)化過(guò)程中,這三個(gè)階段不是必須都要經(jīng)過(guò)的,只要在某一階段已經(jīng)滿(mǎn)足了算法代碼的功能和性能要求,就不必繼續進(jìn)行下面的階段。
①開(kāi)發(fā)C代碼。這一階段完全是根據任務(wù)要求來(lái)完成算法的代碼編寫(xiě)工作。在C6000的集成開(kāi)發(fā)環(huán)境CCS(Code Composer Studio)下進(jìn)行代碼的編譯和功能驗證,然后可用CCS的調試工具(如Profiler),利用在程序中設置斷點(diǎn)的方法可找出程序中耗時(shí)最多、最影響整體性能的代碼段。為改進(jìn)代碼性能,可進(jìn)入下一階段。如下是針對(2,1,3)碼的Viterbi算法代碼中完成算法功能的核心循環(huán),也是最耗時(shí)、最影響代碼整體性能的低效率段。
for(c=0;c
【基于DSP的信道譯碼算法優(yōu)化】相關(guān)文章:
基于序貫蒙特卡羅算法的MIMO信道跟蹤11-22
LDPC碼譯碼算法研究03-07
基于智能優(yōu)化算法的MRI圖像適配模板濾波的閾值優(yōu)化03-07
基于信道估計的改進(jìn)單載波頻域塊LMS算法研究03-05
V-BLAST典型譯碼算法的研究03-07
FFT算法的研究與DSP實(shí)現03-07