交織和解交織是組合信道糾錯系統(tǒng)的一個重要環(huán)節(jié),交織器和解交織器的實現(xiàn)方法有多種。本文利用Altera公司開發(fā)的Quartus軟件平臺和仿真環(huán)境,設計一種交織器和解交織器FPGA電路單倍實現(xiàn)的方法,并分析該電路實現(xiàn)的特點。
外交織的基本原理
實際信道中產(chǎn)生的錯誤往往是突發(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ā)錯誤離散為隨機錯誤。發(fā)射機交織器數(shù)據(jù)輸出的先后順序被打亂,再經(jīng)過接收機解交織器又被重新恢復。
圖2:交織器和解交織器原理圖
圖3:單倍交織器實現(xiàn)框圖
交織器和解交織器電路實現(xiàn)如圖3所示。由于交織和解交織要對數(shù)據(jù)進行有規(guī)律的延時處理,所以輸入數(shù)據(jù)首先被存入一雙端口RAM中,然后經(jīng)過一定時延后被讀出,此延時由雙端口RAM的讀寫地址來控制,因此,其實現(xiàn)的關鍵在于雙端口RAM讀寫地址的產(chǎn)生和分配,不僅要有利于找到地址的變化規(guī)律,而且要易于電路實現(xiàn)。RAM讀寫地址產(chǎn)生的一種辦法是將讀寫地址映射到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,余者依次類推??梢?,0~11路通道的讀寫地址按各自的延時規(guī)律變化,第i通道讀寫地址在本通道向右方向循環(huán)相距i×17個單元。設計電路時,除第0通道外,每一通道都可采用一個計數(shù)器,每個計數(shù)器獨立計數(shù),設第i通道計數(shù)器的計數(shù)值為ai,通道的首地址為bi,尾地址為ci,這樣,得到RAM的讀寫地址的變化規(guī)律:
第i通道讀地址:ai + bi;總線的位數(shù)為Nad=ceil[log2(Nram)]=11。也就是說,要用到2k的雙端口RAM,讀寫地址線各11根。
而采用一般的雙倍實現(xiàn)占用的存儲單元總數(shù)Nram=[(I-1)×M+1]×I=2256,相應要用到地址總線位數(shù)Nad=ceil[log2(Nram)]=12。如果采用雙倍實現(xiàn),要用到4k的雙端口RAM,讀寫地址線各12根。
理論上最簡存儲單元的占用量為Nram=[(I-1)×M×I/2 =1122,地址總線位數(shù)為Nad=ceil[log2(Nram)]=11,所以單倍實現(xiàn)的優(yōu)點是顯而易見的,其占用存儲單元數(shù)為雙倍實現(xiàn)的一半,讀寫地址線各少1根,接近于最簡占用量。只要交織深度I不是很深,該設計方法使用的邏輯單元門數(shù)并不多,而且可以節(jié)約大量的存儲單元,效果是顯而易見的。