一種交織器和解交織器的FPGA電路實現(xiàn)
交織和解交織是組合信道糾錯系統(tǒng)的一個重要環(huán)節(jié),交織器和解交織器的實現(xiàn)方法有多種。本文利用Altera公司開發(fā)的Quartus軟件平臺和仿真環(huán)境,設計一種交織器和解交織器FPGA電路單倍實現(xiàn)的方法,并分析該電路實現(xiàn)的特點。
本文引用地址:http://butianyuan.cn/article/190592.htm外交織的基本原理
實際信道中產生的錯誤往往是突發(fā)錯誤或突發(fā)錯誤與隨機錯誤并存,如果首先把突發(fā)錯誤離散成隨機錯誤,然后再去糾隨機錯誤,那么系統(tǒng)的抗干擾性能就會進一步得到提高。交織器的作用就是將比較長的突發(fā)錯誤或多個突發(fā)錯誤離散成隨機錯誤,即把錯誤離散化。交織器按交織方式可分為交織深度固定的交織器(如分組交織器和卷積交織器)和交織深度不斷變化的隨機交織器;按交織對象可分為碼元交織器和碼段交織器,這里主要討論的是交織深度固定的碼段交織器。
交織和解交織是一種很實用也很常用的構造碼方法,不僅可以糾隨機錯誤,還可用來糾突發(fā)錯誤,所以常用于組建信道糾錯系統(tǒng)。例如,以[n,k]線性分組碼作為行碼,設交織深度為i,交織編碼即是將這一線性分組碼排成如圖1所示的i行,n列的碼陣,形成[ni,ki]交織編碼的一個碼字,傳送按列的次序自左向右傳輸,即:a1(n-1)a2(n-1)...ai(n-1)a1(n-2)...ai(n-2)...a10a20...ai0,其中aij代表一個碼段。解交織時,仍排成如圖1的碼陣,并按行的次序自上而下傳輸,最后再按分組碼[n,k]方式譯出。由于信道中的錯誤被分散到各個行碼中去,因此若行碼能糾t個隨機錯誤或b個長突發(fā)錯誤,則[ni,ki]交織后的碼就能糾所有長度i×t或i×b的突發(fā)錯誤。
交織深度i是交織和解交織的重要參數(shù)。交織深度i越大,突發(fā)錯誤的離散度也越大,錯誤的相關性越小。當i足夠大時,就可把突發(fā)錯誤離散為隨機錯誤。
交織器和解交織器的實現(xiàn)
交織器和解交織器實現(xiàn)的基本原理如圖2所示,其中I表示交織深度。由圖可見,共有I個通道,輸入數(shù)據(jù)依次進入第0到I-1通道,并按照各自通道上的延時規(guī)律輸出,交織器和解交織器相同通道上的延時是互補的,延時之和均為M×(I-1)。這樣經(jīng)過發(fā)射機交織器數(shù)據(jù)輸出的先后順序被打亂,再經(jīng)過接收機解交織器又被重新恢復。
交織器和解交織器電路實現(xiàn)如圖3所示。由于交織和解交織要對數(shù)據(jù)進行有規(guī)律的延時處理,所以輸入數(shù)據(jù)首先被存入一雙端口RAM中,然后經(jīng)過一定時延后被讀出,此延時由雙端口RAM的讀寫地址來控制,因此,其實現(xiàn)的關鍵在于雙端口RAM讀寫地址的產生和分配,不僅要有利于找到地址的變化規(guī)律,而且要易于電路實現(xiàn)。RAM讀寫地址產生的一種辦法是將讀寫地址映射到ROM里,另一種辦法是通過電路計算得到讀寫地址。前者方法簡單,實現(xiàn)方便,但是添加ROM會占用存儲資源,所以一般都采用后者,其實現(xiàn)也并不復雜。后者的實現(xiàn)電路包括單倍實現(xiàn)和雙倍實現(xiàn),所謂單倍和雙倍主要是針對RAM存儲單元的占用量而言,單倍實現(xiàn)所用RAM存儲單元的容量是雙倍的1/2左右。我們所設計的FPGA電路采用的是單倍實現(xiàn),實現(xiàn)框圖如圖3所示。
下面就簡述該設計中雙端口RAM地址分配及讀寫地址的生成規(guī)律。以I=12,M=17的交織器為例。由于交織深度是12,所以有12個通道,表1列出每通道的地址分配,其中第1行對應圖2中交織器的第0通道,第2行對應第1通道,第3行對應第2通道,……第12行對應第11通道。第i通道共有N=i×M+1個地址,且分配的地址是固定的。RAM讀寫地址按照交織器中各通道的延時規(guī)律變化,交織器的地址分配如表1所示。
交織時,第1時刻讀地址可以是任意的,寫地址為0;第2時刻讀地址為1,寫地址為18;第3時刻讀地址為54,寫地址為105,第4時刻讀地址為3,寫地址為27,第12時刻讀地址為946,寫地址為1133,第13時刻讀地址為可以是任意的,寫地址為0,第14時刻讀地址為2,寫地址為1,第15時刻讀地址為20,寫地址為19,余者依次類推??梢姡?~11路通道的讀寫地址按各自的延時規(guī)律變化,第i通道讀寫地址在本通道向右方向循環(huán)相距i×17個單元。設計電路時,除第0通道外,每一通道都可采用一個計數(shù)器,每個計數(shù)器獨立計數(shù),設第i通道計數(shù)器的計數(shù)值為ai,通道的首地址為bi,尾地址為ci,這樣,得到RAM的讀寫地址的變化規(guī)律:
第i通道讀地址:ai + bi; (1)
第i通道寫地址:ai + bi -1,當ai不等于0時;
ci,當ai等于0時; (2)
其中,bi=[0+1+...+(i -1)]×M+i+1;ci=[0+1+...+i]×M+i
電路實現(xiàn)如圖4所示,計數(shù)器0由0到11遞增計數(shù),產生12路始能,分別控制11路計數(shù)器和直通通路的工作,同時選通其中一路從12選1電路輸出。電路中的ai、bi、ci,與式1和式2相對應。由于第0通道不需要任何延時,所以用flag信號作為2選1電路選通輸入數(shù)據(jù)直接輸出;反之,選通從RAM讀出的數(shù)據(jù)輸出。
利用Quartus仿真波形圖如圖5所示。clk為驅動時鐘,synin、dvin、din分別是輸入同步頭、有效位和數(shù)據(jù),synout、dvout、dout分別是輸出同步頭、有效位和數(shù)據(jù),flag是第0直通通道標識,rdad、wrad是RAM讀寫地址。
解交織時各通道的地址分配見表2,由于解交織與交織是互逆的過程,通道的時延相反,所以只要把交織器的地址分配倒置,即交織器的第0通道的地址分配變?yōu)榻饨豢椘鞯牡?1通道,而第11通道的地址分配變?yōu)榻饨豢椘鞯牡?通道。計數(shù)器0改為由11到0遞減計數(shù),其它部分保持不變,所以交織器和解交織器都可以用圖4實現(xiàn),只是計數(shù)器0的計數(shù)方式不同。
評論