📄 bch_encrypt.html
字号:
资讯 <http://news.ddvip.com/index.html>| 操作系统
<http://tech.ddvip.com/os/index.html>| 编程
<http://tech.ddvip.com/program/index.html>| 平面
<http://tech.ddvip.com/pic/index.html>| 动画
<http://tech.ddvip.com/mediamovice/index.html>| 网络
<http://tech.ddvip.com/network/index.html>| 安全
<http://tech.ddvip.com/safe/index.html>| 通信
<http://tech.ddvip.com/comm/index.html>| 认证
<http://tech.ddvip.com/cert/index.html>| 办公
<http://tech.ddvip.com/office/index.html>| 服务器
<http://tech.ddvip.com/server/index.html>| 数据库
<http://tech.ddvip.com/db/index.html>| 企业应用
<http://tech.ddvip.com/ent/index.html>| 软件应用
<http://tech.ddvip.com/soft/index.html>| 存储
<http://tech.ddvip.com/server/datasave/index.html>| 电子机械
<http://tech.ddvip.com/machine/index.html>| QQ
<http://tech.ddvip.com/chatsoft/qq.html>| SOA
<http://tech.ddvip.com/soa/index.html>
网站LOGO
<http://ip345.com/zuyong>
* AutoCAD <http://tech.ddvip.com/machine/autocad/index.html>
* Pro/E <http://tech.ddvip.com/machine/pro/e/index.html>
* DSP <http://tech.ddvip.com/machine/dsp/index.html>
* CAM <http://tech.ddvip.com/machine/cam/index.html>
* Matlab <http://tech.ddvip.com/machine/matlab/index.html>
* EDA/PLD <http://tech.ddvip.com/machine/eda/index.html>
* 单片机 <http://tech.ddvip.com/machine/mcu/index.html>
* 电源技术 <http://tech.ddvip.com/machine/power/index.html>
* 模拟电子 <http://tech.ddvip.com/machine/analog/index.html>
* 存储技术 <http://tech.ddvip.com/machine/store/index.html>
* 无线电子 <http://tech.ddvip.com/machine/rf/index.html>
* 光电显示
<http://tech.ddvip.com/machine/opticalelectronicsdisplay/index.html>
* 传感控制 <http://tech.ddvip.com/machine/sensor/index.html>
* 数字电子 <http://tech.ddvip.com/machine/circuit/index.html>
* 嵌入式系统 <http://tech.ddvip.com/machine/embed/index.html>
<http://www.zzy.cn/count.php?id=58> <http://www.1stchina.com/>
<http://www.163ns.com/> <http://www.linkwww.com/>
<http://www.itrenzheng.com/> <http://www.enkj.com/>
豆豆网 <http://www.ddvip.com> > 技术应用
<http://tech.ddvip.com/index.html> > 机械电子
<http://tech.ddvip.com/machine/index.html> > 单片机
<http://tech.ddvip.com/machine/mcu/index.html> > 正文
用汇编语言实现BCH解码校验算法
网站建设-找友创互联 <http://www.yclink.com/event/website/index.html> 开
网店-找友创互联 <http://www.yclink.com/event/kwd>
http://tech.ddvip.com 2008年07月13日 社区交流 <http://bbs.ddvip.com>
关键字: ISP在线编程 <http://tech.ddvip.com/search.php?key=ISP在线编程>
DDS输出信号 <http://tech.ddvip.com/search.php?key=DDS输出信号> 车载空调
控制器 <http://tech.ddvip.com/search.php?key=车载空调控制器> 倒车雷达设
计 <http://tech.ddvip.com/search.php?key=倒车雷达设计> 血压检测仪
<http://tech.ddvip.com/search.php?key=血压检测仪> 在线测试仪
<http://tech.ddvip.com/search.php?key=在线测试仪>
内容摘要:介绍数据传输中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……X20 X21……X30 X31
T(X) J(X) 偶校验位
J(X)=M(X)/S(X) (2)
式中S(X)是BCH(31:21)码的生成多项式,见式(3):
用汇编语言实现BCH解码校验算法
生成多项式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:mov r7,#00
m2ddgx:mov a,r3
xrl a,#0edh ;S(x)的高位=oed(h)
mov r3a
mov a,r4
cpl acc.5 ;S(x)的低3位=001(b)
mov r4,a
mov a,r3
acc7e10:jb acc.7m2addgx ;R(x)的最高位为“0”,则R(x)右移
mov a,r6
rlc a
mov r6,a
mov a,r5
rlc a
mov r5,a
mov a,r4
rlc a
mov r4,a
mov a,r3
rlc a
mov r3,a
mov r7
cjne r7,#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:mov b,0 ;对R(X)高位至低位的移动计数
mov r2,#1fh ;设表格长度
bto a: mov a,b
inc b
acall tabsub ;调用表格子程序,读入表格值
clr c
subb a,r3 ;Y(X)中的r3 和表格值比较
jnz binc1 :不相等,转出
mov a,b ;相等,继续
acall tabsub
clr
subb a,r4 ;Y(X)中的r4和表格值比较
jnz r2decl:不相等,转出
setb f0 ;相等,置标志位返回
ret
bincl:inc b
r2decl:djnz r2,btoa
ret ;表格查毕,没有相等的值,不置标志位返回
从查找子程序返回的B寄存器的值,即为差错在R(X)中从高位到低位的位数值。
;4位差错表格子程序
tabsub:inc a
movc a,@a+pc;将相对位置的表格送入a寄存器
ret
db 0ebh ;表格开始,长度为查找子程序中
db 00 ;r2寄存器的预置值
db 76h
.
.
.|
4 纠错
找到了差错在R(X)位置,就可以纠错了。
纠错的原理比较简单,因为单片机处理的是二进制数,而二进制数只有二个状
态,即不是“0”就是“1”。也就是说,R(X)中差错位是“0”,则改为“1”;差错位是
“1”,则改为“0”。所以纠错要对所在位求反就行了,程序见本刊网络补充版
(http://www.dpj.com.cn)。
至此,整个检错、定位、纠错的BCH码校验检纠过程结束。BCH码校验算法,经
过实践的检验,不失为单片机级的数据传输校验好算法。这种方法可以对多位随机
差错和多位突发差错进行检验和纠错,具体位数的多少仅受单片机工作频率的限
制,而不受方法的限制。
作者:沈庆跃 责编:豆豆技术应用
与“用汇编语言实现BCH解码校验算法”相关的文章
* DVB-S2中BCH译码器的硬件设计
<http://tech.ddvip.com/2008/07/121722980548917.html>
* Nios SoC系统中的BCH编解码IP核的设计
<http://tech.ddvip.com/2008/07/121576383846801.html>
本栏目更新
* 单片机的ISP在线编程设计
<http://tech.ddvip.com/2008/09/122178727567343.html>
* 带有以太网接口的蓄电池化成监控系统的设计
<http://tech.ddvip.com/2008/09/122178716467342.html>
* 精确控制DDS输出信号幅度的一种新方法
<http://tech.ddvip.com/2008/09/122178704867341.html>
* MCU需要改进 <http://tech.ddvip.com/2008/09/122178693567340.html>
* 一种实用的车载空调控制器设计
<http://tech.ddvip.com/2008/09/122101681862764.html>
* 基于MSP430F2274单片机的倒车雷达设计
<http://tech.ddvip.com/2008/09/122101673762763.html>
* 一种基于SoC的高精度电子血压检测仪
<http://tech.ddvip.com/2008/09/122058598560616.html>
* 基于MSP430的轨道电路在线测试仪设计与实现
<http://tech.ddvip.com/2008/09/122032963759455.html>
* 基于STC单片机与GPRS的图文LED屏
<http://tech.ddvip.com/2008/09/122024217859120.html>
* 水平定向钻进跟踪与导向仪中地下传感发射探头的设计
<http://tech.ddvip.com/2008/09/122024209659119.html>
点击发表评论 <#showcomment>
网友昵称: 匿名发表(无需注册)
请输入验证码:
如果您还不是豆豆会员,欢迎注册 <http://bbs.ddvip.com>。
本记录共有评论 0 条 正等您发表评论
<http://cmt.ddvip.com/cmtshow.html?r_node=tech&r_subid=2008-07-13_47186>
教程 软件 源码
单片机专题 <http://tech.ddvip.com/zt/single-chip.html>
* AVR 单片机 <http://tech.ddvip.com/zt/avr.html>
* PIC系列单片机 <http://tech.ddvip.com/zt/pic_dpj.html>
* 51系列单片机 <http://tech.ddvip.com/zt/51_dpj.html>
* MCS-51系列单片机 <http://tech.ddvip.com/zt/mcs_51.html>
* MSP430 单片机 <http://tech.ddvip.com/zt/msp430.html>
* Atmega 单片机 <http://tech.ddvip.com/zt/atmega.html>
* AT89C51,AT89C52单片机 <http://tech.ddvip.com/zt/at89c.html>
* C8051F 系列单片机 <http://tech.ddvip.com/zt/c8051f.html>
* 更多单片机专题>>> <http://tech.ddvip.com/zt/single-chip.html>
精华推荐 <http://tech.ddvip.com/machine/mcu/index.html>
* 单片机的ISP在线编程设计
<http://tech.ddvip.com/2008/09/122178727567343.html>
* 89C51单片机的自控对星装置
<http://tech.ddvip.com/2008/08/121963697257731.html>
* 单片机应用编程技巧
<http://tech.ddvip.com/2008/08/121963619257722.html>
* 单片机初学者不易掌握的概念
<http://tech.ddvip.com/2008/08/121963610857721.html>
* 单片机的在线编程技术
<http://tech.ddvip.com/2008/08/121963302857691.html>
* ASM-51 宏汇编使用手册
<http://tech.ddvip.com/2008/08/121948572157539.html>
* 什么是单片机 <http://tech.ddvip.com/2008/08/121948430757513.html>
* 一种MCU时钟系统的设计
<http://tech.ddvip.com/2008/08/121936893256527.html>
* PIC单片机的特点及应用
<http://tech.ddvip.com/2008/08/121930743956395.html>
* PIC 8位单片机的汇编语言
<http://tech.ddvip.com/2008/08/121930690356389.html>
* PIC系列单片机的伪指令
<http://tech.ddvip.com/2008/08/121930675556387.html>
* 单片机硬件系统设计原则
<http://tech.ddvip.com/2008/08/121929099956303.html>
* C语言在单片机开发中的应用
<http://tech.ddvip.com/2008/08/121928982756286.html>
* 单片机开平方的快速算法
<http://tech.ddvip.com/2008/08/121928805856259.html>
* PIC单片机的应用设计技巧
<http://tech.ddvip.com/2008/07/121671442547529.html>
* 基于51单片机的温度测量系统
<http://tech.ddvip.com/2008/07/121670683547483.html>
* 利用单片机I/O口直接驱动LCD
<http://tech.ddvip.com/2008/07/121669786447470.html>
* 单片机系统的低功耗设计策略
<http://tech.ddvip.com/2008/07/121660906847370.html>
* 单片机控制的数字触发器
<http://tech.ddvip.com/2008/07/121592119547183.html>
关于我们 <http://www.ddvip.com/about.html> - 联系我们
<http://www.ddvip.com/contactus.html> - 版权申明
<http://www.ddvip.com/corp.html> - 广告服务
<http://www.ddvip.com/ad.html> - 网站地图
<http://www.ddvip.com/map.html> - 网站律师
<http://www.ddvip.com/lawfirm.html> - 报告错误 <http://bbs.ddvip.com> -
免责条款 <http://www.ddvip.com/disclaimer.html> - 友情连接
<http://www.ddvip.com/link.html>
豆豆网 版权所有 © 2002-2008
蜀ICP证05002354号 All rights reserved DDVIP.COM <http://www.ddvip.com>
<http://www.no1dns.com/style/info/hezu.asp>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -