《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > DSP的維特比譯碼程序優化設計
DSP的維特比譯碼程序優化設計
摘要: 對于不同的DSP系統,因為在指令集、總線、寄存器等諸多方面存在差異,針對C6000系列的優化的匯編程序不能直接應用。但譯碼程序優化中遇到的問題也是大致相同的,優化的重點任務都是設法減少ACS的運算量,因此本文提出的程序流程的基本思想以及一些解決問題的技巧都可以繼續加以運用。
Abstract:
Key words :

       卷積碼因為其編碼器簡單、編碼增益高以及具有很強的糾正隨機錯誤的能力,在通信系統中得到了廣泛的應用。基于最大似然準則的維特比算法(VA)是在加性高斯白噪聲(AWGN)信道下性能最佳的卷積碼譯碼算法,也是常用的一種算法。

    一般來說,實現軟判決維特比譯碼可以有三種方案供選擇:專用集成電路(ASIC)芯片、可編程邏輯陣列(FPGA)芯片以及數字信號處理器(DSP)芯片。參考文獻[3]對這三種方案的優劣做了詳細的比較。使用DSP芯片實現譯碼是最為靈活的一種方案,但速度也是最慢的,因為整個譯碼過程都是由軟件來實現的。

    在近年來興起的軟件無線電技術中,要求采用可編程能力強的的器件(DSP、CPU等)代替專用的數字電路。對信道編解碼而言,這樣做的優點在于只需要在程序上加以少量改動,就可以適應不同的編碼速率以及各種通信系統所要求的不同的編解碼方法。然而速度的瓶頸限制了DSP譯碼在實時系統中的應用,因此提高DSP的譯碼速度對于軟件無線電有著重要的意義。本文的目的就是通過對譯碼程序結構優化,來提高DSP芯片執行VA算法的速度。

1 維特比譯碼器

     首先,需要定義兩個將在本文中用到的術語:

     輸入幀--每次輸入譯碼器的比特;

     輸出幀--對應一個輸入幀,譯碼器輸出的比特。

     圖1所示是卷積碼譯碼器(VA算法)的一種典型結構。

    以(2,1,7)卷積碼為例(輸入幀含2比特,輸出幀為1比特),來說明譯碼器的三個主要部分。

1.1支路度量計算單元(BMG)

    計算當前輸入幀對應的128條支路的路徑度量值,并將其存人支路度量存儲單元(BMM)。

1.2加比選單元(ACS)

    將支路度量值與相連的前面的路徑度量值相加得到延伸后的新路徑的度量值;比較連接在同一個狀態上的兩條新路徑的度量值;選擇其中度量值較小的那條路徑(幸存路徑),并將它的度量值存儲到新路徑度量存儲器(SM)中,幸存路徑值(對應編碼狀態的輸入比特)存儲到路徑存儲器(PM)中。

1.3幸存路徑計算單元

    找到64條幸存路徑中度量值最小的一個(最大似然路徑),通過回溯操作(Traceback)在PM中找出該路徑對應的所有輸入比特,依次輸出即為譯碼結果。

    每輸出一幀,都對應著一次支路單元計算和64次ACS操作。ACS操作在總的運算時間里占了很大的比例。程序優化的主要工作就是設法減少每個ACS操作所需要的時鐘周期數。

2 TMS320C6000 DSP芯片的特點

    TMS320C6000系列DSP是基于TMS320C6000平臺的32位浮點DSP處理器。它包含兩個子系列:用于定點計算的TMS320C62x系列和用于浮點計算的TMS320C67x系列TMS320C6000系列CPU結構如圖2所示。時鐘頻率最高可達到250MHz。該系列DSP包含兩個通用的寄存器組A和B,每組有16個32位的寄存器。芯片內含8個運算功能單元:兩個乘法器(.M1和.M2);六個算術邏輯單元(.L1.L2.S1.S2.D1.D2)。所有單元都能獨立并行操作。以TM320C6701為例,它的工作頻率最高為167MHz,最快速度可達8×167=1336MIPS。

    實際上,要實現這個速度存在很多瓶頸,主要有下面幾種限制:

(1)功能模塊的限制 8個功能模塊能夠執行的指令不盡相同。在實際程序中,由于程序流程的限制,指令的位置不能隨便調換,因此不可能在每一個時鐘周期都讓8個模塊同時工作。程序優化的主要手段就是要提高指令的并行程度,即平均每一周期內同時執行的指令數。

(2)交叉路徑(Cross Path)的限制 每一個功能模塊都只能對其所屬的寄存器組中的寄存器進行直接操作。例如.L1只能將結果直接寫入寄存器組A。如果要對另一個寄存器組執行讀或寫操作,需要用到"交叉路徑",而整個CPU中只有兩條交叉路徑。也就是說,一個周期內至多能同時容納兩個相反方向的交叉讀寫。

(3)多周期指令的限制 LD命令的功能是將數據從存儲器讀到寄存器中,由.D模塊執行。但執行LD命令后必須等待4個周期才能得到需要的數據。類似這樣的需要多個周期才能完成的命令(例如跳轉指令B)都成為提高指令并行處理程度的障礙。

(4)對長數據操作的限制 C6000指令集只能以8比特、16比特、32比特或者40比特為單位對數據進行操作。

3 VA在DSP上的優化實現

    ACS操作是整個VA算法中運算量最大的部分。在通常的程序設計中,使用一種對稱的蝶形運算實現ACS操作,每次可以完成兩個ACS操作。因此優化的核心任務就是減少每個蝶形運算所消耗的運算周期數。

    蝶形運算的原理請參見圖3。對前一級的兩個相鄰狀態2i和2i+1,一共有四條支路。計算出四條支路與接收信號的歐氏距離,與兩個前一級狀態2i和2i+1中存儲的以前路徑的度量值相加得到四條路徑A1、A2、B1、B2的度量值。然后在對應的兩個當前狀態i和i+32下兩兩比較,每個當前狀態都留下度量值較小的一條路徑(幸存路徑),同時將當前狀態的度量值以及與幸存路徑對應的輸入比特存人相應的位置,準備下一級計算。

    每個蝶形運算包括:三次加載數據操作(load),因為可以證明一個蝶形中的四條支路的度量具有相同的絕對值,所以每次只需要加載一個由BMU預先計算的結果;四次加法操作;兩次比較操作;比較之后的四次存儲操作。其中,四次加法操作可以在一個周期內同時完成;狀態i和i+32的幸存路徑則是獨立計算和存儲的。

    針對前面提到的提高并行處理程度的幾個障礙,可以用以下的方法分別加以解決:

(1)解決功能模塊的限制 可以用不同的命令相互替代。例如賦值操作MV只能用.L、.S和.D功能模塊完成,如果這些模塊都被其它的并行指令占用,可以用乘1的方法實現賦值,而乘法指令MPY是用.M單元實現的。類似地,也可以用加零或減零的指令代替MV指令。

(2)解決交叉路徑的限制 需要依靠寄存器的分配和倒換,讓同一指令涉及到的寄存器盡量處在同一個寄存器組中,減少需要用到交叉路徑的機會。 (3)解決多周期指令的限制 加載數據的結果需要在4個周期以后才能得到。為了有效地利用等待的這段時間,在程序設計中把加載數據的指令放在前面的蝶形運算中執行,當進入本次蝶形運算時,就能立即使用加載的新數據。同樣,本次蝶形運算也要執行為下一個蝶形運算加載數據的指令。B指令(跳轉指令)的問題可以用類似的方法來處理。

(4)解決對長數據操作的限制 在(2,1,7)卷積碼的VA譯碼器中,幸存路徑存儲在PM里。每一個輸入幀對應64個可能的狀態,會產生64比特的幸存路徑比較結果。但TMS320C6701不能直接對64比特長的數據進行讀寫操作,所以把PM分成兩個相同的32位數組PMO和PMl。前者用來存儲狀態0-31對應的幸存路徑;后者存儲狀態32-64對應的幸存路徑。PM0[i]和PM1[i]合在一起表示第i級網格的所有64條幸存路徑。當編碼約束長度更大時,也可以用同樣的辦法來分開存儲。例如(2,1,9)卷.積碼的PM就可以分成8個32位的數組來存儲256個狀態的信息。回溯操作的時候,先確定路徑經過哪一個狀態,就可以從相應的某一個數組中讀出路徑值,只需要一次LD(加載)操作。

    圖4給出了優化后的蝶形運算流程圖。每次循環需要4個時鐘周期,分別為圖中的E0-E3,對應著一次蝶形運算。除了一些關鍵的加比選運算之外,還需要一些輔助運算來實現循環以及寄存器的相互拷貝,平均下來每個時鐘周期可并行執行6條指令。

4 優化的效果和推廣

    譯碼器輸出一幀所需要的時鐘周期數為

TBMC+n·TButter+Ttb

    其中,TBMC、TButter和Ttb分別表示支路度量計算、蝶形運算以及回溯操作所需要的周期數,n表示每一輸出幀對應的蝶形運算的次數。

     對于(2,1,7)卷積碼譯碼器,輸出一個幀需要32次蝶形運算,因此n=32。在回溯幸存路徑的時候,有兩種方案輸出譯碼結果:一種是輸入一幀碼序列,就輸出一幀譯碼結果;另一種是輸入N幀碼序列,然后輸出N幀譯碼結果。后一種方法輸出每一幀所需要的周期數可以減小為Ttb/N,但同時延時也增大為(N-1) TButter/TCPS,其中TCPS是DSP每秒運行的時鐘周期數,等于DSP的工作頻率。

    如果使用TI公司定義的線性匯編語言用圖1所示的結構來實現(2,1,7)譯碼,經過CCS2軟件編譯并自動進行-o1級優化以后,每譯出一個比特,大約需要1000個時鐘周期(TButter =22,n=32),時鐘為167MHz時譯碼速度不超過160kbps。

    在經過本文所述方法優化以后的程序中,仍然是(2,1,7)卷積碼,TBMC =20,TButter =4,n=32;Ttb=700,選擇N=16,因此譯出一個比特的平均時間是128+20+(700/16)=192個時鐘周期。以TMS320C6701為例,它工作在167MHz,該程序的譯碼速率能達到大約870kbps,而延時僅為18μS。顯然,本文中的優化程序性能遠遠高于自動優化的效果。

    對于不同編碼約束長度的卷積碼,例如WCDMA中用到的(2,1,9)碼,蝶形運算單元的流程與(2,1,7)碼是完全相同的。不同的地方在于每一級的狀態數增加到了256個。因此只需要對程序中的存儲和回溯路徑的指令做一些改動就可以使用。

    對于不同的DSP系統,因為在指令集、總線、寄存器等諸多方面存在差異,針對C6000系列的優化的匯編程序不能直接應用。但譯碼程序優化中遇到的問題也是大致相同的,優化的重點任務都是設法減少ACS的運算量,因此本文提出的程序流程的基本思想以及一些解決問題的技巧都可以繼續加以運用。
 

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲毛片在线看| 久久午夜精品| 亚洲电影有码| 午夜在线视频观看日韩17c| 野花国产精品入口| 一本色道久久88精品综合| 亚洲欧洲美洲综合色网| 亚洲国产美女| 亚洲日韩第九十九页| 亚洲激情另类| 亚洲精品一区二区三区蜜桃久| 激情成人在线视频| 狠狠干狠狠久久| 精品白丝av| 亚洲国产精品久久久久秋霞不卡| 精品成人久久| 亚洲黄一区二区| 亚洲精品一区二区三区樱花| 亚洲人成在线播放| 一本色道**综合亚洲精品蜜桃冫| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美日韩99| 欧美日韩三区| 国产精品无码专区在线观看| 国产精品你懂的在线欣赏| 国产精品视频观看| 国产午夜精品一区理论片飘花 | 亚洲少妇在线| 亚洲欧美日本国产有色| 欧美一区综合| 亚洲精品在线二区| 亚洲在线视频免费观看| 欧美在线播放高清精品| 久久免费99精品久久久久久| 狂野欧美激情性xxxx| 欧美黄色一区二区| 国产精品av一区二区| 国产乱码精品一区二区三| 黄色成人免费网站| 亚洲人屁股眼子交8| 亚洲一区视频在线观看视频| 久久精品99国产精品日本| 日韩视频在线观看一区二区| 亚洲一区激情| 久久另类ts人妖一区二区| 欧美国产高清| 国产精品一区二区在线观看不卡| 国语自产在线不卡| 日韩午夜免费| 欧美一区二区三区视频免费| 亚洲裸体在线观看| 欧美一区二区精品在线| 欧美成人午夜视频| 国产精品美女在线| 在线视频国内自拍亚洲视频| 国产精品99久久久久久www| 久久精品一区二区三区中文字幕 | 韩国欧美一区| 一本大道久久a久久精品综合| 性欧美大战久久久久久久免费观看| 亚洲片在线观看| 亚洲欧美日韩在线播放| 免费一级欧美片在线播放| 国产精品theporn| 伊大人香蕉综合8在线视| 亚洲视频欧洲视频| 亚洲国产日日夜夜| 午夜精品一区二区三区在线视| 裸体素人女欧美日韩| 国产精品国产自产拍高清av| 1024国产精品| 先锋资源久久| 亚洲影院免费观看| 欧美69视频| 一区二区三区久久| 午夜精品视频一区| 亚洲欧美日本伦理| 99精品国产一区二区青青牛奶| 久久不见久久见免费视频1| 欧美激情亚洲综合一区| 国产日韩欧美一区二区三区在线观看 | 国产亚洲欧美aaaa| 亚洲美女黄色| 亚洲人成人77777线观看| 欧美尤物巨大精品爽| 欧美日韩在线不卡| 亚洲国产精品va在线看黑人动漫| 亚洲欧美一区二区激情| 99视频+国产日韩欧美| 久久青青草综合| 国产美女精品视频| 亚洲私人黄色宅男| av不卡免费看| 欧美国产精品v| 依依成人综合视频| 欧美在线黄色| 欧美中文字幕视频| 国产精品久久久久久亚洲毛片| 亚洲日本va午夜在线电影| 亚洲国产精品小视频| 久久久99国产精品免费| 国产精品久久久久久久久久三级 | 亚洲美女福利视频网站| 亚洲黄色有码视频| 久久久久久欧美| 国产亚洲精品自拍| 亚洲一区二区3| 欧美日韩中文字幕综合视频 | 亚洲日本中文字幕| 久久久在线视频| 国产精品入口夜色视频大尺度 | 欧美ab在线视频| 尤妮丝一区二区裸体视频| 欧美一区激情| 久久精品综合一区| 国产性做久久久久久| 亚洲欧美一区二区激情| 香蕉成人久久| 国产精品专区第二| 亚洲欧美在线磁力| 久久精品成人| 国产自产精品| 亚洲成色www8888| 日韩视频国产视频| 欧美国产日韩xxxxx| 亚洲韩国青草视频| 亚洲九九精品| 欧美久久电影| 一本色道久久综合狠狠躁篇的优点| 夜夜嗨网站十八久久| 欧美日韩精品欧美日韩精品| 亚洲精品免费观看| 亚洲小视频在线观看| 国产精品红桃| 欧美一区二区三区久久精品 | 你懂的亚洲视频| 亚洲欧洲一区二区在线播放 | 国产精品久久久久免费a∨| 亚洲视频精选在线| 欧美在线看片a免费观看| 国产一区视频在线看| 亚洲国产欧美精品| 欧美另类一区二区三区| 日韩视频中文| 性欧美精品高清| 国内精品一区二区| 91久久夜色精品国产九色| 欧美精品少妇一区二区三区| 99pao成人国产永久免费视频| 亚洲一区二区视频| 国产日韩精品一区二区三区在线| 欧美一区二区三区在线播放| 久久一区二区三区av| 91久久精品日日躁夜夜躁国产| 中国女人久久久| 国产欧美91| 91久久精品www人人做人人爽| 欧美区高清在线| 亚洲一区二区网站| 久久亚洲精品一区| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲视频播放| 韩曰欧美视频免费观看| 日韩午夜电影| 国产日韩久久| 亚洲精选大片| 国产精品免费区二区三区观看| 欧美一区二区三区免费在线看 | 欧美日韩一二三区| 欧美一区二区国产| 欧美日韩 国产精品| 亚洲欧美日韩一区在线| 久久尤物电影视频在线观看| 99av国产精品欲麻豆| 久久久精品日韩欧美| 亚洲精品视频免费观看| 校园激情久久| 亚洲激情电影在线| 久久精品国产第一区二区三区最新章节 | 久久激情视频久久| 亚洲欧洲一区二区三区| 久久国产精品久久w女人spa| 亚洲福利国产| 久久激情综合| 一区二区激情视频| 噜噜噜91成人网| 亚洲免费在线观看| 欧美激情视频给我| 欧美中文在线视频| 国产精品高潮久久| 日韩图片一区| 精品不卡一区| 久久成人免费电影| 一区二区三欧美| 欧美激情按摩在线| 久久精品国产免费看久久精品| 国产精品久久久久久av下载红粉| 亚洲精品欧美日韩| 国产自产高清不卡| 欧美亚洲综合另类|