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

[09-12 18:30:37]   来源:http://www.88dzw.com  EDA/PLD   阅读:8587

文章摘要:XRLA,70H;(s31+s3)的矢量值MOV73H,ACJNEA,#00H,L2;s31+s3≠0LJMP CORRECT;s31+s3=0,纠1位错LJMPRIGHT;送至解码输出程序L2:MOVA,73HLCALL TAB2MOV74H,A;(s31+s3)的指数MOVA,71HLCALL TAB2MOV76H,A;76H中放s1的指数MOVA,74HSUBA,76HJCL3L4:MOV75H,ALJMPL5L3:ADD74H,#0FH;进行求逆MOVA,74HSUBA,76HLJMPL4L5:MOVA,R0LCALL TAB2MOV7CH,A;7CH中放αi的指数ADDA,76H;s

基于汇编语言的BCH解码校验算法,标签:eda技术,eda技术实用教程,http://www.88dzw.com

  XRLA,70H;(s31+s3)的矢量值

  MOV73H,A

  CJNEA,#00H,L2;s31+s3≠0

  LJMP CORRECT;s31+s3=0,纠1位错

  LJMPRIGHT;送至解码输出程序

  L2:MOVA,73H

  LCALL TAB2

  MOV74H,A;(s31+s3)的指数

  MOVA,71H

  LCALL TAB2

  MOV76H,A;76H中放s1的指数

  MOVA,74H

  SUBA,76H

  JCL3

  L4:MOV75H,A

  LJMPL5

  L3:ADD74H,#0FH;进行求逆

  MOVA,74H

  SUBA,76H

  LJMPL4

  L5:MOVA,R0

  LCALL TAB2

  MOV7CH,A;7CH中放αi的指数

  ADDA,76H;s1αi的指数

  LCALLTAB1;s1αi的矢量值

  MOV77H,A

  MOVA,7CH

  RLA

  MOV79H,A;79H中放α2i的指数

  ADDA,75H;σ2α2i的指数

  LCALL TAB1;σ2σ2i的矢量值

  XRLA,77H;(σ1αi+σ2α2i)的矢量值

  CJNEA,#01H,L6

  MOVR1,#60H

  MOVA,R0

  MOV @R1,A;将错误位置放入60H单元中

  INCR1

  INCR7

  L6:INCR0

  CJNER0,#0FH,L5;判断搜索完否

  CJNER7,#02H,L7;错误个数是否为2

  MOVA,60H;将第1个错误位置放入60H单元中

  MOV78H,A

  LCALL CORRECT

  MOVA,61H;将第2个错误位置放入61H单元中

  MOV78H,A

  LCALL CORRECT

  LJMPRIGHT;送至解码输出程序

  L7:MOV80H,#01H;置超出纠错标志

  END

  供主程序调用的有6个子程序,其中2个是查表程序\[2\],2个是求s1和s3的程序\[3\],另外2个分别是纠错程序和求余程序。纠错程序和求余程序较为简单: 纠错程序只须先判断出差错位置,然后将对应的差错位进行取反操作;求余程序则是用于处理指数相加的结果大于15时出现的情况。相对关键的是查表程序和求伴随式值程序。查表程序为BCH码的有限域运算提供了便利,表1中按α指数的递增顺序列出了有限域内的矢量值;表2中按矢量的递增顺序列出了对应的α指数。



  据此α的指数与对应的矢量值便可实现相互查找,具体程序如下。

  ①  查表1: 指数表示→二进制矢量表示。

  TAB1: ADDA,#30H

  MOVR5,A

  MOVA,@ R5

  RET

  ②  查表2: 二进制矢量表示→指数表示。

  TAB2: ADDA,#40H

  MOVR6,A

  MOVA,@ R6

  RET

  这里以s3为例,给出求伴随式值程序的实现方法,其他伴随式可依此类推。因为s3=r(α3),所以先判断03H中的内容,若为1,则向寄存器B中送入(α3)14=α42=α12(指数按模15运算)对应的二进制矢量值(1111),否则送0;而后依次判断接收的其他各位,若第2位也为1,则将(α3)13对应的二进制矢量值与B中的内容模2加,否则B中内容不变,直至判断到第15位。由于将s3展开后,其展开式按α0、α3、α6、α7和α12的规律重复出现了3次,因此毋须判断至第15位,只需判断至第5位,循环3次即可实现。

  结语

  至此,通过上述主程序和子程序的软件编解码方法,有效地实现了BCH码的差错检验、差错查找和差错纠正。该BCH解码的汇编程序,经实践检验,不失为单片机级的信号传输中较好的应用程序。它可以对多位的随机差错进行检错和纠错,具体位数的多少仅受单片机工作频率的限制,而与方法无关。


上一页  [1] [2] 


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD

《基于汇编语言的BCH解码校验算法》相关文章

分类导航
最新更新
热门排行