變參數(shù)RS編碼器IP核的設(shè)計(jì)與實(shí)現(xiàn)
引言
數(shù)字信號(hào)在傳輸過程中可能受到各種干擾及信道傳輸特性不理想的影響而使信號(hào)發(fā)生錯(cuò)誤, 從而接收到錯(cuò)誤的信息。為了實(shí)現(xiàn)數(shù)字系統(tǒng)在傳輸過程中的可靠性, 幾乎所有的現(xiàn)代通信系統(tǒng)都把糾錯(cuò)編碼作為一個(gè)基本組成部分。Reed-So lomon (RS)碼是目前最有效、應(yīng)用最廣的差錯(cuò)控制編碼之一,是一類具有很強(qiáng)糾錯(cuò)能力的多進(jìn)制BCH 碼, 它既可以糾正突發(fā)錯(cuò)誤, 也可以糾正隨機(jī)錯(cuò)誤。RS 碼主要應(yīng)用于實(shí)時(shí)性較高的移動(dòng)通信系統(tǒng)、深空通信、數(shù)字衛(wèi)星電視、磁記錄系統(tǒng)等方面。
目前對(duì)RS 編碼器的設(shè)計(jì)主要局限于單一碼長(zhǎng)和固定糾錯(cuò)能力的RS 碼編碼器設(shè)計(jì)。本文提出的這種碼長(zhǎng)可變、糾錯(cuò)能力可調(diào)的RS 編碼器是把常用的RS (7, 3) 碼、RS (15, 11) 碼、RS (15, 9) 碼在一個(gè)編碼電路中實(shí)現(xiàn), 把它做成IP 核, 這樣既可以大大地減少了芯片的面積而且給用戶提供了方便,又有很大的選擇空間。該編碼電路采用基于多項(xiàng)式乘法理論GF (2m ) 上的m 位快速有限域乘法的方法, 使電路的編碼速度有了很大的提高。本文設(shè)計(jì)的編碼器的最高工作頻率可達(dá)到100MHz, 完全滿足無線通信中,語(yǔ)音通信和數(shù)據(jù)通信的數(shù)據(jù)傳輸速率為幾百kbp s 的要求。
編碼算法選取
一般來說, RS 碼可以用(n, k , t) 三個(gè)參數(shù)來表示, 其中n 表示碼字長(zhǎng)度, k 表示信息位長(zhǎng)度, t 為糾錯(cuò)能力, 滿足關(guān)系: t= (n- k )/2。RS 碼的所有元素都是定義在GF (2m ) 上, 其中有:m = log2n。對(duì)于不同的m 對(duì)應(yīng)著一個(gè)本原多項(xiàng)式, 從本原多項(xiàng)式就可以得到有限域各元素。
RS (7, 3) 碼的有限域見表1。
RS 編碼的生成多項(xiàng)式定義為:
所以可以得到各碼的生成多項(xiàng)式:
RS (7, 3) 碼:
g (x ) = x 4 + a3x 3 + x 2 + ax + a3
RS (15, 11) 碼:
g (x ) = x 4 + a13x 3 + a6x 2 + a3x + a10
RS (15, 9) 碼:
g (x ) = x 6 + a10x 5 + a14x 4 + a4x 3 +a6x 2 + a9x + a6
用m (x ) 表示信息碼字多項(xiàng)式, c (x ) 表示編碼后的碼字多項(xiàng)式, 則RS 碼的編碼過程可以用下面編碼多項(xiàng)式來表示:
c (x ) = m (x ) x n- k + [m (x ) x n- k ]modg (x )
上式中, [m (x ) x n- k ]modg (x ) 是求余運(yùn)算, 得到是校驗(yàn)位。
RS 編碼器的硬件實(shí)現(xiàn)過程, 就是運(yùn)用電路來完成上述編碼多項(xiàng)式中信息位多項(xiàng)式k (x ) 與x n- k的乘法運(yùn)算及k (x ) x n- kmodg (x ) 的求余運(yùn)算的過程。下面將詳細(xì)討論編碼電路的構(gòu)成及工作原理。
編碼電路的實(shí)現(xiàn)
RS編碼電路的求余運(yùn)算可以用n- k 級(jí)的移位寄存器來實(shí)現(xiàn), 因此可以選取6 級(jí)的移位寄存器; 信息位的輸入個(gè)數(shù)用計(jì)數(shù)器來控制, 可以加一選擇端來控制計(jì)數(shù)器是對(duì)哪一種碼字進(jìn)行編碼計(jì)數(shù); 信息位與校驗(yàn)位的輸出可以用選擇器來切換。因此我們可以得到編碼電路的原理框圖如圖1。
在圖1 的電路中, 所有的信息數(shù)據(jù)傳輸均采用4 位比特寬的傳輸。Reset 是系統(tǒng)復(fù)位信號(hào)。電路的工作原理描述如下:
(1) 當(dāng)sel 置為01 時(shí), 編碼電路處于RS (7, 3)碼的編碼狀態(tài)。因?yàn)镽S (7, 3) 碼的信息用3 位的二進(jìn)制表示, 所以數(shù)據(jù)線的最高位為零, 只有低3 位起作用。
A 編碼前首先給電路一個(gè)reset 復(fù)位信號(hào),使計(jì)數(shù)器和移位寄存器中的觸發(fā)器處于零狀態(tài), 復(fù)位采用異步復(fù)位。
B 輸入信息(m 2, …,m 0 ) , 計(jì)數(shù)器開始計(jì)數(shù),每輸入一個(gè)信息位, 計(jì)數(shù)器計(jì)一次數(shù), 然后輸出。此時(shí), selecto r2 的輸出與計(jì)數(shù)器的輸出端相接, 因此信息位一方面從編碼電路的輸出端輸出, 另一方面送入移位寄存器電路進(jìn)行求余運(yùn)算。
C 當(dāng)3 位信息位輸入完后, 計(jì)數(shù)器輸出一個(gè)控制信號(hào)ct r, 它是控制信息位與校驗(yàn)位的輸出, 此時(shí)selcto r2 的輸出與selecto r1 的輸出端相接,add5 的兩個(gè)輸入端均為selecto r1 的輸出端, 由于有限域加法不考慮各位之間的進(jìn)位, 因此add5 的輸出為0, 從而各乘法器m u l 的輸出為0, 所以移位寄存器中的校驗(yàn)位會(huì)一次輸出。所以校驗(yàn)位(D 3,…,D 0) 一次輸出。校驗(yàn)位輸出后寄存器和計(jì)數(shù)器回到零狀態(tài)。因而得到編碼后的碼字為(m 2, .,m 0,D 3, …,D 0)。
D 因?yàn)镽S (7, 3) 碼編碼電路的求余運(yùn)算只需要4 級(jí)的移位寄存器來實(shí)現(xiàn), 因此開關(guān)K 斷開,后面兩級(jí)移位寄存器不工作, 這樣就降低了電路的功耗。A dd5 的輸入端接D3 的輸出端。
{{分頁(yè)}}
(2) 當(dāng)sel 置為10 時(shí), 編碼電路處于RS (15,11) 碼的編碼狀態(tài), 在編碼前要給電路一個(gè)復(fù)位信號(hào)。過程與上面一樣, 編碼后得到碼字為(m 10, …,m 0, D 3, …,D 0)。同樣RS (15, 11) 碼編碼電路的求余運(yùn)算只需要4 級(jí)的移位寄存器來實(shí)現(xiàn), 因此K斷開, add5 的輸入端接D3 的輸出端。
(3) 當(dāng)sel 置為11 時(shí)編碼電路處于RS (15, 9)碼的編碼狀態(tài), 編碼前, 給電路一個(gè)復(fù)位信號(hào)。編碼后便可得到碼字為(m 8, …, m 0, D 3, …, D 0 )。RS(15, 9) 碼編碼電路的求余運(yùn)算要6 級(jí)的移位寄存器來實(shí)現(xiàn)。因此K 開通, add5 的輸入端接D5 的輸出端。
在編碼電路中乘法器采用了基于多項(xiàng)式乘法理論GF (2m ) 上的m 位有限域乘法的方法, 大大地提高了電路的運(yùn)算速度。
快速有限域乘法器實(shí)現(xiàn):
快速有限域乘法的實(shí)現(xiàn)思路如下, 以RS (7, 3)碼為例:
因此就可以實(shí)現(xiàn)快速有限域乘法器, 這樣對(duì)電路的運(yùn)算速度將會(huì)有很大的提高。由于RS (15,11) 碼和RS (15, 9) 碼基于同一個(gè)有限域GF (24 ) ,因此它們的乘法器一樣。當(dāng)sel 置為01 時(shí), 乘法器工作在GF (23 ) 的乘法狀態(tài), 當(dāng)sel 置為10 或11時(shí), 乘法器工作在GF (24) 的乘法狀態(tài)。只不過工作在GF (23 ) 狀態(tài)時(shí)乘法器輸入輸出端的第4 位為0。
電路仿真及測(cè)試
編碼電路模塊可以表示為:
sel 是編碼電路的選擇端, clk 是時(shí)鐘輸入端,reset 是系統(tǒng)復(fù)位端, in 是信息輸入端, ou t 是碼字輸出端。
用V erilog HDL 語(yǔ)言編寫電路的代碼后, 再用Cadence 公司的NC V erilog HDL 仿真工具進(jìn)行仿真, 得到各種編碼的仿真結(jié)果。
A ) 給reset 一個(gè)復(fù)位信號(hào), 使電路處于零狀態(tài), sel 置為01 時(shí), 輸入信息電路開始編碼。輸入信息位為(0, 1, 2) , 編碼后得到校驗(yàn)位(2, 3, 1, 3) , 因此輸出端輸出碼字為(0, 1, 2, 2, 3, 1, 3)。然后再輸入信息位, 循環(huán)進(jìn)行編碼。輸出波形如圖3 所示。
B) 給reset 一個(gè)復(fù)位信號(hào), sel 置為10 時(shí), 輸入信息電路開始編碼。輸入信息為(0, 1, 2, 3, 4, 5, 6,7, 8, 9,A ) , 編碼后得到校驗(yàn)位(C, E, 8, 3) , 所以輸出端輸出碼字為(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,A , C, E,8, 3)。輸入端再次輸入信息, 循環(huán)進(jìn)行編碼。輸出波形如圖4 所示。
C) 給reset 一個(gè)復(fù)位信號(hào), sel 置為11 時(shí), 輸入信息電路開始編碼。輸入信息為(0, 1, 2, 3, 4, 5,6, 7, 8) , 編碼后得到校驗(yàn)位(B, C, 0, 5, 7, 8) , 所以輸出端輸出碼字為(0, 1, 2, 3, 4, 5, 6, 7, 8,B, C, 0,5, 7, 8)。輸入端再次輸入信息, 循環(huán)進(jìn)行編碼。
仿真完成后, 采用Xilinx 的FPGA 板, 主芯片為SPARTAN II XC2SPQ 208 進(jìn)行驗(yàn)證, 輸入信息與仿真輸入的信息一致, 然后用邏輯分析儀觀測(cè)輸出結(jié)果。
A ) 給reset 一個(gè)復(fù)位信號(hào)后, 使電路工作在RS (7, 3) 碼的編碼狀態(tài)。用邏輯分析儀觀測(cè)輸入與輸出的結(jié)果如下圖6 所示, 虛線圈起來的(0, 1, 2,2, 3, 1, 3) 表示一個(gè)完整的輸出碼字。
B) 先使電路復(fù)位, 然后讓電路工作在RS (15,11) 碼的編碼狀態(tài), 用邏輯分析儀觀測(cè)輸入與輸出結(jié)果如下圖7 所示, 虛線圈起來的(0, 1, 2, 3, 4, 5,6, 7, 8, 9,A , C, E, 8, 3) 表示一個(gè)完整的輸出碼字。
C) 電路復(fù)位后, 使它工作在RS (15, 9) 碼的編碼狀態(tài), 用邏輯分析儀觀測(cè)結(jié)果如下圖8 所示, 虛線圈起來的(0, 1, 2, 3, 4, 5, 6, 7, 8,B, C, 0, 5, 7, 8)表示一個(gè)完整的輸出碼字。
從上面的仿真波形和測(cè)試結(jié)果可以看到他們的輸出結(jié)果一致, 驗(yàn)證了設(shè)計(jì)的正確性。
電路參數(shù)
用Xilinx 公司的Pro ject Navigator 綜合工具對(duì)電路代碼進(jìn)行綜合后, 得到電路的等效門單元數(shù)1339; 測(cè)得電路的靜態(tài)功耗為12.50 mW , 最高作頻率為100MHz。
結(jié)論
提出了一種碼長(zhǎng)可變、糾錯(cuò)能力可調(diào)的RS 碼編碼器, 它解決了以往RS 編碼器只能對(duì)單一碼長(zhǎng)和固定糾錯(cuò)能力編碼的局限, 同時(shí)采用快速有限域乘法的方法提高了電路的運(yùn)算速度。設(shè)計(jì)后通過在FPGA 上測(cè)試, 驗(yàn)證了設(shè)計(jì)的正確性。
評(píng)論