zoukankan      html  css  js  c++  java
  • Verilog奇偶校验_zt

    http://blog.sina.com.cn/s/blog_6c7b6f030101hj8p.html

    1、奇偶校验位于数据位之后,占1位,用于表示串口通信中的校验方式。该位有用户根据需要决定,有奇校验,偶校验,无校验三种。一般都采用无奇偶校验的方式
    2、所谓奇校验,就是判断发送方的数据位中1的个数是否是奇数。选择奇校验时,首先将数据位的各位进行“异或”操作,然后将结果与1相“异或”,得到的结果就是奇校验位的值。
    说白了,奇校验就是确保发送的数据位中1的个数为奇数,如果数据位中1的个数是偶数,那就给校验位赋值1,如果数据位中1的个数是奇数,那就给校验位赋值0.这样就确保发送的数据中1的个数是奇数
    3、偶校验跟奇校验相反,但处理步骤是一样的。偶检验位的计算方法是首先将数据位的各位进行“异或”操作,然后将结果与0相“异或”,得到的结果就是奇校验位的值。
    4、串口发送时,先把奇偶校验位的值写入TB8,然后再将要发送的数据写入发送缓冲器SBUF
    5、串口接收时,先接受数据缓冲器SBUF里面的数,并计算接收数据中的1的个数,然后读取RB8的值,进行比较,根据奇偶校验规则判断接收数据是否正确。
    6、为什么奇偶校验不常用?
    数据通信中的数据只能是1或者0,如果一个数据中的1位发生错误,那1的个数肯定就从奇数变为偶数(或者偶数变为奇数)。
    但是如果数据中有多个数据位都发生错误了呢。举例来说,我们要发送11110000.如果有两位发生了错误,比如变成了11000000,那么1的个数还是偶数,那奇偶校验就检测不出来错误了。 
    所以说:如果数据中发生多位数据错误就可能检测不出来,更检测不到错误发生在哪一位;
    7、关于TB8和RB8,这两位既可以作奇偶校验位。也可以做多机通信的数据,地址选择位

    module parity(even_numbits,odd_numbits,input_bus);

          output   even_numbits,odd_numbits;

         input  [7:0]  input_bus;

               assign  odd_numbits = ^input_bus;

               assign even_numbits=~odd_numbits;

    endmodule

  • 相关阅读:
    SiteMesh在项目中的配置
    javascript深入理解js闭包
    小tip: 使用CSS将图片转换成黑白(灰色、置灰)
    java程序员最不愿意看到的十件事
    Spring AOP AspectJ
    2万字Java并发编程面试题整理(含答案,建议收藏)
    85道Java微服务面试题整理(助力2020面试)
    10个很多人不知道的Redis使用技巧
    2020年大厂Java面试题(基础+框架+系统架构+分布式+实战)
    2020年薪30W的Java程序员都要求熟悉JVM与性能调优!
  • 原文地址:https://www.cnblogs.com/agllero/p/4444564.html
Copyright © 2011-2022 走看看