CRC校验及其软件实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7"% * +* +* +" # 设 Q! ! 7"% * +*+" !!!N!
故 D! N! 7"为 ^ 位 $ 7"应为 ! 位 % 3 ! ^ % 4 ! " " # * +* +* +" $ 7 Q 7 %* !
! " " # " " # " ! " " # # " "
系$ 并满足余数循环规律 % 举例介绍几种生成多项式 & 他具有 N! / [ / " 4$ *" %* +* +* +* +"的形 式$ 由" 位冗余位组成 % 4
《现代电子技术》 4 # # 5 年第 " % 期总第 4 4 \期
! $ 通信与信息技术 %
! L ! 校验及其软件实现
姚七栋 ! 张春玉
! 陕西财经职业技术学院 ! 陕西 咸阳 !$ " " 4 # # # 摘!要! 数据通信技术是计算机网络技术发展 的 基 础 ! 已经成为现代生活中必不可少的一部分"但通过通信信道传输 的数据往往会有差错的产生 ! 而且差错的产生是不可避免的 ! 我们的任务是 分 析 差 错 产 生 的 原 因 与 差 错 类 型 ! 研究检查是否 出现差错及如何纠正差错 " 循环冗余码 # 是目前应用 最 广 的 检 错 纠 错 编 码 方 法 之 一 " 论 述 了 / / [ /$ [ / 的教学原理及其在 数据通信中的作用 ! 并提出了用 \ # % " 汇编语言实现 / [ / 校验的程序设计 " 关键词 ! 信道 % 误码 % 检错 / [ / 校验 % 中图分类号 ! " " # # ! % $ % 3! 4 # # 5 " % # 5 $ # 4 01 2 " "!!!!! 文献标识码 ! X!!!!! 文章编号 !
%余数 将 指 明 出 错 位 所 在 位 置 &/ " 6! 7" [ /是一种线性 分组码 # 具有较 强 的 纠 错 能 力 并 有 许 多 特 殊 的 代 数 性 质 # 前 J 位为信息码 元 # 后3 位 为 校 验 码 元# 他除了具有线性 分组码的封闭性之外 # 还具有循环性 & 其 编 码 和 译 码 电 路 很容易用移位 寄 存 器 实 现 # 因而在 ’ < /系统中得到了广 泛的应用 & 现以图 " 为例来说明 / [ / 校验的教学原来自百度文库 &
^ % 4
! "将乘得的结果 73 #Q! 4 7"用生成多项式 N! *"去 除$ 忽略其商 $ 仅将其余数 D! 取出 $ 并将其与 73#Q! *" 7" 相加 $ 得到 "! $ 即 "! % 7" 7"% 7 #Q! 7" *" + D!
3
! "需要指出 的 是 & 在/ 采用了一种以按位加 % [ / 中$ 减为基础的模 4 运 算 $ 不 考 虑 进 位 和 错 位$ 即通过模4减 以模 4 加 将 所 得 余 数 拼 接 在 被 除 数 后 面$ 形 实现模 4 除 $ 成一个能 除 尽 的 校 验 码 % 模 4 加 减 即 按 位 加 减 $ 相当于 ’ 异或 ( $ 可用异或门硬件逻辑实现 $ 当然也可用软件实现% 举例如下 &
收稿日期 ! 4 # # 5 # % " 4
图 "!/ [ / 校验的教学原理
! "首先将欲传送的比 特 序 列 Q! 其 中3 7"乘 以 73# " 为 D! 其值等于 N! *"的位数 # *"的位数减 "&
万方数据
5 $
信 息 安 全
姚七栋等: / [ / 校验及其软件实现
循环 $ 例如第十位 出 错 $ 余数# 补# 后 继 续 除$ 得余数 # # "$ 以后将依次为# # # " #$ " # #$ " # # #$ # # " "$ # " " #$ " " # #$ " # " "$ 然后又是# # " # "$ " # " #$ # " " "$ " " " #$ " " " "$ " " # "$ " # # "$ # # "$ 呈循环状 % 所以称之为 ’ 循环 ( 码% 0 循环冗余校验码的检错 能 力 取 决 于 生 成 多 项 式 的 但并不是任何一个多项式都可 以 作 为 N! $ 若从检 选择 $ *" 错纠 错 的 目 的 出 发$ 生 成 多 项 式 应 能 满 足 下 列 要 求& 任何 一位数据发生错误时都 应 使 余 数 不 为 #$ 不同位出错则余 数不同 $ 余数代码与出错位序号之间最 好 有 惟 一 的 对 应 关
冗余位组成 % 其形式为 N! 由 / [ / / / d 0 0$ *" %* +* +* +"$ " 5 位冗余位组成 %
" 5 " 4 ^
7"与 73Q ! 7"相加得到 & & 将 D! ! " !!!" 7
! " " # " " # " " " " #
图" ! "表 7"即 为 将 要 实 际 传 送 的 数 据 $ N , 以上 "! 示& 用接收端收到的 " ! " 去除 N! $ 6! 7" " 6! 7"% "! 7" 7" 若除尽 $ 则表示传 输 过 程 中 无 错 % 图 "! " 表 示& 若第十位 B 则余数就不为 #% 出错 $ 则 余 数 不 为 #$ 不同位出错则 - 在 接 收 端 某 位 出 错$ 余数不同 $ 余数代码与出错位序号之间有惟一的对应关 系 % 通过上例可 求 出 其 余 数 与 出 错 位 序 号 之 间 的 对 应 模 式! 如表 " 所示 " $ 出错模式只与 / [ /码制和生成多项式 有关 $ 而与不同待传码字代码无关 % 表 " 对 于 ! 码具 " #$ 5" 可作为其出错判别依据 % 有一定的通用性 $
:!! L ! 校验的汇编语言实现
在数据通信中 $ 采 用 此 校 验 方 法$ 可使通信的误码率 大为降低 $ 确 保 了 数 据 通 信 的 可 靠 性% 在 程 序 编 制 过 程 中$ 高级语言的实现较为容易 $ 在此仅给出\ # % "汇编语言 的打包与校验程序 % 若是对数据实行 打 包 $ 可将数据的一 并将这 4X 清零 $ 经/ 形 组 先增加 4X 的长度 $ [ / 计算后 $ 成 4X 的冗余 位 * 在 接 收 方$ 则 直 接 将 此 数 据 校 验% 程 序 中[ 程序中的一些 "和 [ 4 即为冗余位的高 \ 位和低 \ 位 $ 原 变量如 / 1 0 Z$ / 1 0 7 等可用\ # % "的内部寄存器$ 始数据存于 1( * 0 [ 所指之处 % 应该指出 $ 我们 所 采 用 的 通 信 方 式 通 常 为 异 步 方 式 $ 而/ 关于这一点$ 可先 [ / 属于同步方式的一种 校 验 方 法 $ 将数据放入 [ 把每一个 存 储 单 元 的 数 据 看 成 是 同 .) 中 $ 步传输 数 字 序 列 的 \ 个 位 来 进 行 处 理 %/ [ /校验程序 如下 &
由于信道上 存 在 的 各 种 复 杂 因 !! 在计算机通信过程中 # 素! 例如 $ 冲击噪 声 和 热 噪 声 等 " 的 影 响# 所传输的信号将 受到不同程度 的 干 扰 # 严 重 时 会 造 成 误 码 以 致 阻 断 通 信& 所以应该在接收方检查所接收的数据 是 否 正 确 # 可采用多 种检测方法 & 其中 循 环 冗 余 校 验 码 ! 是目前在 / [ / 校 验" 计算机网络通信 及 存 储 器 等 方 面 应 用 最 为 广 泛 的 一 种 校 验编码方法 # 是一种强有力的检测手 段 & 人 们 将 该 技 术 用 于多处数据通信系统中 # 收到了令人 满 意 的 效 果 & 本 文 从 详细 / [ / 校验的教 学 原 理 及 汇 编 语 言 实 现 两 方 面 入 手 # 介绍了 / [ / 校验方法 &
9!! L ! 校验的教学原理
将要发送的数据比特 / [ / 检错方 法 的 工 作 原 理 是 $ 序列当做一个多项式 Q! 在发送端 用 收 发 双 方 7"的系数 # 求得一个余数多项式 预先约 定 的 生 成 多 项 式 N! *"去 除 # & 将余数多项式加到数据多项式之后 ! 称为 "! "发 D! *" 7" 送到接 收 端 & 在 接 收 端 用 同 样 的 生 成 多 项 式 N! *"去 除 接 # 如 果 除 得 尽# 表 明 无 差 错# 即 收到 的 数 据 多 项 式 " 6! 7" % 如 果 除 不 尽# 表 明 有 差 错# 即 "! "! 7"% " 6! 7" 7"A
G # $ % ) 3! L !’ * +J % $L # ’ . 1 @ ’ % 1 ) *
# b.& F G = ; 6 7.18/ 9 Q ; Q > @
! # # " + 9 A A ; S F* ? = D : J J F = ; A C A ; G0 : B 9 ; = C = ; J E F E Q E := D’ F ; A ; B :A ; G< B = ; = K F B J 3 F A ; A ; $ " 4 # # ## / 9 F ; A > @d @ >
" 4 " " % 4 " 5 " ^ 4 其形式为 N! 由" / [ / " 5$ *" 5位 %* +* +* +"$
2 $ 5 ! ! " " # " " # " # # # # % * +* +* +* 3 ) $ 取其余数 & 7" N! 7" % 算出 7 #Q! % 4 ! " 7"% * +* +* " " " # !!!D!
$ # ! " # $ % & ’ $ 0 9 :G A E AB = KK Q ; F B A E F = ;E : B 9 ; = C = F J E 9 :N A J F J= DG : I : C = K : ; E= D E 9 :d ; E : ? ; : E E : B 9 ; = C = A ; G9 A JN : B A K :E 9 : > @ R > @ # # ; : B : J J A ? A ? E= DK = G : ? ;C F D : U 7 = M : I : ? E 9 : ? :A ? := D E : ;J = K :K F J E A O : JD = ?E 9 :G A E :E ? A ; J K F E E : GN = KK Q ; F B A E F = ;M A A ; G @R @B @ # E 9 : J :K F J E A O : J B A ;; = E N : A I = F G : G U & Q ? E A J O F J E =A ; A C W : ? : A J = ; J A ; G E : J= D E 9 :K F J E A O : J E =J E Q G ; GB 9 : B OM 9 : E 9 : ? E 9 : ? : F J @ @ R @A # K F J E A O :A : A ? F ; ; G9 = ME =B = ? ? : B E F E U . ER ? : J : ; E / [ /F J= ; := D E 9 :K = J E= D E : ;Q J : GK : E 9 = GE =E : J EA ; GB = ? ? : B EK F J E A O : J U R R >A # 0 9 F JR A : ?G F J B Q J J : J E 9 : E : A B 9 F ; ? F ; B F C := D/ [ /A ; G F E J D Q ; B E F = ; F ;B = KK Q ; F B A E F = ; A ; GR = F ; E J= Q E9 = ME =? : A C F W : E 9 :R ? = B : T R >R R G Q ? :G : J F ;= D/ [ /E : J E U > $ % % % ( ) + , % # / [ /E : J E B = KK Q ; F B A E F = ;M A : ? ? = ?B = G : B 9 : B OK F J E A O : @ *
表 9! ! # # 9 S" X ! L ! 循环码的出错模式 ! %! ,# [9 S S 9 9 . ". 4. %. !. ^. 5. $. \. 2. " # 余数 正确的校验码 " # " " # " " " " # # # # # " # " " # " " " " " # # # " " # " " # " " " # # # # " # " # " " # " " # " # # " # # 接收端 一位出错 校验码 " # " " # " # " " # " # # # " # " " # # " " " # # # " " " # " " " " " " " # # " " # " # " # # " " " " # " " # # " # # " # " " " " # " # " " " " " " # " " " " # # " # " # # " " # " " " " # " # " # 出错位 无 " # 2 \ $ 5 ^ ! % 4 "