1. 程式人生 > >FPGA設計之Turbo碼(行動通訊)

FPGA設計之Turbo碼(行動通訊)

對於Turbo碼的研究遠比我想象中的複雜的多,而且網上很多資料都被限制,實際的應用也是十分的廣泛,現代行動通訊中訊號編碼多采用TURBO碼,編碼的基本原理如下:

b為輸入,b為輸出。設輸入bf(k),輸出by(k)k為整數。

有表示式y(k)-y(k-2)-y(k-3)=f(k)+f(k-1)+f(k-2)

假設編碼輸入的資料訊號源模組提供的24位一幀的NRZ碼,碼速率32K。輸出的Turbo編碼是96位一幀的資料,碼速率128K。其中有效資料共84位,不足位的部分補0

輸入的每一位碼元編碼為三位輸出。同時還必須輸出三組尾位元資料。尾位元資料的規則為:在所有資訊位元編碼後通過從移位暫存器反饋端取出尾位元來執行編碼的終止,即在資訊位元編碼後再填補尾位元。最先的三個尾位元用於終止第一個分支編碼器,同時第二個分支編碼器處於關斷狀態。最後的三個尾位元用於終止第二個分支編碼器,同時第一個分支編碼器處於關斷狀態。

尾位元的終止傳送位元為:

bi25,ci25,bi26,ci26,bi27,ci27,bi25,ci25,bi26,ci26,bi27,ci27

由於篇幅原因在這裡只寫出部分程式碼,事實上整個編解碼過程很複雜,程式採用由上自下方式設計,頂層採用原理圖設計,底層有程式碼和呼叫庫中整合RAM等設計而成。

下圖為編碼呼叫的內部RAM,編碼後的一幀資料為96位。。在這裡只是模擬了實際通訊中的Turbo碼,實際通訊中資料速率遠遠不止K級

下圖為解碼頂層原理圖,有點複雜。