本發(fā)明涉及數(shù)據(jù)糾錯碼技術(shù),尤其涉及一種bch譯碼器及生成該譯碼器的編譯器的實現(xiàn)方法。
背景技術(shù):
:在數(shù)字存儲、數(shù)字通信系統(tǒng)中,由于存儲介質(zhì)結(jié)構(gòu)特點、傳輸通道的不理想和外界干擾噪聲的原因,數(shù)字信號在傳輸時不可避免的會發(fā)生錯誤。糾錯碼通過按一定的規(guī)則對原始數(shù)據(jù)增加冗余數(shù)據(jù),用于發(fā)現(xiàn)并糾正一定數(shù)量的數(shù)據(jù)錯誤,從而保證數(shù)據(jù)的可靠性。隨著數(shù)據(jù)傳輸速率的提高,目前對糾錯碼處理性能的要求也越來越高,因譯碼器電路的功耗與電路時鐘頻率的平方成正比,為降低電路功耗,目前多采用并行譯碼電路來提高譯碼速度。在自適應數(shù)據(jù)數(shù)字傳輸系統(tǒng)中,因傳輸環(huán)境的不同,數(shù)據(jù)發(fā)生錯誤的概率有所不同,因而在傳輸條件較好時,可以采用較低保護的碼字提高凈荷數(shù)據(jù)傳輸速率,而在傳輸條件較差時,采用高保護以保證傳輸可靠性。但是不同參數(shù)的bch譯碼器具有不同的電路結(jié)構(gòu),若簡單采用多套參數(shù)不同的譯碼器,會數(shù)倍增大電路面積。深亞微米半導體工藝近年來進步飛速,現(xiàn)場可編程邏輯陣列(fpga)和專用集成電路的設(shè)計也日益復雜,在特定的能耗需求下完成傳輸任務(wù)的必要計算動作對于電能消耗特性至關(guān)重要。對于特定傳輸標準的糾錯碼電路,如何在靜態(tài)功耗所限制的電路面積和動態(tài)功耗所限制的最高主頻之間調(diào)整電路的計算并發(fā)性和流水線結(jié)構(gòu),是一項富有挑戰(zhàn)性的設(shè)計任務(wù),傳統(tǒng)可重新配置碼字的單一糾錯碼電路結(jié)構(gòu),其工作主頻和電路面積已經(jīng)受限于預先設(shè)計好的無法改動的電路結(jié)構(gòu),從而無法勝任新一代移動應用中超低功耗傳輸設(shè)備的需求。另一方面,多樣化的糾錯碼碼型設(shè)計需求導致的電路重新設(shè)計、驗證的時間開銷和日益緊張的研發(fā)時間預算,使得集成電路中的糾錯碼模塊對于重用性的需求變得愈加緊迫。由此,在諸如計算單元、多端口總線以及數(shù)據(jù)流水線這種比糾錯碼整體電路更為微觀的組件層次的基礎(chǔ)上,針對糾錯碼碼字對電路進行重構(gòu),以及把糾錯碼電路在設(shè)計流程中的重點從電路綜合器編譯后的門級電路提前到由軟件動態(tài)生成的寄存器傳輸層(rtl)描述代碼這一環(huán)節(jié),對于大數(shù)據(jù)時代的高性能電路設(shè)計而言,具有更大的技術(shù)優(yōu)勢和設(shè)計競爭力。技術(shù)實現(xiàn)要素:本發(fā)明的目的是提供一種bch譯碼器及生成該譯碼器的編譯器的實現(xiàn)方法,該方法在滿足用戶設(shè)計需求的bch譯碼器配置參數(shù)下精簡了電路面積,降低了電路功耗;同時本發(fā)明增強了編譯器生成的bch譯碼器的使用范圍,有效的提高了設(shè)計效率和電路模塊的重用性。設(shè)滿足用戶設(shè)計需求的bch譯碼器配置參數(shù)為(m,k,t,l,p),其中m代表本原多項式的階數(shù),k代表信息位長度,t代表分組碼可糾正的錯誤數(shù),l代表相應本原碼下的縮短碼的碼長,p代表所設(shè)計bch譯碼器的譯碼并行度。針對上述目的,本發(fā)明所采用的技術(shù)方案為:一種bch譯碼器,包括伴隨式計算陣列模塊、錯誤位置多項式計算陣列模塊、錢搜索(chien搜索)模塊、錯誤校正模塊、數(shù)據(jù)緩存模塊;所述伴隨式計算陣列模塊用于根據(jù)接收的多項式r(x)計算伴隨式si;該伴隨式計算陣列模塊由2t個伴隨式計算模塊構(gòu)成,且所述伴隨式計算模塊由在空間上并行的p+1個伽羅華域乘法器構(gòu)成;所述錯誤位置多項式計算陣列模塊用于根據(jù)上述伴隨式si計算錯誤位置多項式δ(x);該錯誤位置多項式計算陣列模塊采用可重配置的脈動陣列結(jié)構(gòu)和經(jīng)典的伯利坎普-梅西(sibm)算法;所述錢搜索模塊用于解上述錯誤位置多項式δ(x)的根,并根據(jù)該錯誤位置多項式的根確定錯誤位置λi;所述錯誤校正模塊用于根據(jù)上述錯誤位置λi校正上述伴隨式計算陣列模塊接收的多項式r(x)中的錯誤,并輸出v(x);所述數(shù)據(jù)緩存模塊的輸入端與所述伴隨式計算陣列模塊輸入端相連,其輸出端與所述錯誤糾正模塊相連,且該數(shù)據(jù)緩存模塊用于對上述伴隨式計算陣列模塊接收的多項式r(x)進行存儲,等上述錢搜索模塊計算出錯誤位置λi后,上述錯誤校正模塊讀取存儲的多項式進行錯誤校正。進一步地,接收的多項式r(x)以譯碼并行度p進入伴隨式計算模塊,得到伴隨式si。進一步地,所述可重配置的脈動陣列結(jié)構(gòu)對于糾正t個錯誤的bch碼,sibm算法需要2t個計算單元(processingelements,pe)和4t+1個寄存器,組成2×t的運算陣列;所述計算單元包括兩個伽羅華域乘法器、一個有限域加法器、一個三選一的選擇器。更進一步地,所述運算陣列在控制單元的控制下計算錯誤位置多項式,且計算流程包括初始化和迭代運算,其中初始化數(shù)據(jù)根據(jù)上述伴隨式計算陣列模塊的輸出結(jié)果si完成;所述迭代運算由計算單元pe完成,且由第r次迭代系數(shù)計算第r+1次迭代系數(shù)。進一步地,所述錢搜索模塊通過檢查λi是否為0來確定錯誤位置,當λi=0時表示在位置i上發(fā)生了錯誤,且譯碼器的輸出vi=ri+1,其中vi代表譯碼器輸出的第i個比特,ri代表接收的多項式的第i個比特。進一步地,所述錢搜索模塊處理縮短碼時,若縮短的長度s能被p整除,則屏蔽掉前s/p個輸出來提高譯碼速度。更進一步地,當縮短的長度s不能被p整除時,處理縮短碼的步驟包括:1)在第一個clock(時鐘周期),選擇器選通第s%p個伽羅華域乘法器的積,此時并行錢搜索電路不輸出;2)緊接著的floor(s/p)個時鐘周期,選擇器選通最下方的伽羅華域乘法器的積,此時并行錢搜索電路不輸出;其中floor表示對所得結(jié)果進行向下取整;3)并行錢搜索電路打開輸出,輸出的第一個數(shù)據(jù)即對應于縮短碼信息位的首個數(shù)據(jù)。一種生成上述bch譯碼器的編譯器的實現(xiàn)方法,其步驟包括:1)根據(jù)輸入的bch譯碼器配置參數(shù),對所采用的bch譯碼器算法進行仿真,得到與bch譯碼器實際電路運行結(jié)果精確匹配的輸出數(shù)據(jù);其中所述bch譯碼器算法包括伴隨式計算、錯誤位置多項式計算、錢搜索算法;2)將滿足用戶設(shè)計需求的根據(jù)上述輸入的bch譯碼器配置參數(shù)輸出的仿真數(shù)據(jù)保存,并作為驗證平臺的測試激勵和bch譯碼器結(jié)果驗證數(shù)據(jù);3)分析計算bch譯碼器譯碼所需伽羅華域乘法器的種類,生成伽羅華域常數(shù)乘法器最優(yōu)電路,并根據(jù)該最優(yōu)電路得到對應寄存器傳輸級描述代碼;4)根據(jù)上述輸入的bch譯碼器配置參數(shù)分析譯碼所需的sibm運算陣列拓撲結(jié)構(gòu);5)根據(jù)上述輸入的bch譯碼器配置參數(shù)分析譯碼所需的錢搜索電路結(jié)構(gòu);6)根據(jù)上述步驟2)至步驟5)的輸出結(jié)果生成對應電路結(jié)構(gòu)的寄存器傳輸級bch譯碼器電路寄存器傳輸級描述代碼和測試平臺代碼。進一步地,步驟1)中所述bch譯碼器配置參數(shù)是指(m,k,t,l,p),其中m代表本原多項式的階數(shù),k代表信息位長度,t代表分組碼可糾正的錯誤數(shù),l代表相應本原碼下的縮短碼的碼長,p代表bch譯碼器的譯碼并行度。本發(fā)明的有益效果在于:本發(fā)明提供一種bch譯碼器及生成該譯碼器的編譯器的實現(xiàn)方法,該編譯器根據(jù)用戶設(shè)計需求輸入的bch譯碼器的配置參數(shù)直接生成滿足用戶設(shè)計需求的bch譯碼器電路和測試該譯碼器電路所需的測試平臺代碼,把設(shè)計的重點提前到寄存器傳輸層描述代碼,節(jié)約了進行電路設(shè)計的代碼修改和電路驗證的時間。并且通過優(yōu)化參數(shù)估計,分析完成該bch譯碼器電路所需伽羅華域乘法器種類、伴隨式計算陣列和錯誤位置多項式計算陣列電路的最優(yōu)化拓撲結(jié)構(gòu),在滿足指定參數(shù)下精簡了電路面積,降低了電路功耗。并且通過采用的錢搜索電路可以支持不同縮短長度的縮短碼的情況,使用參數(shù)bch(m,k,t)設(shè)計的譯碼器電路,對于任何滿足(m,k'≤k,t'≤t)的本原bch碼及其縮短碼的譯碼,無需使用額外的電路,通過改變譯碼器的輸入?yún)?shù),即可采用該電路進行譯碼,增強了電路編譯器生成的bch譯碼器的使用范圍,有效的提高設(shè)計效率和電路模塊的重用性。附圖說明圖1是本發(fā)明生成bch譯碼器的編譯器的實現(xiàn)方法的原理框圖即軟件運行流程圖。圖2是本發(fā)明的編譯器生成的bch譯碼器電路結(jié)構(gòu)圖。圖3是本發(fā)明bch譯碼器譯碼流水線示意圖。圖4是本發(fā)明bch譯碼器的伴隨式計算陣列模塊結(jié)構(gòu)圖。圖5是本發(fā)明bch譯碼器的錯誤位置多項式計算陣列模塊結(jié)構(gòu)圖。圖6是本發(fā)明bch譯碼器的錯誤位置多項式計算陣列模塊的計算單元(pe)結(jié)構(gòu)圖。圖7是本發(fā)明bch譯碼器的縮短碼兼容的并行錢搜索電路結(jié)構(gòu)圖。具體實施方式為使本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合所附圖作詳細說明如下。本發(fā)明提供一種bch譯碼器及生成該譯碼器的編譯器的實現(xiàn)方法,該bch譯碼器的參數(shù)包括本原碼分組長度n=2m-1,其中m代表本原多項式的階數(shù);信息位長度k;分組碼可糾正的錯誤數(shù)t;相應本原碼下的縮短碼的碼長l(l≤n);所設(shè)計bch譯碼器的譯碼并行度p。請參考圖1,所述生成bch譯碼器的編譯器根據(jù)輸入的bch譯碼器配置參數(shù)(m,k,t,l,p),對所采用的bch譯碼器算法在該參數(shù)下進行仿真,得到與bch譯碼器實際電路運行結(jié)果精確匹配的輸出數(shù)據(jù),使用戶確定當前參數(shù)是否滿足實際應用需求。如果滿足需求,則獲取驗證平臺測試激勵,之后編譯器分析計算bch譯碼器譯碼所需伽羅華域乘法器種類及各部分的拓撲結(jié)構(gòu)和電路結(jié)構(gòu),并生成對應電路結(jié)構(gòu)的寄存器傳輸級bch譯碼器電路寄存器傳輸級描述代碼和測試平臺代碼。其中所述bch譯碼器算法包括伴隨式計算、錯誤位置多項式計算、錢搜索算法。所述生成的bch譯碼器糾正不大于t個錯誤的的譯碼過程可敘述為以下3個步驟:1、根據(jù)接收的多項式r(x)計算伴隨式(syndromes)s=(s1,s2,s3,...,s2t)。2、由伴隨式s1,s2,s3,...,s2t計算錯誤位置多項式δ(x)。3、通過錢搜索算法求解δ(x)的根,確定錯誤位置λi,并根據(jù)錯誤位置校正r(x)中的錯誤,得到譯碼器的輸出結(jié)果v(x)。所述編譯器生成的bch譯碼器的電路結(jié)構(gòu)如圖2所示。該bch譯碼器由伴隨式計算陣列模塊、錯誤位置多項式計算陣列模塊、錢搜索模塊、錯誤校正模塊和數(shù)據(jù)緩存模塊組成。所述伴隨式計算陣列模塊完成譯碼步驟1所述運算。錯誤位置多項式計算陣列模塊完成譯碼步驟2所述運算。錢搜索模塊和錯誤校正模塊完成譯碼步驟3所述運算。所述伴隨式計算陣列模塊、錯誤位置多項式計算陣列模塊,錢搜索模塊及錯誤校正模塊依次連接。所述數(shù)據(jù)緩存模塊輸入端與伴隨式計算陣列模塊輸入端相連接,其輸出端與錯誤校正模塊相連接。所述bch譯碼器電路結(jié)構(gòu)的處理時序如圖3所示。伴隨式計算陣列模塊、錯誤位置多項式計算陣列模塊,錢搜索模塊及錯誤校正模塊之間的時序呈流水線結(jié)構(gòu),以最大化譯碼器譯碼速度,且各模塊的處理時間如表1所示。表1:譯碼器時序說明請參考圖4,所述伴隨式計算陣列模塊由2t個伴隨式計算模塊構(gòu)成,且伴隨式計算模塊由在空間上并行的p+1個伽羅華域乘法器構(gòu)成。接收的多項式r(x)以譯碼并行度p對應進入p+1個伽羅華域乘法器,分別計算2t個由p+1個伽羅華域乘法器組成的伴隨式計算模塊得到伴隨式si,如公式(1)所示,其中a為伽羅華域下的元素gf(2,m),a的上標表示其在伽羅華域內(nèi)的冪運算;r的下標代表接收的多項式的對應比特(如rj·p代表接收的多項式的第j·p個比特)。所述錯誤位置多項式計算陣列模塊采用可重配置的脈動陣列結(jié)構(gòu),在脈動陣列結(jié)構(gòu)下,該模塊由2t個相同的計算單元(如圖5所示pe)構(gòu)成,在數(shù)據(jù)流動的過程中,所有的計算單元同時并行地對流經(jīng)它的數(shù)據(jù)進行處理,從而實現(xiàn)高速并行處理。對于糾正t個錯誤的bch碼,sibm算法需要2t個pe和4t+1個寄存器,組成2×t的運算陣列,其陣列結(jié)構(gòu)如圖5所示。運算陣列在控制單元的控制下計算錯誤位置多項式,且計算流程包括初始化和迭代運算兩部分,其中初始化數(shù)據(jù)由前述的伴隨式計算陣列模塊的輸出結(jié)果si按如下規(guī)則賦值:δ2t+2(0)=0,δ2t+1(0)=0,δ2t(0)=1,δ2t-1(0)=0θ2t-1(0)=1,θ2t-2(0)=0δi(0)=si+1,(i=0,1,2...2t-2)θi(0)=si+2,(i=0,1,2...2t-3)k(0)=0,γ(0)=0其中,括號內(nèi)(0)表示變量的初始值,下文括號內(nèi)(r)表示第r次迭代后的結(jié)果,例如k(1)表示第一次迭代后的結(jié)果,k(2)表示第二次迭代后的結(jié)果,對于k(1)而言k(2)就是(r+1);δi(0)的下標表示圖5所示的對應位置第i個寄存器的值。θi(0)的下標表示圖5所示對應位置的第i個寄存器的值。迭代過程中,由第r次迭代系數(shù)計算第r+1次迭代中的系數(shù)(包括k(r+1)、γ(r+1)、δi(r+1)、θi(r+1)),完成迭代運算的基本單元稱為計算單元pe,其結(jié)構(gòu)如圖6所示。一個計算單元包括兩個伽羅華域乘法器、一個有限域加法器、一個三選一的選擇器。迭代過程需要t個時鐘(clock)。迭代過程中,控制器負責計算γ(r+1)和k(r+1),然后根據(jù)k(r)和δ0(r)計算c0(r);其中k(r)為控制器的狀態(tài)變量,也是第r次迭代的系數(shù);δ0(r)為標號為0的δi第r次迭代的結(jié)果;c0(r)、c1i(r)共同作為計算單元pe的選擇器的輸入;且錯誤位置多項式計算陣列的輸出結(jié)果δ(x)保存在整列的2×t個寄存器r(i)中,保留δi(i=0,1,2...t)作為錢搜索電路的寄存器初始值。所述錢搜索模塊通過檢查λi是否為0來確定錯誤位置,如果λi=0,則表示在位置i上發(fā)生了錯誤,那么譯碼器的輸出vi=ri+1,該位置的錯誤就得以糾正。為提高譯碼速度,本發(fā)明采用并行化的錢搜索,同時計算λi~λi+p-1。通常錢搜索模塊輸出的錯誤位置是以標準bch碼的位置0開始的(首先進入譯碼器的第一個bit),當處理縮短碼時,若縮短的長度s能被p整除,可以通過屏蔽掉前s/p個輸出,但是當s不能被p整除時,此方法便不可行了。為兼容s不能被p整除的情況,本發(fā)明采用了一種新型并行錢搜索電路,使得該并行錢搜索電路可兼容于不同縮短長度的縮短碼,如圖7所示,δi為錯誤位置多項式計算陣列模塊的輸出結(jié)果,其中下標i代表該模塊輸出的第i個結(jié)果,且i=0,1,...t;a為伽羅華域下的元素gf(2,m),a的上標表示其在伽羅華域內(nèi)的冪運算。在處理縮短碼時的步驟如下:1、第一個clock,選擇器選通第s%p個伽羅華域乘法器的積,此時并行錢搜索電路不輸出。2、緊接著的floor(s/p)個時鐘周期,選擇器選通最下方的伽羅華域乘法器的積,此時并行錢搜索電路不輸出。其中floor表示對所得結(jié)果進行向下取整。3、之后,并行錢搜索電路打開輸出,輸出的第一個數(shù)據(jù)即對應于縮短碼信息位的首個數(shù)據(jù)。下面舉一具體實施例來解釋說明本發(fā)明。選取兩種bch碼字,碼字c1=bch(11,1871,16),l1=1920的縮短碼,可糾正錯誤數(shù)t1=16,碼字c2=bch(11,1167,89),l2=2000的縮短碼,可糾正錯誤數(shù)t2=89。使用本發(fā)明所述編譯器,生成一種并行度p=16的bch譯碼器,可同時對上述兩種bch碼字譯碼。其具體步驟包括:1)碼字c2=bch(11,1167,89),l2=2000的縮短碼相比c1具有更復雜的電路結(jié)構(gòu),選取c2作為譯碼器的基本結(jié)構(gòu)。2)如圖1所示步驟1,c1和c2兩種碼字進行bch譯碼器算法仿真,得到與bch譯碼器實際電路運行結(jié)果精確匹配的輸出數(shù)據(jù),用戶根據(jù)該評估結(jié)果確定當前參數(shù)是否滿足設(shè)計需求。3)如圖1所示步驟2,當滿足用戶設(shè)計需求時,編譯器保存仿真數(shù)據(jù)作為驗證平臺的測試激勵和譯碼器結(jié)果驗證數(shù)據(jù)。4)所述編譯器遍歷譯碼算法中所需伽羅華域常數(shù)乘法器種類,作為伴隨式計算陣列模塊、錯誤多項式計算陣列模塊、錢搜索模塊中的基礎(chǔ)乘法單元,然后生成這些常數(shù)乘法器的最優(yōu)電路,以本原多項式為x3+x+1的伽羅華域gf(8)為例,有:a·b=a2b2α4+(a1b2+a2b1)α3+(a0b2+a2b0+a1b1)α2+(a0b1+a1b0)α1+a0b0α0α3=α0+α1,α4=α1+α2,因此a·b=(a2b2+a0b2+a2b0+a1b1)α2+(a2b2+a1b2+a2b1+a0b1+a1b0)α1+(a1b2+a2b1+a0b0)α0用矩陣形式表示為:其中a、b分別表示參與乘法的被乘數(shù)和乘數(shù),ai,bi(i=0,1,2)分別代表a、b的第0~2個比特。因此有限域乘法可以用一個矩陣和向量的乘積表示,由于上式中數(shù)據(jù)均為二進制,故電路實現(xiàn)時只需用到與門和異或門。從而獲得伽羅華域常數(shù)乘法器最優(yōu)電路映射。編譯器根據(jù)伽羅華域常數(shù)乘法器最優(yōu)電路映射生成對應寄存器傳輸級描述代碼。5)所述編譯器根據(jù)t2=89生成2×89的錯誤位置多項式計算陣列,并標記2×16位置作為c1的兼容計算點。6)所述編譯器計算c1縮短長度s1=211-1-l1=127,c2縮短長度s2=211-1-l2=47。對于碼字c1,并行錢搜索電路的前2(floor(s1/16)=2)個時鐘周期不工作,譯碼c1時第一個時鐘周期選通第15(floor(s1%16)=15)個伽羅華域乘法器的積;同時,為兼容碼字c2,并行錢搜索電路的前7(floor(s2/16)=7)個時鐘周期不工作,譯碼c2時第一個時鐘周期選通第15(floor(s2%16)=15)個伽羅華域乘法器的積。7)所述編譯器根據(jù)2)至6)的結(jié)果生成bch譯碼器電路寄存器傳輸級的電路描述代碼文件、仿真的測試平臺代碼和測試數(shù)據(jù)。根據(jù)上述方法,生成的bch譯碼器針對intel公司的ep4se820h40i4型號fpga芯片編譯后消耗的邏輯單元數(shù)量(lut列)、寄存器消耗(register列)、片內(nèi)存儲器比特數(shù)目(m9k列),以mhz為單位的最高運行頻率(fmax列)如表2所示,作為對比,選擇了intel公司的商業(yè)bch譯碼器ip,該ip只能對單一參數(shù)的bch碼字進行譯碼,故選擇了c2的參數(shù)作為該譯碼器的參數(shù)。綜合結(jié)果如表2所示。表2:資源開銷和頻率性能對比表譯碼器時鐘約束fmaxlutsregisterm9k本發(fā)明128mhz168mhz47357235092intel128mhz149mhz425987241211從表2可看出,本發(fā)明所生成的譯碼器電路可以譯碼不同參數(shù)的碼字,雖然消耗的邏輯單元數(shù)量與intel公司的譯碼器相比有小幅增長,但是寄存器消耗和片內(nèi)存儲器比特數(shù)目都有數(shù)倍的節(jié)省,同時擁有更高的運行頻率,可提供更高的吞吐率。以上實施僅用以說明本發(fā)明的技術(shù)方案而非對其進行限制,本領(lǐng)域的普通技術(shù)人員可以對本發(fā)明的技術(shù)方案進行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護范圍應以權(quán)利要求書所述為準。當前第1頁12