1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>用語言實現(xiàn)BCH解碼校驗算法

    用語言實現(xiàn)BCH解碼校驗算法

    時間:2023-02-21 00:07:12 電子通信論文 我要投稿
    • 相關(guān)推薦

    用匯編語言實現(xiàn)BCH解碼校驗算法

    摘要:介紹數(shù)據(jù)傳輸中BCH解碼校驗用匯編語言實現(xiàn)的算法。算法包含BCH碼的差錯檢驗、差錯位查找和差錯糾正,同時列出相關(guān)主要子程序清單并予說明。
      關(guān)鍵詞:BCH解碼校驗算法匯編語言
      
      數(shù)據(jù)傳輸通信中,常常因傳輸差錯造成誤碼錯碼,尤其在無線通信中,空中的突發(fā)或隨機干擾噪聲會造成編碼差錯。為了提高傳輸?shù)恼_率,往往采用一些校驗方法,以檢驗糾正傳輸差錯。通信中校驗的方法很多,其中的BCH編碼有其獨特的優(yōu)點:不僅可以檢糾突發(fā)差錯,還能檢糾隨機差錯,被廣泛地采用在微機級的通信中。但對更低層的單片機級的數(shù)據(jù)傳輸通信糾錯,往往采用奇偶校驗等簡單的校驗方法。BCH校驗因其算法復雜,尤其是動態(tài)實時的無線通信中,單片機的通信往往無法采用BCH解碼檢糾。
      
      筆者近幾年在工業(yè)測控和無線通信系統(tǒng)開發(fā),摸索了BCH解碼檢糾在實時的、動態(tài)的、單片機級的通信中的算法,并取得十分突出的效果。以下以BCH(31:21)碼為例進行探討。
      
      1BCH碼結(jié)構(gòu)
      
      BCH碼是一種檢糾能力較強的循環(huán)碼。它由信息多項式M(X)和校驗多項式J(X)組成,如以T(X)表示整個BCH(31:21)碼字的31位碼組多項式,則:
      
      T(X)=M(X)+J(X)(1)
      
      在31位BCH碼的后面再加上1位,以保證整個碼字32位中“1”的個數(shù)為偶數(shù)。該位稱偶校驗位。這樣就形成BCH(31:21)加1位偶校驗位的標準碼字,其結(jié)構(gòu)為:
      
      其中校驗多項式J(X)由公式(2)計算:
      
      X0X1……X20X21……X30X31T(X)J(X)偶校驗位
      J(X)=M(X)/S(X)(2)
      
      式中S(X)是BCH(31:21)碼的生成多項式,見式(3):
      
      
      
      生成多項式S(X)的值在BCH(31:21)碼的值是固定的。
      
      BCH碼是一種循環(huán)碼,循環(huán)碼是利用除法來糾錯的。由于任一碼組多項式T(X)都能被生成多項式S(X)整除,所以在接收端可以將接收碼組R(X)用S(X)去除。若在傳輸中未發(fā)生錯誤,接收碼與發(fā)送碼相同,即R(X)=T(X),故接收碼組R(X)必定能被生成多項式S(X)整除;若碼組在傳輸中發(fā)生錯誤,即R(X)≠T(X),R(X)被S(X)除時,可能除不盡而有余項Y(X),因此,可根據(jù)余項是否為零來判斷碼中有無錯誤(檢錯),如有余項,通過一定的運算就可以確定錯誤位置,從而加以糾正(糾錯)。
      
      這里R(X)被S(X)除,是32位被11除,這在非實時靜態(tài)的微機級實現(xiàn)非常簡單;但在實時的、動態(tài)的、單片機級的通信中實現(xiàn)要快速巧妙的算法才能實現(xiàn),否則,現(xiàn)有的碼未檢錯及糾錯完畢,下一個碼已經(jīng)到了。因為動態(tài)中位和位的時距t往往只有幾十μs,以9.6b/s的短信為例,t=104μs。在這104μs中要完成檢錯、定位和糾錯三個算法程序,才是一個完整的解碼檢糾過程。
      
      2檢錯
      
      根據(jù)上述原理,檢錯過程也就是求算R(X)被S(X)除的余項Y(X)的過程,如余項Y(X)=0,則R(X)=T(X),傳輸無差錯;如余項Y(X)≠0,則R(X)≠T(X),檢出傳輸差錯。
      
      在算法語言中,所有的運算總歸于二種運算:加和減。這是電子計算機的二進制基本電路特性所決定的,也是匯編語言唯一的算術(shù)運算方法。為此,這里把除法用模二加法再加右移位實現(xiàn)。
      
      已知:S(X)=11101101001
      
      R(X)=r3r4r5r6(ri為8位寄存器)
      
      調(diào)用下面的模二加法右移子程序,得到R(X)/S(X)的余項Y(X)=r3r4。
      
      ;32位/16位模二加法右移子程序
      
      m2add:movr7,#00
      
      m2ddgx:mova,r3
      
      xrla,#0edh;S(x)的高位=oed(h)
      
      movr3a
      
      mova,r4
      
      cplacc.5;S(x)的低3位=001(b)
      
      movr4,a
      
      mova,r3
      
      acc7e10:jbacc.7m2addgx;R(x)的最高位為“0”,則R(x)右移
      
      mova,r6
      
      rlca
      
      movr6,a
      
      mova,r5
      
      rlca
      
      movr5,a
      
      mova,r4
      
      rlca
      
      movr4,a
      
      mova,r3
      
      rlca
      
      movr3,a
      
      movr7
      
      cjner7,#10h,acc7e10;右移總次數(shù)為16次
      
      ret
      
      余項Y(X)的高8位在r3寄存器中,低3位在r4的高3位。
      
      3定位
      
      如果Y(X)=r3r4≠0,表示接收到的碼組R(X)有差錯,下一步則由Y(X)的值推算差錯在R(X)中的位置。
      
      理論上要找出R(X)中差錯的位置,必須計算出差錯校驗子C(X)。在實踐中,校驗子C(X)的計算不僅費時間,而且多位檢糾還需多個校驗子C(X)。為此,經(jīng)過幾年的實踐,把Y(X)(即r3r4)直接作為綜合校驗子,通過快速查表找到差錯位置。查找程序的大小和檢糾差錯位數(shù)有關(guān),這里以檢糾4位差錯為例,說明定位糾錯的方法。
      
      ;4位差錯位址查找子程序
      
      bitposi:movb,0;對R(X)高位至低位的移動計數(shù)
      
      movr2,#1fh;設(shè)表格長度
      
      btoa:mova,b
      
      incb
      
      acalltabsub;調(diào)用表格子程序,讀入表格值
      
      clrc
      
      subba,r3;Y(X)中的r3和表格值比較
      
      jnzbinc1:不相等,轉(zhuǎn)出
      
      mova,b;相等,繼續(xù)
      
      acalltabsub
      
      clr
      
      subba,r4;Y(X)中的r4和表格值比較
      
      jnzr2decl:不相等,轉(zhuǎn)出
      
      setbf0;相等,置標志位返回
      
      ret
      
      bincl:incb
      
      r2decl:djnzr2,btoa
      
      ret;表格查畢,沒有相等的值,不置標志位返回
      
      從查找子程序返回的B寄存器的值,即為差錯在R(X)中從高位到低位的位數(shù)值。
      
      ;4位差錯表格子程序
      
      tabsub:inca
      
      movca,@a+pc;將相對位置的表格送入a寄存器
      
      ret
      
      db0ebh;表格開始,長度為查找子程序中
      
      db00;r2寄存器的預置值
      
      db76h
      
      .
      
      .
      
      .
      
      4糾錯
      
      找到了差錯在R(X)位置,就可以糾錯了。
      
      糾錯的原理比較簡單,因為單片機處理的是二進制數(shù),而二進制數(shù)只有二個狀態(tài),即不是“0”就是“1”。也就是說,R(X)中差錯位是“0”,則改為“1”;差錯位是“1”,則改為“0”。所以糾錯要對所在位求反就行了,程序見本刊網(wǎng)絡(luò)補充版。
      
      至此,整個檢錯、定位、糾錯的BCH碼校驗檢糾過程結(jié)束。BCH碼校驗算法,經(jīng)過實踐的檢驗,不失為單片機級的數(shù)據(jù)傳輸校驗好算法。這種方法可以對多位隨機差錯和多位突發(fā)差錯進行檢驗和糾錯,具體位數(shù)的多少僅受單片機工作頻率的限制,而不受方法的限制。
      
      
      
      
      

    【用語言實現(xiàn)BCH解碼校驗算法】相關(guān)文章:

    計算法簡單實現(xiàn)crc校驗08-06

    DES算法實現(xiàn)過程分析08-06

    基于OMAP的MPEG—4實時解碼器的實現(xiàn)08-06

    嵌入式MPEG—4解碼系統(tǒng)的設(shè)計與實現(xiàn)08-06

    用L9320實現(xiàn)ADPCM語音編解碼08-06

    3-DES算法的FPGA高速實現(xiàn)08-06

    用C語言實現(xiàn)CRC校驗計算08-06

    固定幾何結(jié)構(gòu)的FFT算法及其FPGA實現(xiàn)08-06

    用XC9572實現(xiàn)HDB3編解碼設(shè)計08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      在线97免费视频 | 日本午夜免费啪视频在 | 亚洲人成网站精品片在线观看 | 日韩精品视频在线观看メイド | 在线看免费Av免费 | 久久在国产精品视频 |