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