一種并行BCH編解碼的設(shè)計與實現(xiàn)(下)
接上篇
2.2 計算錯誤位置多項式[4]
在上一步的伴隨式的計算中,若 Si 的值不全為0,則 表示信息在傳輸過程中發(fā)生了錯誤,需要求出錯誤位置多項
式,有關(guān)關(guān)鍵方程[4-5]這里不再贅述,設(shè)位置多項式為:
則回到步驟2。
2.3 求解錯誤位置(并行錢氏搜索)
在 [ 5 ] 中 所 涉 及 到 的 是 錢 氏 搜 索 的 基 本 算 法 , 最 大 的 缺 陷 就 是 一 次 只 能 尋 找 一 個 位 置 , 本 文 使 用 的 碼 字 是
(4304,4096,16),碼長為4304,完成一次錢氏搜索需要消 耗4096個時鐘周期,是難以容忍的,所以本文在原來的算 法上進行了改進,在同樣的時間內(nèi)能夠完成對8個位置的搜 索,完成一次錢氏搜索的時間降低為原來的八分之一,即538個周期。
由編解碼理論知
本文中的BCH(4304,4096,16)是一個縮短碼,原碼是(8191,7983,16)。所以在使用錢氏搜索尋找錯誤位置的時候,并不需要把全部的元素都搜索一遍,本文所用的碼字相 對于原碼縮短了3387位,只需要從第3387位開始搜索即可, 從而在很大程度上提高了錢氏搜索的效率。
本文設(shè)計的并行錢氏搜索電路結(jié)構(gòu)如圖6所示。
對圖6的描述如下: 第一個時鐘周期, 二路選擇器把 最左邊有限域乘法器得出的結(jié)果存入寄存器中,之后每一 個周期,二路選擇器選擇后面反饋過來的數(shù)據(jù)。現(xiàn)在只看 第一排,有8個有限域乘法器,且每一個乘法器計算出來之 后都會送到下面的加法器中進行運算,所以實現(xiàn)了8位并行 計算的功能。一共有15排這樣的有限域乘法器,計算過程 跟第一排完全相似。加法器得出的結(jié)果用 表示,如果輸出 結(jié)果為0表示對應(yīng)的位沒有出錯,如果為1證明對應(yīng)的位是 錯誤的,也就找到了錯誤的位置。假如搜索到8位都沒有出 錯,那么輸出結(jié)果為00000000,如果全部出錯,輸出結(jié)果為11111111。
3 BCH編譯碼器的仿真與分析
數(shù)學(xué)軟件Matlab嵌有BCH編譯碼函數(shù),可以完成計算 BCH碼的生成多項式、對數(shù)據(jù)進行編碼譯碼等功能。ISE中 的仿真結(jié)果出來后,與matlab中生成的數(shù)據(jù)進行對比,可以 驗證仿真結(jié)果的正確與否。
3.1 BCH編碼器測試結(jié)果與分析
首先向matlab程序輸入4096Byte的數(shù)據(jù),對這4096Byte 的數(shù)據(jù)進行編碼,將編碼后的校驗位與通過所設(shè)計的BCH 編碼器編碼后產(chǎn)生的校驗位進行對比,以此驗證編碼器的功 能。若兩者生成的校驗位相同,則認為所設(shè)計的BCH編碼器 能夠正確實現(xiàn)其功能。假 設(shè) 輸 入 的 4 0 9 6 By t e 的 數(shù) 據(jù) 全 部 為 8' b11111111 , 由mat l ab 程序計算得到的校驗位如下: 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0
00010000 01101110 01110111 01111111 00000100 00001000
11111001 11000101 10100011 01100000 10110110 11011011
00101111 10001010 11111101 00011100 10100110 00011111
00011011 01000011 11100001 11011111 10001111 11010001
利 用 I S E 對 B C H 編 碼 器 進 行 仿 真 , 得 到 的 結(jié) 果 如 圖 7(177頁)所示。
對比公式4中得到的結(jié)果和matlab程序得到的結(jié)果,發(fā)現(xiàn)兩者結(jié)果相同,因此,可以證明所設(shè)計的BCH編碼器是正確的。
3.2 BCH譯碼器的測試結(jié)果與分析
當我們把信息位和校驗位放在一塊進行譯碼的時候,得到的結(jié)果如圖所示,錯誤位置值的八位數(shù)據(jù)全部為0,如圖8(177頁)所示。
這 時 我 們 故 意 把 校 驗 位 的 最 后 8 位 1 1 0 1 0 0 0 1 改 為11011110,然后進行與上面同樣的操作,得到的結(jié)果如圖9
所示。如圖9(177頁)所示發(fā)生錯誤的8位對應(yīng)的錯誤位置的 數(shù)據(jù)位為00001111,其他錯誤位置的數(shù)據(jù)位均為00000000, 由此證明錯誤位置已經(jīng)找到,只要把發(fā)生錯誤的數(shù)據(jù)位與錯 誤位置的數(shù)據(jù)位進行異或就能得到正確的數(shù)據(jù)。以 上 測 試 可 以 得 出 , 我 們 設(shè) 計 的 B C H 譯 碼 器 是 正 確 的,能夠找到錯誤的位置并進行修正。
4 結(jié)束語
本文首先測試了并行編碼,將得出的數(shù)據(jù)與matlab中產(chǎn) 生的編碼數(shù)據(jù)進行對比,發(fā)現(xiàn)兩者的結(jié)果完全一致,然后對 解碼進行同樣的過程,發(fā)現(xiàn)所測試的數(shù)據(jù)也是正確的。但有 一個問題尚未解決,那就是測試的數(shù)據(jù)量比較小,并不能夠 完全保證所寫的程序是正確的,而且當錯誤的個數(shù)超出糾錯 能力的時候,能夠發(fā)現(xiàn)錯誤,但是無法糾正過來。
參考文獻:
[1]王新梅,肖國鎮(zhèn),糾錯碼—原理與方法[M]. 西安:西安電子科技大學(xué) 出版社,2001.
[2]王杰.NAND Flash主控中BCH編譯碼器的研究和ASIC實現(xiàn)[D]
.浙江:浙江大學(xué)電氣學(xué)院,2010.
[3]胡珊珊. B-T2系統(tǒng)中BCH譯碼器的設(shè)計與實現(xiàn)[D]. 武漢:武漢理工大 學(xué)信息工程學(xué)院,
2012. [4]唐建軍,紀越峰,超高速BCH碼解碼改進算法研究[J].北京郵電大學(xué) 學(xué)報,2004,25
(9):21-27.
[ 5 ] Y n n i C h e n , K e s h a b k . P a r h i . A r e a E f f i c i e n t P a r a l l e l D e c o d e r A r c h i t e c t u r e f o r L o n g B C H C o d e
s [ J ] . I E E E International Conference on Acoustics,Speech,and Signal
Processing,2004,5(4):481-483.
[6]殷民. 閃存控制器中差錯控制編碼研究[D]. 合肥:中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,
2012.
[7] Yin, Min;Xie, Menwang;Yi,Bo. Optimized algorithms for binary BCH codes
[C].Beijing: Circuits and Systems (ISCAS), 2013 IEEE International Symposium on
,2013.
[8]Wu,Tao, Efficient Recording of Parallel Chien Search Results of BCH Code by
Three-Staged and Group-Sorted Circuit[C]. chengdu:Computational Science and Engineering(CSE),2014. [9]Zhu,Yuelin,An Intellectual Biography[D].Boston:Harvard
University,2002.
評論