基于Logisim的CRC编码电路实现
- 格式:pdf
- 大小:450.56 KB
- 文档页数:12
偶校验编码设计logisim实验报告偶校验编码设计Logisim实验报告一、引言本实验旨在使用Logisim软件设计实现一种偶校验编码电路,通过此实验掌握偶校验编码的原理和实现方法。
实验中我们采用了数字电路设计工具Logisim,利用其图形化界面和模拟仿真功能,可以方便地进行电路设计和验证。
二、背景知识偶校验编码是一种纠错编码方法,用于检测和纠正传输过程中可能出现的错误。
在传输数据时,因为存在各种干扰和误码,导致数据可能被篡改。
通过使用偶校验编码,可以在接收端检测到并纠正出现的错误。
在偶校验编码中,每个传输的数据块都附加一个冗余位,其值为使得数据块二进制位数为偶数的位。
接收端根据接收到的数据块和附加的冗余位计算校验位,然后比较校验位的结果与接收到的校验位。
如果两者一致,则说明数据传输成功;否则,说明数据传输发生错误。
三、实验设计1. 实验目标本实验的目标是设计一个偶校验编码电路,输入一个数据块,然后输出一个附加了校验位的数据块。
2. 实验原理偶校验编码的原理是在数据块的最高位附加一个校验位,使得数据块的二进制位数为偶数。
为了保证附加的校验位与数据块的校验位一致,需要对数据块进行计数,然后根据计数结果添加校验位。
3. 实验步骤步骤1:启动Logisim软件,创建一个新的电路文件。
步骤2:在工具栏中选择元件库中的基本门电路,将一个输入端和一个输出端名称为“data_in”和“data_out”。
步骤3:添加一个触发器元件,用于存储数据块和校验位。
步骤4:添加一个计数器元件,用于计算数据块中1的个数。
步骤5:添加数码显示器元件,用于显示计数器的计数结果。
步骤6:连接各个元件,按照实验所需的电路图进行连线。
步骤7:添加一个按键元件,用于启动计数器和触发校验位的更新。
步骤8:设置计数器的初始值为0,触发器的初始值为数据块的最高位。
步骤9:添加一个电源元件和接地元件,确保整个电路的电源和接地连接正确。
四、实验结果通过Logisim的仿真功能,我们可以验证设计的偶校验编码电路的正确性。
crc校验码编程
CRC校验码是一种常用的差错检测方法,广泛应用于数据通信和数据存储领域。
它通过对数据进行一系列运算,生成一个校验码,用于检测数据传输过程中是否发生了错误。
CRC校验码的生成过程相对简单,但其原理却非常巧妙。
首先,需要选择一个预定的生成多项式,通常是一个固定的二进制位数。
然后,将待校验的数据与一个初始值进行异或运算,得到一个结果。
接下来,将这个结果不断地与生成多项式进行异或运算,直到所有数据都被处理完毕。
最后,将最终的结果作为校验码附加在原始数据后面。
CRC校验码的优点在于,它可以快速检测出错误,且具有很高的检测概率。
通过对数据的每一个位进行计算,CRC校验码可以有效地检测出单个或多个位的错误。
而且,CRC校验码的生成过程是不可逆的,即无法通过校验码推导出原始数据,从而保证了数据的安全性。
在实际应用中,CRC校验码被广泛用于网络通信、存储设备和传感器等领域。
例如,在网络传输中,发送方会将数据进行分组,并计算每个分组的CRC校验码。
接收方在接收到数据后,同样计算CRC 校验码,并与接收到的校验码进行比对。
如果两者一致,说明数据传输无误;如果不一致,则意味着数据可能发生了错误,需要进行重新传输或纠错处理。
总的来说,CRC校验码作为一种差错检测方法,具有简单、高效、可靠的特点。
它在保障数据传输的准确性和可靠性方面起到了重要的作用。
通过合理应用CRC校验码,我们可以提高数据传输的质量,确保信息的完整性和可靠性。
logisim 8位偶校验编解码电路1. 介绍在数字通信中,数据的传输可靠性是非常重要的。
为了确保数据传输的准确性,我们需要使用一种校验机制。
偶校验是一种常用的校验方法,它可以检测并纠正传输过程中的错误。
本文将介绍使用logisim软件设计和实现一个8位偶校验编解码电路。
我们将详细讨论偶校验的原理、编码和解码的过程,并使用logisim软件进行模拟和验证。
2. 偶校验原理偶校验是一种基于二进制的校验方法,它通过在数据中添加一个校验位来检测错误。
校验位的值被设置为使得数据中1的个数为偶数的值。
假设我们有一个8位的数据,其中包含7个数据位和一个校验位。
校验位的值取决于数据位中1的个数。
如果数据位中1的个数为奇数,校验位的值将被设置为1,以使得总的1的个数为偶数;如果数据位中1的个数为偶数,校验位的值将被设置为0,以保持总的1的个数为偶数。
在传输过程中,发送方将数据位和校验位一起发送给接收方。
接收方在接收到数据后,会重新计算数据位中1的个数,并与接收到的校验位进行比较。
如果两者不一致,说明数据在传输过程中发生了错误。
3. 编码电路设计编码电路的作用是根据数据位计算校验位,并将数据位和校验位一起发送给接收方。
在logisim中,我们可以使用逻辑门实现编码电路。
3.1 输入端口编码电路的输入端口包括8个数据位。
每个数据位可以取0或1的值。
3.2 逻辑门设计为了计算校验位,我们需要使用异或门和与门。
异或门用于计算数据位中1的个数的奇偶性,而与门用于将计算结果与校验位进行比较。
具体地,我们可以将8个数据位分别与一个异或门相连,然后将异或门的输出与一个与门相连。
与门的另一个输入端口连接到一个固定的电平,用于设置校验位的值。
3.3 输出端口编码电路的输出端口包括8个数据位和一个校验位。
输出端口的值由逻辑门的计算结果决定。
4. 解码电路设计解码电路的作用是根据数据位和校验位判断数据是否传输正确。
在logisim中,我们可以使用逻辑门实现解码电路。
目录第一章设计要求求 (2)1.1基本要求 (2)1.2提高要求 (2)1.3功能需求 (2)第二章系统的组成及工作原理 (3)2.1系统组成 (3)2.2 CRC编码原理 (3)2.3 通用CRC编码器 (3)2.4 CRC—N编码器 (3)2.5 CRC检测器(CRC—N检测器) (4)第三章概要设计 (5)3.1 系统层次结构图 (5)3.2 方案的比较 (5)第四章详细设计 (6)4.1 仿真模型图 (6)4.2 各个模块的功能及参数设置 (6)第五章调试及测试结果与分析 (12)5.1功能调试 (12)5.2、问题发现及解决 (13)第六章设计总结 (14)参考文献 (15)附录1 (16)附录2 (17)第一章设计要求1.1、设计要求(1)对输入数据帧,进行CRC编码。
根据数据帧长度,选择适当长度的CRC编码器。
观察编码前后的波形。
(2)掌握CRC生成多项式、系统码等概念。
(3)掌握SIMULINK仿真参数的设置方法。
1.2提高要求从误码率的角度考虑如何根据数据帧长度选择合适的长度的CRC编码器。
1.3功能需求实现CRC编码以及检测过程,并且在示波器上显示波形。
第二章系统组成及设计原理2.1、系统组成本系统由信源编码部分,信道部分,信宿检测部分组只要组成2.2、CRC编码原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。
对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R 的多项式G(x)。
根据G(x)可以生成K位信息的校验码,而G(X)叫做这个CRC码的生成多项式。
校验码的具体生成过程为:假设发送信息用信息多项式M(X)表示,将C(x)左移R位,则可表示成M(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。
通过M(x)*2R除以生成多项式G(x)得到的余数就是校验码。
2.3、通用CRC编码器通用CRC编码器根据输入的一帧数据计算得到这帧数据的循环冗余码,并且把这个循环冗余码附加到帧数据后面,形成输出数据流。
目录第一章设计要求求 (2)基本要求 (2)提高要求 (2)功能需求 (2)第二章系统的组成及工作原理 (3)系统组成 (3)CRC编码原理 (3)通用CRC编码器 (3)CRC—N编码器 (3)CRC检测器(CRC—N检测器) (4)第三章概要设计 (5)系统层次结构图 (5)方案的比较 (5)第四章详细设计 (6)仿真模型图 (6)各个模块的功能及参数设置 (6)第五章调试及测试结果与分析 (12)功能调试 (12)、问题发现及解决 (13)第六章设计总结 (14)参考文献 (15)附录1 (16)附录2 (17)第一章设计要求、设计要求(1)对输入数据帧,进行CRC编码。
根据数据帧长度,选择适当长度的CRC编码器。
观察编码前后的波形。
(2)掌握CRC生成多项式、系统码等概念。
(3)掌握SIMULINK仿真参数的设置方法。
提高要求从误码率的角度考虑如何根据数据帧长度选择合适的长度的CRC编码器。
功能需求实现CRC编码以及检测过程,并且在示波器上显示波形。
第二章系统组成及设计原理、系统组成本系统由信源编码部分,信道部分,信宿检测部分组只要组成、CRC编码原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。
对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R 的多项式G(x)。
根据G(x)可以生成K位信息的校验码,而G(X)叫做这个CRC码的生成多项式。
校验码的具体生成过程为:假设发送信息用信息多项式M(X)表示,将C(x)左移R位,则可表示成M(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。
通过M(x)*2R除以生成多项式G(x)得到的余数就是校验码。
、通用CRC编码器通用CRC编码器根据输入的一帧数据计算得到这帧数据的循环冗余码,并且把这个循环冗余码附加到帧数据后面,形成输出数据流。
如果通用CRC编码器的输人数据的帧长度等于凡,生成多项式的最高次数等于r,对每帧数据产生k个校验和(CHECKSUM),则CRC编码器的工作流程如下:(1)把输入的一帧数据等分成k个部分,每个部分的长度是n/k;(2)在每个部分的数据。
软件学院实验报告课程:计算机网络原理实验任课教师:姓名:学号:专业:成绩:实验九、链路层实验——基于CRC编码的检错程序的实现实验报告一、实验目的1、通过实验,掌握CRC编码和解码的原理。
2、掌握基于CRC编码的差错检测技术。
二、实验指导现在计算机网络广泛采用的差错检测技术是基于CRC(cyclic redundancy check)循环冗余检测编码,CRC也称为多项式编码(polynomial code),CRC算法非常容易用硬件实现。
CRC编码操作如下:对给定的数据D,发送者选择r个附加位,追加到D的末尾,形成d+r位的新位型,该位型正好能被G模2除尽。
其中,G称为生成器。
CRC编码算法实现:1、选择生成多项式G,其最高次方为r,即r+1位的二进制位串2、计算D·2r, 即在数据D后面补r个0,构成d+r位的位串3、按模2除法求(D·2r/G)的余数R,即:4、从D·2r中模2减去R,得到新的数据T,即加了CRC的帧三、实验要求1、设置一个d位的数据D,r+1位的多项式G,生成CRC码,并把此CRC码作为数据帧进行传送。
2、编写两个子程序,分别实现CRC编码和CRC解码,在主函数中对子程序进行调用。
解码子程序应能根据解码情况判断出接收到的数据帧是否出错,并给出提示。
3、要求分别以正确和错误的数据来检验此检错程序。
4、将编写程序的源代码加必要注释和程序运行结果一起填入实验报告中。
提示:1、编写程序时数据直接用二进制数,可能用到位操作符^(异或)和<<(左移)。
2、在设置错误的编码时,错误位数最好不要超过r+1位。
源代码:#include<stdio.h>void crc(int A[],int G[], int x,int n)//编码程序{int i,j,k;printf("\n\t\t");for (k=0;k<=x-1;k++)printf(" %d",A[k]); //输出补后的数for (i=0;i<=x-n+1;i++){if (A[i]==1) //当首位为时进行异或{for (j=0;j<=n-1;j++){if (A[i+j]==G[j])A[i+j]=0; //异或运算,相同为,不同为else A[i+j]=1;}printf("\n\t\t"); //输出每次异或后的结果for (k=0;k<=x-1;k++)printf(" %d",A[k]); //输出余数}}}#include<stdio.h>void cr(int M[],int A[],int m,int n)//检验解码程序{int k=0,i;for(i=0;i<=m-1;i++){if(M[i]!=A[i]){printf("第%d位出现错误\n",i+1);k++;}}if(k==0){printf("数据完全正确\n");}}int main (){int m,n;int A[20],M[20],G[20],i,j;printf("请输入M[x]的长度m=");scanf("%d",&m);printf("请输入G[x]的长度n=");scanf("%d",&n);printf("\n请输入M[x]=\n");for (i=0;i<=m-1;i++)scanf("%d",&M[i]);printf("\n请输入G[n]=\n");for (j=0;j<=n-1;j++)scanf("%d",&G[j]);for (i=0;i<=m-1;i++)A[i]=M[i];for (i=m;i<=m+n-2;i++)A[i]=0; //对被除数进行补crc(A,G,m+n-1,n); //调用异或函数for (i=0;i<=m-1;i++)A[i]=A[i]+M[i];printf ("\n\n结果为:");for (i=0;i<=m+n-2;i++)printf ("%d",A[i]);printf ("\n");printf("\n请输入你想要进行解码的数据:\n");for (i=0;i<=m-1;i++)scanf("%d",&M[i]);cr(M,A,m,n);}编码:解码:数据出错:。
沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:CRC码生成与校验电路的设计与实现院(系):专业:班级:学号:姓名:指导教师:完成日期:2016年1月14日沈阳航空航天大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (2)1.3设计环境 (3)第2章详细设计方案 (6)2.1顶层方案图的设计与实现 (6)2.1.1创建顶层图形设计文件 (6)2.1.2器件的选择与引脚锁定 (7)2.1.3编译、综合、适配 (8)2.2功能模块的设计与实现 (9)2.2.1模2除法器的设计与实现 (9)2.2.2移位寄存器的设计与实现 (11)2.3仿真调试 (12)第3章编程下载与硬件测试 (15)3.1编程下载 (15)3.2硬件测试及结果分析 (15)参考文献 (17)附录(电路原理图) (18)第1章 总体设计方案1.1 设计原理二进制信息位流沿一条线逐位在部件之间或计算机之间传送称为串行传送。
C RC(cyclic redundancy check)码可以发现并纠正信息存储或传送过程中连续出现的多位错误。
CRC 码的编码格式如图1.1所示,是在k 位有效数据之后添加r 位校验码,形成总长度为n 的CRC 码,简写作C(n,k)码。
CRC 编码的关键技术在于如何从k 位信息简便的得到r 位校验码,并根据总长度为n 的CRC 码进行纠错。
图1.1设被校验的数据0121...D DD D D k k --=是一个k 位的二进制代码,将它表示为一个(k-1)阶的多项式0112211......)(D x D x D x D x M k k k k +++++=---- (1-1)多项式(1-1)中的系数D 的取值为0或1,与被校验的数据M 一一对应;式中的x 是一个伪变量,用ix 指明各位的位置。
设校验码P 长度为r ,将被校验数据D 左移r 位后的结果为位r k k D D D D 00...00...0121--将D 左移r 位的目的是给D 右边添加r 个0,形成(k+r)位长度二进制代码,其多项式形式为M(x)×r x 。
CRC码在DSP上的实现一、实验目的1、理解循环码编码器的工作原理2、了解CRC的纠错原理3、理解并用逐位比特算法和标准的查表算法实现CRC4、在TMS320C54x DSP上实现CRC码算法二、实验设备PC机,操作系统Windows XP,Code Composer Studio2.0软件三、实验原理1、循环冗余码校验循环冗余码校验(CRC,Cyclic Redundancy Check),它是应用非常广泛的一种编码。
利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。
在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。
这个规则,在差错控制理论中称为“生成多项式”。
CRC码是是线性分组码的一个子类,具有特殊的代数结构,它保证了循环码能够使用线性反馈移位寄存器实现编码,使用标准的排列解码法解码。
由于循环码的码字多项式c(x)能够被生成多项式g(x)整除,如果接收到的y(x)不能被g(x)整除,则可以料定y(x)中存在错误的比特,这就是CRC 纠错原理。
CRC码通常来说是循环码,但是它并非一定要求是循环码。
这是因为如果只作为一种检错码,实际上只需要发送的码字多项式c(x)是g(x)倍数这个性质,不一定要求c(x)具有循环封闭性。
这意味着可以不需要g(x)是x n+1的因子这一过程。
对于某个次数为r的生成多项式g(x),以及任意的分组长度k,总可以构造出一个(k+r,k)的线性分组码,其输出码字多项式都g(x)的倍数,这样的码并不一定都是循环码,因为对任意的k,g(x)不一定都是x k+r+1的因子。
比如CRC-8的生成多项式为x8+x7+x4+x3+x+1是一个(40,32)线性分组码,不过这个码并不是循环码,因为x40+1=(x5+1)8,它不包含x8+x7+x4+x3+x+1这样的一个因子。