基于Turbo碼編譯碼算法的FPGA實現(xiàn)突發(fā)數(shù)據(jù)通信_第1頁
基于Turbo碼編譯碼算法的FPGA實現(xiàn)突發(fā)數(shù)據(jù)通信_第2頁
基于Turbo碼編譯碼算法的FPGA實現(xiàn)突發(fā)數(shù)據(jù)通信_第3頁
基于Turbo碼編譯碼算法的FPGA實現(xiàn)突發(fā)數(shù)據(jù)通信_第4頁
基于Turbo碼編譯碼算法的FPGA實現(xiàn)突發(fā)數(shù)據(jù)通信_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于Turbo碼編譯碼算法的FPGA實現(xiàn)突發(fā)數(shù)據(jù)通信Turbo碼是一種低信噪比條件下也能達到優(yōu)異糾錯性能的信道編碼。早期為了強調Turbo碼接近香農(nóng)限的優(yōu)異性能,研究的碼字長度非常大[1~2],存在譯碼復雜度大、譯碼時延長等問題。突發(fā)數(shù)據(jù)通信以傳輸中小長度的數(shù)據(jù)報文業(yè)務為主,所以突發(fā)通信中的Turbo碼的碼長也是中等長度以下的。本文面向突發(fā)數(shù)據(jù)通信中的信道編碼應用,研究了短幀長Turbo碼編譯碼算法的FPGA實現(xiàn)。實現(xiàn)中采用了優(yōu)化的編譯碼算法,以降低譯碼復雜度和譯碼延時。最后仿真和測試了Turbo譯碼器的糾錯性能和吞吐量。1Turbo碼編碼器的FPGA實現(xiàn)Turbo碼的編碼器是由兩個RSC(遞歸系統(tǒng)卷積碼)分量編碼器和一個交織器組成。RSC碼不僅具有系統(tǒng)碼的優(yōu)點,而且對于一個RSC碼,總存在一個具有完全相同柵格結構的NSC碼(非系統(tǒng)卷積碼)。本系統(tǒng)中使用兩個相同的RSC編碼器,生成的多項式都是G=[1,15/13],系統(tǒng)編碼率為1/3。交織器的功能是利用隨機化的思想將兩個相互獨立的短碼組合成一個長的隨機碼。本課題中Turbo碼交織器的實現(xiàn)是構造一個交織地址發(fā)生器,并根據(jù)輸入的幀長信息,實時地產(chǎn)生交織地址序列。圖1為編碼器的FPGA實現(xiàn)結構圖。編碼前,地址發(fā)生器獲取幀長信息,完成交織地址生成的準備過程。編碼時,信息序列被依次寫入雙口RAM,待寫完一幀數(shù)據(jù)后,地址產(chǎn)生器開始生成順序地址和交織地址。雙口RAM按兩個地址讀取信息序列X和交織后的信息序列X’進行RSC編碼;最后編碼器輸出系統(tǒng)位X和校驗位P0和P1。圖1為編碼器的FPGA實現(xiàn)結構圖2Turbo碼譯碼器的FPGA實現(xiàn)Turbo碼譯碼器比較復雜,下面從譯碼器的接口、內部結構、內部的時序控制、分量譯碼MAX-Log-MAP算法和SISO模塊的實現(xiàn)五個方面來詳細闡述譯碼器的FPGA實現(xiàn)。2.1譯碼器的接口Turbo碼譯碼器頂層模塊的接口管腳如表1所示。Turbo碼譯碼器頂層模塊的接口管腳如表1所示2.2譯碼器的內部結構Turbo碼譯碼器由兩個軟輸入/軟輸出分量譯碼器、交織器以及相應的解交織器構成。譯碼是信息在兩個分量譯碼器之間迭代運算的過程。在迭代運算中,上一次運算得到uk的外信息Λe(uk)作為下一次運算uk的先驗信息Λa(uk)。Turbo碼分量譯碼器譯碼算法主要有MAP類(最大后驗概率譯碼算法)和SOVA類(軟判決Viterbi譯碼算法)[3]。本文采用運算復雜度和性能都適中的MAX-Log-MAP算法。Turbo碼譯碼器FPGA實現(xiàn)的內部結構如圖2所示。Turbo碼譯碼器FPGA實現(xiàn)的內部結構如圖2所示地址發(fā)生器與編碼器相同,用于數(shù)據(jù)的交織和解交織。輸入數(shù)據(jù)存儲器用于存儲輸入的接收數(shù)據(jù),包括系統(tǒng)信息序列存儲器以及各個校驗序列存儲器。外信息存儲器用于存儲迭代譯碼產(chǎn)生的外信息。由于外信息要作為下一次譯碼的先驗信息,所以這里的外信息存儲器有兩塊,交替存儲兩個分量譯碼器的外信息。SISO模塊即為軟輸入、軟輸出分量譯碼器。整個Turbo碼譯碼器有兩個SISO分量譯碼模塊。但為了節(jié)省資源,本方案只設計了一個SISO模塊,將時分復用作為兩個分量譯碼器。圖2中,表示接收碼字中的系統(tǒng)位,表示接收碼字中的校驗位。2.3譯碼器內部的時序控制Turbo碼譯碼器內部的時序控制由狀態(tài)機完成。整個譯碼過程分為初始化、接收數(shù)據(jù)存儲、迭代譯碼及硬判決輸出四個過程,且對應于狀態(tài)機的INIT、STORAGE、SISO和OUT四個狀態(tài)。譯碼器的內部狀態(tài)轉移如圖3所示。初始狀態(tài)INIT完成幀長設定等初始化工作,并完成交織地址生成的準備過程,一旦指示第一個數(shù)據(jù)輸入的fd信號有效(高有效)時,則進入STORAGE狀態(tài);狀態(tài)STORAGE完成將接收數(shù)據(jù)序列存入單口RAM中,待一幀數(shù)據(jù)寫完后,指示存儲完畢的rdyStr信號置高,進入SISO狀態(tài);在狀態(tài)SISO下,SISO分量譯碼器根據(jù)設定的迭代次數(shù)對接收數(shù)據(jù)進行迭代譯碼。當?shù)瓿蓵r,rdySiso置高,進入OUT狀態(tài);對數(shù)據(jù)硬判決輸出并計數(shù),此時輸出有效信號ready置高,待全部判決完畢后返回INIT狀態(tài)。譯碼器的內部狀態(tài)轉移如圖3所示2.4分量譯碼算法——MAX-Log-MAP算法MAP算法需要大量的乘法運算和指數(shù)運算以及大量的存儲,運算十分復雜。Log-MAP算法則將MAP算法中的乘法運算轉換為對數(shù)域中的加法運算(不需要對數(shù)運算),適合工程實現(xiàn)。因此在工程實現(xiàn)時,可以將原來在對數(shù)域內的加法運算轉換為取兩個數(shù)的較大者加上一個修正項的運算。如果將修正項的運算也省略,則Log-MAP算法可簡化為MAX-Log-MAP算法。MAX-Log-MAP算法的主要計算步驟如下[4~5]:(1)計算Turbo碼編碼網(wǎng)格圖上分支的路徑度量值:計算Turbo碼編碼網(wǎng)格圖上分支的路徑度量值由于Lc值對譯碼性能影響不大[6],為了方便定點實現(xiàn),本文中簡化為Lc=1。2.5SISO模塊的實現(xiàn)分量譯碼器的FPGA實現(xiàn)的SISO模塊采用模塊化設計,主要包括前向度量計算模塊、反向度量計算及對數(shù)似然比計算模塊、前向度量存儲器以及歸一化度量存儲器。由于前向度量計算和反向度量計算均需要計算分支度量,因此可以預先計算并存儲分支度量。但在本方案中,為了節(jié)省存儲空間,并沒有對分支度量進行存儲,而是在前向與反向度量計算時均計算一次,而且在反向度量計算收斂后同時計算對數(shù)似然比。用FPGA對算法進行定點實現(xiàn)時,需要考慮到溢出的問題。為防止計算過程中出現(xiàn)溢出,對前向度量和反向度量計算過程進行歸一化處理。若某時刻的歸一化度量值選擇當前時刻前向度量中的最大值,則歸一化便是前向度量和反向度量減去此最大值。歸一化后的前向度量和反向度量計算公式如下:歸一化后的前向度量和反向度量計算公式SISO模塊內部處理流程分為初始化、前向度量計算和存儲、反向度量計算和對數(shù)似然值計算三個部分,且對應于狀態(tài)機的三個狀態(tài)INIT、FSM和RSM。SISO模塊的內部時序如圖4所示。INIT狀態(tài)完成內部寄存器的初始化設置,當外部輸入信號Siso_start有效時,啟動SISO模塊,進入FSM狀態(tài);FSM狀態(tài)中,每8個時鐘周期內,用式(1)和式(2)計算出一個時刻對應的8個前向度量值,并選擇出其中的最大前向度量值作為歸一化度量值,用式(8)計算歸一化后的前向度量值。啟動一次前向度量寫信號,存儲當前計算得到的8個前向度量值和當前歸一化度量值。當所有前向度量計算完畢時,啟動Fsmrdy信號,進入RSM狀態(tài);每10個時鐘周期內,用式(1)和式(2)計算出一個時刻對應的8個反向度量值,用式(9)計算歸一化后的反向度量值,用式(4)和式(5)計算出相應時刻的對數(shù)似然比和外信息對數(shù)似然比,并將外信息對數(shù)似然比存儲起來。當所有計算都完成時,啟動Rsmrdy信號,進入INIT狀態(tài)。由于本方案中SISO模塊將時分復用作為兩個分量譯碼器,對應于一次譯碼迭代的兩個半迭代過程。因此圖4中的Decoder_num為低時,SISO模塊作為第一個分量譯碼器,進行第一個半迭代運算;Decoder_num為高時,SISO模塊作為第二個分量譯碼器,進行第二個半迭代運算。每次半迭代產(chǎn)生的對數(shù)似然比信息作為下次半迭代的先驗信息。用兩塊RAM存儲兩次半迭代產(chǎn)生的外信息對數(shù)似然比。第一個半迭代時,從第二個外信息存儲器中讀取上一次半迭代產(chǎn)生的外信息對數(shù)似然比作為先驗信息,計算得到外信息對數(shù)似然比后存儲到第一個外信息存儲器中;第二個半迭代時,從第一個外信息存儲器中讀取上一次半迭代產(chǎn)生的外信息對數(shù)似然比作為先驗信息,計算得到外信息對數(shù)似然比后存儲到第二個外信息存儲器中。每幀數(shù)據(jù)譯碼的第一次迭代中的第一個半迭代的先驗信息設為0。迭代滿足迭代終止準則后,譯碼器停止迭代,由信息的對數(shù)似然比值硬判決輸出譯碼結果。工程中常用的迭代終止準則是設置最大迭代次數(shù)。最大迭代次數(shù)的設定需要綜合考慮誤碼率性能和系統(tǒng)吞吐量性能。3Turbo碼編譯碼器的性能基于以上提出的Turbo碼編譯碼器的FPGA實現(xiàn)方案,本文在Xilinx公司的Virtex2系列的XC2V500-6fg256FPGA芯片上,實現(xiàn)了幀長在64~1024范圍之間可變的Turbo編譯碼器。輸入數(shù)據(jù)4bit量化,內部數(shù)據(jù)位寬選擇12bit,編碼器模塊和譯碼器模塊在同一塊FPGA芯片上實現(xiàn)。綜合后時鐘最小周期為7.188ns,對應最高時鐘頻率為139.121MHz,所占的資源如表2所示。所占的資源如表2延遲與吞吐量是衡量譯碼器性能的兩個主要指標。延遲定義為從第一個數(shù)據(jù)輸入到第一個數(shù)據(jù)輸出間的時間差。吞吐量定義為平均每秒能處理的數(shù)據(jù)量。在幀長為1024、迭代次數(shù)為5的條件下,譯碼器延時約為1.4ms,吞吐量約為0.72Mbps。最后,對幀長為128、256、512和1024四種條件的Turbo碼譯碼器進行了誤碼率性能測試。測試系統(tǒng)中加入高斯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論