奇偶校验

奇偶校验
奇偶校验

实验项目四:数据的校验(2学时)

一、实验目的:

1.了解数据的校验机制。

*2.掌握海明码校验实施过程(选做)。

*3.掌握循环冗余码校验实施过程(选做)。

二、实验要求:

1.设计一个程序模拟奇偶校验实施过程(提示:主函数、发送函数、传输函数、校验函数)。

首先奇偶校验过程的基本过程:奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为1,从而使得总的 1 的个数是偶数。如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为1,使得总的 1 的个数是奇数。偶校验实际上是循环冗余校验的一个特例,通过多项式x + 1 得到1 位CRC。

*2.设计一个程序模拟海明码校验实施过程(提示:主函数、发送函数、传输函数、校验函数、纠错函数)。

*3.设计一个程序模拟循环冗余码校验实施过程(提示:主函数、发送函数、传输函数、校验函数、纠错函数)。

三、实验报告:

1.给出源程序和执行结果。

#include

#include

#include

void product();

void trans();

void pop();

int p1,p2;

int a[8]={0};

int main()

{

product();//产生一个随机的八位二进制的数

trans();//设置传输出错一位或者没有出错的情况

pop();//判断有无出错的情况

return 0;

}

void product()

{

int i,data;

int count1=0;

srand((unsigned)time(0));

data=0+rand()%128;//产生0-127的随机数

printf("随机的产生一个128以内的十进制数为%d\n",data); for(i=0;i<7;i++)

{

a[i]=data%2;

data=data/2;

}

for(i=0;i<7;i++)

{

if(a[i]==1)

count1++;

}

if(count1%2==0)//奇校验奇数个1校验位为0,偶数个1为1 a[7]=1;

else

a[7]=0;

p1=a[7];

printf("初始二进制校验位放在最高位它为:%d\n",p1);

printf("产生随机二进制数为");

/*

while(i>=0)

printf("%d",a[--i]);*/

for(i=7;i>=0;--i)

{

printf("%d",a[i]);

}

printf("\n");

}

void trans()

{

int i;

srand((unsigned)time(0));

i=0+rand()%9;//产生0-8的随机数

if(i==0)

printf("机器内部设置传输过程中没有出错\n");

else

{

a[i-1]=(a[i-1]==0)?1:0;

printf("传输过程将机器内部的数据进行了一位改动,改动位

为%d\n",i);

}

}

void pop()

{

int i,count2=0;

printf("接收数据为:");

for(i=7;i>=0;i--)

{

printf("%d",a[i]);

}

printf("\n");

//求接收数据的偶校验位

for(i=6;i>=0;i--)

{

if(a[i]==1)

count2++;

}

if(count2%2==0)

p2=1;

else

p2=0;

printf("接收数据计算出的校验位为:%d\n",p2);

if(p2!=a[7])

printf("通过校验位P1与P2的比较得出传输过程中数据出错了。

\n");

else

printf("通过校验位P1与P2的比较得出在传输的过程中数据没有出错!\n");

}

奇偶校验电路设计

奇偶校验电路设计 一、实验目的 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)由于连线有误,在仿真时结果出现错误。

奇偶校验

为了系统的可靠性,对于位数较少,电路较简单的应用,可以采用奇偶校验的方法。奇校验是通过增加一位校验位的逻辑取值,在源端将原数据代码中为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位中存储的数据相加,计算结果是否与校验位相一致。从而一定程度上能检测出内存错误,奇偶校验只能检测出错误而无法对其进行修正,同时虽然双位同时发生错误的概率相当低,但奇偶校验却无法检测出双位错误。

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

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

计算机组成原理课程设计---校验码生成电路的设计

计算机组成原理课程设计---校验码生成电路的设计

编 号: 课程设计 学 号: 201140410119 教学院计算机学院 课程名称计算机组成原理课程设计 题目校验码生成电路的设计 专业计算机科学与技术 班级计科一班 姓名陈建辉 同组人员周海涛石义沣明廷柱 指导教师杨斐

目录 一概述 (3) 1.课程设计的目的 (3) 2.课程设计的要求 (3) 二总体方案设计 (4) 1.设计原理 (4) 2.整体设计思路 (5) 3. EDA技术及QUARTUS II软件的简介 (5) 4. 主要特点 (8) 5. 具备的功能 (8) 6. 分工情况 (9) 7. 设计环境 (9) 三详细设计 (10) 1. 12位的寄存器设计 (10) 2. 奇偶校验电路的设计 (11)

3. CRC码生成电路的设计 (12) 4. 17位寄存器设计 (14) 5. 整体电路 (15) 四.程序的调试与运行结果说明 (16) 1. 建立工作库文件夹和编辑设计文件 (16) 2. 时序仿真 (17) 3. 设置开始时间和结束时间及时间段 (18) 4. 奇偶校验码波形图 (19) 5. CRC码校验仿真波形图 (19) 6. 整合电路校验码的波形图 (20) 五课程设计总结 (20) 参考文献 (22)

一概述 1.课程设计的目的 1. 理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养综合运用所学知识独立完成课题的能力。 3.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4.掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 2.课程设计的要求 1. 能够熟练掌握计算机中校验码的工作原理及其多种实现方案; 2. 掌握硬件描述语言VHDL及原理图设计方法; 3. 熟练掌握Quartus II软件平台; 4. 各小组按模块分工,每人独立完成自己负责的模块; 5. 合作完成最终的硬件下载及调试; 6. 独立撰写符合要求的课程设计报告。

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

西南科技大学通信原理设计报告 课程名称:通信原理课程设计 设计名称:奇偶校验编码仿真 姓名:王雷 学号: 班级:通信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.水平垂直冗余校验码(方阵校验码):以多个字符作为校验单位水平垂直两个方向共同生成校验字符。

实验三 组合逻辑电路的设计(一)

实验三组合逻辑电路的设计(一) 一、实验目的 1.掌握用SSI器件设计组合逻辑电路的方法; 2.熟悉各种常用MSI组合逻辑电路的功能与使用方法; 3.掌握多片MSI组合逻辑电路的级联、功能扩展; 4.学会使用MSI逻辑器件设计组合电路; 5.培养查找和排除数字电路常见故障的初步能力。 二、实验器件 1.74LS00 四二输入与非门74LS20 双四输入与非门 2.74LS138 三线—八线译码器74LS139 双二线—四线译码器 三、实验原理 组合逻辑电路是最常见的逻辑电路,其特点是在任何时刻电路的输出信号仅取决于该时刻的输入信号,而与信号作用前电路原来所处的状态无关。组合逻辑电路的设计,就是如何根据逻辑功能的要求及器件资源情况,设计出实现该功能的最佳电路。 在采用小规模器件(SSI)进行设计时,通常将函数化简成最简与—或表达式,使其包含的乘积项最少,且每个乘积项所包含的因子数也最少。最后根据所采用的器件的类型进行适当的函数表达式变换,如变换成与非—与非表达式﹑或非—或非表达式﹑与或非表达式及异或表达式等。 在数字系统中,常用的中规模集成器件(MSI)产品有编码器﹑译码器﹑全加器﹑数据选择/分配器﹑数值比较器等。用这些功能器件实现组合逻辑函数,基本采用逻辑函数对比方法。因为每一种中规模集成器件都具有某种确定的逻辑功能,都可以写出其输出和输入关系的逻辑函数表达式。在进行设计时,可以将要实现的逻辑函数表达式进行变换,尽可能变换成与某些中规模集成器件的逻辑函数表达式类似的形式。 下来我们介绍一下使用中小规模器件设计组合逻辑电路的一般方法。 四、组合电路设计原则及其步骤 组合电路的设计是由给定的的逻辑功能要求,设计出实现该功能的逻辑电路,设计过程大致按下列步骤进行: (1)分析设计要求,把用文字描述的形式的设计要求抽象成输入、输出变量的逻辑关系;(2)根据分析出的逻辑关系,通过真值表或其他方式列出逻辑函数表达式; (3)根据题目提供给你的芯片,将逻辑函数化简到所需要的函数式; (4)画出逻辑电路图或电路原理图; 对于MSI组合逻辑电路的设计是以所用MSI个数最少、品种最少,同时MSI间的连线也最少作为最基本的原则。 下面使用中小规模器件我们各举一个例子: 例:用与非门设计三位多数表决器。 步骤:(1)根据真值表写出逻辑表达式: F = AB + BC + AC = AB BC AC (2)画出逻辑图,如图3—1所示

奇偶校验_校验和实验

实验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 中存放的数据用来决定数据传输时的波特主适配器和辅适配器, 适配器和外部的通信连接通过率, 其计算公

组成原理课设-指令寄存器和八位奇偶校验

东北大学秦皇岛分校电子信息系 专业名称计算机科学与技术 班级学号 学生姓名 指导教师袁静波 设计时间2011.1214~2011.1226

课程设计任务书 专业:计算机科学与技术学号:学生姓名: 设计题目:指令系统及指令寄存器及8位奇偶校验电路设计一、设计实验条件 综合实验楼 二、设计任务及要求 1.指令:6,19,28,46号指令 2.指令寄存器 3.8位奇偶校验电路 三、设计报告的内容 1.设计题目与设计任务 题目:指令系统及ALU设计 1. 6,19,28,46号指令指令的设计。 2. 指令寄存器设计。 3. 8位奇偶校验电路 2.前言 融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各个模块的工作原理及相互联系的认识; 学习运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优 点; 培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。 3.设计主体 【模型机设计】 1.指令系统设计: 第19号指令:助记符:SUBC A,MM; 格式:操作码和地址码。

功能:从累加器A中减去MM地址的值,减进位。 寻址方式:寄存器间接寻址方式。 第6号指令:助记符:ADD A, @R? 格式:操作码和地址码。 功能:将间址存储器的值加入累加器A中 寻址方式:寄存器间接寻址 第28号指令:助记符:OR A, #II 格式:操作码和地址码。 功能:累加器A“或”立即数II。 寻址方式:直接寻址方式。 第46号指令:助记符:CMP A, R? 格式:操作码,地址码 功能:比较A与R?是否相等,即A-R,置标志位Z 寻址方式:寄存器直接寻址 2.模型机硬件设计 题目:指令寄存器IR设计 功能:保存当前正在执行的指令 由一片74LS273构成: 其输入端接自总线单元(BUS UNIT)的D7-D0。 输出端为I7~I0即指令码,操作码供INS UNIT单元的指令译码电路使用,寄存器地址字段SR、DR供寄存器译码电路使用。 控制信号:LIR,在T3节拍有效,将数据总线上的数据(指令码)打入IR。 3.逻辑电路设计: 题目:8位奇偶校验电路 功能:

全加器+奇偶校验

实验报告 课程名称: 数字电子技术基础实验 指导老师: 樊伟敏 成绩:实验名称: 全加器和奇偶校验电路 实验类型: 电子技术设计性实验 同组学生姓名:__________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 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为码字的个数。

对奇偶校验码的理解

对奇偶校验码的理解 一个二进制数位串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说明出了错。这种检测方法叫偶校验。

什么是奇偶校验

什么是奇偶校验 对数据传输正确性的一种校验方法。在数据传输前附加一位奇校验位,用来表示传输的数据中"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”的个数为偶数。

相关文档
最新文档