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