【正文】
量 。 此外 , 交織編碼器在 Turbo碼設(shè)計中也起著十分重要的作用 。 第 8章 FPGA電路設(shè)計實例 圖 。 交織編碼根據(jù)交織圖案形式的不同 , 可分為線性交織 、 卷積交織和偽隨機交織 。 其中線性交織編碼是一種比較常見的形式 , 在這里 , 我們主要向大家講述線性交織編碼器的 FPGA設(shè)計 。 第 8章 FPGA電路設(shè)計實例 圖 糾錯編碼與交織編碼的連接關(guān)系 糾錯編碼 交織編碼 發(fā)射機 傳輸信道 接收機 交織譯碼 糾錯譯碼數(shù)據(jù)入 數(shù)據(jù)出第 8章 FPGA電路設(shè)計實例 圖 n m交織矩陣 第 8章 FPGA電路設(shè)計實例 所謂線性交織編碼器 , 是指把糾錯編碼器輸出信號均勻分成 m個碼組, 每個碼組由 n段數(shù)據(jù)構(gòu)成, 這樣就構(gòu)成一個 n m的矩陣。 我們把這個矩陣稱為交織矩陣, 如圖 。 數(shù)據(jù)以 a11, a12, ..., a1n, a21, a22, ...,a2n, ..., aij, ...,am1,am2, ...,amn(i=1, 2, ..., m; j=1, 2, ..., n)的順序進(jìn)入交織矩陣, 再以 a11,a21, ...,am1,a12,a22, ...,am2, ...,aij, ...,a1n, a2n, ..., amn的順序從交織矩陣中送出, 這樣就完成了對數(shù)據(jù)的交織編碼。 第 8章 FPGA電路設(shè)計實例 當(dāng)然還可以按照其它順序從交織矩陣中讀取數(shù)據(jù) , 不管采用哪種形式 , 其最終目的都是把輸入數(shù)據(jù)的次序打亂 。 如果 aij只包含一個數(shù)據(jù)比特 , 稱為按位交織; 如果 aij包含多個數(shù)據(jù)比特 , 則稱為按字交織 。 接收端的交織譯碼同交織編碼過程相類似 , 也是通過圖 交織矩陣來完成 , 它們的結(jié)構(gòu)是一樣的 。 在這里 , 我們只討論交織編碼器 , 當(dāng)然它也可以用來做交織譯碼 。 第 8章 FPGA電路設(shè)計實例 根據(jù) Altera公司 FLEX系列器件的內(nèi)部結(jié)構(gòu)特點, 可以采用兩種方法設(shè)計交織編碼器。 一種方法是利用FLEX器件的邏輯單元, 用移位寄存器完成交織; 另一種方法是利用 EAB資源, 用存儲器實現(xiàn)交織編碼。 下面分別進(jìn)行討論。 第 8章 FPGA電路設(shè)計實例 利用移位寄存器實現(xiàn)交織編碼 圖 4 4交織編碼器( m= n= 4)工作原理方框圖, 輸入移位寄存器和輸出移位寄存器的容量均為 16比特, 該交織器每次完成16比特數(shù)據(jù)的交織編碼。 圖 4 4交織編碼器的交織矩陣。 設(shè) “ 0~ 15”為輸入 16比特數(shù)據(jù)的編號, 輸入數(shù)據(jù)在時鐘的作用下,按照 “ 0、 1 1 1 1 15”的順序進(jìn)入 “ 輸入移位寄存器 ” , 在時序控制單元的控制下, 經(jīng)過交織網(wǎng)絡(luò), 進(jìn)入 “ 輸出移位寄存器 ” , 然后以“ 0、 1 1 1 1 15”的順序輸出, 從而完成交織編碼。 第 8章 FPGA電路設(shè)計實例 圖 基于移位寄存器的交織編碼器工作原理方框圖 輸入移位寄存器( 串入并出)輸出移位寄存器( 并入串出)交織網(wǎng)絡(luò)時序控制數(shù)據(jù)輸入時鐘數(shù)據(jù)輸出時鐘第 8章 FPGA電路設(shè)計實例 表 基于移位寄存器的交織編碼器引腳 引 腳 功 能 DATAIN 數(shù)據(jù)輸入 CLK 數(shù)據(jù)時鐘輸入 CLRN 系統(tǒng)復(fù)位端口 DATAOUT 交織編碼數(shù)據(jù)輸出 CLKOUT 交織編碼數(shù)據(jù)時鐘輸出 第 8章 FPGA電路設(shè)計實例 圖 4 4交織矩陣 ????????????1511731410621395112840第 8章 FPGA電路設(shè)計實例 圖 利用移位寄存器實現(xiàn)的交織編碼器 C LKC LR NABD A T A I NC LR NC LK16QAQBQCQDQEQFQGQH151413121110916ABCDEFGH1284151173S ERQS ERS T LDS T LDC LKC LK O U TG LR NC LR NS H I F T R E G .交 織 網(wǎng) 絡(luò)C LKC LR NAB9C LR NC LK8QAQBQCQDQEQFQGQH765432114ABCDEFGH106213951S ERQS ERS T LDS T LDC LKC LK O U TG LR NC LR NS H I F T R E G .D A T A O U T輸 出 移 位 寄 存 器( 并 入 串 出 )輸 入 移 位 寄 存 器( 串 入 并 出 )7 4 1 6 4c s h i fr e g7 4 1 6 4 c s h i fr e g第 8章 FPGA電路設(shè)計實例 圖 利用移位寄存器實現(xiàn)的交織編碼器 P R ND QC LR NC LKC LR NLD NABCDC I NDNUPS ET NC LR NC LKC O U TQDQCQBQAC LKC LR NV C CGNDV CCV CCV CCD A T A I NC O U N T ERQ S T LDC LKC LK O U TD A T A O U T時 序 控 制4 c o u n tIN P U TIN P U TIN P U TO U T P U TO U T P U T第 8章 FPGA電路設(shè)計實例 圖 路圖, 表 。 “ 輸入移位寄存器 ” 由兩個 “ 74164”級聯(lián)實現(xiàn), “ 輸出移位寄存器 ” 由兩個 “ cshifreg”級聯(lián)實現(xiàn)。 表 和輸出數(shù)據(jù)編號的對應(yīng)關(guān)系, 利用對應(yīng)關(guān)系將相應(yīng)編號的端口相連接, 就構(gòu)成了 “ 交織網(wǎng)絡(luò) ” 。 時序控制單元是一個模 16同步計數(shù)器, 當(dāng) “ 輸入移位寄存器 ”讀入 16比特數(shù)據(jù)后, 時序控制單元產(chǎn)生一個脈沖信號, 將這些數(shù)據(jù)通過 “ 交織網(wǎng)絡(luò) ” 送入 “ 輸出移位寄存器 ” , 此時該移位寄存器內(nèi)的數(shù)據(jù)已經(jīng)按照交織編碼后的順序排列。 在時鐘的驅(qū)動下, 將“輸出移位寄存器”內(nèi)數(shù)據(jù)順序送出, 即為交織編碼后的數(shù)據(jù)。 第 8章 FPGA電路設(shè)計實例 圖 , 節(jié)點 “ Q”處的脈沖信號每 16個時鐘周期出現(xiàn)一次, “ 輸入移位寄存器 ” 中的數(shù)據(jù)在脈沖信號控制下被送入 “ 輸出移位寄存器 ” , 同時在交織網(wǎng)絡(luò)中完成交織編碼。 時鐘“ CLKOUT”是輸入時鐘 “ CLK”的反相時鐘, 其上升沿對應(yīng)著數(shù)據(jù)信號的中間位置, 這樣可以保證數(shù)據(jù)的可靠讀取。 “ DATAIN”是數(shù)據(jù)輸入端, 系統(tǒng)清零后輸入的前 16個數(shù)據(jù)比特為 “ 1101010001001110”, 經(jīng)交織后, “ DATAOUT”輸出的數(shù)據(jù)比特為“ 1001111100011000”。 第 8章 FPGA電路設(shè)計實例 表 輸入數(shù)據(jù)和輸出數(shù)據(jù)編號的對應(yīng)關(guān)系 第 8章 FPGA電路設(shè)計實例 圖 交織編碼器仿真波形(一) 延時C LK O U TD A T A O U TQD A T A I NC LKC LR NN a m e : V a l u e : 1 2 . 0 ? s100001延時1 3 . 0 ? s 1 4 . 0 ? s 1 5 . 0 ? s 1 6 . 0 ? s 1 7 . 0 ? s第 8章 FPGA電路設(shè)計實例 利用存儲器實現(xiàn)交織編碼 FPGA器件中的 EAB可以實現(xiàn)復(fù)雜的邏輯功能, 當(dāng)用作存儲器時, 其存儲數(shù)據(jù)的寬度和深度可由設(shè)計人員任意指定, 甚至還可以把若干個 EAB連接起來組成容量更大的存儲單元。 因此利用存儲器可以方便地構(gòu)造出交織深度很大的交織編碼器。 第 8章 FPGA電路設(shè)計實例 圖 基于存儲器的交織編碼器工作原理方框圖 數(shù)據(jù)輸入時鐘輸入寫地址產(chǎn)生雙端口 R A M數(shù)據(jù)輸出時鐘輸出讀地址產(chǎn)生第 8章 FPGA電路設(shè)計實例 圖 RAM實現(xiàn)的交織編碼器工作原理方框圖 , 由圖可看出 , 交織編碼器設(shè)計的關(guān)鍵在于 “ 讀 /寫地址 ” 的產(chǎn)生 。 一般說來 , 有兩種設(shè)計“ 讀 /寫地址 ” 的方法: 一種方法是 “ 順序?qū)懭?、 亂序讀出 ” , 即輸入數(shù)據(jù)以順序地址寫入存儲器 , 然后再以交織地址從存儲器中讀出; 另一種方法是 “ 亂序?qū)懭?、 順序讀出 ” , 即輸入數(shù)據(jù)以交織地址寫入存儲器 , 然后再以順序地址從存儲器中讀出 。 這兩種方法是等效的 , 在下面的例子中 , 我們采用 “ 順序?qū)懭?, 亂序讀出 ” 的方法 。 第 8章 FPGA電路設(shè)計實例 將雙端口 RAM存儲空間劃分為兩部分 , 在交織器工作時 , 這兩部分存儲空間交替進(jìn)行讀 /寫操作 。 圖 4 4交織編碼器的電路圖 , 雙端口 RAM由 “ lpm_ram_dp”宏模塊構(gòu)成 , 該模塊的邏輯參數(shù)見表 。 第 8章 FPGA電路設(shè)計實例 圖 利用雙端口 RAM實現(xiàn)的交織編碼器 P R ND QC L R NC L KC L R NP R ND QC L R NR D A D D R E S S 2 R D A D D R E S S 3P R ND QC L R NR D A D D R E S S 0P R ND QC L R NR D A D D R E S S 1P R ND QC L R NR D A D D R E S S 4W R A D D R E S S 4r d a d d r e s s [ ]r d e nr d c l o c kr d c l k e nd a t a [ ]w r a d d r e s s [ ]w r e nw r c l o c kw r c l k e nR D A D D R E S S [ 4 . . 0 ]C L K O U TD A T A I NW R A D D R E S S [ 4 . . 0 ]C L K O U TV C Cq [ ]P R ND QC L R NC L K O U TC L R ND A T A O U TC L K C L K O U TL P M _ F I L E =L P M _ I N D A T A = “ R E G IS T E R E D ”L P M _ N U M W O R D S = 2∧L P M _ W I D T H A DL P M _ O U T D A T A = “ U N R E G IS T E R E D ”L P M _ R D A D D R E S S _ C O N T R O L = R E G I S T E R E D L P M _ W I D T H = 1L P M _ W I D T H A D = 5L P M _ W R A D D R E S S _ C O N T R O L = “ R E G IS T E R E D ”U S E _ E A B = “ O N ”C L R NV C CC L KV C CD A T A I NV C CD A T A O U TC L K O U TW R A D D R E S S [ 4 . . 0 ]R D A D D R E S S [ 4 . . 0 ]Q讀 地 址 產(chǎn) 生雙 端 口 R A MI / O 引腳L P M _ R A M _ D PI N P U TI N