《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應用 > 短幀Turbo譯碼器的FPGA實現(xiàn)
短幀Turbo譯碼器的FPGA實現(xiàn)
摘要: Turbo碼雖然具有優(yōu)異的譯碼性能,,但是由于其譯碼復雜度高,,譯碼延時大等問題,嚴重制約了Turbo碼在高速通信系統(tǒng)中的應用,。因此,,如何設(shè)計一個簡單有效的譯碼器是目前Turbo碼實用化研究的重點,。本文主要介紹了短幀Turbo譯碼器的FPGA實現(xiàn),并對相關(guān)參數(shù)和譯碼結(jié)構(gòu)進行了描述,。1幾種譯碼算法比較Turbo碼常見的幾種譯碼算法中,,MAP算法[1][3]具有最優(yōu)的譯碼性能。但因其運算過程中有較多的乘法和指數(shù)運算,硬件實現(xiàn)很困難,。簡化的MAP譯碼算法是LOG-MAP算法和MAX-LOG-MAP算法,,它們將大量的乘法和指數(shù)運算轉(zhuǎn)化成了加減、比較運算,,大幅度降低了譯碼的復雜度,,便于硬件實現(xiàn)。簡化算法中,,LOG-MAP算法性能最接近MAP算法,,MAX-LOG-MAP算法次之,但由于LOG-MAP算法后面的修正項需要一個查找表,,增加了存儲器的使用,。所以,大多數(shù)硬件實現(xiàn)時,,在滿足系統(tǒng)性能要求的情況下,,MAX-LOG-MAP算法是硬件實現(xiàn)的首選。通過仿真發(fā)現(xiàn),,采用3GPP的編碼和交織方案[2],,在短幀情況下,MAX-LOG-MAP算法同樣具有較好的譯碼性能,。如圖1所示,,幀長為128,迭代6次,,BER=10-5的數(shù)量級時,,MAX
關(guān)鍵詞: FPGA Turbo譯碼器 ISE Virtex4
Abstract:
Key words :

  Turbo碼雖然具有優(yōu)異的譯碼性能,但是由于其譯碼復雜度高,,譯碼延時大等問題,,嚴重制約了Turbo碼在高速通信系統(tǒng)中的應用。因此,,如何設(shè)計一個簡單有效的譯碼器是目前Turbo碼實用化研究的重點,。本文主要介紹了短幀Turbo譯碼器的FPGA實現(xiàn),并對相關(guān)參數(shù)和譯碼結(jié)構(gòu)進行了描述,。

  1 幾種譯碼算法比較

  Turbo碼常見的幾種譯碼算法中,,MAP算法[1][3]具有最優(yōu)的譯碼性能。但因其運算過程中有較多的乘法和指數(shù)運算,,硬件實現(xiàn)很困難,。簡化的MAP譯碼算法是LOG-MAP算法和MAX-LOG-MAP算法,它們將大量的乘法和指數(shù)運算轉(zhuǎn)化成了加減,、比較運算,,大幅度降低了譯碼的復雜度,便于硬件實現(xiàn)。簡化算法中,,LOG-MAP算法性能最接近MAP算法,,MAX-LOG-MAP算法次之,但由于LOG-MAP算法后面的修正項需要一個查找表,,增加了存儲器的使用,。所以,大多數(shù)硬件實現(xiàn)時,,在滿足系統(tǒng)性能要求的情況下,,MAX-LOG-MAP算法是硬件實現(xiàn)的首選,。通過仿真發(fā)現(xiàn),,采用3GPP的編碼和交織方案[2],在短幀情況下,,MAX-LOG-MAP算法同樣具有較好的譯碼性能,。

  如圖1所示,幀長為128,,迭代6次,,BER=10-5的數(shù)量級時, MAX-LOG-MAP算法的譯碼性能比MAP算法差大約0.6dB,,比LOG-MAP算法差0.2dB左右,。所以,本文采用3GPP的交織和(13,,15)編碼方案,,MAX-LOG-MAP譯碼算法進行短幀Turbo碼譯碼器的FPGA" title="FPGA">FPGA實現(xiàn)與設(shè)計。

  

 

  2 MAX-LOG-MAP算法

  為對MAP算法進行簡化,,通常將運算轉(zhuǎn)換到對數(shù)域上進行,,避免了MAP算法中的指數(shù)運算,同時,,乘法運算變成了加法運算,,而加法運算用雅可比公式簡化成MAX*運算[4]。

  將運算轉(zhuǎn)化到正對數(shù)域進行運算,,則MAX*可等效為:

  

公式

 

  按照簡化公式(3)對MAP譯碼算法[1][3]的分支轉(zhuǎn)移度量,、前向遞推項、后向遞推項及譯碼軟輸出進行簡化,。

  分支轉(zhuǎn)移度量:

  

公式

 

  為防止迭代過程中數(shù)據(jù)溢出,,對前后向遞推項(5)、(6)式進行歸一化處理:

  

公式

 

  

公式

 

  3 FPGA實現(xiàn)關(guān)鍵技術(shù)

  3.1 數(shù)據(jù)量化

  在通信系統(tǒng)中,,譯碼器的接收數(shù)據(jù)并不是連續(xù)不變的模擬量,,而是經(jīng)過量化后的數(shù)字量。接收數(shù)據(jù)的量化會引入量化噪聲,從而影響譯碼的性能,。所以,,接收數(shù)據(jù)量化的精度直接影響到譯碼的性能。由參考文獻[5~6]可知,,采用3位量化精度就能得到與沒有經(jīng)過量化的浮點數(shù)據(jù)相近的譯碼性能,。為了簡化FPGA的設(shè)計,本文采用了統(tǒng)一的定點量化標準F(9,3),,即最高位為符號位,,整數(shù)部分8位,小數(shù)部分3位,。由此,,前后遞推項(9)、(10)式的初始值可表示為:

  

公式

 

  3.2 MAX*運算單元

  由前面的MAX-LOG-MAP算法介紹可知,,MAX*運算單元是整個譯碼的主要運算單元,,它與viterbi譯碼的ACS(加比選)運算單元一樣,先分別進行加法操作,,然后對所得結(jié)果進行比較,,最后將較小的一個結(jié)果作為運算結(jié)果輸出。實現(xiàn)結(jié)構(gòu)如圖2所示,。

  

MAX

 

  3.3 前后向遞推運算單元

  由公式(5)~(8)可知,,前后向遞推單元除了需要進行MAX*與運算外,還需要進行歸一化處理,。為得到較快的運算速度,,首先,計算上一時刻所有狀態(tài)的最小值,,然后對當前時刻的每一狀態(tài)進行MAX*運算,,并將運算結(jié)果減去上一時刻的最小狀態(tài)值,即得到當前時刻遞推各狀態(tài)的歸一化值,。實現(xiàn)結(jié)構(gòu)如圖3所示,。

  

前后向遞推運算單元

 

  3.4 8狀態(tài)值最小值運算單元

  由MAX-LOG-MAP算法可知,在進行前后向遞推歸一化處理和計算譯碼軟輸出時,,均需要計算每一時刻8個狀態(tài)的最小值,。為了減小計算延時,采用了8狀態(tài)值并行比較的結(jié)構(gòu),,與串行的8狀態(tài)值比較結(jié)構(gòu)相比較,,要少4級延時。實現(xiàn)結(jié)構(gòu)如圖4所示,。

  

8狀態(tài)值最小值運算單元

 

  4 仿真結(jié)果

  按照以上所分析的簡化譯碼算法,、FPGA實現(xiàn)的相關(guān)參數(shù)和結(jié)構(gòu),,整個譯碼采用Verilog HDL語言編程,以Xilinx ISE" title="ISE">ISE 7.1i,、Modelsim SE 6.0為開發(fā)環(huán)境,,選定Virtex4" title="Virtex4">Virtex4芯片xc4vlx40-12ff668進行設(shè)計與實現(xiàn)。整個譯碼器占用邏輯資源如表1所示,。

  

整個譯碼器占用邏輯資源

 

  MAX-LOG-MAP譯碼算法,,幀長為128,迭代4次的情況下,,MATLAB浮點算法和FPGA定點實現(xiàn)的譯碼性能比較如圖5所示,。

  

MATLAB浮點算法和FPGA定點實現(xiàn)的譯碼性能比較

 

  由MAX-LOG-MAP算法的MATLAB浮點與FPGA定點的性能比較仿真結(jié)果可知,采用F(9,3)的定點量化標準,,F(xiàn)PGA定點實現(xiàn)譯碼性能和理論的浮點仿真性能基本相近,,并具有較好的譯碼性能。

  綜上所述,,在短幀情況下,,MAX-LOG-MAP算法具有較好的譯碼性能,,相對于MAP,,LOG-MAP算法具有最低的硬件實現(xiàn)復雜度,并且Turbo碼譯碼延時也較小,。所以,,在特定的短幀通信系統(tǒng)中,如果采用Turbo碼作為信道編碼方案,,MAX-LOG-MAP譯碼算法是硬件實現(xiàn)的最佳選擇,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。