高速viterbi譯碼器的優(yōu)化和實現(xiàn)

高速viterbi譯碼器的優(yōu)化和實現(xiàn)

ID:20501947

大小:52.00 KB

頁數(shù):3頁

時間:2018-10-13

高速viterbi譯碼器的優(yōu)化和實現(xiàn)_第1頁
高速viterbi譯碼器的優(yōu)化和實現(xiàn)_第2頁
高速viterbi譯碼器的優(yōu)化和實現(xiàn)_第3頁
資源描述:

《高速viterbi譯碼器的優(yōu)化和實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、高速Viterbi譯碼器的優(yōu)化和實現(xiàn)

2、第1關(guān)鍵詞:卷積碼Viterbi譯碼ACS路徑度量存儲FPGA實現(xiàn)Viterbi算法是一種基于最大后驗概率的卷積譯碼算法,應(yīng)用廣泛。CDMA的IS-95標準和A3GPP標準將卷積碼作為高速實時數(shù)據(jù)傳輸?shù)男诺兰m錯編碼,使Viterbi譯碼器成為移動通信系統(tǒng)的重要組成部分。為保證糾錯性能,卷積碼結(jié)束度一般選擇比較大的,在3GPP中規(guī)定約束度K=9。出于實時性的考慮,移動通信系統(tǒng)中對譯碼時延的要求比較高,需要高速譯碼器的支持??墒荲iterbi譯碼算法的復(fù)雜度、所需存儲器容量與結(jié)束長

3、度成指數(shù)增長關(guān)系,成為限制譯碼器速度的瓶頸。Viterbi譯碼器每解碼一位信息位就需對2k-1個寄存器的狀態(tài)進行路徑度量,并對相應(yīng)的存儲單元進行讀寫。這種情況下,可以采用狀態(tài)路徑存儲單元分塊的方法,以提高其譯碼性能,缺點是ACS單元與存儲器之間的接口電路十分復(fù)雜,不易實現(xiàn)。本文分析和優(yōu)化了Viterbi譯碼器的結(jié)構(gòu),提出了一種FPGA實現(xiàn)方案,簡化了接口電路,提高了速度。用這種結(jié)構(gòu)實現(xiàn)的單片集成譯碼器譯碼速率達350kbps、時鐘頻率30MHz。以下先分析譯堿器總體結(jié)構(gòu),然后對各模塊設(shè)計和實現(xiàn)做詳細說明。1算法簡述

4、及譯碼器結(jié)構(gòu)本文采用3GPP標準規(guī)定的K=9,碼率r=1/2的(753,561)卷積碼,卷積編碼器送出的碼序列C,經(jīng)過信道傳輸后送入譯碼器的序列為R。譯碼器根據(jù)接受序列R,按最大似然準則力圖找出正確的原始碼序列。Viterbi譯碼過程可用狀態(tài)圖表示,圖1表示2個狀態(tài)的狀態(tài)轉(zhuǎn)移圖。Sj,t和Sj+N/2,t表示t時刻的兩個狀態(tài)。在t+1時刻,這兩個狀態(tài)值根據(jù)路徑為0或者1,轉(zhuǎn)移到狀態(tài)S2j+1和S2j+1,t+1。每一種可能的狀態(tài)轉(zhuǎn)移都根據(jù)接收到的有噪聲的序列R計算路徑度量,然后選擇出各個狀態(tài)的最小度量路徑(幸存路徑

5、)。Viterbi算法就是通過在狀態(tài)圖中尋找最小度量路徑向前回溯L步,最后得到的即為譯碼輸出。本設(shè)計采用XilinxVirtex600EFPGA芯片,在ALDEC公司的Active-HDL仿真環(huán)境下,用Verilog語言完成,并用Xilinx的ISE4綜合實現(xiàn)。Viterbi譯碼器系統(tǒng)框圖如圖2所示,主要由BMG(路徑計算模塊)、ACS(加比選模塊)、TB(路徑回溯模塊)、MMU(路徑存儲模塊)等部分組成。采用并行流水線結(jié)構(gòu),各個模塊在控制信號統(tǒng)一監(jiān)控下工作,減少了讀取數(shù)據(jù)所需時間,充分發(fā)揮了FPGA高速計算的特性

6、,提高了整個系統(tǒng)的效率。2子模塊的優(yōu)化和實現(xiàn)2.1ACS模塊由于采用的卷積碼約束度K=9,在譯碼過程中,每一時刻有2k-1=256個狀態(tài),512個度量路徑值,為了獲得高速率,需采用盡可能多的ACS單元。但由于實際應(yīng)用中需求電路面積小、功耗低,決定了ACS單元的數(shù)目不能太多。經(jīng)過實驗證明,采用4個ACS單元并行處理,完成可以達到應(yīng)用要求。圖3度量路徑狀態(tài)分組圖ACS單元用來計算選擇狀態(tài)的路徑度量。它需要不斷地讀出路徑度量作為操作數(shù),然后將更新的度量寫回各個狀態(tài)。由于采用4個ACS單元并行處理,為不造成流水線堵塞,如何

7、對RAM中的度量數(shù)據(jù)進行讀寫是關(guān)鍵。如前述,本文采用狀態(tài)路徑存儲單元分塊的方法。將所有狀態(tài)分成4組,分別對應(yīng)于4個ACS。每次運算時,4個ACS同時從各組狀態(tài)值中讀取數(shù)據(jù)進行操作。由圖1可知,狀態(tài)Sj和Sj+2/N在狀態(tài)轉(zhuǎn)移中同時得到兩個新狀態(tài)S2J和S2j+1。因此為了ACS能夠同時取出這兩個狀態(tài)值,Sj和Sj+2/N必須存儲在不同的RAM組中。同樣,兩個計算出來的新狀態(tài)S2j和S2j+1也應(yīng)如此。遵循這種準則,則時也簡化接口電路,采用如下的分組算法:假設(shè)待分配狀態(tài)=Sj=Sk-2Sk-1…S1S0,所對應(yīng)的RA

8、M組為Rm,由于RAM共分成4組,則m=(Sk-2S1)S0(兩位二進制數(shù)表示)。狀態(tài)分組圖如圖3所示,從中可以看出,從狀態(tài)S128開始的后續(xù)狀態(tài)都有規(guī)律地交錯位置存儲。由此,ACS單元和狀態(tài)路徑存儲單元的接口電路只需采用兩個2×2交換器,如圖4所示。每一個交換器上連著兩個ACS單元和兩個RAM組。這兩個交換器由輸入狀態(tài)Sj的最高位Sk-2控制。當Sk-2=1時,交換器交叉互聯(lián),如果Sk-2為0時,各ACS和RAM直接相連。這種接口設(shè)計十分容易實現(xiàn)。在Viterbi譯碼算法中,譯碼狀態(tài)的轉(zhuǎn)移導(dǎo)致度量的讀出和寫入地址

9、的不同,這樣用FPGA實現(xiàn)時就需要兩塊RAM采用乒乓模式實現(xiàn)。本文更新路徑存儲采用原位運算方法,也就是找出狀態(tài)轉(zhuǎn)移的規(guī)律性,建立轉(zhuǎn)移后的新狀態(tài)和轉(zhuǎn)移前的老狀態(tài)際址映射關(guān)系,使度量的更新在原位上進行,使存儲空間減小一半。2.2幸存路徑管理模塊幸存路徑的存回溯是Viterbi算法關(guān)鍵的一步,最終的譯碼輸出從對幸存的回溯中得到。由于采用基2的狀態(tài)轉(zhuǎn)移算法,當前時刻

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。