一種并行BCH編解碼的設計與實(shí)現(下)
接上篇
2.2 計算錯誤位置多項式[4]
在上一步的伴隨式的計算中,若 Si 的值不全為0,則 表示信息在傳輸過(guò)程中發(fā)生了錯誤,需要求出錯誤位置多項
式,有關(guān)關(guān)鍵方程[4-5]這里不再贅述,設位置多項式為:
則回到步驟2。
2.3 求解錯誤位置(并行錢(qián)氏搜索)
在 [ 5 ] 中 所 涉 及 到 的 是 錢(qián) 氏 搜 索 的 基 本 算 法 , 最 大 的 缺 陷 就 是 一 次 只 能 尋 找 一 個(gè) 位 置 , 本 文 使 用 的 碼 字 是
(4304,4096,16),碼長(cháng)為4304,完成一次錢(qián)氏搜索需要消 耗4096個(gè)時(shí)鐘周期,是難以容忍的,所以本文在原來(lái)的算 法上進(jìn)行了改進(jìn),在同樣的時(shí)間內能夠完成對8個(gè)位置的搜 索,完成一次錢(qián)氏搜索的時(shí)間降低為原來(lái)的八分之一,即538個(gè)周期。
由編解碼理論知
本文中的BCH(4304,4096,16)是一個(gè)縮短碼,原碼是(8191,7983,16)。所以在使用錢(qián)氏搜索尋找錯誤位置的時(shí)候,并不需要把全部的元素都搜索一遍,本文所用的碼字相 對于原碼縮短了3387位,只需要從第3387位開(kāi)始搜索即可, 從而在很大程度上提高了錢(qián)氏搜索的效率。
本文設計的并行錢(qián)氏搜索電路結構如圖6所示。
對圖6的描述如下: 第一個(gè)時(shí)鐘周期, 二路選擇器把 最左邊有限域乘法器得出的結果存入寄存器中,之后每一 個(gè)周期,二路選擇器選擇后面反饋過(guò)來(lái)的數據?,F在只看 第一排,有8個(gè)有限域乘法器,且每一個(gè)乘法器計算出來(lái)之 后都會(huì )送到下面的加法器中進(jìn)行運算,所以實(shí)現了8位并行 計算的功能。一共有15排這樣的有限域乘法器,計算過(guò)程 跟第一排完全相似。加法器得出的結果用 表示,如果輸出 結果為0表示對應的位沒(méi)有出錯,如果為1證明對應的位是 錯誤的,也就找到了錯誤的位置。假如搜索到8位都沒(méi)有出 錯,那么輸出結果為00000000,如果全部出錯,輸出結果為11111111。
3 BCH編譯碼器的仿真與分析
數學(xué)軟件Matlab嵌有BCH編譯碼函數,可以完成計算 BCH碼的生成多項式、對數據進(jìn)行編碼譯碼等功能。ISE中 的仿真結果出來(lái)后,與matlab中生成的數據進(jìn)行對比,可以 驗證仿真結果的正確與否。
3.1 BCH編碼器測試結果與分析
首先向matlab程序輸入4096Byte的數據,對這4096Byte 的數據進(jìn)行編碼,將編碼后的校驗位與通過(guò)所設計的BCH 編碼器編碼后產(chǎn)生的校驗位進(jìn)行對比,以此驗證編碼器的功 能。若兩者生成的校驗位相同,則認為所設計的BCH編碼器 能夠正確實(shí)現其功能。假 設 輸 入 的 4 0 9 6 By t e 的 數 據 全 部 為 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 編 碼 器 進(jìn) 行 仿 真 , 得 到 的 結 果 如 圖 7(177頁(yè))所示。
對比公式4中得到的結果和matlab程序得到的結果,發(fā)現兩者結果相同,因此,可以證明所設計的BCH編碼器是正確的。
3.2 BCH譯碼器的測試結果與分析
當我們把信息位和校驗位放在一塊進(jìn)行譯碼的時(shí)候,得到的結果如圖所示,錯誤位置值的八位數據全部為0,如圖8(177頁(yè))所示。
這 時(shí) 我 們 故 意 把 校 驗 位 的 最 后 8 位 1 1 0 1 0 0 0 1 改 為11011110,然后進(jìn)行與上面同樣的操作,得到的結果如圖9
所示。如圖9(177頁(yè))所示發(fā)生錯誤的8位對應的錯誤位置的 數據位為00001111,其他錯誤位置的數據位均為00000000, 由此證明錯誤位置已經(jīng)找到,只要把發(fā)生錯誤的數據位與錯 誤位置的數據位進(jìn)行異或就能得到正確的數據。以 上 測 試 可 以 得 出 , 我 們 設 計 的 B C H 譯 碼 器 是 正 確 的,能夠找到錯誤的位置并進(jìn)行修正。
4 結束語(yǔ)
本文首先測試了并行編碼,將得出的數據與matlab中產(chǎn) 生的編碼數據進(jìn)行對比,發(fā)現兩者的結果完全一致,然后對 解碼進(jìn)行同樣的過(guò)程,發(fā)現所測試的數據也是正確的。但有 一個(gè)問(wèn)題尚未解決,那就是測試的數據量比較小,并不能夠 完全保證所寫(xiě)的程序是正確的,而且當錯誤的個(gè)數超出糾錯 能力的時(shí)候,能夠發(fā)現錯誤,但是無(wú)法糾正過(guò)來(lái)。
參考文獻:
[1]王新梅,肖國鎮,糾錯碼—原理與方法[M]. 西安:西安電子科技大學(xué) 出版社,2001.
[2]王杰.NAND Flash主控中BCH編譯碼器的研究和ASIC實(shí)現[D]
.浙江:浙江大學(xué)電氣學(xué)院,2010.
[3]胡珊珊. B-T2系統中BCH譯碼器的設計與實(shí)現[D]. 武漢:武漢理工大 學(xué)信息工程學(xué)院,
2012. [4]唐建軍,紀越峰,超高速BCH碼解碼改進(jìn)算法研究[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.
評論