Professional Documents
Culture Documents
平行化改良型步階式里德 所羅門解碼器之晶片設計
平行化改良型步階式里德 所羅門解碼器之晶片設計
碩士論文
Master Thesis
平行化改良型步階式里德-所羅門解碼器之晶片設計
Reed-Solomon Decoder
研究生:李匡效
指導教授:游 竹 博士
中華民國 106 年 7 月
July, 2017
中文摘要
關鍵詞:里德所羅門碼、步階式演算法、高斯消去演算法、心跳式陣列架構。
I
Abstract
Reed-Solomon (RS) codes provide the capability of excellent recovery data suffered
from random and burst errors. Thus, RS codes have been widely used in various
and their corresponding error values. However, the processing time and the power
consumption of this algorithm are huge for non-binary RS codes. As the communication
developments, the requirements of data transfer rate and stability are getting higher and
higher. In this Thesis, the modified step-by-step algorithm and two-dimensional Gaussian
elimination method were adopted to reduce the foregoing issues at the hardware complexity
three-parallel hardware architecture to increase the decoding rate without searching the
error-location polynomial and performing the Forney algorithm. Finally, using TSMC 90nm
technology, the proposed design has a working frequency of up to 286MHz. The gate counts
and throughput of this chip core are approximately 131K gates and 6.8Gb/s at 286MHz,
respectively.
Systolic Array.
II
致謝
本篇論文的完成,要感謝我的指導教授、研究所同學、朋友以及家人的支持。首
先要感謝我的指導教授,也是在這兩年研究生涯中的貴人游竹博士,對於許多我在細
節上的疏忽,以及耐心的提點與指導,讓我在專業領域的研究中,得到許多寶貴的經
驗與知識,在此向游教授致上最深的謝意。
還要感謝口試委員周賢興教授以及海洋大學資工系的嚴茂旭教授,在本論文上提
供了的寶貴意見與看法,讓我的論文能更加完善。此外,也向相關研究領域上的作者
們獻上無線的謝意。
再來,感謝在碩士求學期間彼此互相照顧砥礪的學長、同學,還有朋友們。感謝
郭建豐學長以及林志鴻學長常常在我研究迷網時給予幫助及方向;感謝張雲翔、王偉
旭、陳俊錡、陳錕愷等同學,在這段期間分享的苦與樂,使碩班生活更加有趣。以上,
很幸運地有這些良朋益友,謝謝你們,因為有你們的陪伴,讓我的碩士生涯增添許多
色彩,謝謝你們,期許大家未來都能夠順順利利。
最後,我要特別感謝我的家人,謝謝爸媽在我研究遇到瓶頸的時候,還能全心全
意的支持我,提供我精神以及物質上無私的資助,讓我能無後顧之憂;感謝我的表哥
蔡譽良,謝謝他陪我度過最艱難的階段,謝謝你們。
III
目錄
中文摘要 .....................................................................................................................................I
Abstract ...................................................................................................................................... II
致謝 .......................................................................................................................................... III
目錄 .......................................................................................................................................... IV
圖索引 ...................................................................................................................................... VI
表索引 ................................................................................................................................... VIII
第1章 緒論 ........................................................................................................................ 1
1.1 簡介 .................................................................................................................... 1
1.2 研究動機 ............................................................................................................ 2
1.3 論文架構 ............................................................................................................ 2
第2章 有限場 .................................................................................................................... 3
2.1 群(Groups)與場(Fields) ..................................................................................... 3
2.2 伽洛瓦場與多項式 ............................................................................................ 3
2.3 伽洛瓦場的基本四則運算 ................................................................................ 5
2.3.1 變數-變數之乘法運算 ................................................................................. 5
2.3.2 常數-變數之乘法運算 ................................................................................. 6
2.3.3 伽洛瓦場的除法運算 .................................................................................. 7
第3章 里德-所羅門碼原理 ............................................................................................... 8
3.1 簡介 .................................................................................................................... 8
3.2 里德所羅門碼基本架構 .................................................................................... 8
3.3 里德所羅門碼之編碼 ........................................................................................ 9
3.4 里德所羅門碼之解碼 ...................................................................................... 10
3.4.1 代數解碼演算法 ........................................................................................ 12
3.4.1.1 傳統 Berlekamp 演算法................................................................ 12
3.4.1.2 傳統 Euclidean 演算法 ................................................................. 15
3.4.2 傳統步階式解碼演算法 ............................................................................ 17
3.4.3 新型步階式解碼演算法 ............................................................................ 21
3.4.4 改良型步階式解碼演算法 ........................................................................ 26
第4章 里德-所羅門解碼電路 ......................................................................................... 30
4.1 平行化改良型步階式里德-所羅門解碼器硬體架構 ..................................... 30
4.2 伽洛瓦場乘法器 .............................................................................................. 30
4.2.1 變數-變數乘法器 ....................................................................................... 31
4.2.2 常數-變數乘法器 ....................................................................................... 32
4.3 徵狀值計算器 .................................................................................................. 33
4.3.1 單輸入之徵狀值計算器 ............................................................................ 33
4.3.2 平行化之徵狀值計算器 ............................................................................ 34
4.4 行列式值計算器 .............................................................................................. 35
IV
4.4.1 高斯消去演算法 ........................................................................................ 35
4.4.2 高斯消去法之心跳式架構介紹 ................................................................ 36
4.4.3 一維心跳式陣列 ........................................................................................ 38
4.4.3.1 一維行列式值計算器 ................................................................... 39
4.4.4 二維心跳式陣列 ........................................................................................ 42
4.4.4.1 二維行列式值計算器 ................................................................... 42
4.5 錯誤數目偵測電路 .......................................................................................... 43
4.6 累乘與加總電路 .............................................................................................. 44
4.7 錯誤更正電路與先進先出暫存器 .................................................................. 47
4.8 電路設計與模擬 .............................................................................................. 48
第5章 結論與未來發展 .................................................................................................. 50
參考文獻 .................................................................................................................................. 52
V
圖索引
圖 1-1、數位通訊系統方塊圖 ....................................................................................... 1
圖 3-1、里德-所羅門碼區塊示意圖 ............................................................................. 8
圖 3-2、RS(255, 239)封包組成 ..................................................................................... 9
圖 3-3、RS 碼之系統化編碼 ....................................................................................... 10
圖 3-4、傳統式步階式演算法應用於 BCH 碼示意圖............................................... 18
圖 3-5、傳統式步階式應用於 RS 碼示意圖 .............................................................. 18
圖 3-6、步階式演算法流程圖 ..................................................................................... 20
圖 3-7、新型步階式演算法流程圖 ............................................................................. 25
圖 3-8、改良型步階式演算法流程圖 ......................................................................... 28
圖 4-1、平行化改良型步階式 RS 解碼器架構圖 ...................................................... 30
圖 4-2、一般乘法運算過程示意圖 ............................................................................. 31
圖 4-3、GF(24)乘法運算過程示意圖 .......................................................................... 31
圖 4-4、GF(24)全平行乘法器[9] ................................................................................. 32
圖 4-5、徵狀值計算器硬體架構 ................................................................................. 33
圖 4-6、平行化徵狀值計算器架構 ............................................................................. 34
圖 4-7、平行化之電路模擬時序圖 ............................................................................. 34
圖 4-8、行列式計算器基本架構圖 ............................................................................. 35
圖 4-9、三角矩陣矩陣示意圖 ..................................................................................... 36
圖 4-10、軸元模組[7] .................................................................................................. 36
圖 4-11、列運算模組[7] .............................................................................................. 36
圖 4-12、軸元模組之運算流程圖 ............................................................................... 37
圖 4-13、列運算模組之運算流程圖 ........................................................................... 38
圖 4-14、高斯消去之一維心跳式陣列電路 ............................................................... 38
圖 4-15、99 矩陣之高斯消去電路時序模擬圖 ........................................................ 39
圖 4-16、RS 解碼之 3 階段分配圖 ............................................................................. 40
圖 4-17、兩種行列式值之計算示意圖 ....................................................................... 41
圖 4-18、有儲存矩陣資料功能之行列式值計算器[6] .............................................. 41
圖 4-19、高斯消去之二維心跳式陣列電路(n=4) ...................................................... 42
圖 4-20、二維高斯消去之軸元值的電路模擬圖 ....................................................... 43
圖 4-21、錯誤數目偵測電路 ....................................................................................... 44
圖 4-22、錯誤數目 v 與行列式值 det(Nvxx)之計算電路模擬圖 ................................ 44
圖 4-23、有限場元素間的關係 ................................................................................... 45
圖 4-24、累乘與加總電路(j=2) ................................................................................... 45
圖 4-25、累乘與加總電路方塊圖 ............................................................................... 46
圖 4-26、累乘與加總電路模擬圖 ............................................................................... 46
圖 4-27、錯誤更正電路架構圖 ................................................................................... 47
圖 4-28、RS 解碼器所使用之先進先出記憶體模組 ................................................. 48
VI
圖 4-29、平行化之 RS(255, 239)解碼器模擬圖 ........................................................ 49
圖 4-30、邏輯閘分布圖 ............................................................................................... 50
VII
表索引
表 2-1、Module-2 加法與 Module-2 乘法 .................................................................. 4
2-2、由 f ( x) x x 1 所產生之 GF(24)有限場的基本元素列表 .................... 5
4
表
表 3-1、Berlekamp 遞迴演算法之初始值設定 .......................................................... 14
表 3-2、Euclidean 遞迴演算法之初始值設定 ............................................................ 16
表 3-3、錯誤數目為 v 之偵測情況 ............................................................................. 21
表 4-1、常數-變數乘法器之 XOR 閘邏輯閘數 ......................................................... 33
表 4-2、高斯消去電路之心跳式架構比較表 ............................................................. 43
表 4-3、三平行累乘分解表 ......................................................................................... 45
表 4-4、平行化之 RS(255, 239)效能數據 .................................................................. 49
表 4-5、RS 解碼器之使用硬體資源比較表 ............................................................... 50
VIII
第1章 緒論
1.1 簡介
隨著現在通訊應用的發展,數位通訊系統在傳輸的過程中,難免因傳輸過程的環
境不佳或是外在因素的干擾,而降低接收資料的正確性。而各種通訊規則也陸續被提
出及制定,對於資料傳輸的速度與可靠性要求越來越高,因此在通訊系統中要如何保
持高速率、可靠性以及傳輸準確性,儼然已成為通訊系統中重要的議題。
錯誤更正碼(Error-Correction Codes)被廣泛的運用在各種通訊及儲存系統上,主要
是藉由在欲傳輸的訊息符號中,加入額外具有數學結構特性的符號元,在接收端依原
有之數學結構進行偵測錯誤,進而將經過傳輸通道後所造成的錯誤訊息加以更正。圖
1-1 為一個簡單的數位通訊系統方塊圖,訊息在傳輸過程中難免會遇到各種雜訊干擾
而導致失真,因此在傳輸前,必須先對訊息進行編碼,確保後續接收到的訊息若是錯
誤的情況下,仍可透過解碼演算法將錯誤訊息更正回來。
圖 1-1、數位通訊系統方塊圖
1.3 論文架構
本文架構總共分成 5 章,第 2 章介紹 RS 碼的基礎原理,其中包括伽洛瓦的基本
運算,以及各參數之定義。第 3 章則開始介紹 RS 編解碼做一個整理,並將步階式解
碼與代數幾何解碼演算法做比較,並詳述改良型步階式演算法的演算流程。第 4 章則
針對平行化之改良型步階式演算法提出硬體架構,在此章節中我們將分別對各個演算
流 程 及 相 對 應 的 硬 體 單 元 進 行 講 解 與 設 計 , 並 利 用 Matlab 與 硬 體 描 述 語 言
Verilog-HDL 進行模擬與實作。第 5 章則為結論與未來展望。
2
第2章 有限場
伽洛瓦場(Galois Field, GF)是一個元素個數有限的場結構,也稱為有限場(Finite
Field)。一般而言,數位訊號在傳輸中普遍為二進制碼,因此我們使用二元場 GF(2)或
二元擴充場 GF(2m)。在基本的代數運算中,常被運用在編碼理論(Coding Theory)、密
碼學(Cryptography)以及錯誤更正碼(Error Correction Codes)上,RS 編解碼即是由伽洛
瓦場 GF(2m)為基礎所建立。在本章節中,將先簡單介紹群(Groups)與場(Fields),接著
介紹有限場與多項式之間的關係,最後再詳述伽洛瓦場四則運算的方式。
2.1 群(Groups)與場(Fields)
群(Groups):
設一個集合 G 具有二元運算元 ,且 a、b 屬於 G 集合的兩任意元素,而 c 為 a b
後所產生的第三個元素, G 只要滿足以下條件便可稱為群:
1. 封閉性(Closure):若 a, b G ,則 a b G 。
2. 結合性(Associative) :對所有 a, b, c G ,則 (a b) c a (b c) 。
3. 單一性(Identity) :對所有 a G ,存在一個單位元素 e G 滿足 a e e a a 。
4. 反元素(inverse) :對每一個 a G ,存在反元素 a' G 滿足 a a a a e 。
場(Fields):
介紹完群後的條件後,我們進一步介紹另一個比較大的代數結構“場”,場是一個
比群還大的代數結構。令一個具有乘法與加法兩種運算外,含有任意 a 、 b 兩元素的
集合 F,滿足下列條件即可稱為場:
1. 封閉性(Closure):集合 F 須滿足二元運算中加法及乘法的封閉性。
2. 交換性(Commutative):集合 F 須滿足二元運算裡,加法及乘法中交換群的特
性。
3. 分配性(Distributive):集合 F 中的任意元素 a 、 b 、 c 同時滿足加法及乘法的
運算,使得 a (b c) a b a c 。
對 於 上 述 運 算 中 , 減 法 和 除 法 可 依 據 反 元 素 的 特 性 表 示 成 a b a (b) 與
a b a (b 1 ) ,其中 (b) 與( b 1 )分別表示為元素 b 的加法和乘法反元素。
2.2 伽洛瓦場與多項式
伽洛瓦場中,以二元場 GF(2)={0,1}為最簡易的有限場,同理 GF(2)也可被擴展成
一有限場 GF(2m) 。在編碼理論中,這兩種應用最為常見,其加法與乘法分別建構在
3
Module-2 加法及 Module-2 乘法上,定義如表 2-1:
表 2-1、Module-2 加法與 Module-2 乘法
0 1 ˙ 0 1
0 0 1 0 0 0
1 1 0 1 0 1
在 GF(2)的伽洛瓦場中,加法跟乘法的運算都滿足場的封閉性與結合性,根據
Module-2 加法及乘法的運算結果,若有一多項式其係數由 GF(2)場中的元素{0,1}所構
成,則稱為 GF(2) 多項式,而此多項式的係數可依照上表運算的結果做四則運算。在
討論伽洛瓦場與多項式的關係之前,首先定義下面兩種多項式:
因 RS 碼為循環碼,且 GF (2 m ) 具有著循環性,故適合運用在此。而有限場的基本元素
能以三種方式來表示,依序分別為 Power、Polynomial 以及 Binary 表示法。表 2-2 是
以本質多項式 f ( x) x x 1 為例所建立的 GF(24)有限場。
4
4
表 2-2、由 f ( x) x x 1 所產生之 GF(24)有限場的基本元素列表
4
2.3 伽洛瓦場的基本四則運算
在有限場中,因元素 0 與 1 的反元素都為元素本身,因此伽洛瓦場的減法如同加
法,除法則如同乘法,都可利用反元素運算完成。而 GF(2m)在硬體上則是直接使用 m
個 XOR 閘來設計,之後再將其結果與 GF(2m)的對照表作轉換即可,如表 2-2。在 RS
解碼器中乘法運算方式可分為兩種,分別為變數-變數,以及常數-變數乘法運算,接
下來將介紹這兩種不同的運算過程。因除法為乘法之反元素,故在此先用乘法來介紹,
最後再說明如何在伽洛瓦場中做除法運算。
2.3.1 變數-變數之乘法運算
變數-變數乘法運算是將兩指數 a x 、 b y 相加並以 2m-1 取餘數[ (x + y) mod (2m-1)],
再與表 2-2 做為對照便得到相對應的元素。為了方便運算,RS 碼將每個 i 元素都視
為一個數值,但此方式在硬體上並不適合,而較適合使用一般所熟悉的多項式乘法運
算,且在硬體實現上採用 m 位元的全乘法器來實現。
當 m 階多項式的相乘後,展開部分乘積並加總後,其運算結果階數可能會超過 m,
但表中最大的元素只有到 2 m2 。因此在多項式相乘後,在有限場階數內必須經過餘式
化簡(Modular Reduction)的步驟。下列說明變數-變數乘法運算,令 O(x) 為多項式乘
積,相當於 a(x) 與 b(x) 的乘積,其關係式為:
( x) b( x) mod f ( x) O( x) (2-2)
5
其中 f ( x) x 4 x 1 為本質多項式,假設 a(x) 與 b(x) 表示為:
a( x) a3 x3 a2 x 2 a1x1 a0 x0 (2-3)
b( x) b3 x3 b2 x 2 b1x1 b0 x0
a( x) b( x) a3 b3 x 6
(a3 * b2 a 2 * b3 ) x 5
(a3 * b1 a 2 * b2 a1 * b3 ) x 4
(a3 * b0 a 2 * b1 a1 * b2 a0 * b3 ) x 3 (2-4)
(a 2 * b0 a1 * b1 a0 * b2 ) x 2
(a1 * b0 a0 * b1 ) x1
a0 * b0 x 0
然而以 GF(2m)為例,針對超過有限場範圍階數的次方項分別取 f ( x) x 4 x 1 的餘
式,也可對照表 2-2 所知:
基於簡化後的(2-5),將其展開並將相同次方之係數做合併,得到結果如式(2-6):
( x) b( x) mod f ( x)
(a3 * b3 a3 * b0 a 2 * b1 a1 * b2 a0 * b3 ) x 3
(a 2 * b0 a1 * b1 a0 * b2 a3 * b3 a3 * b2 a 2 * b3 ) x 2 (2-6)
(a1 * b0 a0 * b1 a3 * b2 a 2 * b3 a3 * b1 a 2 * b2 a1 * b3 ) x 1
(a0 * b0 a3 * b1 a 2 * b2 a1 * b3 ) x 0
2.3.2 常數-變數之乘法運算
上述變數-變數的全乘法器,足以作為 RS 解碼器的基本乘法運算,但常數-變數乘
法器在徵狀值產生器(Syndrome Generator)中,只需乘上固定常數 i ( 1 i 2t ),為了
減少使用面積,其採用一輸入端為固定值之常數的乘法器[8]。
6
( x) b( x) mod f ( x)
(0 0 b1 0 0) x 3
(b0 0 0 0 0 b3 ) x 2 (2-7)
(0 0 0 b3 0 b2 ) x 1
(0 0 b2 0) x 0
O3 b1 , O2 b0 b3 , O1 b2 b3 , O0 b2 (2-8)
由上述簡化後,在硬體實現上能夠將固定的常數帶入多項式乘法展開,再加以展
開便可得到由變數 b(x) 所組成的一方程式。
2.3.3 伽洛瓦場的除法運算/乘法反元素
由於有限場的除法在硬體上有著高複雜度,依據有限場的性質,除法的運算可以
利用乘法與反元素來運算,除法 a b 可表示為 a (b 1 ) 。因此可先求得 b 的乘法反元
素( b 1 ),再與 a 進行乘法運算,而關於求得乘法反元素的方式,以 Euclid 提出的輾轉
相除法較為著名,但此法複雜度跟運算時間較大,因此大多會使用事先建立好的反元
素表,來尋找出 b 的反元素,即為查表法(Look-up Table),目前大多數論文中都是採用
此法來節省硬體面積。
7
第3章 里德-所羅門碼原理
3.1 簡介
於 1960 年由 I. Reed 和 G. Solomon 所共同發表里德-所羅門碼(Reed-Solomon, RS
Code),屬於線性區塊碼(Linear Block Code),根據其非二進制的特性,RS 碼將規範內
一連串的位元視為一個值,每一個值都統稱為一個符元(Symbol)。當訊息因傳輸過程
中,受到雜訊干擾而產生一連串錯誤位元時,稱為叢發錯誤(Burst Error)。與二進制的
BCH 碼相比起來,RS 碼可將包含這一連串錯誤值的符元做更正,達到一次對多個位
元做更正的效果。由於 RS 碼擁有良好的叢發錯誤的更正能力,使得其發展迅速受到
各種通訊系統的青睞,近年來擴展至光纖通訊及衛星通訊。
針對各種 RS 解碼演算法已陸續被提出,如 Berlekamp-Massey 及 Euclidean 演算
法,此兩種演算法為代數解碼演算法;然而步階式解碼演算法由 Massey 針對 BCH 碼
所研發的解碼演算法,並於 1965 年所提出。目前已有許多論文針對步階式演算法進行
改良,並利用此演算法進行解碼器的硬體設計與實現。
3.2 里德所羅門碼基本架構
RS 碼通常被定義為(n, k)的形式,表示一個完整 RS 碼的字碼(Codeword)含有 n 個
符元數及 k 個原始訊息,運算建立在有限場 GF(2m),m 則代表 n 個符元數中每個符元
的位元數。圖 3-1 為 RS 碼封包組成,由 k 個原始訊息及 n–k 個查核碼(Parity-Check Code)
所組成,一個建立在 RS 碼可更正 t 個錯誤,其參數間的關係如下:
m :每個符元(Symbol)的位元數
t :可更正錯誤符元數最大量
k n 2t :原始訊息符元數
n 2m 1 :字碼長度(Codeword Length)
n k 2t :查核碼(Parity Check Code)
dmin = 2t+1:最小距離(Minimum Distance)
Symbol
( bits)
RS CodeWord
symbols
圖 3-1、里德-所羅門碼區塊示意圖
圖 3-2、RS(255, 239)封包組成
3.3 里德所羅門碼之編碼
在 RS 碼編碼中,主要是將每一訊息區塊透過加入額外資料,以達到保全訊息的
作用,這些額外的資料稱為查核碼,此碼在解碼端可被用來達成錯誤更正時參考之用。
RS 碼(n, k)表示將長度為 k 的訊息符號元,編碼成長度為 n 的字碼符號元序列,其中
每一個訊息符號元及字碼符號元均為 GF(2m)中的元素,而查核碼個數為 n-k 個,最多
可改正(n-k)/2 個錯誤符號元。因每個符元都具有 m 個位元(Bit)訊息,藉此能有效的更
正叢發錯誤,因為無論一個符號元中有多少位元產生錯誤,都僅僅表示一個符號元發
生錯誤,而對於隨機錯誤(Random Errors)而言,RS 碼的性能較不顯著。
令α為有限場 GF(2m)的本質元素,則可改正 t 個錯誤符號元的生成多項式
(Generator Polynomial) g(x)包括α, α2, …, α2t 這些根,因此 g(x)可表示為
2 t 1
g ( x) ( x i ) ( x 0 )( x 2 ) ( x 2t 1 )
i 0 (3-1)
2t 1
g 0 g1 x g 2 x g 2t 1 x
2
x 2t
由此可知,當 g(x)設計的階層越高,代表增加的查核符號元也越多,即糾錯能力就越
強 。 一 般 編 碼 方 式 可 分 為 兩 種 , 分 別 為 非 系 統 化 (Nonsystematic) 編 碼 與 系 統 化
(Systematic)編碼,以下將介紹其優點及缺點。在 RS 碼中,可將原始訊息視作 k 個符
元數,其序列為(m0, m1, …, mk-1),它的訊息多項式 m(x)可表示為:
m( x) m0 m1 x1 mk 1 xk 1 (3-2)
非系統化編碼是利用生成多項式與訊息多項式相乘,其字碼是隨機的。原本的訊息訊
號會被改變,以至於解碼端接收到時,需要將收到的訊息除以生成多項式,才能獲得
原始訊息。故在電路設計上的難度大增,因此較少被採用。
相較於非系統化編碼,系統化編碼與前者相比雖較複雜,但其優點為較具系統化,
原始訊息不會因編碼而改變,故在解碼過程中可以快速地得到原始的訊息,進而提升
解碼效率。對於編碼的方式,首先將訊息多項式 m(x) 移位過後,再與生成多項式 g (x)
相除,得到需額外增加的查核碼(Parity Codes),查核碼 p(x)可表示為:
9
p( x) p0 p1 x1 pk 1 xk 1 (3-3)
將以上查核碼與訊息多項式合併便可完成 RS 的編碼動作。
根據前一節的定義, n k 2t ,因此需先將原始訊息多項式 m(x) 乘上 x n k ,在數
學上的意義等同於位移 2t ,又因 RS 碼為循環碼(Cyclic Code)。因此在數學意義上,
經過位移後的字碼不會被改變,接著再除以生成多項式 g (x) 取餘數,就會得到我們要
的查核碼 p(x) 。
m(x)
Original Message mk-1, … ,m1,m0
m( x ) x 2 t Shift 2t symbols
mk-1, … ,m1,m0
mod g(x)
圖 3-3、RS 碼之系統化編碼
m( x) x nk
q( x) p ( x) (3-4)
g ( x)
將式(3-4)做一個整理,等號左邊即為 RS 碼的表示式,如式(3-5):
m( x ) x n k
p( x) q( x)
g ( x) (3-5)
nk
m( x) x p ( x) g ( x) q ( x)
3.4 里德所羅門碼之解碼
由於 RS 碼為非二元碼,所以需要決定符號元的錯誤位置(Error Location),以及其
相對應的錯誤值(Error Value)。與編碼部分相比,解碼過程一直是大家熱烈探討的部
10
分。以下,我們將分別介紹代數解碼演算法以及步階式解碼演算法的流程。
假設原始訊息的字碼為 c(x) :
接收到的訊息字碼假設為 r (x) :
若經過通道傳輸,傳輸訊息有可能受到通道雜訊的干擾,故接收訊息包含原始訊息及
外加的雜訊(Error Pattern),而這接收到的訊息可表示為 r ( x) c( x) e( x) 。假設錯誤多
項式為 e(x) :
r ( i ) c( i ) 0 (3-9)
若 e( x) 0 ,則代表在通道傳輸的過程中,受到通訊雜訊的干擾,在原始訊息裡產生雜
訊。然而,因接收訊息多項式是由原始訊息與錯誤訊息所組成,故將所有的有限場元
素之根 i , i 1, 2, , 2t 代入接收訊息多項式 r (x) 後,原始訊息多項式必為 0,故只會
剩下錯誤多項式,因此可以得到以下的關係:
當接收端收到訊號時,我們需要確認收到的訊息是否為正確,可利用計算徵狀值
(Syndrome)加以判斷資料是否有誤。若徵狀值為零,則代表收到的信號是正確的;反
之,若傳輸過程中受到雜訊干擾而導致錯誤產生,則有非零徵狀值出現。然而,不論
採用那種演算法來進行解碼,都必須先經過徵狀值計算。
徵狀值的計算原理是將生成多項式 g(x)中包含的所有根 a , 2 , , 2t 代入接收訊
息多項式 r(x)中,其更正能力為 t 個錯誤的 RS 碼會產生 2t 個徵狀值。藉由所計算出
的徵狀值來判斷是否有錯誤,只要其中任一徵狀值不為零,就代表接收訊息有錯誤產
生;反之,所有徵狀值皆為零,則接受訊息即為正確。由式(3-11)可得知徵狀值的計算
方式如下:
Si r ( i ) e( i ) (3-11)
由上列描述可知,計算徵狀值僅須將有限場元素的根 i 代入即可算出,但計算徵狀值
11
只能偵測接收到的訊息有無錯誤,實際還是需找出錯誤位置及相對應的錯誤值,這些
程序得依靠解碼演算法來解決,以下將分別介紹代數解碼及步階式解碼演算法。
3.4.1 代數解碼演算法
代數解碼法在 RS 碼解碼上,較常使用之兩種演算法:Berlekamp-Massey(BM)以
及 Euclidean 演算法,以上兩種主要都是用來求解關鍵方程式(Key Equation)後,再去
找尋錯誤位置多項式(Error-Locator Polynomial)與其相對應的錯誤值。解碼流程大致分
為以下五個部分:
1. 計算徵狀值 S i (Syndromes)
2. 依據 Berlekamp-Massey 或 Euclidean 演算法決定錯誤位置多項式 (x) 。
3. 利用 Chine search 找出錯誤位置的根,即為錯誤位置。
4. 對於每個錯誤位置利用 Forney 演算法找出其對應之錯誤值。
5. 利用 r ( x) c( x) e( x) 將錯誤更正回來。
e( x) e j1 x j1 e j2 x j2 e jv x jv (3-12)
i j , for i = 1, 2, …, v
i
(3-13)
由式(3-11)和式(3-12)得知
S1 e j1 j1 e j 2 j2 e jv jv
S 2 e j1 2 j1 e j 2 2 j2 e jv 2 jv
(3-14)
S 2t e j1 2tj1 e j 2 2tj2 e jv 2tjv
由式(3-14)中,等號左邊為已知的徵狀值,而等號右邊錯誤位置 e ji 與錯誤值 ji 則是我
們所需要求得的。在此,我們定義錯誤位置多項式(x)為:
( x) (1 1 x)(1 2 x) (1 v x)
(3-15)
0 1 x 2 x 2 ... v x v
12
其中
0 1
1 ( 1 2 v )
2 1 2 2 3 v 1 v (3-16)
v (1) v 1 2 v
而經由推導,可以將(3-14)與(3-15)中的係數 S i 與 i 得到下列之關係式:
接著在檢驗是否滿足下一個徵狀值 S i 1 時會產生差量(Discrepancy)
若 d i 0 ,則可往下檢查下一個徵狀值,不需修改錯誤位置多項式,故
若 d i 0 ,則需要透過加入修正項來修正錯誤位置多項式使得滿足徵狀值。此修正項
必須回到先前得第 q 個步驟得到 ( q ) ( x) ,其中 d q 0 且符合 q lq 為最大值與 lq lq1 。
因此,我們可以將 (i1) ( x) 改寫為:
其階數改變為
13
表 3-1、Berlekamp 遞迴演算法之初始值設定
i ( i ) ( x) di li i li
-1 1 1 0 -1
0 1 S1 0 0
2t
在式(3-15)中得知,若得到錯誤位置方程式的根,將伽洛瓦場 GF(2m)中的所有元
素帶入,若能令錯誤位置多項式 (x) 為零者,表示此元素為方程式之根,根之倒數即
為錯誤位置。而依序尋找所有元素帶入錯誤位置多項式的方法,即為著名的秦式搜尋
法(Chien Search)。
當找出錯誤位置後,Forney 利用錯誤位置多項式 (x) 與徵狀值多項式 S (x) 的關
係,推導出如何計算錯誤值的方程式。在此,我們先定義 (x) (Key Equation)為:
( x) ( x) S ( x) mod x 2t
1 ( S1 1 ) x ( S 2 1S1 2 ) x 2 (3-23)
( S v 1S v1 2 S v2 v ) x v
( i1 )
e ji (3-24)
( i1 )
最後將錯誤位置以及其對應之錯誤值加入接收訊息即可將錯誤更正回來。
為了更清楚了解 Berlekamp 的解碼過程,以下我們將用實例說明。假設一個在
GF (24 ) 含最大可更正 3 個錯誤的 RS 碼(t = 3),欲傳送字碼為:
v( x) (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
經由通道傳輸後,接收到的字碼為
r ( x) (0 0 0 7 0 0 3 0 0 0 0 0 4 0 0)
若將接收字碼改寫為多項式型態可得
r ( x) 7 x3 3 x 6 4 x12
如前述將 g ( x) 包含所有根, 2, ..., 6 代入式(3-11),可得 6 個徵狀值計算分別如下:
S1 r ( ) 10 9 12
S2 r ( 2 ) 13 1 13 1
S3 r ( 3 ) 6 10 14
S4 r ( 4 ) 4 12 7 10
S5 r ( 5 ) 7 3 4 0
14
S6 r ( 6 ) 10 9 12
根據表 3-1、式(3-20)以及式(3-21),分別計算 i = 0, 1, …, 5:
1 0 ( 1) 1
當 i = 0, d0 = S1, ( x) ( x) d0 d 1 x ( x) 1 12x
1 0
1 10 0
當 i = 1, d1 S 2 S1 1 1 1 , ( x) ( x) d1d 0 x ( x) 1 x
(1) 24 9 2 1 3
當 i = 2, d 2 S3 S 2 1(2) 14 3 1 ,
3 ( x) 2 ( x) d 2 d11 x 21 1 ( x)
(1 3 x) 7 x(1 12 x) 1 13x 5 x 2
當 i = 3, d3 S 4 S31(3) S 2 2(3) 10 12 5 11 ,
4 ( x) 3 ( x) d 3d 21 x 32 2 ( x)
(1 13x 5 x 2 ) 11x(1 3 x) 1 4 x 12 x 2
6 ( x) 5 ( x) d 5 d 41 x 54 4 ( x)
1 9 x 4 x 3 x 4 x 2 12 x 3 1 7 x 4 x 2 6 x 3
15
表 3-2、Euclidean 遞迴演算法之初始值設定
-1 1 1 x 2t -
0 0 1 S (x) -
( i1 )
e ji (3-26)
( i1 )
16
當 i =3
x 3 x 2 2 x 3 13x 4 q3 ( x)( 12 14 x 6 x 2 8 x 3 ) z3 ( x)
q3 ( x) 5 x, z3 ( x) 13 2 x
計算 u(x)
i 1, u1 ( x) 1 ( 3 x)0 1
i 2, u2 ( x) 0 ( 3 14 x)1 3 14 x
i 3, u3 ( x) 1 ( 5 x)( 3 14 x) 2 x 4 x 2
計算 v(x)
i 1, v1 ( x) 0 ( 3 x)1 3 x
i 2, v2 ( x) 1 ( 3 14 x)( 3 x) 1 6 x 2 x 2
i 3, v3 ( x) 3 x ( 5 x)(1 6 x 2 x 2 ) 8 x 5 x 2 7 x 3
( x) v3 ( x) / v3 (0) 1 7 x 4 x 2 6 x 3
( x) z3 ( x) / v3 (0) 12 x
接著將 1, , 2, …, 2t 代入可得 (x)之根為3, 9, 12,再取(x)根之倒數,可得錯誤
位置為12, 6,3。再利用 Forney 演算法,可分別得出對應錯誤位置的錯誤值,即
( 12 ) ( 9 ) ( 3 )
e3 7 , e6 3 , e12 4
' ( )
12
' ( )
9
' ( )
3
3.4.2 傳統步階式解碼演算法
步階式(Step-by-Step)解碼演算法與代數解碼演算法,最大的不同在於無須尋找錯
誤位置多項式的根及其對應錯誤值的計算。它是直接針對每一個符元,利用徵狀矩陣
(Syndrome Matrix)的特性,在偵測錯誤位置的同時,將所有可能的錯誤值進行測試,
進而求得錯誤值去加以更正,其主要優點為適用於平行運算,運算方式上與代數解碼
法相比也較為直覺。在現今高速環境下,利用平行運算的方式來達到速度的提升也儼
然成為一個重要的考量。
傳統式步階式演算法在設計之初,是針對 BCH 碼所設計的,由於其屬於二進制
循環碼,在錯誤值上僅有 0 與 1 的差異而已,因此只需要檢測該位置的符元是否錯誤,
圖 3-4 可看出步階式演算法在 BCH 碼的運算過程中,共需要 2m-1 的時脈週期,且整
個更正過程中,只要加上 1 便可更正錯誤。
17
2m-1 nonzero element
‧‧‧
S1 S 2 S v
S3 S v1
Si , det[ N v ( , l )] S 2
j j
S 'i
S v S v1 S 2 v 1
Operation times: 2m-1 x 2m-1
‧‧‧
S1 S 2 S v
S 2 S3 S v1
S 'i Si , det[ N v ( , l )]
l l
S v S v1 S 2 v 1
Operation times: 2m-1 x 2m-1
圖 3-5、傳統式步階式應用於 RS 碼示意圖
18
v 時,步階式演算法只需依靠 j j 的徵狀矩陣 N j (1 j v) 的行列式(Determinant)值,
就能夠進行更正的動作。若接收中實際錯誤的符元數目 v 小於 t ,組成的矩陣稱為奇
異矩陣(Singular Matrix),也就是說徵狀矩陣的行列式值 det(N v ) 0 ;當實際錯誤數目
v 等同於最大容忍的錯誤數目 t 時,則稱它為非奇異矩陣(Nonsingular Matrix),其中 v v
的徵狀矩陣 N v 為
S1 S2 Sv
S S3 S v1
Nv 2 (3-27)
Sv S v1 S 2v1
r ( x) r ( , j ) ( x) r ( j ) ( x)
(3-28)
rn- j rn- j 1 x rn-1 x j -1 r0 x j rn- j -1 x n-1
S1 S 2 S v
S S 3 S v1
det[ N v ( , j )] 2 (3-30)
S v S v1 S 2 v 1
利用徵狀矩陣的特性,若有一非零元素 加到某個符元做偵測,使得暫時變更徵
狀矩陣 Nv ( , j) 的行列式值為零,此時錯誤數目由 v 降為 v 1,代表被偵測的符元原
先是一個錯誤的值,而在解碼過程中,是透過將錯誤值 加至 r (x) 使得錯誤數目減少
一個,於是錯誤位置其相對應的錯誤值便等於 。透過不斷地計算新的暫時改變徵狀
矩陣,重複此步驟共 j ( j 1, 2, , n) 次,直到 j n ,代表所有的符元都被檢測完畢,
19
即可完成整個解碼動作,圖 3-6 為以上所述之步階式演算法流程圖。
Compute Syndrome
Si r ( i ) e( i ) Yes
det[Nv1 ( , j )] 0 ?
No
v = t, j = 0
Yes
Calculate determinant of syndrome
matrix for error number v No
S1
0
S2
0
Sv
0 det[Nv ( , j )] 0 ?
0 0 0
S2 S3 S v 1
det N v0
Yes
0 0 0
Sv S v 1 S 2 v 1 r ( x) r ( x)
Yes
det N v0 0 ? v = v-1
j = n?
No
No
Calculate determinant of Yes
temporarily changed syndrome matrix
S '1j S '2j S 'vj End
S' j
S' j
S 'vj1
' j
Si , det[ N v ( , j )]
j 2 3
S i
S 'vj S 'vj1 S '2j v 1 j=j+1
圖 3-6、步階式演算法流程圖
Error Number det[Nv (β, j)] det[Nv+1 (β, j)] Initial symbol correct
v→v ≠0 =0 X
v→v-1 =0 =0 O
前述傳統的步階式演算法步驟,歸納如下:
3.4.3 新型步階式解碼演算法
S1 S 2 S v S1j S 2j S vj
S S 3 S v1 Sj S 3j S vj1
det[ N v ( , j )] 2 2
S v S v1 S 2 v 1 S vj S vj1 S 2jv 1 (3-31)
S1 S 3 S2 S4 S v-1 S v 1
j j j j j j
S1j S 2j S vj
S2 S4 S3 S5 S v S v2
j j j j j j
Sj S 3j j
S v 1
2
S v-1 S v 1 S j S v2 S 2 v-3 S 2v 1
j j j j j j
S vj S vj1 S 2jv 1
S1j S 3j S 2j S 4j S vj S vj 2
S j S 4j S 3j S 5j S vj1 S vj3
det(M vj ) 2 (3-32)
S v S vj 2
j
S v1 S vj3
j
S 2v 1 S 2jv 1
j
det( N vj ) v det(N vj 1 )
2
(3-34)
22
因此根據表 3-3 的錯誤偵測方式,我們只需針對每一個符元求 det(M vj1 ) ,之後只要透
過 det(M vj1 ) 以及 det( N vj ) 兩式相除即可,便可以求得錯誤位置其對應之錯誤值 β
S1 S 3 S2 S4 S v-1 S v 1
j j j j j j
S2 S4 S3 S5 S v S v 2
j j j j j j
det(M v 1 )
j
(3-35)
S v-1 S v 1 S j S v 2 S 2v-3 S 2v 1
j j j j j j
det( N vj )
(3-36)
det(M vj1 )
由表 3-3 可知,步階式演算法是以位置來依序對每個符元做解碼,因此假設錯誤
數目為 v 時,必須再次利用式(3-31)來計算 det[Nv+1 (β, j)],以防止表 3-3 所描述之錯誤
數由 v→v+1 之情形,而計算 det[Nv+1 (β, j)]的同時需得知 det(Nv+1)及 det(M vj ) ,後者則
是前面所定義的式(3-32)。根據徵狀矩陣的特性,假設錯誤數目為 v 時, det( N vj ) 為偵
測錯誤時所計算出第一個非零的行列式,故 det(N vj1 ) 必定為零,因此我們只需計算
det(M vj ) 是否為零,若 det(M vj ) 為零,則 det[Nv+1 (β, j)]=0;反之,若 det(M vj ) ≠0,則
det[Nv+1 (β, j)]同樣不為零。
根據上段說明,在檢測 det[Nv+1(β, j)]的方式,僅需計算 det(M vj ) 是否為零即可偵
測錯誤數量是否增加的情況。此外當 v = t 時,不免會發現 det(M vj ) 中會有一個不存在
的徵狀值 S 2t 1 ,在求徵狀值時只能求出 S1 S 2t ,並無 S 2t 1 的產生,因此無法計算 det(M
j
v )。所以先利用(3-36)優先算出錯誤值 β,再針對 β 直接計算 det[Nt+1 (β, j)],雖然其中
徵狀值 S 2t 1 還是存在:
S1 S 2 S t1
S t S 3 S t 2
det[ N t 1 ( , j )]
S t1
S t 2 S 2t 1
(3-37)
S1 S 2 S t
S 2 S 3 S t1
S t S t 2 S 2 t 1
23
z11 z12 z1n
z z 22 z1n
Z 21 (3-38)
z n1 zn 2 z nn
將式(3-38)化簡後可得到式(3-39):
得;而錯誤值 不必使用除法器求得,可利用有限場的特性,利用乘法反元素來相乘,
以達到和除法相同效果,此舉簡化傳統步階式演算法對於行列式計算的大量運算,圖
3-7 為新型步階式演算法的流程圖。
24
Receive massage r(x)
Compute Syndrome
Si r ( i ) ei ( i )
det( M v 1 ) 0 ?
j
Yes
v = t, j = 0 No
Calculate error value β
j
det( N v )
Calculate determinant of syndrome j
matrix for error number v det(M v 1 )
0 0 0
S1 S2 Sv
0 0 0
det N 0
S2 S3 S v 1 Calculate
v = t?
det[Nt+1 ( β, j)]
0 0 0
No
Sv S v 1 S 2v 1
det( M v ) 0 ?
j
No
Yes
Yes
det N 0?
' v = v-1 Error correct Yes
det[Nt 1 ( , j )] 0 ?
j
r ( x) r ( x)
No
No
Calculate S 'i j Si j det(N v j ) v det(N v j 1 ) 2
No
S1 S 3
j j
S2 S4
j j
S v-1 S v 1
j j j = n?
S2 S4 S3 S5 S v S v 2
j j j j j j
det(M v 1 )
j
Yes
S v-1 S v 1 S j S v 2 S 2v-3 S 2v 1
j j j j j j
End
j=j+1
圖 3-7、新型步階式演算法流程圖
根據上述,在此將新型步階式演算法的步驟,歸納如下:
1. 利用接收到的訊息 r(x)計算初始徵狀值 S i (i=1, 2, …, 2t)。
2. 計算初始徵狀矩陣 det(N v ) ,v 由可更正能力之最大數目 t 開始遞減(v = t,
t-1, …),直到找到第一個非零的 det(N v ) ,藉此決定接收資料的錯誤數目
v。
3. 若 v =0,則前往步驟 10。
4. 計算行列式 det(M v1 ) ,若 det( M v1 ) 0 ,則代表沒有錯誤;反之,前往步
驟 5。
5. 將步驟 2 所求 det(N v ) 與步驟 4 所求的 det(M v1 ) 相除,以求出錯誤值β,
前往步驟 6。
6. 若 v = t,前往步驟 8。
7. 若 v≠t,則只要計算 det(M v ) 的值,當 det(M v ) 0 ,前往步驟 9;反之,
無需更改
8. 透過(3-28)求得 det(N v1 ( , j )) ,當 det(N v1 ( , j )) 0,前往步驟 9;反之,
則無需更改。
9. 將接收訊息 r ' ( x) 與錯誤值β相加: r ( x) r ' ( x) ,進而把錯誤訊息更
正為正確訊息。
10. 解碼完成。
25
3.4.4 改良型步階式解碼演算法
上述由 Tung-Chou Chen 等所提出的演算法,對於找出錯誤值的運算次數雖然有所
改進,但仍然需要運算 det(M vj1 ) 的次數為 2m-1,而隨著字碼長度 n 及錯誤數目 v 的增
加,解碼的計算將會越來越複雜。在 2007 年 Xiaobei Liu 等提出不需再每個位置都去
計算行列式 det(M vj1 ) 的問題,可透過化簡成其他行列式來簡化其複雜度,根據此文獻
[5],式(3-29)可重新表示如下:
Si ( , j )
r0 r1 i (r j ) ji rn1 ( n1)i
(3-41)
r ( i ) ji
S i ji
求出新的徵狀值之後,帶入到式(3-30)可得到:
S1 ( , j ) S 2 ( , j ) S v ( , j) S1 j S 2 2 j S v vj
S ( , j) S 3 ( , j) S v1 ( , j ) S 2 2 j S 3 3 j S v1 (v1) j
det[ N v ( , j )] 2 (3-42)
S v ( , j ) S v1 ( , j ) S 2v1 ( , j ) S v S v1 (v1) j
vj
S 2v1 ( 2v1) j
v
det[ N v ( , j )] det N v ( 2 x1) j det N vxx (3-43)
x 1
( 2 x 1) j
xx
x 1
det(N vvv ) :
S1 S2 Sv
S v1
det N vvv S
2
S3
(3-44)
Sv S v1 S 2v1
v
H v , j ( 2 x1) j det N vxx (3-45)
x 1
然而,判斷錯誤數目時,可以分成以下兩點來討論:
26
1. 若 Hv, j= 0:依照步階式演算法,我們先假設偵測的位置符元為錯誤的,因此
會有一非零元素 存在,當錯誤位置加上錯誤值 ,錯誤數目就會減少,透
過式(3-43)可知,當 Hv, j= 0 時,可將式(3-43)改寫成
det[N v ( , j )] det N v 0,則代表沒有非零元素 存在,所以第 j 個偵測的
位置符元,其相對應的值必為正確的值。
2. 若 Hv, j≠0,依照步階式演算法,我們先假設偵測的位置符元為錯誤的,因此
會有一非零元素 存在,當錯誤位置加上錯誤值 ,錯誤數目就會減少,透
過式(3-43)可知,當 Hv, j≠0 時,可將式(3-43)會得到一非零元素 ,因此在第
j 個偵測的位置符元,其相對應的值必為錯誤的值,而非零元素 要如何求
得,後面會再加以介紹。
然而最終判斷錯誤與否則要透過表 3-3 去判斷,以下將表 3-3 的情況來敘述,一個能
夠更正 t 個錯誤值的 RS 碼,即更正能力為 t,在判斷錯誤數目是否由 v→v+1 時,會出
現 Hv+1, j,如式(3-46),並分成下列兩種情況來討論:
v 1
H v1, j ( 2 x1) j det N vxx1 (3-46)
x 1
27
上述只解說了找尋錯誤位置,以下將描述如何找出其相對應的錯誤值,並更正。
改良型步階式演算法,若 Hv+1, j = 0 且 Hv, j ≠ 0,可以判別接收字碼 r (x) 的錯誤位置
已被偵測出來,而在每個符元上,透過將式(3-43)等號右邊的 det(Nv )與 Hv, j 相除,即
可求得錯誤值 β,如式(3-47)。
det N v
(3-47)
H v, j
圖 3-8 為改良型步階式演算法的流程,此流程圖與新型步階式演算法所提出的簡
化方式略同,將步階式演算法的運算次數維持在 2m-1,不同處在於改良型步階式演算
法將行列式的計算與步階式的解碼計算做區隔,而不需像新型在每移動一個符元位置
後,去計算 v v 矩陣之行列式值,只需計算 v 個 det(N vxx ) 後,並利用式(3-45)的特性,
便可求出錯誤值。基於這改良型的步階式演算法,在硬體實現時,便只須專注在行列
式運算電路的設計上即可。
圖 3-8、改良型步階式演算法流程圖
最後將改良型步階演算法的步驟歸納如下[5]:
28
減,直到找到第一個非零的 det(N v ) ,藉此決定接收資料的錯誤數目 v。
3. 若 v =0,則前往步驟 9。
4. 計算行列式 det(N vxx ) 與 det( N vxx1 ) ,並將所有的行列式值儲存起來。
5. 若 v = t,則前往步驟 7。
6. 對於 j = 0, 1…, n-1,必須計算 Hv+1, j。若 Hv+1, j≠0,表示原先的接收值為正
確,加上錯誤值後,使錯誤數目由 v 增加為 v+1,故無須更正錯誤;若 Hv+1, j
= 0,則計算 Hv, j,透過(3-38)求得錯誤值β,前往步驟 8。
7. 對於 j = 0, 1…, n-1,必須計算 Hv, j。若 Hv, j = 0,表示原先的接收值為正確;
反之,若 Hv, j ≠0,利用式(3-38) 求得錯誤值β。接著透過假設 S 2t 1 0 去計
算 det( N v1 ( , j )) ,若 det(N v1 ( , j )) 0 ,前往步驟 8。若 det(N v1 ( , j )) 0 ,
表示原先的接收值為正確,加上錯誤值後,使錯誤數目由 v 增加為 v+1,故
無須更正錯誤。
8. 將接收訊息 r ' ( x) 與錯誤值β相加: r ( x) r ' ( x) ,進而把錯誤訊息更正為
正確訊息。
9. 解碼完成。
29
第4章 里德-所羅門解碼電路
4.1 平行化改良型步階式里德-所羅門解碼器硬體架構
由上述改良型步階式演算法 的流程可知,整個解碼過程順序為徵狀值計算
(Syndrome Calculator) 、 行 列 式 值 計 算 (Determinant Calculator) 、 錯 誤 數 目 偵 測
(Error-Number Detector)、錯誤值偵測(Error-Value Detector),以及最後得更正而完成解
碼。
det(Nv)
det(Nv+1)
input det(Nv+1xx)
Error
Ch1 Error det(Nv+1xx)
Syndrome Determinant det(Nv) Hv,j Correct
Ch2 Number
Calculator Si 0 Calculator Delta
Error Value
Detector V Hv+1,j
Ch3 Accumulation
det(Nvxx) & Summation
det(Nvxx)
Ch1
8x170 FIFO Register File Ch2
Ch3
output
圖 4-1、平行化改良型步階式 RS 解碼器架構圖
1. 伽洛瓦場乘法器
2. 徵狀值計算器
3. 行列式計算器
4. 錯誤數目偵測器
5. 錯誤值檢測器
6. 先進先出緩衝暫存器
4.2 伽洛瓦場乘法器
在 RS 解碼的過程中,乘法器為重要的基礎運算電路,而乘法運算與加法運算相
比也複雜許多。因此,在討論各電路之前,先介紹伽洛瓦場乘法器的架構,其中在 2.3
節已經有伽洛瓦場的基礎理論,而下面分為兩種乘法器,分別為變數-變數與變數-常
數之乘法器,依照所需條件的不同,去取決於要使用哪種乘法器,以節省大量的硬體
面積。
30
4.2.1 變數-變數之乘法器
變數-變數乘法器為最通用的乘法器,其輸入均為非固定值之變數,為了降低乘法
器的複雜度,參考許多文獻後,我們採用全平行乘法器(Full Parallel Multiplier)作為 RS
解碼器的基本乘法運算架構。我們以 GF(24)為例,假設在有限場中的兩個變數元素分
別為 a a3 x 3 a2 x 2 a1 x a0 及 b b3 x 3 b2 x 2 b1 x b0,其運算過程主要分成下列三個
步驟[8]:
1. 將兩兩相乘後,依照一般的乘法運算,將其結果展開,再將相同階層的係數
做加法運算。
2. 將超過有效階層的係數,分別依序對本質多項式取餘式,此動作將會得到低
階多項式,此稱為餘式化簡(Modular Reduction)。
3. 透過將餘式化簡後,將相同階層的係數再做一次加法運算,化簡得到的簡化
係數會成為有限場內的元素。
超過有效階層之係數區域
圖 4-2、一般乘法運算過程示意圖
超過有效階層之係數區域
將超過有效階層之係數區域
化簡成有效階層
圖 4-3、GF(24)乘法運算過程示意圖
31
圖 4-2 先利用 AND 及 XOR 邏輯閘來達成運算,接著圖 4-3 透過事先決定整理好
的所有運算方式,計算出需要利用多少 AND 及 XOR 去運算。
圖 4-4、GF(24)全平行乘法器[9]
4.2.2 常數-變數之乘法器
一個輸入端為固定值之乘法器,稱為常數-變數乘法器,為徵狀值計算器與後續電
路所使用到的乘法運算,能夠降低面積及功率消耗。一個建立在 GF(28)有限場的常數
-變數乘法運算式子,依照 2.3.2 小節可化簡表示為:
32
16
為最省邏輯閘數,但對於 α 來說卻耗費相當大的邏輯閘數,因此常數-變數乘法器與
全乘法器相比,仍然能夠省下不少的晶片面積。
GF(28)常數-變數乘法器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
常數值 α α α α α α α α α α α α α α α α
XOR
3 6 9 12 16 19 21 23 22 21 21 21 20 21 23 24
邏輯閘數量
4.3 徵狀值計算器
由解碼流程可知,首先必須先計算徵狀值,其主要目的為判斷接收訊息 r(x) 是否
因受到雜訊的干擾而產生錯誤 e(x) 方程式。若徵狀值為零,表示 r(x) 沒有受到雜訊
干擾,無須進行錯誤更正程序;反之則將此值傳給下一個模組,執行計算行列式的值,
式(3-11)的徵狀值可展開表示為:
S i r ( i ), 1 i 2t
rn1 ( i ) n1 rn2 ( i ) n2 r1 ( i ) r0 (4-2)
( ((0 i rn1 ) i rn2 ) i ) r1 ) i r0
4.3.1 單輸入之徵狀值計算器
由式(4-2)可知,計算徵狀值的方式,相當於連續遞迴乘以同一個常數 i ,因此,
只需要一個乘法器及加法器便可完成,其中常數 i 隨著 i 值的變化而有所不同。以
RS(255, 239)的解碼器來說,共需要 255-239 = 2t = 16 個徵狀值,即 S1~ S16,而將式(4-2)
實現需要使用到 16 個常數-變數乘法器,圖 4-5 為徵狀值計算器的電路架構。
α1 α2 α3 αi
……
D D D D
S1 0 S2 0 S3 0 Si 0
圖 4-5、徵狀值計算器硬體架構
33
4.3.2 平行化之徵狀值計算器
對於上述電路中,僅計算徵狀值就需 255 個時脈週期,而在本論文中,可利用
Honor’s Rule 將式(4-2)改寫成為:
S i r ( i ), 1 i 2t
(( (rn1 ( i ) 2 rn2 ( i )1 rn3 )( i ) 3
(4-3)
(rn4 ( i ) 2 rn5 ( i )1 rn6 ))( i ) 3
r2 ( i ) 2 r1 ( i )1 r0
load
8
0
1 0 load
8
0 8
8
D 1
圖 4-6、平行化徵狀值計算器架構
圖 4-7、平行化之電路模擬時序圖
34
4.4 行列式值計算器
如前章節所述,改良型步階式演算法必須先計算所有的行列式值,再傳送至下一
個模組做儲存。文獻[2]使用先前所提過的新型步階式演算法,但在計算行列式的電路
的設計上,卻只利用最基本的乘法器與加法器構成,以達到行列式的乘加運算,此種
計算及設計方式,僅適用於低維數的矩陣行列式計算,隨著矩陣維度的增加,單純的
乘加運算在計算上面會過於複雜,並且在硬體實作上,會因使用大量乘法器而增加晶
片面積,這就是步階式 RS 演算法沒有受到太多關注的主要原因。
針對行列式計算,我們採用高斯消去演算法 (Gaussian Elimination Algorithm),比
起眾多計算行列式值的方式,此方法能有效減少硬體複雜度的一種計算方式,其方式
是將矩陣透過乘法與加法化簡成三角矩陣,並利用對角線上的軸元值(Pivot Value),逐
步累乘來計算出所需之行列式值,因此在硬體設計上需要加一個乘法器以及暫存器,
圖 4-8 為行列式計算器的基本架構圖。
Syndrome axis
Gaussian Elimination
MUX
D
圖 4-8、行列式計算器基本架構圖
接下來將分別簡單介紹高斯消去法以及一維心臟式陣列架構與二維心臟式陣列架
構之高斯消去演算法的運算方式及其優缺點。
4.4.1 高斯消去演算法
高斯消去法為線性代數中常見的計算,其主要目的是藉由消去過程使矩陣化簡,
進而求得線性方程組所有的解。若將線性方程組的係數視為一個矩陣,假設有一大小
為 i j 的矩陣,其具有下列三種運算性質:
1. 軸元值:指該列由左至右最先出現的非零元素。
2. 三角矩陣的零列通常置於矩陣最底下。
3. 每個軸元會形成一對角線。
35
圖 4-9 是利用高斯消去法後所得到之三角矩陣,倒三角形表示的一個不為零的軸元
值,而右上方的部分則可為任意值。
0
0 0
0 0 0
0 0 0 0
圖 4-9、三角矩陣矩陣示意圖
透過將三角矩陣中對角線上的值累乘,即可求出所需之行列式值,因此在一個大
小為 i j 的矩陣中,下一次的高斯消去便從第(i + 1)行第(j + 1)列中,由新求出的軸元
值開始做運算。而利用列運算逐步地一行一行化簡為三角矩陣的過程,便稱為部分軸
元化 (Partial Pivoting)。
4.4.2 高斯消去法之心跳式架構介紹
為了實現高斯消去演算法,在步階式中我們參考許多文獻[6][7],皆以[7]所提出的
心跳式架構(Systolic Array Architecture)為參考依據,而此兩篇文獻所用模組為圖 4-10
的軸元模組及圖 4-11 的列運算模組。
ain
init OPout
Dout
axis
圖 4-10、軸元模組[7]
init ain
OPin OPout
Din Dout
aout
圖 4-11、列運算模組[7]
36
1. 軸元模組(Pivot Module):當控制信號 init = 1 的時候,先將第一個載入的 ain 當做
軸元值輸出並儲存,接著確認下一個載入的 ain 的大小,來判斷整列元素是否該交
換、不變或是取代。當 init = 0 時,將訊號 OPout 傳遞給列運算模組,而在每一個
計算時,需將縮放值 Dout 的大小傳遞給列運算模組。
Input data
(x,x) (0,x)
End
圖 4-12、軸元模組之運算流程圖
37
Input data
add
OPout = OPin
Dout = Din
End
圖 4-13、列運算模組之運算流程圖
4.4.3 一維心跳式陣列
在文獻[6]的架構中,為使用一維心跳式陣列去實現高斯消去法,其電路主要由一
個軸元模組與八個列運算模組所組成,經由軸元模組計算後所求之數值,透過移位暫
存器先儲存起來,當第一個軸元模組計算完畢後,再將先前所儲存的值,依序載入至
下一個列模組。此方式的優勢為,在晶片面積上可以大大減少乘法器與加法器的使用,
其缺點為所需運算得週期較長。如圖 4-14 所示為高斯消去之一維心跳式陣列電路。
8 8 mode
8 8 8 8
…
1
0
1
init
r1 S1 S2 … S6 S7 S8
rowout
64
…
…
…
…
…
axis
…
圖 4-14、高斯消去之一維心跳式陣列電路
38
依據上述所提之基本列運算性質,下列將對於兩個主要使用的模組作為介紹:
1. 軸元模組:如圖 4-10 中的圓形模組,首先將第一個非零元素當作軸元作輸出並儲
存起來,接著利用下一個載入的元素,若載入的元素為非零元素,則將整列的元
素做縮放後並且取代;若載入的元素為零則不變,此判斷結果也在下一週期一併
傳遞給下一個列運算模組。
2. 列運算模組:如圖 4-11 中的方型模組,大致上與軸元模組相同,載入的第一個元
素並且儲存起來,接著根據軸元模組所傳送過來的信號,來決定要做何種動作,
包括與第一列的元素做相加取代、交換以及不變的動作。
4.4.3.1 一維行列式值計算器
一維高斯消去電路與二維高斯消去電路相比,雖然在硬體方面會節省許多,但換
來的確是在運算週期上需要較多的時間。當利用一維高斯消去電路去計算一個 t t 的
行列式值時,需要計算 t + (t – 1)+ …+ 1 的運算時間。若錯誤數目 v = 8 時,步階式演
算法在計算 det(Nv+1)時,需要計算 9 9 的矩陣行列式值,因此對於一個 9 9 矩陣的
高斯消去法的運算週期為 44 個 clock cycle,圖 4-15 是一維高斯消去電路 99 矩陣的
模擬時序圖。
44 clock
軸
元
值
圖 4-15、99 矩陣之高斯消去電路時序模擬圖
由改良型演算法可知,必須先計算所有需要的行列式值:det(Nv)、det(Nv+1)、det(Nvxx)
及 det(Nv+1xx) (x = 1, 2, 3, …, v+1),而其中行列式值 det(Nv)等於 det(Nv+199),隨著高斯
消去的進行,共需計算出 9 個行列式值,除了一開始 det(Nv+1)為 9 9 且需 44 個時脈
週期之外,其餘均為 35 個時脈週期。
根據前述的一維高斯消去法電路,每求出一個新的軸元值,都必須透過累乘軸元
值的動作,以求得行列式值,這代表會隨矩陣大小而增加。舉例來說,當第 1 個軸元
值被求出時,代表的是 11 的矩陣行列式值,隨著高斯消去的進行,第 2 個軸元值也
被求出,並與第一個軸元值做相乘,此時便可求出 22 矩陣的行列式值。接著依此類
39
推,直到求出 vv 矩陣之行列式值為止,因此在行列式計算器上運作的所需的時間為
44 + 35 8 = 324 個時脈週期。
RS 的解碼時間是由接收端接收資料後,並輸入至徵狀值電路的時間開始計算,直
到第一個符元的位元值被輸出為止,而為了使資料連續進行不中斷的處理,一般在設
計上會選擇採取管線化的進行方式,管線化能當 RS 解碼在第二階段的行列式值計算
處理第一階段的第一筆資料時,同時將第二筆資料輸入至徵狀值計算器,等到第三筆
資料輸入時,此時第一筆資料已經在第三階段的電路中作錯誤更正的動作,並從第一
個符元的位元值開始逐步輸出,此時第二階段的電路就能對第二筆資料進行運算。圖
4-16 為管線化之 RS 解碼器的三個階段分配圖,Stage1 的部分是徵狀值電路,負責計
算徵狀值,在 Stage2 的部分在其他文獻中是用來解關鍵方程式的代數解碼法,而在此
則是步階式解碼演算法用以計算行列式值的電路,最後的 Stage3 則為錯誤更正電路。
如圖 4-16 所示,一筆資料從輸入到解碼後輸出的運算時間,最多是兩筆資料的時
間,即是 2n。因此在設計 RS 解碼器時,會在兩個筆資料的時間內,將所需計算之值
全部算出。而對於徵狀值來說,必須計算週期剛好為 n,固定在一個資料的時間內。
因此後續的行列式計算器與錯誤更正的運作時間,必須在一筆資料的計算週期內計算
完畢。但是由前述可知,改良型步階式演算法計算行列式值的運算時間為 324 個運算
週期,遠遠超過一筆資料的時間 n = 255。
為了改善這個情況,文獻[6]提出如何將運算週期由 324 下降到 255 運算週期內。
以計算 det(Nv66)為例,如圖 4-17 所示,若只以左上角著色區域中 55 的矩陣執行高斯
消去法,所求出的軸元 a11 ~ a55 都是相同的,此等同於事先計算好 det(N5),而從右下
角區域的部分開始,可看出計算 det(Nv)與 det(Nv66)有個很大的不同。計算 det(Nv)時,
是從 a66 開始做高斯消去運算,以便求得接下來的軸元值,也就是說 a77 與 a88 這兩個
軸元值的值須經由 a66 的值來求得;而計算 det(Nv66)時,卻因為第 6 行第 6 列已經被刪
除,使得計算 det(Nv66)須從 a77 再開始做高斯消去運算,才能求得正確的行列式值,但
此時的 a77 可經由 a55 的高斯消去所求得。
40
det N v
det N v
66
Store Data
圖 4-17、兩種行列式值之計算示意圖
為了節省運算時間及不必要的重複計算,在計算初始行列式值 det(Nv)時,可先將
左上角著色區域中的位元值及累乘的軸元值,利用暫存器先儲存起來,等到必須計算
det(Nvxx)時,再將之前所儲存的數值讀回,接著讓高斯消去電路及軸元值累乘電路繼續
執行,以求得所需的行列式值。
此方式利用高斯消去運算至第 5 行第 5 列時,扣除刪除掉的第 6 行第 6 列元素,
共有 33 的矩陣資料需要儲存,故僅增加 9 個暫存器的儲存空間,便可省去計算左上
角區域的時間,考慮到計算 det(Nv+166)最大需要 v v 的矩陣計算,此舉將節省 8 + 7 +
6 + 5 = 26 時脈週期的運算時間,但需要暫存器來儲存資料。而計算 det(Nv+1xx) (8≧x
≧6)時,共需儲存 9 + 4 + 1 = 14 個符元的位元值,卻節省 26 + (8 + 7 + 6 + 5 + 4) + (8 +
7 + 6 + 5 + 4 + 3) = 89 個時脈週期。由此方式能將原先一維的高斯消去法運算時間由
324 個時脈週期降至 324-89=235 個時脈週期,即符合在 RS(255, 239)的一筆資料的時
間內完成運算,圖 4-18 為具有儲存矩陣資料功能之行列式值計算器。
圖 4-18、有儲存矩陣資料功能之行列式值計算器[6]
41
4.4.4 二維心跳式陣列
根據上述改良後的一維心跳式行列式運算週期,仍無法達到本論文硬體設計所需
的 255/3 = 85 時脈週期。因此我們選擇文獻[7]所提出的二維心跳式陣列架構,對於每
一行的列運算,都由一個軸元模組以及數個列運算模組獨立做計算,隨著運算次數的
增加,列運算模組也會隨著遞減,因此形成一個三角形的二維式心跳式陣列架構,如
圖 4-19 所示。
圖 4-19、高斯消去之二維心跳式陣列電路(n=4)
依據上述所提之基本列運算性質,下列將對於兩個主要使用的模組作為介紹:
1. 軸元模組:如圖 4-10 中的圓形模組。首先將第一個非零元素當作軸元作輸出
並儲存起來,接著利用下一個載入的元素。若載入的元素為非零元素,則將
整列的元素做縮放後並且取代;若載入的元素為零,則不變,而此判斷結果
也在下一週期一併傳遞給下一個列運算模組。
2. 列運算模組:如圖 4-11 中的方型模組。大致上與軸元模組相同,載入的第一
個元素並且儲存起來,接著根據軸元模組所傳送過來的信號,來決定要做何
種動作,包括與第一列的元素做相加取代、交換以及不變的動作。
4.4.4.1 二維行列式值計算器
在二維運算上與一維相同,需先將第一個非零的值做為第一個軸元值,透過將每
一個輸入的值,利用軸元模組去判別是否要換位與縮放大小,當列運算模組接收到下
一筆輸入值以及軸元值模組傳送之訊號,去判別此列的值是否要換位或是縮放。
根據圖 4-19 可知,當二維行列式為 99 時,載入資料僅僅需要 9 + 8 = 17 個時脈
週期即可,因此我們配合 4.3.2 章的三平行輸入,我們需要兩組二維高斯行列式計算
42
器,第一組計算 det(Nvxx) (x=0, 1, 2, 3, 4),第二組則是計算 det(Nv+1)與 det(Nvxx) (x = 5, 6,
7, 8),透過這一組計算器,可將圖 4-16 的第二階段的計算時間,能與第一階段的三平
行徵狀值計算器,剛好達到我們所需的 85 clock,以完成所需的行列式值計算,圖 4-20
為二維高斯消去之軸元值的電路模擬圖,透過讀取、縮放、相加的三個運算時間後,
即可計算出圖中框內所標示各 det(Nvxx)的軸元值。
圖 4-20、二維高斯消去之軸元值的電路模擬圖
由上描述可得,二維心跳式架構對於速度提升方面,相較於一維心跳式架構較有
優勢,為了使行列式值的計算達到我們所需的運算速度,在此我們選擇使用二維心跳
式硬體架構來設計。但對於 RS 解碼器來說,二維的硬體架構在晶片面積以及功率消
耗上來說都是一個負擔。表 4-2 為兩種式架構的比較表。
表 4-2、高斯消去電路之心跳式架構比較表
高斯消去法架構比較(t×t)
4.5 錯誤數目偵測電路
根據步階式演算法,在計算行列式 det(Nvxx) 及 det(Nv+1xx) 之前,必須先計算
det(Nv),再根據 det(Nv)是否為零來決定錯誤數目 v,此後便能根據 v 值來計算 det(Nvxx)
及 det(Nv+1xx)。由於 det(Nvxx)及 det(Nv+1xx)的計算會隨著 x 值而變化,而在此所設計的二
維行列式值計算器,將透過判斷錯誤數目 v 後,藉由控制電路去決定 det(Nvxx)及
43
det(Nv+1xx)的值,在上述計算軸元值時,可利用高斯消去的性質,即可透過軸元值是否
為零來判斷錯誤數目 v。
基於高斯消去法的性質,我們將錯誤數目計算電路與上述高斯消去法電路做結
合。例如當找到第五個軸元值為零時,代表錯誤數目為四個,並且將此錯誤數目儲存
起來,以便後續的 det(Nvxx)及 det(Nv+1xx)的值,能由控制電路決定,偵錯電路如圖 4-21,
圖 4-22 為偵測錯誤數目之電路模擬圖,讀取前一個二維高斯消去模組所求之軸元值,
並依序累乘,所求的值為行列式 det(Nv),透過此行列式便決定錯誤數目。
MUX
Syndrome checker
for Gauss Elimination 0
圖 4-21、錯誤數目偵測電路
錯誤數目
行列式值
4.6 累乘與加總電路
根據式(3-45)可知,當計算出 det(Nvxx)及 det(Nv+1xx)後,在變數 x 固定的情形下,
隨著 j 值的變化,將 det(Nvxx)及 det(Nv+1xx)與 α(2x-1)j 逐步做累乘,便可算出 Hv, j 及 Hv+1,
j 的值,並藉由此結果來針對每一個符元做判斷。
44
1/α(2x-1)j。因此從圖 4-23 便可知道如何運用有限場元素的循環特性,將序列重新排序,
進而設計累乘與加總電路。
圖 4-23、有限場元素間的關係
det(Nv11) det(Nv22) …
3 9
根據不同的 det(Nvxx)值與 j 值,所需隨著相乘的 α(2x-1)j 也不同,因此我們一開始與
框框內的值相乘,後再累乘上固定的常數值,即可得到我們所需的值,而以上相乘的
動作都可利用常數-變數乘法器達成。
圖 4-24 為本論文中所設計之累乘與加總電路,以 j = 2 為例,在 msel = 0 將 det(Nvxx)
與表 4-3 的框框內相乘後的值載入,並在 msel = 1 時進行累乘固定的常數值的動作。
圖 4-24、累乘與加總電路(j=2)
45
為了讓 Hv+1, j 能夠與 Hv, j 在同一個時脈周期內同時做計算,因此累乘與加總電路
使用一組來做實現,如圖 4-25,而此電路模擬結果,如圖 4-26 所示。
det(Nvxx)
Accumulation Hv, j
v & Summation Circuit
(for Hv, j)
Accumulation Hv+1, j
& Summation Circuit
det(Nv+1xx) (for Hv+1, j)
圖 4-25、累乘與加總電路方塊圖
det( N vxx )
累
加
圖 4-26、累乘與加總電路模擬圖
46
圖 4-26 方框內依序表示,先接收到行列式值計算器計算過後的行列式值,接著乘
上表 4-3 所需的初始值,後續只需乘上固定之常數,即可求出位置 j 所對應的 α(2x-1)j,
最後將乘上常數 α(2x-1)j 的行列式值累加,即可得到式(3-45)。
4.7 錯誤更正電路與先進先出暫存器
RS 解碼最後一個步驟即為更正錯誤,主要功能是將先前計算完畢的 Hv, 、 j Hv+1, j 及
初始行列式值載入,最後依照式(3-47)求出每個位置的符元所對應之錯誤值 β,整個架
構如圖 4-27,其中除法器在本論文採用反元素計算器將 Hv, j 轉換成反元素,再經過乘
法器與 det(Nv)相乘,以達成除法的效果。
算出錯誤值 β 後,需利用與 Hv+1, j 相乘,並判斷錯誤數目是否為最大 8,為了檢測
該符元是否出現第 t+1 個錯誤,需利用 det[N v1 ( , j )] 是否為零來判別 β 是否為我們所求
的錯誤值,來做驗證的動作。儘管如此,不論錯誤數目 v 為多少,都須計算 Hv+1, j,並
在最後判斷 Error_check 訊號來決定是否用更正錯誤值 β;若接收到的 Error_check = 0,
則代表無需更正並將 β 設為零值。
det(Nt+10)
V=8?
D
D
D m Error Check
u
Hv+1, j D D x
0 m Error Value
β u
det(Nv0) D x
Hv, j ROM
圖 4-27、錯誤更正電路架構圖
47
85 Byte
Register File
Input Ch1
8 Memory
Controller
m
8
85 Byte u Output Ch1
Register File x
Input Ch3
8 8 Output Ch3
FIFO 3
圖 4-28、RS 解碼器所使用之先進先出記憶體模組
4.8 電路設計與模擬
完整介紹整體的硬體架構後,本論文利用 MATLAB 來模擬整個改良型步階式演算
法,以熟悉此演算法的運算,並產生出所需測試數據。為了有效驗證 RS 解碼器的解碼能
力,我們將測試數據編碼後,隨機加入錯誤雜訊,使接收到的資料具有亂數錯誤,隨後直
接將資料送給解碼器電路;另一方面,原本正確的測試數據則直接經過編碼,產生另外一
個測試數據,在實際模擬時,便可利用正確的資料與帶有錯誤的資料做為解碼後的對照,
便可以快速比對及測試電路的功能。以圖 4-29 為例,第一個錯誤值在 Ch3 被偵測出,其
錯誤值為 8,接著對應到錯誤訊息的位置,得知原先的位置加上雜訊後變成 63,因此將經
雜訊後的訊息 63 加上對應錯誤值 8,即可得到正確訊息 55,接著第二個錯誤值在 Ch2 被
偵測出,其錯誤值為 16,接著得知原先位置上經雜訊後變成 194,因此我們將錯誤訊息
194 加上錯誤值 16,即可得到正確訊息 210。以此類推,直到找出最大可更正數目的錯誤。
48
錯誤訊息 更正後的訊息
錯誤值
正
確
訊
息
圖 4-29、平行化之 RS(255, 239)解碼器模擬圖
Technology 90 nm
Power 297 mW
49
表 4-5、RS 解碼器之使用硬體資源比較表
Proposed
Design Two-mode[6] Three-parallel[20]
three-parallel
Technology 90 nm 0.18 μm 0.16 μm
由表 4-5 可知,與一維心跳式陣列的步階式[6]相比,平行化步階式的設計以及在
核心速度上有著大幅的提升,使得吞吐量也有著明顯增加。在計算行列式時,我們使
用二維心跳式陣列架構而導致硬體需求較大。與同樣為三平行化的[20]相比,步階式
有著不必利用分時多工去做設計的優點,在速度上也有著優勢。最後,因製程技術的
不同,我們以正規化的方式為標準,與使用不同的製程技術的設計去做比較,利用[23]
所提出的正規化公式,如式(4-4)所示。注意此正規化公式中,已考量平行度因素,但
由於吞吐量及邏輯閘數是隨平行度倍數增加,且這兩個參數分別置於式(4-4)的分子與
分母,故最後會相互抵消。此外,在正規化前本論文所設計的吞吐量明顯較其他架構
大許多,但依據式(4-4),邏輯閘數目的多寡,大幅影響正規化吞吐量。圖 4-30 為本
論文硬體架構所需的邏輯閘分布圖,由圖觀察,邏輯閘的數目主要分布於行列式計算
器,因此後續對於降低行列式計算器的硬體使用量有著改善的空間。
徵狀值計算器
10% 3% 行列式計算器
8% 累乘與加總電路
錯誤值檢測器
79%
圖 4-30、邏輯閘分布圖
50
第5章 結論與未來發展
本篇論文的目的主要是希望利用改良步階式里德所羅門解碼器上,不必用疊代的
方式去求出錯誤位置多項式,以此優勢來設計平行化架構。在一開始我們對於改良型
步階式演算法,及其他文獻中所提及之步階式演算法做過比較與討論,證明本論文所
採用之演算法,確實能降低原本步階式解碼在硬體上的複雜度。
在討論硬體架構時,我們決定使用三平行化做為設計,因此徵狀值的運算時間由
原始的 255 個 clock 降低至 85 個 clock,接著分別討論一維心跳式陣列架構與二維心
跳式陣列架構應用在高斯消去法上的優缺點,後續選擇以硬體為代價,使運算時間壓
縮在 85 個 clock 的二維心跳式陣列做為計算各軸元值的架構,最後利用計算出來的軸
元值,以累乘方式計算出所需之各行列式值,計算出行列式值後,將 Hv, j 分解成適用
於三平行的方式,接著利用累乘與加總求得,再以 Hv, j 與一開始所得之 det(N v ) 相除,
求得所需更正的錯誤值。
在硬體合成與各種解碼器硬體比較後,可以發現與一維心跳式步階式相比,平行
化步階式速度上有著明顯得提升。而在正規化的公式中,以邏輯閘為分母,使得此設
計的平行化架構在正規化時,所使用的硬體較多,以致於平行化改良型步階式的吞吐
量有所減低。因此,在後續的改良上,必須針對硬體部分進一步研究如何降低元件的
使用量及簡化控制電路,使此晶片本身更具競爭力。
51
參考文獻
[1] J. L. Massey, “Step-by-step decoding of the Bose-Chaudhuri-Hocquenghem codes,”
IEEE Transactions on Information Theory, vol. 11, no. 4, pp. 580–585, Apr. 1965.
[2] T. C. Chen, C. H. Wei, and S. W. Wei, “Step-by-step decoding algorithm for
Reed–Solomon codes,” in Proc. IEEE Communication, vol. 147, no. 1, pp. 8–12, Jun.
2000.
[3] T. C. Chen, C. H. Wei, and S. W. Wei, “A pipeline structure for high-speed step-by-step
RS decoding,” IEEE Transactions on Communication, vol. E86-B, no. 2, pp. 847–849,
Feb. 2003.
[4] 蔡坤龍,「步階式里德所羅門碼解碼器硬體實作」,國立暨南國際大學電機工程學
系碩士論文,2003。
[5] X. Liu, C. Lu, T. H. Cheng, and S. N Koh, “A simplified step-by-step decoding
algorithm for parallel decoding of Reed–Solomon codes,” IEEE Transactions on
Communication, vol. 55, no. 6, pp. 1103–1109, Jun. 2007.
[6] C. Yu and Y. S. Su, “Two-mode Reed-Solomon decoder using a simplified step-by-step
algorithm,” IEEE Transactions on Circuits and Systems, vol. 62, no. 11, pp. 1093–1097,
Nov. 2015.
[7] B. Hochet, P. Quinton, and Y. Robert, “Systolic Gaussian elimination over GF(p) with
partial pivoting,’’ IEEE Transactions on Computer, vol. 38, pp. 1321–1324, Sep. 1989.
[8] 涂佳杏, 「有限場 GF(2n)常數矩陣乘法運算之電路合成器」 ,國立中山大學資訊工
程學系碩士論文,2004。
[9] 謝瑋霖,「適用於數位電視之里德所羅門編解碼硬體實作」,國立中央大學通訊工
程研究所碩士論文,2005
[10] U. S. Ghodeswar, Pranali D. Surkar, and G. G. Sarate, “Three-parallel syndrome
computation block for RS decoder,” International Conference on Green Computing
Communication and Electrical Engineering, Mar. 2014 , pp.1–4.
[11] 林詩倩,「里德所羅門碼之運算分析」,國立交通大學電信工程研究所碩士論文,
2012。
[12] C.-S. Choi and H. Lee, “High-speed low-complexity three-parallel Reed-Solomon
decoder for 6-Gbps mm wave WPAN systems,” European Conference on Circuit
Theory and Design, Oct. 2009, pp. 515–518.
[13] J. D. Lee and M. H. Sunwoo, “Four channel three-parallel Reed-Solomon decoder
using S-DCME algorithm for optical communications,” IEEE workshop on Signal
Processing System, Nov. 2010, pp. 380–385.
[14] W. Ji, W. Zheng, X. Peng, and Z. Liang, “16-Channel two-parallel Reed-Solomon
based forward error correction architecture for optical communications,” IEEE
International Conference on Digital Signal Processing, Sep. 2015, pp. 239–243.
[15] Y. Lee, H. Yoo, and I.-C. Park, “Small-area parallel syndrome calculation for strong
52
BCH decoding,” IEEE international Conference on Acoustics, Speech and Signal
Processing, Aug. 2012, pp. 1609–1612.
[16] H. Lee, “A VLSI Design of a High-Speed Reed Solomon Decoder,” International
ASIC/ SOC Conference, Sep. 2001, pp. 316–320.
[17] S. W. Wei and C. H. Wei, “High-speed decoder of Reed-Solomon codes,” IEEE
Transactions on Communications, vol. 41, no. 11, pp.1588–1593, Nov. 1993.
[18] Y. K. Lu and M. D. Shieh, “Efficient architecture for Reed-Solomon decoder,” VLSI
Design, Automation, and Test, Apr. 2012, pp. 1–4.
[19] K. Namba and F. Lombardi, “A single and adjacent symbol error-correcting parallel
decoder for Reed-Solomon codes,” IEEE Transactions on Device and Material
Reliability, vol. 15, no. 1, pp.75–81, Dec. 2015.
[20] L. Song, M-L. Yu, and M. S. Shaffer, “10 and 40-Gb/s forward error correction devices
for optical communications,” IEEE Journal of Solid-State Circuits, vol. 37, no. 11, pp.
1565–1573, Nov. 2002.
[21] H. H. Lee, “High-speed VLSI architecture for parallel Reed-Solomon decoder,” IEEE
Transactions on Very Large Scale Integration Systems, vol. 11, no. 2, pp. 288–294, Apr.
2003.
[22] S. Lee, C-S. Choi, and Hanho Lee, “Two-parallel Reed-Solomon based FEC
architecture for optical communications,” IEICE Electronics Express, vol. 5, no. 10,
May. 2008, pp. 374–380.
[23] Z. Liang, W. Zhang, and Y. Liu, “Area-efficient Reed-Solomon decoder using recursive
Berlekamp-Massey architecture for optical communication systems,” IEEE
Transactions on circuit and system, vol. 56, no.6 , pp. 469–473, Jun. 2009.
53