奇偶校验法

奇偶校验法

2005年10月自学考试计算机原理模拟试题

51.什么是校验码?什么是奇偶校验码?它有什么特点?请写出二进制数0010110的奇校验码和偶校验码。

答案

51.(1)为保证计算机内的信息在存取、传输、运算等过程中的正确性,还需要对数据的编码采取检错和纠错的措施。通常采用的方法是对数据信息扩充,加入新的代码,与原数据一起按某种规律编码后,使它具有发现数据信息出错的能力,有的甚至能指出错误所在的准确位置并自动进行改正。这种具有指出错误或改正错误能力的编码称为数据校验码。

( 2)奇偶校验是一种结构最简单也是最常用的校验方法。在n位长的数据代码上增加一个二进制位作校验位,放在n位代码的最高位之前或最低位之后,组成n+1位的码。这个校验位取0还是取1的原则是:若设定奇校验,应使代码里含1的个数连同校验位的取值共有奇数个1;若设定为偶校验,则n位信息连同校验位的取值使1的个数为偶数。在计算机中备有逻辑电路产生满足校验要求的校验位与数据代码组成校验码。计算机有专门的奇偶检测电路负责对校验码含1的个数进行检测。假设被检测的校验码含1的个数是偶数,而设定的是奇校验,意味着有信息由1误变为0或由0变为1,同样道理也可以作偶校验检测。奇偶校验广泛应用于主存储器信息的校验及字节传输的出错校验。奇偶校验的缺点是只能发现有无差错,而不能确定发生差错的具体位置且当有偶数个二进制位发生错误时,不能发现错误,失去校验能力。

( 3)奇校验码:00010110;偶校验码:10010110。注:这里将第一位设为校验位。

奇偶校验

为了系统的可靠性,对于位数较少,电路较简单的应用,可以采用奇偶校验的方法。奇校验是通过增加一位校验位的逻辑取值,在源端将原数据代码中为1的位数形成奇数,然后在宿端使用该代码时,连同校验位一起检查为1的位数是否是奇数,做出进一步操作的决定。奇偶校验只能检查一位错误,且没有纠错的能力。偶校验道理与奇校验相同,只是将校验位连同原数据代码中为1的位数形成偶数。奇偶校验器多设计成九位二进制数,以适应一个字节,一个ASCII代码的应用要求。奇偶校验是一种荣誉编码校验,在存储器中是按存储单元为单位进行的,是依靠硬件实现的,因而适时性强,但这种校验方法只能发现奇数个错,如果数据发生偶数位个错,由于不影响码子的奇偶性质,因而不能发现。 奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 与一段信息关联的冗余信息。在WindowsNTServer中,带奇偶校验的带区集意味着每行有一个附加的奇偶校验带区。因此,必须使用至少三个(而不是两个)磁盘才能考虑该附加的奇偶校验信息。奇偶校验带区包含该带区内数据的XOR(称为排它性“或”的布尔操作)。重新生成失败的磁盘时,WindowsNTServer将使用这些带区中与完好磁盘上数据关联的奇偶校验信 息重新在失败盘上创建数据。请参阅容错;带区集;带奇偶校验的带区集奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。 为了能检测和纠正内存软错误,首先出现的是内存“奇偶校验”。内存中最小的单位是比特,也称为“位”,位只有两种状态分别以1和0来标示,每8个连续的比特叫做一个字节(byte)。不带奇偶校验的内存每个字节只有8位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误。而奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位。在某字节中存储数据之后,在其8个位上存储的数据是固定的,因为位只能有两种状态1或0,假设存储的数据用位标示为1、1、1、0、0、1、0、1,那么把每个位相加(1+1+1+0+0+1+0+1=5),结果是奇数。对于偶校验,校验位就定义为1,反之则为0;对于奇校验,则相反。当CPU读取存储的数据时,它会再次把前8位中存储的数据相加,计算结果是否与校验位相一致。从而一定程度上能检测出内存错误,奇偶校验只能检测出错误而无法对其进行修正,同时虽然双位同时发生错误的概率相当低,但奇偶校验却无法检测出双位错误。

奇偶校验电路设计

奇偶校验电路设计 一、实验目的 1.熟悉QuartusII的使用; 2. 学习在QuartusII中; 3. 学习原理图方式自定义元件的输入,封装,调用; 4. 掌握奇偶校验原理; 5. 学会使用现成的芯片搭建目标电路。 二、实验内容和原理 实验内容: (1)在QuartusII环境下以原理图方式建立顶层文件工程。 利用多个74386芯片搭建一个奇偶校验电路。74386提供四个2输入异或门 (2)建立仿真文件,观察输出结果。 实验原理: 奇偶校验码是最简单的数据校验码,其码距为2,可以检测出一位错误,但无法指出错误的位置。 具体校验实现方法为将有效信息位和校验位读入,判断其1的个数是奇数个还是偶数个,在奇校验的情况下正常情况下个数应该为奇数个,偶校验正常情况下应该是偶数个。 校验码的生成:对于奇校验,判断有效信息位1的个数,若为偶数则校验位为1,奇数则校验位为0;偶校验反之。 具体实现的逻辑表达式如下:

三、实验设计原理图以及综合结果 记录逻辑单元的消耗情况等。 原理图如下: 偶校验奇校验 76543210校经过设计后用74386实现的原理图如下:

综合结果如下图所示: 四、仿真波形图 画出波形图以及波形图中仿真信号的说明。 并分析结果(实验现象结论)。 仿真波形图如下所示:

其中,D0-7为信息位,Djiao为校验位。实验结果如下: 说明:波形信息位为奇数个1,校验位为0时,输出的奇校验位为0,偶校验位为1,奇校验错误为0,偶校验错误为1(即有错)。同理其他测试分别测试了信息位为奇数个1,校验位为1、信息位为偶数个1,校验位为1、信息位为偶数个1,校验位为0的情况,图中波形的测试完全符合预期要求。 五、实验中遇到的问题和解决方法。 在实验中遇到的主要问题: (1)操作不熟悉导找不到部分功能元件 (2)由于连线有误,在仿真时结果出现错误。

常用的检错码 - 奇偶校验码

3.2差错控制 3.2.2常用的检错码- 奇偶校验码 奇偶校验码是一种简单的检错码,奇偶校验码分为奇校验码和偶校验码,两者原理相同。它通过增加冗余位来使得码字中“1”的个数保持奇数或偶数。 ?无论是奇校验码还是偶校验码,其监督位只有一位; ?假设信息为为I1, I2, …, I n,对于偶校验码,校验位R可以表示为: R =I 1 ⊕I 2 ⊕Λ⊕I n ?假设信息为为I1, I2, …, I n,对于奇校验码,校验位R可以表示为: R =I 1 ⊕I 2 ⊕Λ⊕I n ⊕1 ?无论是奇校验码还是偶校验码,都只能检测出奇数个错码,而 不能检测偶数个错码。 4 4

讨论: 从检错能力、编码效率和代价等方面来评价垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验 3.2 差错控制 3.2.2 常用的检错码 - 奇偶校验码 奇偶校验在实际使用时又可分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验等几种。 5

3.2.2常用的检错码–定比码 所谓定比码,即每个码字中“1”的个数与“0”的个数之比保持恒定, 故又名等比码或恒比码。 ?当码字长一定,每个码字所含“1”的数目都相同,“0”的数目也 都相同。 ?由于若n位码字中“1”的个数恒定为m,还可称为“n中取m”码 定比码(n中取m)的编码效率为: log C m R = ?2 n n 定比码能检测出全部奇数位错以及部分偶数位错。实际上,除了码 字中“1”变成“0”和“0”变成“1”成对出现的差错外,所有其它差 错都能被检测出来 6 4

代码“1011011”对应的多项式为x 6 + x 4 + x 3 +1 多项式“x 5 + x 4 + x 2 + x”所对应的代码为“110110” 3.2.2 常用的检错码 – 循环冗余检验 循环冗余码(Cyclic Redundancy Code ,简称CRC )是无线通信中用得最广泛的检错码,又被称为多项式码。 二进制序列多项式:任何一个由m 个二进制位组成的代码序列都可以和一个只含有0和1两个系数的m-1阶多项式建立一一对应的关系。 CRC 有关的多项式: ? 信息位多项式、冗余位多项式、码字多项式、和生成多项式 信息位1010001:K (x ) = x 6 + x 4 + 1 冗余位1101:R (x ) = x 3 + x 2 + 1; 码字10100011101: T (x ) = x 10 + x 8 + x 4 + x 3 + x 2 + 1 7

奇偶校验通信原理课程设计

西南科技大学通信原理设计报告 课程名称:通信原理课程设计 设计名称:奇偶校验编码仿真 姓名:王雷 学号: 班级:通信1004 指导教师:秦明伟 起止日期:2013年7月5日星期五 西南科技大学信息工程学院制

方向设计任务书 学生班级:通信1004 学生姓名:王雷学号:20105615 设计名称:奇偶校验编码仿真 起止日期:2013年7月5日星期五指导教师:秦明伟 方向设计学生日志

奇偶校验编码仿真 一、摘要(150-250字) 奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 二、设计目的和意义 认识matlab软件,学习掌握matlab的基本操作方法,熟悉M文件和simulink的具体实现方法,了解数据奇偶校验的原理和在matlab中的基本仿真,通过对简单的通信实验设计,提高了动手能力和对matlab操作,巩固了课程知识。 三、设计原理 在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。奇偶校验就是接收方用来验证发送方在传输过程中所传数据是否由于某些原因造成破坏。 奇偶校验原理是基于异或的逻辑功能。奇偶校验的编码方法是在原信号码组后面添加以为监督码元,奇偶校验分为奇校验和偶校验,奇校验是原信息码元加上监督码元后,使整个组成的数码组中,1的个数为奇数个。偶校验的工作原理则正好与奇校验相反。 对于n位二进码a1a2a3a4……a n奇校验有如下表示: a1⊕a2⊕a3⊕a4……⊕a n⊕C=1 偶校验的表达式为: a1⊕a2⊕a3⊕a4……⊕a n⊕C =1 其中,C为监督码元,在本设计中n为8,可以推出C的表达式为: C =a1⊕a2⊕a3⊕a4……⊕a8 在发送端让其监督码和信息码一起发送,在信息接收端,计算校验因子的表达式为: 、 S=a1⊕a2⊕a3⊕a4……⊕a n⊕C

基于可编程逻辑器件的四位奇偶校验器设计

新疆大学课程设计 题目:基于可编程逻辑器件的四位奇偶校验器设计指导老师: 学生姓名: 所属院系:电气工程学院 专业: 班级: 学号: 完成日期:2013年01月04日

新疆大学 本科生课程设计任务书 班级:姓名: 设计题目:基于可编程逻辑器件的四位奇偶校验器设计 要求完成的内容:1.设计出一个奇偶校验逻辑电路,当四位数中有奇数个1时输出结果为1;否则为0。 2.写出该电路的真值表。 3.采用逻辑门电路或可编程逻辑阵列PLA实现。 4.画出详细的电路图。 5.写出详细的原理说明。 指导教师: 教研室主任:

一、概述 奇偶校验是一种荣誉编码校验,在存储器中是按存储单元为单位进行的,是依靠硬件实现的,因而适时性强,但这种校验方法只能发现奇数个错,如果数据发生偶数位个错,由于不影响码子的奇偶性质,因而不能发现。 奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 二、写出详细的原理说明 奇偶校验法是对数据传输正确性的一种校验方法。我们所涉及的奇偶校验逻辑电路是用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"1",否则置为"0"。例如,需要传输"1101",数据中含3个"1",所以其奇校验位为"1",需要传输"1111",数据中含4个"1",所以其偶校验位为"0"。 上面设计的奇偶校验逻辑电路就是属于单向奇偶校验逻辑电路,当我们输入一个四位数1000时A,B端所流的直流通过U1A异或门后输出为高电平,而C,D 端所流的直流通过U2A异或门后输出为低电平,它们个别通过U6A和U7A非门后输出的是低电平,高电平。最后通过与非门时输出为高电平,灯亮。 当我们输入1100时A,B端所流的直流通过U1A异或门后输出为低电平,而C,D 端所流的直流通过U2A异或门后输出为低电平,流过U6A和U7A非门后输出的是高电平,高电平。通过与非门时输出为低电平,灯灭。其他14个四位数的原理都跟这上面的原理类似。

8位奇偶校验电路[1]

实验报告 学院:专业:班级: 姓名学号实验组实验时间指导教师成绩实验项目名称8位的奇偶校验 实验目的 1.学习组合逻辑电路、编码器的功能与定义,学习Verilog和VHDL语言 2.熟悉利用Quartus II开发数字电路的基本流程和Quartus II软件的相关操作 3.学会使用Vector Wave波形仿真 实 验 要 求 按照老师的要求完成实验,编写实验报告实 验原理 此奇偶校验电路时用来计算一个八位数里存在奇数个1还是偶数个1.本实验采用与tmp=0异或的方法来实现计数。如果结果输出为1,则有奇数 个一。输出结果为零则有偶数个一。 实 验 仪 器 软件:Altera Quartus II 9.0 集成开发环境。 实验步骤 1.选择“开始”→“所有程序”→“Altera”→“Quartus II 9.0”→“Quartus II 9.0(32bit)”,启动软件。 2.选择“File”→“New Project Wizard”,出现“Introduction”页面,如图所示,该页面介绍所要完成的具体任务。 3.单击“Next”按钮,进入工程名称的设定、工作目录的选择。

4.在对话框中第一行选择工程路径;第二行输入工程名,第三行输入顶 层文件的实体名(注意:工程名必须与顶层实体名相同,工程目录可以随意设置,但必须是英文的目录,工程名跟顶层实体名必须也是英文开头。不要将文件夹设在计算机已有的安装目录中,更不要将工程文件直接放在安装目录中。文件夹所在的路径名和文件夹名不能用中文,不能用空格,不能用括 号,也不能以数字开头) 6.新建设计文件,选择“File|New”,在New对话框中选择Device Design Files下的Verilog File,单击OK,完成新建设计文件。 7.在新建设计文件中输入Verilog程序. 8.结果仿真 实 验 内 容 编写四选一电路的VHDL代码并仿真,编译下载验证 实验数据一:试验程序: LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY parity_check IS PORT(a:IN STD_LOGIC_VECTOR (7 DOWNTO 0); y:OUT STD_LOGIC); END parity_check ; ARCHITECTURE rtl OF parity_check IS BEGIN PROCESS(a) V ARIABLE tmp:STD_LOGIC BEGIN tmp:=‘0’; FOR i IN 0 TO 7 LOOP tmp:= tmp XOR a(i); END LOOP; y <= tmp;- -y=1,a为奇数个‘1’。y=0,a为偶数个‘1’。 END PROCESS; END rtl;

奇偶校验

奇偶校验 在数据传输前在数据位后附加一位奇偶校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,以此判断数据传输正确性的一种校验方法。 奇偶校验的产生: 为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。奇偶校验就是接收方用来验证发送方在传输过程中所传数据是否由于某些原因造成破坏。 具体方法如下: 奇校验: 就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。 偶校验: 就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。 按校验的数据量和生成校验码的方式分为三类: 1.垂直奇偶校验码:以一个字符作为校验单位纵向生成校验码位;

例如使用ASCII编码的一个字符由8bit组成,其中低7bit为信息位,最高1bit作为校验位,假设某一字符的标准ASCII编码为0011000,根据奇偶校验规则,如果采用奇校验,则校验位应为1(这样字符中1的个数才能为奇数),即00110001;如果采用偶校验,校验位应为0,即00110000垂直奇偶校验码的特点:校验处理过程简单,但如果字符中发生偶数位的错误就检测不出来,也检测不到错误发生在哪一位。 2.水平奇偶校验码:以多个字符作为校验单位横向生成校验码位; 生成方法:以若干个字符作为一个校验单位。每个字符各自生成一个垂直奇偶校验码,再为每个字符的相同位及其垂直奇偶校验码生成水平奇偶校验码,这些校验码形成一个校验字符,附加在被校验字符的后面一并传输到接收方,该校验字符即称为方阵校验码。 校验特点:一次能校验更多的数据,效率较高,系统实现也比较简单,检测可靠性有所提高,但仍然不能检测出所有的错误。 3.水平垂直冗余校验码(方阵校验码):以多个字符作为校验单位水平垂直两个方向共同生成校验字符。

奇偶校验_校验和实验

实验5-1纠错与检错 1.实验内容 读程序,在所有红色的“#”后面添加解释,说明程序的作用 2.实验题目 (1)奇偶校验码 在原始模式上增加一个附加比特位,即奇偶校验位,使最后整个模式中1的个数为奇数(奇校验)或偶数(偶校验)。 本程序用到列表、字符串合并、取模等概念。 code=input("Please input a 7-bit-binary code:") a=0 # for 循环作用是什么 for i in range(0,6,1): if code[i]=='1': a=a+1 print("After odd parity checking the code is:") if a%2==0: print(code+'1') # 这句做了什么 else: print(code) # 这句做了什么 print("After even parity checking the code is:") # 下面 if .. else …作用是什么 if a%2==0: print(code) else: print(code+'1') (2) 垂直水平奇偶校验 如下图所示,14个字符纵向排列形成一个数据块,每个字符占据一列,低位比特在上,高位比特在下,用b8(第8位)作为垂直奇偶校验位,各字符的同一比特位形成一行,每一行的最右边一位作为水平奇偶校验位,这里在垂直和水平方向均采用偶校验。

# 下面的函数做了什么 def oddeven(l): a=0 for i in range(0,len(l),1): if l[i]=='1': a=a+1 if a%2==0: return '0' else: return '1' block=[['0']*15,['0']*15,['0']*15,['0']*15,['0']*15,['0']*15,['0']*15,[' 0']*15] for i in range(0,14,1): vcode=input("Please input a 7-bit-binary code:") for j in range(0,7,1): block[j][i]=vcode[j] block[7][i]=oddeven(vcode) # 这句做了什么 hcode=['0']*14 for j in range(0,8,1): for i in range(0,14,1): hcode[i]=block[j][i] block[j][14]=oddeven(hcode) # 这句做了什么 print(block) (3)循环冗余校验 任何一个二进制位串都可以用一个多项式来表示,多项式的系数只有0和1,n 位长度的码C 可以用下述n -1次多项式表示: ()n 1n 210C x C x C x C x C --=++++L n-1n-21 例如位串1010001可以表示为x 6+x 4 +1。 数据后面附加上冗余码的操作可以用多项式的算术运算来表示。例如,一个k 位的信息码后面附加上r 位的冗余码,组成长度为n=k+r 的码,它对应一个(n -1)次的多项式C(x),信息码对应一个(k -1)次的多项式K(x),冗余码对应一个(r -1)次的多项式R(x),C(x)与K(x)和R(x)之间的关系满足: ()()()r C x x K x R x =+ 由信息码生成冗余码的过程,即由已知的K(x)求R(x)的过程,也是用多项式的算术运 算来实现。其方法是:通过用一个特定的r 次多项式G(x)去除x r K(x),即: () () r x K x G x 得到的r 位余数作为冗余码R(x)。其中G(x)称为生成多项式(generator polynomial ),是由通信的双方预先约定的。除法中使用模2减法(无借位减,相当于作异或运算)。要进行的多项式除法,只要用其相对应的系数进行除法运算即可。 本例中,10位二进制信息位串对应K(x)=x 9+x 8+ x 6+x 4+ x 3 + x+1;CRC_4对应的G(x)=

巧用单片机的奇偶校验位

巧用8051单片机的奇偶校验位 () 南京东南大学电子工程系 210096 孙洪军 () 南京理工大学化工学院 210094孙秀云周学铁 摘根连线即可达到 3要: 一种微机间的串行通信方法, 只需用 R XD、T XD 和GN D 115200bp s 的传输速率。 中断关键词: 串行通信语言 8250 IN S C 送出去。IN S 8250接收由 R XD 来的数据后, 经过串?在工程设计中, 经常会遇到近距离的微机间数据交换问题, 通常的解决方法是利用微机的异步串行通并信适配器, 通过把2台微机的串行通信口相连来实现转换后, 放在中供读取。RBR C PU 表1 IN S 8250中可访问的寄存器据交换。在程序的设计上往往利用或数 B IO S DO S 的功 1 2 能调用来实现对适配器的初始化、状态检测、数COM COM 方向寄存器名称口地址口地址据的发 3828输出发送器保持寄存器() F H F H T HR 送和接收等。这种方法实现的串行通信程序, 设计起来 3828输入接收器缓冲寄存器() F H F H RBR 相对简单, 但是在连线上要复杂一些, 除了通信线外, 3828输出除数寄存器( 低位) () F H F H D R 还需要握手信号线, 通信速率最高只可达到9600。 bp s3929输出除数寄存器( 高位) () F H F H D R 而在实践中, 人们往往更希望采用3线通信形式, 只采 3929输出中断允许寄存器( ) F H F H IER 用、、根线, 通信速率也希望能达到更 3R XDT XDGN D 32输入中断识别寄存器( ) FA H FA H IIR 高水平。通过对微机的异步串行通信适配器的研究发 32输出线路控制寄存器() 现, 完全可以避开对或的功能调用, 通过 FBH FBH L CR B IO S DO S 调制解调器控制寄存器直接访问其寄存器来实现对适配器的初始化、状态检 3FCH 2FCH 输出 ()M CR 测、数据的发送和接收等功能, 可以达到115200的 bp s 32输入线路状态寄存器()FD H FD H L SR 传输速率, 再通过对中断控制器8259的编程, 采用中 A 调制解调器状态寄存器 3F EH 2F EH 输入断方式接收数据, 可以可靠地实现高速3线串行通信。 ()M SR 1 异步串行通信适配器的工作原理 微机上通常有2个异步串行通信适配器, 分别为D R 中存放的数据用来决定数据传输时的波特主适配器和辅适配器, 适配器和外部的通信连接通过率, 其计算公

全加器+奇偶校验

实验报告 课程名称: 数字电子技术基础实验 指导老师: 樊伟敏 成绩:实验名称: 全加器和奇偶校验电路 实验类型: 电子技术设计性实验 同组学生姓名:__________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 1. 掌握组合集成电路元件的功能检查方法。 2. 熟悉全加器和奇偶位判断电路的工作原理。 3. 掌握组合逻辑电路的设计方法及功能测试方法。 二、实验内容和原理 实验内容: 1. 测试与非门74LS00和与或非门74LS55的逻辑功能。 2. 用与非门74LS00和与或非门74LS55设计一个全加器电路,并进行功能测试。 3. 用与非门74LS00和与或非门74LS55设计四位数奇偶位判断电路,并进行功能测试。 实验原理: 'i S A B A B AB A B =⊕==+ ''i i S A B CI S CI S CI =⊕⊕=+ 'i CO AB BCI ACI A B CI S =++=+ 2. 奇偶校验电路 奇偶校验原理:异或门,四位奇偶校验表达式: Z A B C D S D =⊕⊕⊕=⊕ 三、主要仪器设备: 1. 数字电子技术实验

2.非门74LS00 3.与或非门74LS55 4.导线若干 四、操作方法和实验步骤 1.将二四输入与非门74LS00的其中一个输入端接入高电平或者低电平,另一端接1, 用逻辑笔测试输出信号是否具有反相作用,如果反相作用正确,那么证明与非门工作正常。 2.将与或非门其中一个与门全部接低电平,测试另一个与门的工作是否正常,然后反过 来测试,最后两个与门不用的端子都解1,测试或非门是否正常。 3.按如下图所示的连线图连接全加器电路: 连接完成后用逻辑笔检测S与CO信号,A,B,CI接数据开关,改变数据开关状态,观察输出信号是否符合理论。 4.奇偶校验电路才用了类似的方法实现,将A输入A,B输入B,CI输入C,得到全 加和之后,与D异或: 改变A,B,C,D的状态,观察out的状态,即奇偶校验结果,如果1的个数为奇数

奇偶码

校验码辅导讲座 二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题。所有解决此类问题的方法就是在原始数据(数码位)基础上增加几位校验(冗余)位。 一、码距 一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit )数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。 如图1所示的一个编码系统,用三个bit 来表示八个不同信息中。在这个系统中,两个码字之间不同的bit 数从1到3不等,但最小值为1,故这个系统的码距为1。如果任何码字中一位或多位被颠倒了,结果这个码字就不能与其它有效信息区分开。例如,如果传送信息001,而被误收为011,因011仍是表中的合法码字,接收机仍将认为011是正确的信息。 然而,如果用四个二进数字来编8个码字,那么在码字间的最小距离可以增加到2,如图2的表中所示。 图 1 图 2 注意,图8-2的8个码字相互间最少有两bit 的差异。因此,如果任何信息的一个数位被颠倒,就成为一个不用的码字,接收机能检查出来。例如信息是1001,误收为1011,接收机知道发生了一个差错,因为1011不是一个码字(表中没有)。然而,差错不能被纠正。假定只有一个数位是错的,正确码字可以是1001,1111,0011或1010。接收者不能确定原来到底是这4个码字中的那一个。也可看到, 在这个系统中,偶数个(2或4)差错也无法发现。 为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是“3”。最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。编码信息纠错和检错能力的进一步提高需要进一步增加码字间的最小距离。 图8-3的表概括了最小距离为1至7的码的纠错和检错能力。 图3 码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。所以,选择码距要取决于特定系统的参数。数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。要有专门的研究来解决这些问题。 二、奇偶校验

奇偶校验发生器

奇偶校验发生器/检测器 奇偶校验发生器/检测器是用来检查数据传输和存取过程中是否产生 错误的组合逻辑电路。奇偶校验发生器/检测器是同一个逻辑器件:当作为奇偶校验发生器使用时,它可产生奇偶校验位,与数据一起传输或保存; 当作为奇偶校验检测器使用时,它可以检验所接受数据的正确性。 ⑴奇偶校验发生器 ①工作原理 被校验的数据和1位校验位组成校验码。以 8421 码为例, 当采用奇校验时,被校验的数据和校验位满足奇数个 1 ,组成 5 位奇校验码 奇校验位逻辑值的表达式 当采用偶校验时,被校验的数据和校验位满足偶数个 1,组成 5 位偶校验码

偶校验位逻辑值的表达式 ②电路实现 由以上两个表达式看出: 电路采用异或门实现,非常简单; 奇校验位逻辑值电路是在偶校验位逻辑值电路输出端加非门实现。

⑵奇偶校验检测器 ①工作原理 校验码被送到检测电路,该电路能够检测奇偶错。工作原理是校验码送到检测电路,发生一位错或奇数位错时,输出为 1,否则为 0. ②电路实现 和发生器电路相同,只不过增加了 1 个输入端。实际应用中,发生器电路和检测器电路是同一电路,作在一个 IC 片上。 逻辑表达式 Jqi 是奇检测输出当 Jqi = 0 时,校验码无错,允许输出; 当Jqi=1时,校验码有错,禁止输出。 逻辑表达式 Jou 是偶检测输出当Jou = 0 时,校验码无错,允许输出; 当Jou = 1 时,校验码有错,禁止输出。 ⑶奇偶校验实际应用意义 ①能够检测一位错或奇数位错,但不能确定错误位置,因此,不能纠错; ②由逻辑表达式看出,电路不能检测偶数位错,当发生偶数位错时,电路显示正确; ③数据在存储或传送过程中,发生一位错误的可能性占96%以上; ④电路简单,容易实现,且有实际应用意义。

奇偶校验

概述 奇偶校验法常用于识别数据是否发生传输错误,并且可以启动校正措施,或者舍弃传输发生错误的数据,要求重新传输有错误的数据块。 编辑本段奇偶校验法 奇偶校验法是一种很简朴并且广泛使用的校验方法。 这种方法是在每一字节中加上一个奇偶校验位,并被传输,即每个字节发送九位数据。 数据传输以前通常会确定是奇校验还是偶校验,以保证发送端和接收端采用相同的校验方法进行数据校验。 假如校验位不符,则认为传输出错。 奇校验是在每个字节后增加一个附加位,使得“1”的总数为奇数。 奇校验时,校验位按如下规则设定:假如每字节的数据位中“1”的个数为奇数,则校验位为“0”若为偶数,则校验位为“1”。 奇校验通常用于同步传输。 而偶校验是在每个字节后增加一个附加位,使得“1”的总数为偶数。 偶校验时,校验位按如下规则设定:假如每字节的数据位中“1”的个数为奇数,则校验位为“1”;若为偶数,则校验位为“0”。 偶校验常用于异步传输或低速传输。 校验的原理是:假如采用奇校验,发送端发送的一个字符编码(含校验位)中,“1”的个数一定为奇数个,在接收端对接收字符二进制位中的“1”的个数进行统计,若统计出“1”的个数为偶数个,则意味着传输过程中有1位(或奇数位)发生差错。 事实上,在传输中偶尔—位出错的机会最多,故奇偶校验法常常采用。 然而,奇偶校验法并不是一种安全的检错方法,其识别错误的能力较低。 假如发生错误的位数为奇数,那么错误可以被识别,而当发生错误的位数为偶数时,错误就无法被识别了,这是因为错误互相抵消了。 数位的错误,以及大多数涉及偶数个位的错误都有可能检测不出来。 它的缺点在于:当某一数据分段中的一个或者多位被破坏时,并且在下一个数据分段中具有相反值的对应位也被破坏,那么这些列的和将不变,因此接收方不可能检测到错误。 常用的奇偶校验法为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验。 编辑本段垂直奇偶校验 垂直奇偶校验是在垂直方向上以列的形式附加上校验位。 假设数据格式及其发送顺序如图1所示,则垂直奇偶校验的编码规则如图2所示。 图1 垂直奇偶校验时 图2 垂直奇偶校验法举例 数据格式及其发送顺序 式中,m为码字的定长位数,n为码字的个数。

什么是奇偶校验

什么是奇偶校验 对数据传输正确性的一种校验方法。在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。奇偶校验就是接收方用来验证发送方在传输过程中所传数据是否由于某些原因造成破坏。 具体方法如下: 奇校验: 就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。 偶校验: 就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。 大家一定会问,如何计算奇偶性呢,在计算机内有一种特殊 的运算它遵守下面的规则: 1+1=0; 1+0=1; 0+1=1; 0+0=0; 我们把传送过来的1100111000逐位相加就会得到一个1,应该注意的的,如果在传送中1100111000变成为0000111000,通过上面的运算也将得到1,接收方就会认为传送的数据是正确的,这个判断正确与否的过程称为校验。而使用上面方法进

行的校验称为奇校验,奇校验只能判断传送数据中奇数个数据从0变为1或从1变为0的情况,对于传送中偶数个数据发生错误,它就无能为力了。 Odd Parity(奇校验),校核数据完整性的一种方法,一个字节的8个数据位与校验位(parity bit )加起来之和有奇数个1。校验线路在收到数后,通过发生器在校验位填上0或1,以保证和是奇数个1。因此,校验位是0时,数据位中应该有奇数个1;而校验位是1时,数据位应该有偶数个1。如果读取数据时发现与此规则不符,CPU会下令重新传输数据。奇/偶校验(ECC)是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。同理偶校验的过程和奇校验的过程一样,只是检测数据中“1”的个数为偶数。

对奇偶校验码的理解

对奇偶校验码的理解 一个二进制数位串C7C6C5C4C3C2C1若将各位进行模2加,其和为1,则此二进制数位串是奇性串;若将各位进行模2加,其和为0,则此二进制数位串是偶性串;此时的奇偶性表示了这个二进制位串自身固有的性质:奇性,说明此二进制数位串共有奇数个1,例如1101101有5个1,呈奇性;偶性,说明此二进制数位串共有偶数个1或者没1例如1101100有4个1,例如0000000没有1,呈偶性。 二进制数位串在传输中由于热噪声和冲击噪声可能产生差错。怎么控制差错呢?最常用的差错控制方法是差错控制编码。数据信息位在向信道发送之前,先按某种关系附加上一定的冗余位,构成一个码字后再发送,这个过程称为差错控制编码过程。接收端收到该码字后,检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生,这个过程称为检查过程。根据这个原理,发送方采取给二进制位串C7C6C5C4C3C2C1加一位冗余位C0以供校验。C0产生方法有两种如下: C0=C7○+C6○+C5○+C4○+C3○+C2○+C1(第一种方法) C0=C7○+C6○+C5○+C4○+C3○+C2○+C1○+1 (第二种方法) ○+是模2加符号。用第一种方法产生的C0称偶校验码,用第二种方法产生的C0称奇校验码。通过C0的产生过程,可以发现C0与二进制数位串C7C6C5C4C3C2C1的关系: 在第一种方法之下,

当二进制数位串C7C6C5C4C3C2C1呈奇性时,C0亦呈奇性——即C0取1值。这时把C0编入二进制数位串C7C6C5C4C3C2C1后的新二进制数位串C7C6C5C4C3C2C1C0按各位模2加就是C7○+C6○+C5○+ C4○+C3○+C2○+C1○+C0=0 当二进制数位串C7C6C5C4C3C2C1呈偶性时,C0亦呈偶性——即C0取0值。这时把C0编入二进制数位串C7C6C5C4C3C2C1后的新二进制数位串C7C6C5C4C3C2C1C0按各位模2加就是C7○+C6○+C5○+ C4○+C3○+C2○+C1○+C0=0 在第二种方法之下, 当二进制位数串C7C6C5C4C3C2C1呈奇性时,C0反呈偶性——即C0取0值。这时把C0编入二进制位数串C7C6C5C4C3C2C1后的新二进制数位串C7C6C5C4C3C2C1C0按各位模2加就是C7○+C6○+C5○+ C4○+C3○+C2○+C1○+C0=1 当二进制数位串C7C6C5C4C3C2C1呈偶性时,C0反呈奇性——即C0取1值。这时把C0编入二进制数位串C7C6C5C4C3C2C1后的新二进制位串C7C6C5C4C3C2C1C0按各位模2加就是C7○+C6○+C5○+C4○+ C3○+C2○+C1○+C0=1 接收端收到二进制位串C7C6C5C4C3C2C1C0后,检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生。 按第一种方法检查信息位C7C6C5C4C3C2C1和附加的冗余位C0之间的关系看C7○+C6○+C5○+C4○+C3○+C2○+C1○+C0是否等于0,不等于0说明出了错。这种检测方法叫偶校验。

16位的奇偶校验器设计

课程设计报告 学生姓名学号 班级电子信息工程 院系信院电子系 题目16位的奇偶校验器设计 指导教师 2012 年 5 月

题目一:设计一个16位的奇偶校验器,并仿真验证其功能。(1班1组) (要求:输入一个16位的矢量数值,统计矢量中“1”的个数;并判断16位数中1的个数的奇偶性) 1、设计思路 2、VHDL程序(或原理图) 3、仿真波形(图片) 4、程序分析 1,设计思路如下: 可以使用FOR_LOOP语句,语法格式如下: [LOOP标号: ] FOR 循环变量,IN 循环次数范围LOOP 顺序语句 END LOOP [LOOP标号]; FOR后的“循环变量”是一个临时变量,属LOOP语句的局部变量,不必事先定义。 “循环次数范围”规定LOOP语句中的顺序语句被执行的次数。循环变量从循环次数数范围的初值开始,每执行完一次顺序语句后递增1,直至达到循环次数范围指定的最大值。 其中定义输入端口十六位的数据总线为a, 输出端口y将其奇偶校验的结果输出, 输出端c统计1 的个数 2,VHDL程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

ENTITY parity_check IS PORT (a:IN STD_LOGIC_VECTOR (15 DOWNTO 0); y:OUT STD_LOGIC; c:out integer range 0 to 16); END parity_check; ARCHITECTURE arch OF parity_check IS BEGIN PROCESS(a) V ARIABLE temp:STD_LOGIC; V ARIABLE m: INTEGER RANGE 0 TO 16; BEGIN temp:='0'; m:=0; --偶校验初始值设为0,奇校验初始值设为1 FOR i IN 0 TO 15 LOOP temp:=temp XOR a(i); IF (a(i)='1') THEN m:=m+1; END IF; END LOOP; y<=temp; c<=m;

奇偶校验是一种校验代码传输正确性的方法

奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性 单向奇偶校验 概述 单向奇偶校验(Row Parity)由于一次只采用单个校验位,因此又称为单个位奇偶校验(Single Bit Parity)。发送器在数据祯每个字符的信号 位后添一个奇偶校验位,接收器对该奇偶校验位进行检查。典型的例子是面向ASCII码的数据信号祯的传输,由于ASCII码是七位码,因此用第八个位码作为奇偶校验位。 单向奇偶校验又分为奇校验(Odd Parity)和偶校验(Even Parity),发送器通过校验位对所传输信号值的校验方法如下:奇校验保证所传输每个字符的8个位中1的总数为奇数;偶校验则保证每个字符的8个位中1的总数为偶数。 显然,如果被传输字符的7个信号位中同时有奇数个(例如1、3、5、 7)位出现错误,均可以被检测出来;但如果同时有偶数个(例如2、4、6) 位出现错误,单向奇偶校验是检查不出来的。 一般在同步传输方式中常采用奇校验,而在异步传输方式中常采用偶校验。 校验方法 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。 偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。 使用 由于它很简单,所以奇偶校验位用于许多计算机硬件中遇到麻烦时能够重新操作或者通过简单的错误检测就能起到很大作用的场合。例如SCSI总线使用奇偶校验位检测传输错误,许多微处理器的指令高速缓存中也包括奇偶校验位保

奇偶校验码

奇偶校验码 2.5.2 奇偶校验码 奇偶校验码是一种通过增加冗余位使得码字中"1"的个数恒为奇数或偶数的编码方法,它是一种检错码。在实际使用时又可分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验等几种。 1.垂直奇偶校验 垂直奇偶校验又称为纵向奇偶校验,它是将要发送的整个信息块分为定长p位的若干段(比如说q段),每段后面按"1"的个数为奇数或偶数的规律加上一位奇偶位,如图2.19所示。问位信息(I11,I21,…,Ipl,I12,…,Ipq) 中,每p位构成一段(即图中的一列),共有q段(即共有q列〉。每段加上一位奇偶校验冗余位,即图中的rio编码规则为 注意:此间的"+"指的是模二加,也即异或运算。 图中箭头给出了串行发送的顺序,即逐位先后次序为 I11,I21,…,Ip1,r1,I12,…,Ipa,r2,…,儿,…,I间,rq。在编码和校验过程中,用 硬件方法或软件方法很容易实现上述连续半加运算,而且可以边发送边产生冗余位;同样,在接收端也可边接收边进行校验后去掉校验位。 垂直奇偶校验方法的编码效率为R=p/(p+1)。通常,取一个字符的代码为一个 信息段,这种垂直奇偶校验有时也称为字符奇偶校验。例如,在8位字符代码(即用8位二进制数位表示一个字符)中,p=8,编码效率便为8/9。 垂直奇偶校验方法能检测出每列中的所有奇数位错,但检测不出偶数位的错。对于突发错误来说,奇数位错与偶数位错的发生概率接近于相等,因而对差错的漏检率接近于1/20。 2.水平奇偶校验 为了降低对突发错误的漏检率,可以采用水平奇偶校验方法。水平奇偶校验又称为横向奇偶校验,它是对各个信息段的相应位横向进行编码,产生一个奇偶校验冗余位,如图2.20所示,编码规则为 若每个信息段就是一个字符的话,这里的q就是发送的信息块中的字符数。 水平奇偶校验的编码效率为R=q/(q+1)。 水平奇偶校验不但可以检测出各段同一位上的奇数位错,而且还能检测出突发长度

相关文档
最新文档