基于Logisim的CRC编码电路实现

合集下载

偶校验编码设计logisim实验报告

偶校验编码设计logisim实验报告

偶校验编码设计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 校验码,并与接收到的校验码进行比对。

如果两者一致,说明数据传输无误;如果不一致,则意味着数据可能发生了错误,需要进行重新传输或纠错处理。

总的来说,CRC校验码作为一种差错检测方法,具有简单、高效、可靠的特点。

它在保障数据传输的准确性和可靠性方面起到了重要的作用。

通过合理应用CRC校验码,我们可以提高数据传输的质量,确保信息的完整性和可靠性。

基于MACHXL的CRC编码和校验电路的实现

基于MACHXL的CRC编码和校验电路的实现

如果想得 到乘数 为 B ( X) = , 除数 为 c ( x) =c 3 X +C 2 X +
f 1 x+ C 。 的乘除法 电路 , 则为 :
3 . 循 环 码 的 组 成 和 CR C校 验 原 理
如果二进制 的原信息码 的长度 为m, 在其后 附上一个 二进 制的 n 位 校验码 , 即可组成 循环码 。用多项式 表示 , D ( X) 为原信息 码多项式 ,
r 】 r 、
。Gf X)
除数为多项式 c ( x) 一f 3 X。 +f 2 x。 +f L X+c 0 的除法电路为:
) 除以 c ( x) 的商, R( X) 为余。若能除尽 , 则 R ( X) =0 。 例如 , n( x) 一x +x + x +1和 c ( x) 一 x。 + x+1 相除, 商为 Q( x) 一 +x+1 , 余为R( X) = X 。即:
X 。 + x + x + 1 = ( X + x + 1 ) ( x 。 + + 1 ) + x 。
利用 竖式进 行除法运算 :
X。 +X + O X。 +X 。+O X+1
X。+O X +X 。 +X +O X+0
IMP r T
X +X。 +O X。 +O X+ 1
CRC编 码 和 校 验 的 CP L D 电路 的具 体 实现 。
[ 关键词 ] CRC MAC HXL CP L D 多项式
循环 冗余码 校验 法( C y c l i c R e d u n d a n c y C h e c k 简称 C RC) 是 串行通 信 中应用较 为广 泛的差错控制方法 。C R C校验广泛 用于检测数据块差 错, 是错码检测 最重要和最常用的方法之一 , 其优 点是对 随机错码和突 发错码都能 以较 低的冗余度进行严格检查 。同步 串行通 信中几乎都使 用C R C校验 , 此外 , 它还 可用 于校验 R O M或 RA M存储 区的完整性 。 1 . 循 环 码 及 CRC校 验 循环 码是线性分 组码 中应 用最广 的子 类 , 其 主要 特点是任 一码字 向左 或向右循环 移位后仍 是该码字集合 的码字 , 而且其编码 电路及伴 随式计算 电路易 于实现 。 C R C 校验 的基本思想是利用循环码 的特 点, 在串行通信的发送端 , 利用一组线 性的反馈移位寄存器 , 根据要发送 的串行 二进制码序列 ( 即 原信息 码 ) , 产生 一个校验用 的校验码 ( 即C RC码) , 并将其 附在原 信息 码后面 , 由二 者共同构成一个新的二进制码序列 , 并将此新 序列发送出 去 。在 串行通信 的接收端 , 同样有一组线性 的反馈移位 寄存 器 , 将此信 息序 列接 收 , 并在 接收 的 同时将 其校 验 , 如检 查有误 则可 产生错 误信 号。 2 . 循环码的多项式描述及运算 任何一 个二进制码都可 以用一个多项式来 描述 , 例如 , 一个 6 位的 二进制码 1 1 1 0 0 1 就可表示为多项式 :

logisim 8位偶校验编解码电路

logisim 8位偶校验编解码电路

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中,我们可以使用逻辑门实现解码电路。

CRC编码的Simulink仿真实现

CRC编码的Simulink仿真实现

目录第一章设计要求求 (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编码器根据输入的一帧数据计算得到这帧数据的循环冗余码,并且把这个循环冗余码附加到帧数据后面,形成输出数据流。

CRC编码实验实验报告

CRC编码实验实验报告
循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较, 若两个CRC值不同,则说明数据通讯出现错误。
11001———————除数
————
11110
1001
————
11111
11001
————
000100——————余数
2)
input=[1 0 1 1 0 0 1 1];crc_no=4;
k = size(input,2);
generator = zeros(1,crc_no+1);
output = zeros(1,k+crc_no);
end
output = [input output(1:crc_no)];
n = size(input,2);
output = input(1:n-crc_no);
forii = 1:n-crc_no
if(input(1) == 1)
input(1:crc_no+1) = mod((input(1:crc_no+1)+generator),2);
而发送信息位 1111,可转换为数据多项式为C(x)=x^3+x^2+x+1。
2)、生成多项式
是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。

CRC编码的Simulink仿真实现

CRC编码的Simulink仿真实现

目录第一章设计要求求 (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编码的检错程序的实现

实验九基于CRC编码的检错程序的实现

软件学院实验报告课程:计算机网络原理实验任课教师:姓名:学号:专业:成绩:实验九、链路层实验——基于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);}编码:解码:数据出错:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2015
计算机组成原理 ·课程论文·
基于 Logisim 的 实验内容: 专 班 学 姓 电 邮 业: 级: 号: 名: 话: 件: 2015-6-10 CRC 编码电路实现
报告日期: 指导教师:
计算机科学与技术学院


1 实验目的.............................................................................................................................1 2 实验环境.............................................................................................................................1 3 实验内容.............................................................................................................................1 4 实验原理.............................................................................................................................1 4.1 CRC 码..................................................................................................................... 1 4.2 CRC 编码原理......................................................................................................... 2 4.3 生成多项式选择..................................................................................................... 3 5 方案设计.............................................................................................................................3 5.1 (7,4)CRC 编码................................................................................................ 3 5.1.1 (7,4)CRC 编码电路图......................................................................... 4 5.2 (21,6)CRC 编码.............................................................................................. 4 5.2.1 (21,6)CRC 编码电路........................................................................... 5 6 过程与调试.........................................................................................................................5 6.1 实验实现步骤......................................................................................................... 5 6.2 实验测试用例......................................................................................................... 6 6.3 结果与分析............................................................................................................. 7 6.3.1 测试结果...................................................................................................... 7 6.3.2 结果分析...................................................................................................... 7 6.4 故障与调试............................................................................................................. 7 6.4.1 故障 1........................................................................................................... 7 6.4.2 故障 2........................................................................................................... 8 7 总结与心得.........................................................................................................................8 7.1 实验总结................................................................................................................. 8 7.2 实验心得................................................................................................................. 8 8 参考文献.............................................................................................................................9
M ( x ) x R ( x ) M ( x) G ( x)
4.2 CRC 编码原理
2
华 中 科 技 大 学 课 程 实 验 报 告
CRC 编码是基于模 2 乘除法和减法来实现编码过程的。 模 2 加减运算就是按位 加减运算,即不带进位和借位的二进制加法和减法运算。模 2 加与模 2 减的结果相 同。运算规则如下: 0+0=0,0+1=1,1+0=1,1+1=0 模 2 乘运算按模 2 加求部分积之和,无进位。 模 2 除运算即按模 2 减求部分余数,不借位。其上商原则是: 1)部分余数首位为 1 时,商为 1,减除数。 2)部分余数首位为 0 时,商为 0,减 0。 3)当部分余数的位数小于除数的位数时,该余数为最后余数。
何创建逻辑电路,方便简单。 它是一款基于 Java 的应用程序,可运行在任何支持 JAVA 环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim 中的主要组 成部分之一就在于设计并以图示来显示 CPU。当然 Logisim 中还有其他多种组合分 析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以 重新利用小规模的电路来作为大型电路的一部分。
3
实验内容
学习使用 Logism 工具栏上的功能 学会使用子电路,并能将子电路放到 main 电路中使用 学习使用时钟,并能使用时钟单步或自动运行 学会使用分线器,理解线宽的概念 掌握循环冗余编码(CRC)的原理 完成(7,4)CRC 编码 完成(21,6)CRC 编码
4
Dk 1 x k 1 Dk 2 x k 2 ...D1 x1 D0 00...00
将 D 左移 r 位的目的是给 D 右边添 r 个 0,形成(k+r)位长度的二进制代码,其 CRC 码由 K 位数据 D 和 r 位校验码 P 组成, 多项式形式为 M ( x) x r 。 如图 4.1 所示, 求校验码 P 的多项式 R(x)的方法如下:
r位
M ( x ) x R( x) Q( x) G ( x) G ( x)
(1-2)
Q(x)是商,R(x)是余数,R(x)所对应的二进制代码是校验码 P。可以证明存在一 个最高次幂为 n-k=r 的多项式 G(x),即式(1-2)中 G(x)成为生成多项式。 由式(1-2)可以推出
图 4.1
设被校验的数据 D Dk 1 Dk 2 ...D1 D0 是一个 k 位的二进制代码, 将它表示为一个 (k-1)阶的多项式 M(x)= D Dk 1 x k 1 Dk 2 x k 2 ...D1 x1 D0 (1-1)
多项式(1-1)中的系数 D 取值为 0 或 1,与被校验的数据 M 一一对应,式中的 x 是一个伪变量,用 x i 指明各位的位置。 设校验码 p 的长度为 r,将被校验数据 D 左移 r 位后的结果为
相关文档
最新文档