1. 物理学类
  2. 统计学类
  3. 数学论文
  4. 农林学类
  5. 地理地质
  6. 天文学
  7. 能源动力学
  8. 生物学
  9. 环境学
  10. 化学论文
  11. 动物学论文
  12. 其他相关
  13. 植物保护

基于汇编语言的BCH解码校验算法

摘要: 介绍数据传输中BCH解码校验用汇编语言实现的算法。算法包含BCH码的差错检验、差错位查找和差错纠正,同时列出相关主要子程序清单并予说明。 关键词: BCH解码校验算法汇编语言 数据传输通信中,常常因传输差错造成误码错码,尤其在无线通信中,空中的突发或随机
阅读技巧Ctrl+D 收藏本篇文章
  摘要:介绍数据传输中BCH解码校验用汇编语言实现的算法。算法包含BCH码的差错检验、差错位查找和差错纠正,同时列出相关主要子程序清单并予说明。  关键词:BCH解码校验算法汇编语言  数据传输通信中,常常因传输差错造成误码错码,尤其在无线通信中,空中的突发或随机干扰噪声会造成编码差错。为了提高传输的正确率,往往采用一些校验方法,以检验纠正传输差错。通信中校验的方法很多,其中的BCH编码有其独特的优点:不仅可以检纠突发差错,还能检纠随机差错,被广泛地采用在微机级的通信中。但对更低层的单片机级的数据传输通信纠错,往往采用奇偶校验等简单的校验方法。BCH校验因其算法复杂,尤其是动态实时的无线通信中,单片机的通信往往无法采用BCH解码检纠。  笔者近几年在工业测控和无线通信系统开发,摸索了BCH解码检纠在实时的、动态的、单片机级的通信中的算法,并取得十分突出的效果。以下以BCH(31:21)码为例进行探讨。  1、BCH码结构  BCH码是一种检纠能力较强的循环码。它由信息多项式M(X)和校验多项式J(X)组成,如以T(X)表示整个BCH(31:21)码字的31位码组多项式,则:  T(X)=M(X)+J(X)(1)  在31位BCH码的后面再加上1位,以保证整个码字32位中“1”的个数为偶数。该位称偶校验位。这样就形成BCH(31:21)加1位偶校验位的标准码字,其结构为:  其中校验多项式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码是一种循环码,循环码是利用除法来纠错的。由于任一码组多项式T(X)都能被生成多项式S(X)整除,所以在接收端可以将接收码组R(X)用S(X)去除。若在传输中未发生错误,接收码与发送码相同,即R(X)=T(X),故接收码组R(X)必定能被生成多项式S(X)整除;若码组在传输中发生错误,即R(X)≠T(X),R(X)被S(X)除时,可能除不尽而有余项Y(X),因此,可根据余项是否为零来判断码中有无错误(检错),如有余项,通过一定的运算就可以确定错误位置,从而加以纠正(纠错)。  这里R(X)被S(X)除,是32位被11除,这在非实时静态的微机级实现非常简单;但在实时的、动态的、单片机级的通信中实现要快速巧妙的算法才能实现,否则,现有的码未检错及纠错完毕,下一个码已经到了。因为动态中位和位的时距t往往只有几十μs,以9.6b/s的短信为例,t=104μs。在这104μs中要完成检错、定位和纠错三个算法程序,才是一个完整的解码检纠过程。  2、检错  根据上述原理,检错过程也就是求算R(X)被S(X)除的余项Y(X)的过程,如余项Y(X)=0,则R(X)=T(X),传输无差错;如余项Y(X)≠0,则R(X)≠T(X),检出传输差错。  在算法语言中,所有的运算总归于二种运算:加和减。这是电子计算机的二进制基本电路特性所决定的,也是汇编语言唯一的算术运算方法。为此,这里把除法用模二加法再加右移位实现。  已知:S(X)=11101101001  R(X)=r3r4r5r6(ri为8位寄存器)  调用下面的模二加法右移子程序,得到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;右移总次数为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)。为此,经过几年的实践,把Y(X)(即r3r4)直接作为综合校验子,通过快速查表找到差错位置。查找程序的大小和检纠差错位数有关,这里以检纠4位差错为例,说明定位纠错的方法。  ;4位差错位址查找子程序  bitposi:movb,0;对R(X)高位至低位的移动计数  movr2,#1fh;设表格长度  btoa:mova,b  incb  acalltabsub;调用表格子程序,读入表格值  clrc  subba,r3;Y(X)中的r3和表格值比较  jnzbinc1:不相等,转出  mova,b;相等,继续  acalltabsub  clr  subba,r4;Y(X)中的r4和表格值比较  jnzr2decl:不相等,转出  setbf0;相等,置标志位返回  ret  bincl:incb  r2decl:djnzr2,btoa  ret;表格查毕,没有相等的值,不置标志位返回  从查找子程序返回的B寄存器的值,即为差错在R(X)中从高位到低位的位数值。  ;4位差错表格子程序  tabsub:inca  movca,@a+pc;将相对位置的表格送入a寄存器  ret  db0ebh;表格开始,长度为查找子程序中  db00;r2寄存器的预置值  db76h  4、纠错  找到了差错在R(X)位置,就可以纠错了。  纠错的原理比较简单,因为单片机处理的是二进制数,而二进制数只有二个状态,即不是“0”就是“1”。也就是说,R(X)中差错位是“0”,则改为“1”;差错位是“1”,则改为“0”。所以纠错要对所在位求反就行了,程序见本刊网络补充版。  至此,整个检错、定位、纠错的BCH码校验检纠过程结束。BCH码校验算法,经过实践的检验,不失为单片机级的数据传输校验好算法。这种方法可以对多位随机差错和多位突发差错进行检验和纠错,具体位数的多少仅受单片机工作频率的限制,而不受方法的限制。 [基于汇编语言的BCH解码校验算法]相关文章: 1.用汇编语言实现BCH解码校验算法 2.利用汇编语言实现DES加密算法 3.基于DSP的信道译码算法优化 4.基于遗传算法的OD分布 5.基于MSP430的嵌入式DTMF拨号解码器实现方案 6.基于分块DCT的自适应扩频水印算法(1) 7.CCD测量系统中基于自适应相关算法的动态目标跟踪 8.基于梯度调整的矩不变自动阈值图像分割算法 9.一种基于比特表的实时多任务新调度算法 10.MIDI信号的解码及实时音符显示 转载请注明来源。原文地址:http://www.lw54.com/html/lixueqita/20170921/7234130.html   

基于汇编语言的BCH解码校验算法相关推荐

  1. 心理护理学论文
  2. 数学教育方面的论文
  3. 巧妙导读读中得法———品汤瑾《和氏献璧》教
  4. 论语言迁移对日语量词学习的影响
  5. 让“读”真正发生———小古文《湖心亭看雪》
  6. 实用性文本的教学价值与策略构建
  7. 与高一新同学谈古诗词学习
  8. 点点成线——词和词类
  9. 象似性在对外汉语教学中的应用初探
  10. 语言文字基础及应用专题训练

------分隔线----------------------------
联系方式
微信号

优发娱乐

热点论文
  1. 认证空间
  2. 信用说明
  3. 返回顶部