Verilog数字系统基础设计-奇偶校验

文章目录

  • Verilog数字系统基础设计-奇偶校验
    • 1 奇偶校验
    • 2 补充

1 奇偶校验

奇偶校验是一种简单、实现代价小的检错方式,常用在数据传输过程中。对于一组并行传输的数据(通常为8比特),可以计算岀它们的奇偶校验位并与其一起传输。接收端根据接收的数据重新计算其奇偶校验位并与接收的值进行比较,如果二者不匹配,那么可以确定数据传输过程中岀现了错误;如果二者匹配,可以确定传输过程中没有出错或者出现了偶数个错误(出现这种情况的概率极低)。奇偶校验包括奇校验和偶校验两种类型。

偶校验和奇校验

对于偶校验,包含校验比特在内,1的总数是偶数。在奇校验中,1的总数则为奇数。

例如:

data_in[7:0]=1010_1011

在该数据串中有5个1,偶校验时,校验结果为1,这样1的总个数为偶数;在奇校验时,校验比特为0,使得1的总个数为奇数。又如:

data_in[7:0]=0000_1111

在该数据串中有4个1,偶校验时,校验结果为0,使得1的总个数仍为偶数;在奇校验时,校验比特为1,使得1的总个数为奇数。

奇偶校验位的生成

将所有的用户信息按比特异或可以得到偶校验结果,将偶校验结果取反就可以得到奇校验结果,具体电路如图6.12所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ElaHg6b-1656937168719)(T:\Works\找工作\复习笔记\IC设计\奇偶校验.assets\641.png)]

奇偶校验的应用

在具体应用奇偶校验时,在发送端,奇偶校验电路计算每一组发送数据的奇偶校验位,将其与数据一起发送;在接收端,奇偶校验电路重新计算所接收数据的奇偶校验值,并将其与收到的校验值进行比较,如果二者相同,可以认为没有发生错误,如果二者不同,可以认为发生了传输错误。需要说明的是,如果错误比特数为偶数(2,4,6等),那么奇偶校验是无法发现这类错误的。例如,发送的数据为8’bl010_1011此时计算出的偶校验值是1。如果在传输中比特3和比特2的值从10跳变为01,那么此时接收到的数据为8’bl0100111,接收的偶饺验值仍然为1。对接收的数据进行偶校验计算,得到的结果仍然为1,这与收到的校验值是相同的,接收电路无法检测出接收数据中岀现的错误。

目前还有很多检错能力更强的编码方式,如CRC(循环冗余校验)。奇偶校验常常用在芯片内部数据传输或者外部数据总线上的数据传输中,如传统的PCI总线中就使用了奇偶校验。CRC更适用于以帧为单位的数据传输中(如PCIe)奇偶校验结果需要和原始数据一起在每个时钟周期进行传送,而针对每个帧的CRC校验结果,通常出现在一个帧的尾部,跟随数据巾贞一起传输。

虽然奇偶校验能够发现单比特错误,但却不能纠正任何错误。前面描述过的纠错码(Error Correction Codes,ECC)可以发现并纠正错误。

关于CRC校验可以查看之前的文章。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Q3a39nj-1656937168721)(T:\Works\找工作\复习笔记\IC设计\奇偶校验.assets\641-16569371529472.jpeg)]

2 补充

奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中"1"的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中"1"的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验"1"的个数是否为奇数,从而确定传输代码的正确性。

奇偶校验需要一位校验位,即使用串口通信的方式2或方式3(8位数据位+1位校验位)。奇校验(odd parity):让传输的数据(包含校验位)中1的个数为奇数。即:如果传输字节中1的个数是偶数,则校验位为“1”,奇数相反。以发送字符:10101010为例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UqA7jwCG-1656937168721)(T:\Works\找工作\复习笔记\IC设计\奇偶校验.assets\c8ea15ce36d3d5392cad8f4a3187e950342ab0a3.jpeg)]

偶校验(even parity):让传输的数据(包含校验位)中1的个数为偶数。即:如果传输字节中1的个数是偶数,则校验位为“0”,奇数相反。还是以发送字符:10101010为例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sZgOXLaX-1656937168722)(T:\Works\找工作\复习笔记\IC设计\奇偶校验.assets\d4628535e5dde7115952c37facefce1b9c1661b3.jpeg)]

数据和校验位发送给接受方后,接收方再次对数据中1的个数进行计算,如果为奇数则校验通过,表示此次传输过程未发生错误。如果不是奇数,则表示有错误发生,此时接收方可以向发送方发送请求,要求重新发送一遍数据。

优缺点:

  • 奇偶校验的检错率只有50%,因为只有奇数个数据位发生变化能检测到,如果偶数个数据位发生变化则无能为力了╮(╯﹏╰)╭

  • 奇偶校验每传输一个字节都需要加一位校验位,对传输效率影响很大。

  • 奇偶校验只能发现错误,但不能纠正错误,也就是说它只能告诉你出错了,但不能告诉你怎么出错了,一旦发现错误,只好重发。

  • 虽然奇偶校验有很多缺点,但因为其使用起来十分简单,故目前仍被广泛使用。

  • 应用:

  • 如何用编程确定一个字节中“1”个数的奇偶性?我们可以利用二进制数相加的特点:

  • 0+0=0、1+0=1、1+1=0

  • 可以看出,如果我们将一个字节的所有位相加

  • 有奇数个“1”的字节的和为1

  • 0+0=0、1+0=1、1+1=0

  • 可以看出,如果我们将一个字节的所有位相加

  • 有奇数个“1”的字节的和为1

  • 有偶数个“1”的字节的和为0

数字系统设计-奇偶校验相关推荐

  1. 《Verilog HDL与FPGA数字系统设计》书籍试读体验

    文章目录 前言 第一部分:数字系统基础 第二部分:数字系统设计实践 第三部分:可编程片上系统 总结 前言 最近参加一个面包板社区的图书试读活动:<Verilog HDL与FPGA数字系统设计&g ...

  2. 【 FPGA 】数字系统设计方法的演变

    前几天无意中打开了Vivado HLS这个设计工具,并看了几眼数据手册,大概是说有种更高抽象级别的设计方式,当然我是不知道的,也没有深究,今天看到<基于FPGA的数字信号处理>这本书,提到 ...

  3. C++确定数字的奇偶校验的算法实现(附完整源码)

    C++确定数字的奇偶校验的算法实现 C++确定数字的奇偶校验的算法实现完整源码(定义,实现,main函数测试) C++确定数字的奇偶校验的算法实现完整源码(定义,实现,main函数测试) #inclu ...

  4. reg类型变量综合电路_2014年PLD习题集(含参考答案)数字系统设计

    下载word有问题请添加微信号:xuecool-com或QQ:370150219处理(尽可能给您提供完整文档),感谢您的支持与谅解. 第1章习题 1.1 名词解释 PROM CPLD FPGA ASI ...

  5. 数字系统设计学习之出租车计价器设计

    前言 数字系统设计的大作业来了,用VHDL语言在实验板上实现一个出租车计价设计,有一些难度,大概花了几天时间,不过好在最后搞出来了,同时总结一下遇到的问题,为了排版整洁,源代码就放在最后放出了. 温馨 ...

  6. 数字系统设计学习之VHDL输入设计

    前言 继续数字系统设计的学习,对QuartusII9的使用相对开始熟悉了很多,正好课程进度学习到了VHDL语言,尝试用VHDL语言完成板载测试,本次实现的功能是花式流水灯. 本文原创,创作不易,转载请 ...

  7. 数字系统设计学习之QuartusII9的安装

    前言 学校开设数字系统设计科目,学习教材内容为EDA技术和VHDL设计,仅用于学习,本次记录QuartusII 9的安装,仅用于学习,如有侵权,请联系我删除,本次学习所需资料度盘: 链接:链接:htt ...

  8. 数字系统设计的基础知识

    不论是学习Verilog HDL,还是学习数字系统设计,本文的知识都是必要的. 数字系统的基础知识 进制 二进制 编码 布尔代数 布尔表达式 组合逻辑电路 时序逻辑电路 时序机 功能器件 存储器件 逻 ...

  9. Verilog语言与数字系统设计

    学习Verilog语言必要的基础知识 计算机导论 数字逻辑或数字电路与逻辑设计 计算机科学概论 拓展学习: 计算机组成原理 计算机体系结构 学习视频链接: 基于FPGA的Verilog语法基础课程(至 ...

最新文章

  1. CVPR2020 3D目标检测 PV-RCNN
  2. CSS-home.htm
  3. Android可视化界面开发工具DroidDraw
  4. Nuget Tips
  5. SVN:多版本库环境的搭建
  6. OpenSSL原理与实现
  7. ImageMagick 拆分透明PNG 合并JPG和Alpha Mask
  8. 计算机应用与技术大赛,关于举办2017年燕山大学第一届计算机应用技术与程序设计大赛的通知...
  9. python 高中信息技术 会考_2019信息技术会考真题
  10. Google十大高薪职位:首席软件工程师居首
  11. MATLAB—view函数观察三视图
  12. 使用函数调用 输出三个数中的最大值,最小值
  13. Hi3531D加载TVP7002驱动模块——新手全过程记录
  14. 微信小程序毕业设计——社区老人互助管理平台
  15. 透明位图Ron Gery Microsoft 网络开发技术小组
  16. ctf练习之闯关游戏
  17. Android : Broadcast
  18. 光遇脚本弹琴_关于光遇弹琴脚本的一点想法
  19. 1.4 面试问题整理: ATM机取款
  20. yarn 系统找不到指定的路径

热门文章

  1. 道路缺陷检测学习笔记
  2. 详解环保数采仪功能应用
  3. python数字炸弹小游戏
  4. 基于java的购物网站论文,基于JAVA购物网站的设计与实现(SSH,MySQL)
  5. Simulink代码生成(二)——代码生成时模型的配置方法及操作流程
  6. nrf91 mqtt测试以及API调用
  7. RecyclerView仿头条新闻频道管理
  8. 语音识别MFCC 一阶差分与二阶的含义
  9. 使用OrthoMCL鉴定直系同源基因组
  10. 电阻分压、电阻分流原理