16位的奇偶校验器设计
- 格式:doc
- 大小:48.50 KB
- 文档页数:5
实验一汉字编码与校验设计实验一、实验目的本实训将帮助同学们巩固对计算机中数据表示方法的理解,要求能设计汉字国标码与区位码之间的转换电路,能批量获取汉字机内码并用点阵形式进行显示。
通过设计16 位数据的海明编解码电路,16 位数据的CRC 并行编解码电路,帮助同学们理解校验码传输过程。
通过校验码流水传输实验帮助大家提前建立流水线的基本概念二、实验原理、内容与步骤实验原理、实验内容参考:1、汉字编码原理1)机内码与区位码区位码转换为十六进制+2020H得到国标码,国标码+8080H得到机内码。
区位码(十六进制)+A0A0H=机内码机内码-A0A0H=区位码(十六进制)2)存储器数据编辑使用实验里附带的十六进制编辑器,在使用ASCII码保存的记事本编辑,记得得到。
2、汉字编码电路设计国标转区位码汉字显示3、海明编码原理与设计1)编码原理若有效消息b1b2b3b4=1011,则先将它分别填入第3,5,6,7位,再分组进行奇偶统计,分别填入校验位P1,P2,P3的值。
这里分组采用偶校验,因此,要保证3组校验位的取值都满足偶校验规则。
各校验码的取值如下:P1=H3⊕H5⊕H7=b1⊕b2⊕b4=1⊕0⊕1=0P2=H3⊕H6⊕H7=b1⊕b3⊕b4=1⊕1⊕1=1P3=H5⊕H6⊕H7=b2⊕b3⊕b4=0⊕1⊕1=0这样就得到了海明码2)分组原理在海明码H1~Hn中,位号数(1,2,3,。
,n)为2的权值的那些位,即1(20),2,4,。
,2r-1位,作为奇偶校验码,并记作P1,P2,P3,。
,P r,余下各位则为有效信息位。
与N=11,k=7,r=4相应海明码可示意为位号 1 2 3 4 5 6 7 8 9 10 11P i占位P1P2 b1 P3 b2 b3 b4 P4 b5 b6 b7其中,b i均为有效信息。
3)校验位逻辑与电路设计海明编码4、海明解码原理与设计1)检错码原理与作用海明编码在解码过程中,被分作3组校验,每组可产生一个检错消息,3组共3个检错消息便可构成一个指错字,由G3 G2 G1组成,其中G3=P3⊕b2⊕b3⊕b4,G2=P2⊕b1⊕b3⊕b4,G1=P3⊕b1⊕b2⊕b4,3个指错字共表示8种状态,在没有出错的情况下,G3 G2 G1=000.由于在分组时就确定了每组校验位参与校验的组别,所以,指错字能准别地知错错误所在位2)错误逻辑原理与设计当目的部件接收到一-组海明码后,送人电路进行分组并检测,得到检错字信息G,G2G,这组信息通过译码电路译码,给出出错(或无错)的信号,这个信号就是纠错的依据。
实验二奇偶检验器
一、实验目的
参照实验原理中介绍的例子,用loop语句设计并实现一个8位代码奇偶校验器。
二、实验原理
奇偶校验代码是在计算机中常用的一种可靠性代码。
它由信息码和一位附加位——奇偶校验位组成。
这位校验位的取值(0或1)将使整个代码串中的1 的个数为奇数个(奇校验代码)或为偶数(偶校验代码)。
奇偶校验位发生器就是根据输入信息码产生相应的校验位。
下图是8421码奇偶校验位发生器电路,它是基于“异或”门的“相同得0、相异得1”的原理设计的。
三、实验连线
D对应SW1—SW8
P、NP分别对应IO9、IO10 (IO9、IO10用导线连接L1、L2)
功能选择位M[3..0]状态为0001,即16位拨码SW1—SW16被选中输出到总线D[15..0] 改变拨码开关的状态,观察实验结果。
四、实验代码。
五、实验记录
记录实验结果,参照表21-1将实验结果制表,得到8位代码奇偶校验的真值表。
16位循环冗余校验码_CRC_的原理和性能分析16位循环冗余校验码(CRC)是一种广泛应用于数据传输中的错误检测码。
它通过使用除法运算和异或运算来生成一个冗余校验码,并将其附加到数据上。
接收方在接收到数据后,通过同样的计算方式对数据进行校验,然后与接收到的校验码进行比较,从而判断数据是否存在错误。
CRC的原理如下:1.选择一个特定的多项式作为生成器多项式G(x),通常以二进制方式表示。
2.将数据D(x)乘以x的n次方,其中n为生成器多项式的次数。
3.将上述结果除以生成器多项式G(x),并将余数作为冗余校验码。
具体的计算过程如下:1.将生成器多项式转换为二进制数,作为一个校验位模型。
2.将数据与n个0相接,使其长度与生成器多项式的次数一致。
3.将上述结果除以生成器多项式,并将余数作为冗余校验码。
性能分析:1.理论上,CRC能够探测所有偶数个错误位和绝大多数奇数个错误位。
但由于CRC运算时使用的是模2除法,因此会漏掉部分奇数个错误位。
2.CRC的检错性能与生成器多项式的选择相关。
选择一个好的生成器多项式很重要,能够提高CRC的检错能力。
3.16位的CRC校验码相对于32位或更多位的CRC校验码来说,冲突概率较高。
这意味着可能存在不同的数据产生相同的校验码。
因此,在应用中,需要根据实际情况选择合适的CRC位数。
总结:16位循环冗余校验码通过除法运算和异或运算生成一个冗余校验码,用于检测数据传输中的错误。
它的性能取决于生成器多项式的选择,能够探测大部分的错误位。
然而,由于CRC采用模2除法,可能会漏掉部分奇数个错误位。
在应用中,需要根据实际情况选择合适的CRC位数。
奇偶校验电路设计一、实验目的1.熟悉QuartusII的使用;2. 学习在QuartusII中;3. 学习原理图方式自定义元件的输入,封装,调用;4. 掌握奇偶校验原理;5. 学会使用现成的芯片搭建目标电路。
二、实验内容和原理实验内容:(1)在QuartusII环境下以原理图方式建立顶层文件工程。
利用多个74386芯片搭建一个奇偶校验电路。
74386提供四个2输入异或门(2)建立仿真文件,观察输出结果。
实验原理:奇偶校验码是最简单的数据校验码,其码距为2,可以检测出一位错误,但无法指出错误的位置。
具体校验实现方法为将有效信息位和校验位读入,判断其1的个数是奇数个还是偶数个,在奇校验的情况下正常情况下个数应该为奇数个,偶校验正常情况下应该是偶数个。
校验码的生成:对于奇校验,判断有效信息位1的个数,若为偶数则校验位为1,奇数则校验位为0;偶校验反之。
具体实现的逻辑表达式如下:三、 实验设计原理图以及综合结果记录逻辑单元<Le>的消耗情况等。
原理图如下: 76543210校奇形成偶校验出错奇校验出错偶形成A B =1=1=1=1=1=1=1=111经过设计后用74386实现的原理图如下:综合结果如下图所示:四、仿真波形图画出波形图以及波形图中仿真信号的说明。
并分析结果(实验现象结论)。
仿真波形图如下所示:其中,D0-7为信息位,Djiao为校验位。
实验结果如下:说明:波形信息位为奇数个1,校验位为0时,输出的奇校验位为0,偶校验位为1,奇校验错误为0,偶校验错误为1(即有错)。
同理其他测试分别测试了信息位为奇数个1,校验位为1、信息位为偶数个1,校验位为1、信息位为偶数个1,校验位为0的情况,图中波形的测试完全符合预期要求。
五、实验中遇到的问题和解决方法。
在实验中遇到的主要问题:(1)操作不熟悉导找不到部分功能元件(2)由于连线有误,在仿真时结果出现错误。
解决方法:(1)寻找芯片时双击面板在搜索的框内打入全名(打入部分名字不显示)(2)仿真结果与预期不一致时,可以分析错误波形,从而准确找到出错的地方。
一、实验目的1. 理解奇偶校验的基本原理及作用。
2. 掌握奇偶校验的实现方法。
3. 学会使用Verilog语言设计奇偶校验电路。
4. 通过仿真验证奇偶校验电路的正确性。
二、实验原理奇偶校验是一种简单的错误检测码,用于检测数据在传输过程中是否发生错误。
其基本原理是在数据末尾添加一个校验位,使得数据位和校验位中1的个数为奇数或偶数。
如果接收方收到的数据位和校验位中1的个数不是奇偶性相同,则说明传输的数据出现了错误。
奇偶校验分为奇校验和偶校验两种:1. 奇校验:数据位和校验位中1的个数为奇数。
2. 偶校验:数据位和校验位中1的个数为偶数。
三、实验环境1. FPGA开发板:如Xilinx、Altera等。
2. Verilog开发工具:如Vivado、Quartus等。
3. 仿真工具:如ModelSim等。
四、实验步骤1. 设计奇偶校验电路(1)根据实验要求,设计一个同步时序电路,对串行二进制输入进行奇偶校验,每检测5位输入,输出一个结果。
(2)定义输入信号和输出信号:- 输入信号:serial_in(串行输入)- 输出信号:parity_out(奇偶校验输出)(3)编写Verilog代码实现奇偶校验电路:```verilogmodule parity_checker(input wire [4:0] serial_in,output reg parity_out);always @(posedge serial_in[0]) beginif (serial_in == 5'b11111) beginparity_out = 1'b1; // 5位输入中1的数目为奇数,输出1end else beginparity_out = 1'b0; // 5位输入中1的数目为偶数,输出0endendendmodule```2. 仿真验证(1)使用ModelSim进行仿真,验证奇偶校验电路的正确性。
竭诚为您提供优质文档/双击可除奇偶校验实验报告篇一:奇偶校验实验项目四:数据的校验(2学时)一、实验目的:1.了解数据的校验机制。
*2.掌握海明码校验实施过程(选做)。
*3.掌握循环冗余码校验实施过程(选做)。
二、实验要求:1.设计一个程序模拟奇偶校验实施过程(提示:主函数、发送函数、传输函数、校验函数)。
首先奇偶校验过程的基本过程:奇偶校验位有两种类型:偶校验位与奇校验位。
如果一组给定数据位中1的个数是奇数,那么偶校验位就置为1,从而使得总的1的个数是偶数。
如果给定一组数据位中1的个数是偶数,那么奇校验位就置为1,使得总的1的个数是奇数。
偶校验实际上是循环冗余校验的一个特例,通过多项式x+1得到1位cRc。
*2.设计一个程序模拟海明码校验实施过程(提示:主函数、发送函数、传输函数、校验函数、纠错函数)。
*3.设计一个程序模拟循环冗余码校验实施过程(提示:主函数、发送函数、传输函数、校验函数、纠错函数)。
三、实验报告:1.给出源程序和执行结果。
#include#include#includevoidproduct();voidtrans();voidpop();intp1,p2;inta[8]={0};intmain(){product();//产生一个随机的八位二进制的数trans();//设置传输出错一位或者没有出错的情况pop();//判断有无出错的情况return0;}voidproduct(){inti,data;intcount1=0;srand((unsigned)time(0));data =0+rand()%128;//产生0-127的随机数printf("随机的产生一个128以内的十进制数为%d\n",data);for(i=0;iif(count1%2==0)//奇校验奇数个1校验位为0,偶数个1为1a[7]=1;}for(i=0;i elsea[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");}voidtrans(){inti;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);}voidpop(){printf("接收数据计算出的校验位为:%d\n",p2);if(p2!=a[7])printf("通过校验位p1与p2的比较得出传输过程中数据出错了。
奇偶校验发生器/检测器奇偶校验发生器/检测器是用来检查数据传输和存取过程中是否产生错误的组合逻辑电路。
奇偶校验发生器/检测器是同一个逻辑器件:当作为奇偶校验发生器使用时,它可产生奇偶校验位,与数据一起传输或保存;当作为奇偶校验检测器使用时,它可以检验所接受数据的正确性。
⑴奇偶校验发生器①工作原理被校验的数据和1位校验位组成校验码。
以 8421 码为例, 当采用奇校验时,被校验的数据和校验位满足奇数个 1 ,组成 5 位奇校验码奇校验位逻辑值的表达式当采用偶校验时,被校验的数据和校验位满足偶数个 1,组成 5位偶校验码偶校验位逻辑值的表达式②电路实现由以上两个表达式看出:电路采用异或门实现,非常简单;奇校验位逻辑值电路是在偶校验位逻辑值电路输出端加非门实现。
⑵奇偶校验检测器①工作原理校验码被送到检测电路,该电路能够检测奇偶错。
工作原理是校验码送到检测电路,发生一位错或奇数位错时,输出为 1,否则为 0.②电路实现和发生器电路相同,只不过增加了 1 个输入端。
实际应用中,发生器电路和检测器电路是同一电路,作在一个 IC 片上。
逻辑表达式Jqi 是奇检测输出当Jqi = 0 时,校验码无错,允许输出;当Jqi=1时,校验码有错,禁止输出。
逻辑表达式Jou 是偶检测输出当Jou = 0 时,校验码无错,允许输出;当Jou = 1 时,校验码有错,禁止输出。
⑶奇偶校验实际应用意义①能够检测一位错或奇数位错,但不能确定错误位置,因此,不能纠错;②由逻辑表达式看出,电路不能检测偶数位错,当发生偶数位错时,电路显示正确;③数据在存储或传送过程中,发生一位错误的可能性占96%以上;④电路简单,容易实现,且有实际应用意义。
实验五奇偶校验器的设计一.实验目的1.理解奇偶校验码.2.设计并实现一个4位代码奇偶校验器.二.实验内容1.奇偶校验奇偶校验代码是计算机中的一种安全码.它由信息码和一位校验位组成的.这位校验位的取值将使得整个代码串的1的个数为奇数或偶数.以上为奇偶校验码的功能表,分两种情况,奇检验和偶检验.设计的方法当然有两种,文本输入或原理图输入两种.2.下面从文本输入这种方法来介绍:首先打开文本框,输入以下程序:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY code IS PORT(d3,d2,d1,d0:IN std_logic;P,Q:OUT std_logic);END;ARCHITECTURE arc_code OF code ISSIGNAL din:std_logic_vector (3 DOWNTO 0);SIGNAL dout:std_logic_vector (1 DOWNTO 0);BEGINdin<=d3&d2&d1&d0;PROCESS (din)BEGINCASE din ISWHEN"0000"=>dout<="10";WHEN"0001"=>dout<="01";WHEN"0010"=>dout<="01";WHEN"0011"=>dout<="10";WHEN"0100"=>dout<="01";WHEN"0101"=>dout<="10";WHEN"0110"=>dout<="10";WHEN"0111"=>dout<="01";WHEN"1000"=>dout<="01";WHEN"1001"=>dout<="10";WHEN"1010"=>dout<="10";WHEN"1011"=>dout<="01";WHEN"1100"=>dout<="10";WHEN"1101"=>dout<="01";WHEN"1110"=>dout<="01";WHEN others=>dout<="10";END CASE;END PROCESS;P<=dout(1);Q<=dout(0);END arc_code;3.打开波形图输入,并导入图形三、心得体会:经过此次实验,体会到文本输入方式在某种程序上比原理输入方法会简单易操作,进一步熟悉MAXPLUS的操作。
本例为对八位输入数据和其奇偶校验位进行校验,输出正确的奇偶校验位。
IN_READY输入表示输入已准备好;OUT_REQ输入表示输出请求;CLK输入表示输入时钟;当OUT_READY输出表示输出准备好,可以为下级电路使用;源代码如下:package types issubtype short is integer range0 to255;end types;use work.types.all;entity parity isport(CLK:in bit;IN0,IN1,IN2,IN3,IN4,IN5,IN6,IN7:in bit;EVEN_IN,ODD_IN:in bit;IN_READY:in bit;OUT_REQ:in bit;OUT_READY:out bit;EVEN_OUT:out bit;ODD_OUT:out bit;);end parity;architecture algorithm of parity isbeginprocessvariable cond:boolean:=true;variable count:short;beginwait until(CLK'event and CLK='1' and IN_READY='1');if(EVEN_IN=ODD_IN) then --奇偶校验预判断cond:=false;end if;count:=0;if IN0='1' thencount:=count+1;end if;if IN1='1' thencount:=count+1;end if;if IN2='1' thencount:=count+1;end if;if IN3='1' thencount:=count+1;end if;if IN4='1' thencount:=count+1;end if;if IN5='1' thencount:=count+1;end if;if IN6='1' thencount:=count+1;end if;if IN7='1' thencount:=count+1;end if;--判断输入数据中1的个数的奇偶while count>1 loopcount:=count-2;end loop;--判断奇偶校验位的正确性if count=1 and ODD_IN='0' thencond:=false;end if;if count=0 and EVEN_IN='0' thencond:=false;end if;--输出奇偶校验位if count=1 thenEVEN_OUT<='0';ODD_OUT<='1';elseEVEN_OUT<='1';ODD_OUT<='0';end if;--同步控制,设置输出控制信息wait until CLK'event and CLK='1' and OUT_REQ='1'; OUT_READY<='1';wait until CLK'event and CLK='1' and OUT_REQ='0'; OUT_READY<='0';--提示出错信息assert condreport"EVEN_IN ODD_IN error"severity warning;end process;end algorithm;。
16*16点阵设计摘要单片机是为各类专用控制器而设计的通用或专用的微型计算机系统,高密度集成了普通计算机微处理系统,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
它的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形来显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。
用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组成和变化,只要设计好合适的数据文件,就可以得到满意的显示效果,因而采用点阵式图文显示屏显示经常需要变化的信息是非常有效的。
本次课程设计实现LED点阵屏核心功能即汉字的多样化显示。
加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解。
将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力。
关键词:单片机,LED显示屏,点阵目录1 课题描述 (1)2 芯片介绍 (1)2.151系列单片机简介 (2)2.274LS154芯片介绍 (6)2.374LS373芯片介绍 (7)3 硬件设计 (8)4 软件设计 (10)4.1单片机延时子程序 (10)4.2程序流程图 (12)4.3程序代码 (12)5 调试或性能分析 (15)总结.......................................................................................... 错误!未定义书签。
致谢.......................................................................................... 错误!未定义书签。
参考文献...................................................................................... 错误!未定义书签。
奇偶校验器一. 实验目的1. 理解奇偶校验码.2. 设计并实现一个8位代码奇偶校验器.二、概述与原理1.奇偶校验码是一种最简单,最直接。
应用最广泛的检错码,他的码距为2,因此他只能检出一位错。
实现方法是:由若干位有效信息,再加上一个二进制组成校验码。
检验位的取值(0或1)将是整个校验码中“1”的个数为奇数或偶数。
但校验码的取值使整个校验码中“1”的个数为奇数时,称为奇校验;当“1”的个数为偶数时为偶校验。
在实际中应用中多采用奇校验,因为奇校验中不存在全为“0”的代码,因此在某些场合下更易于辨别。
2.校验位的形成:当吧一个字节的代码D7~D0写入主存时,就同时将它们送往奇偶校验逻辑电路,该电路产生的“奇形成”信号就是校验位。
它将8位代码一起作为奇校验码写入主存。
若D7~D0中有偶数个“1”,则形成“奇形成”,若D7~D0中有奇数个“1”,则“奇形成”等于03.校验检测:校验检测是将读出的9位代码(8位信号位和一位校验码)同时送入奇偶校验电路检测。
若读出代码没有错误,则“奇偶检验出错”等于0;若读出代码在某位上出现错误。
则“奇偶校验出错”等于1,表示这个9位代码中一定有某一位出现错误,但是具体的错误位置不能确定。
三、实验步骤1.下载并安装multisim软件,打开创建一个设计页面2.放置元器件(1个5V直流电源,10个开关,10个10千欧和一个300欧的电阻,17个异或门,2个非门,一个LED显示灯,底线)3。
根据实验原理设计并连接电路如下图所示六、总结与体会为了系统的可靠性,对于位数较少,电路较简单的应用,可以采用奇偶校验的方法。
奇校验是通过增加一位校验位的逻辑取值,在源端将原数据代码中为1的位数形成奇数,然后在宿端使用该代码时,连同校验位一起检查为1的位数是否是奇数,做出进一步操作的决定。
奇偶校验只能检查一位错误,且没有纠错的能力。
偶校验道理与奇校验相同,只是将校验位连同原数据代码中为1的位数形成偶数。
EDA综合作业姓名:学号:班级:成绩:题目:用VHDL语言设计一个16位的奇偶校验器。
(要求:判断16位数中1的奇偶性的同时还能计算出1的个数)1.设计思路奇校验是通过增加一位校验位的逻辑取值,在源端将原数据代码中为1的位数形成奇数,然后在宿端使用该代码时,连同校验位一起检查为1的位数是否是奇数,做出进一步操作的决定。
奇偶校验只能检查一位错误,且没有纠错的能力。
偶校验道理与奇校验相同,只是将校验位连同原数据代码中为1的位数形成偶数。
奇偶校验位有两种类型:偶校验位与奇校验位。
如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为1,从而使得总的 1 的个数是偶数。
如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为1,使得总的 1 的个数是奇数。
偶校验实际上是循环冗余校验的一个特例,通过多项式x + 1 得到 1 位CRC。
奇偶校验是一种荣誉编码校验,在存储器中是按存储单元为单位进行的,是依靠硬件实现的,因而适时性强,但这种校验方法只能发现奇数个错,如果数据发生偶数位个错,由于不影响码子的奇偶性质,因而不能发现。
本设计用quartus2进行设计和仿真,此实验进程如下:通过设计Loop循环来统计所给16位二进制数字中1的个数,并通过对1的个数的二进制形式的最后一位进行验证来判断该16位二进制中所含1的个数的奇偶。
2.VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY lpf ISPORT( A: IN STD_LOGIC_VECTOR( 15 DOWNTO 0);B: OUT STD_LOGIC;C: OUT STD_LOGIC_VECTOR( 4 DOWNTO 0)); END lpf;ARCHITECTURE OPT OF lpf ISBEGINPROCESS(A)V ARIABLE TMP: STD_LOGIC;V ARIABLE Y: STD_LOGIC_VECTOR( 4 DOWNTO 0);BEGINTMP:='0';Y:= "00000";FOR I IN 0 TO 15LOOPIF (A(I)='1') THEN Y:=Y+1;END IF;END LOOP;TMP:=TMP ORY(0);B<=TMP;C<=Y;END PROCESS;END OPT;3.仿真波形(图片)程序分析本程序中有一个输入信号A,两个输出信号B,C。
奇偶校验位产生器的Verilog描述奇偶校验位产生器是一种常见的电子设备,它用于检测和纠正数据传输中的错误。
通过在数据中添加一个奇偶校验位来实现,这个校验位的值要么是奇数个1,要么是偶数个1,从而确保数据的完整性和准确性。
在这篇文章中,我将以Verilog描述的视角来探讨奇偶校验位产生器的实现方法。
1. 理解奇偶校验位在开始描述奇偶校验位产生器之前,我们需要先理解奇偶校验位的概念。
奇偶校验位是一种简单的纠错方法,它基于数据中二进制位1的数量来确定校验位的数值。
如果数据中1的数量是偶数,则校验位设置为1,反之设置为0;如果数据中1的数量是奇数,则校验位设置为0,反之设置为1。
这样,通过校验位的设置,就可以在接收端检测出数据传输过程中的错误。
2. Verilog描述的奇偶校验位产生器在Verilog中描述奇偶校验位产生器可以利用逻辑门和触发器来实现。
我们需要定义输入的数据位和输出的奇偶校验位。
通过逻辑门的组合来计算输入数据中1的数量,判断是奇数还是偶数。
将计算得到的奇偶信息输出为校验位。
下面是一个简单的Verilog描述示例:```verilogmodule parity_generator (input [7:0] data,output parity);wire [2:0] count;assign count = data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7];assign parity = (count % 2 == 0) ? 1'b1 : 1'b0;endmodule```在这个Verilog描述中,我们定义了一个名为parity_generator的模块,以一个8位的输入数据data和一个单比特的输出校验位parity 作为参数。
我们使用一个3位的wire变量count来统计输入数据中1的数量,然后根据count的奇偶性来设置输出校验位parity的值。
课程设计报告题目:并行CRC-16校验码产生器设计院(系):电子与信息工程学院专业:电子信息科学与技术班级:姓名:设计日期:2013.12.16-2013.12.20一、设计目的1.掌握数字系统的设计方法;2.掌握硬件描述语言——Verilog HDL ;3.掌握模块化设计方法;4.掌握开发软件的使用方法。
二、设计要求8 bit 并行输入数据进行CRC -16校验。
1.输入为连续数据流,时钟为单位,起始位有1bit 宽Soc 指示信号;2.生成多项式:()151216+++=x x x x G ; 3.校验数据与码流同步送出;4.完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布 局布线、下载验证等。
三、设计环境计算机、QuatusII 开发软件四、设计内容(设计原理和方案、程序设计、仿真分析和适配)4.1设计原理和方案CRC 即循环冗余校验码(Cyclic Redundancy Check ):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
冗余编码是在二进制通信系统中常用的差错检测方法,它是通过在原始数据后加冗余校验码来检测差错,冗余位越多,检测出传输错误的机率越大。
循环冗余编码(Cyclic Redundancy Codes ,简称CRC )是一种常用的冗余编码。
CRC 校验的基本原理是:CRC 码是由两部分组成的,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC 码长共n bit ,信息码长k bit ,就称为(n ,k )码,剩余的r bit 即为校验位。
如:(7,3)码:110 1001,前三位110为信息码,1001为校验码。
CRC 校验码的生成规则:A 、将原信息码左移r bit ,右侧补零,如110 --> 110 0000;B 、用110 0000除以G(x),得到的余数即为CRC 校验码;CRC 可由一称为生成多项式的常数去除该数据流的二进制数值而得,商数被放弃,余数作为冗余编码追加到数据流尾,产生新的数据流进行发送。
课程设计报告
学生姓名学号
班级电子信息工程
院系信院电子系
题目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;
END PROCESS;
END arch;
原理图如下:
3,仿真波形如下:
程序分析
实体:
实体名parity_check
输入端口十六位的数据总线a:IN STD_LOGIC_VECTOR (15 DOWNTO 0)
输出端口y:OUT STD_LOGIC;将其奇偶校验的结果输出
若为奇数个1 输出为高电平;若为偶数个1输出为低电平
输出端c:out integer range 0 to 16)统计1 的个数
结构体:
结构体名arch
在进程PROCESS(a)中定义变量
V ARIABLE temp:STD_LOGIC;
V ARIABLE m: INTEGER RANGE 0 TO 16; 并进行变量的赋值
temp:='0';
m:=0;
loop循环
FOR i IN 0 TO 15 LOOP
temp:=temp XOR a(i);
IF (a(i)='1') THEN m:=m+1;
END IF;
END LOOP;
Temp与a(i)异或将其结果赋给temp
If语句
若a(i)为1 m加1计数
将其m的计数结果赋给c c 即为a中1 的个数。