CRC(Cyclic Redundancy Check)被广泛用于数据通信过程中的差错检测,具有很强的
检错能力。本文详细介绍了CRC的基本原理,并且按照解释通行的查表算法的由来的思路介绍

了各种具体的实现方法。
1差错检测
数据通信中,接收端需要检测在传输过程中是否发生差错,常用的技术有奇偶校验(Parity
Check),校验和(Checksum)和CRC(Cyclic Redundancy Check)。它们都是发送端对消息按照
某种算法计算出校验码,然后将校验码和消息一起发送到接收端。接收端对接收到的消息按
照相同算法得出校验码,再与接收到的校验码比较,以判断接收到消息是否正确。
奇偶校验只需要1位校验码,其计算方法也很简单。以奇检验为例,发送端只需要对所有消息
位进行异或运算,得出的值如果是0,则校验码为1,否则为0。接收端可以对消息进行相同计
算,然后比较校验码。也可以对消息连同校验码一起计算,若值是0则有差错,否则校验通过。
通常说奇偶校验可以检测出1位差错,实际上它可以检测出任何奇数位差错。
校验和的思想也很简单,将传输的消息当成8位(或16/32位)整数的序列,将这些整数加起来
而得出校验码,该校验码也叫校验和。校验和被用在IP协议中,按照16位整数运算,而且其
MSB(Most Significant Bit)的进位被加到结果中。
显然,奇偶校验和校验和都有明显的不足。奇偶校验不能检测出偶数位差错。对于校验和,
如果整数序列中有两个整数出错,一个增加了一定的值,另一个减小了相同的值,这种差错
就检测不出来。
2CRC算法的基本原理
-------------------
CRC算法的是以GF(2)(2元素伽罗瓦域)多项式算术为数学基础的,听起来很恐怖,但实际上它
的主要特点和运算规则是很好理解的。
GF(2)多项式中只有一个变量x,其系数也只有0和1,如:
1x^7 + 0x^6 + 1x^5 + 0x^4 + 0x^3 + 1x^2 +1x^1 + 1x^0
即:
x^7 + x^5 + x^2 + x + 1
(x^n表示x的n次幂)
GF(2)多项式中的加减用模2算术执行对应项上系数的加减,模2就是加减时不考虑进位和借位,
即:
0 + 0 = 0 0 - 0 = 0
0 + 1 = 1 0 - 1 = 1
1 + 0 = 1 1 - 0 = 1
1 + 1 = 0 1 - 1 = 0
显然,加和减是一样的效果(故在GF(2)多项式中一般不出现"-"号),都等同于异或运算。例
如P1 = x^3 + x^2 + 1,P2 = x^3 + x^1 + 1,P1 + P2为:
x^3 + x^2 + 1
+x^3 + x + 1
------------------------------
x^2 + x
GF(2)多项式乘法和一般多项式乘法基本一样,只是在各项相加的时候按模2算术进行,例如
P1 P2为:
(x^3 + x^2 + 1)(x^3 + x^1 + 1)
= (x^6 + x^4 + x^3
+ x^5 + x^3 + x^2
+ x^3 + x + 1)
= x^6 + x^5 + x^4 + x^3 + x^2 + x + 1
GF(2)多项式除法也和一般多项式除法基本一样,只是在各项相减的时候按模2算术进行,例
如P3 = x^7 + x^6 + x^5 + x^2 + x,P3 / P2为:
x^4 + x^3 + 1
--------------------------------------------------------------
x^3 + x + 1 )x^7 + x^6 + x^5 + x^2 + x
x^7 + x^5 + x^4
-----------------------------------
数字频率计
直接应用相量法画图就可以求解,也可以通过代数运算的方法。同频的正弦量相加仍得到同频的正弦量。同频正弦量的加减运算变为对应相量的加减运算。
电路相量2∠45+1∠30计算
相量有两种表示形式:1、模+幅角;2、复数形式。
加减法时,采用复数形式计算。如果是“模+幅角”的形式,就转化为复数形式。如你的题目中:2∠45°+1∠30°=2×(cos45°+jsin45°)+1×(cos30°+jsin30°)=√2/2+j√2/2+√3/2+j05=(√2/2+√3/2)+j(05+√2/2)。
乘除法时:使用模+幅角形式计算。Z1=R1∠φ1,Z2=∠φ2,则:Z=Z1×Z2=R1∠φ1×R2∠φ2=R1R2∠(φ1+φ2)。如果是复数形式,就需要将其转化为模+幅角的形式:因为Z1=R1∠φ1=R1cosφ1+jR1sinφ1=x+jy,所以R1=√(x²+y²),φ1=arctan(y/x)。
此外,复数阻抗的实部称为等效电阻,虚部称为电抗,模称为阻抗模,幅角称为阻抗角,它们分别用符号R、X、|Z|、φ表示。复数导纳的实部称为等效电导,虚部称为电纳,模称为导纳模,幅角称为导纳角,它们分别用符号G、B、|Y|、φ┡表示,于是 Z =R+jX=|Z|e。
电路分析中的相量法怎么理解
正弦加减乘除微积分频率不变,因此相量可以理解为旋转的向量。相对静止,于是可以用向量的方法分析,常用极坐标形式。最后再加上频率就可以转化为时域表达式。
电路的基本作用是什么
1)测周法:使用“测周法”测量输入信号的频率,在数字电路中可以利用被测信号的边沿来向电路内部提供一个闸门时间,在闸门时间内对系统内部提供的标准高频时钟信号的边沿进行计数。若被测信号的频率为 ,标准高频时钟信号的频率为 ,测量所得计数值为 ,则可以根据公式(1)得到被测信号频率。
时序图如图111所示:
2)计数法:使用“计数法”测量输入信号的频率,即通过系统内部给一个固定闸门时间,在闸门时间内用计数器对被测信号的边沿进行计数。若被测信号的频率为 ,内部闸门时间为T,测量所得计数值为 ,则可以根据公式(2)得到被测信号频率。

时序图如图112所示:
因为在数字电路中使用中小规模逻辑器件构建多位除法器电路十分困难,故选择计数法来测量被测信号的频率。通过设置内部闸门时间T为1s,计数器在闸门时间内的计数值 即为被测信号的频率值。
根据设计要求,数字频率计最高需测量100kHz的TTL电平信号,故数字频率计系统通过逻辑控制电路给计数器芯片提供1s闸门时间的计数信号,在1s计数完成之后锁存计数器所得到的计数值,并且通过译码器译码完成后通过数码管显示出来。锁存完成之后再向计数器提供清零信号,然后计数器再开始下一次的测量,系统整体设计框图如图121所示。
时基电路是由555定时器构成的多谐振荡器,电路原理图如图211所示。在接通电源之后,若此时555定时器的放电三极管T未导通,则电容C1通过电阻R1、R2进行充电,此时电路输出高电平。当电容C1上的电压达到 时,电路输出高电平,同时放电三极管T导通,电容C1通过电阻R2放电,电路输出低电平。当电容C1上电压下降至 时,电路输出翻转为高电平,同时放电三极管T截止,电路周而复始的工作,产生时基信号。
时基信号的高电平时间由电容充电时间决定,其计算公式如下:
时基信号的低电平时间由电容充电时间决定,其计算公式如下:
使用模拟示波器测量时基电路输出的时基信号,示波器测量结果如图212所示。根据示波器测量结果,时基信号的高电平时间约为1s,低电平时间约为120ms,时基信号满足设计要求。
根据设计要求,需测量100kHz的信号,使用计数法计数时,计数模块最低需在1s内可以计100k个边沿脉冲。且因为显示模块为数码管,为了让数码管方便显示,故每一个计数器芯片都应设计为模十计数器,同时为6个模十计数器级联才能符合设计要求。但是当计数模块为6个计数器级联时,若采用同步计数器,则可能会使得计数脉冲的负载加重,故选择采用异步十进制计数器芯片74LS90,其芯片的功能表如表221所示。
根据芯片功能表,当R9(1)、R9(2)保持低电平时,可以通过控制R0(1)、R0(2)两个引脚的电平高低来控制计数器工作状态。故通过逻辑控制电路向计数模块输入计数/清零信号,当该信号为高电平时,计数器计数。当该信号为低电平时,计数器清零。为了实现计数器之间的级联,将低位计数器的Q4输出端接至高位计数器的CKA输入端。当低位计数器的计数状态Q0Q1Q2Q3从1001变为0000即计数值从9变为0时,Q4会产生一个下降沿信号输入到高位计数器的CKA端,实现了低位计数器向高位计数器的进位功能。计数模块电路图如图222所示。
给电路加上计数/清零信号和被测信号后,使用逻辑分析仪去测量其中一个计数器芯片的输出,其输出结果如图223所示,其中A0-A3分别对应着计数器芯片的四个输出端Q0-Q3,A4为计数/清零信号。根据测量结果,计数器能够在计数信号有效时正常计数,在清零信号有效时保持清零状态。
根据设计方案,译码显示模块需完成对计数器的计数结果进行锁存、译码并且通过数码管显示出来。为了减少芯片数量,故选择自带锁存功能的译码器芯片CD4511,CD4511的功能表如表231所示。
根据CD4511功能表,数码管应选择共阴极数码管。逻辑控制电路给译码显示模块输入锁存译码信号,即CD4511芯片的 和 始终保持着接高电平,给芯片的LE端输入译码显示信号。当译码显示信号为高电平时,译码显示模块锁存在上一个LE=0时的状态,显示在高电平来临之前的状态,当译码显示信号为低电平时,译码显示模块就会实时刷新显示状态。译码显示模块电路图如图232所示。
闸门电路需根据闸门信号来控制被测信号是否能够输入到计数模块。当闸门信号为高电平时,被测信号能够正常地通过闸门电路输入到计数模块,而当闸门信号为低电平时,被测信号被闸门阻碍,无法通过闸门电路。
根据闸门电路的设计要求,可以采用二输入与非门来实现闸门信号对被测信号是否输入到计数模块的控制。如表241为四2输入与非门74LS00的功能表。若闸门信号输入到与非门的A端,被测信号输入到与非门的B端,根据其功能表可知,当闸门信号为高电平时,闸门电路的输出信号与被测信号反相,当闸门信号为低电平时,闸门电路的输出信号一直保持高电平,阻碍被测信号输入计数模块。闸门电路的电路图如图242所示。
向闸门电路输入闸门信号和被测信号,使用模拟示波器观察输出信号与两个输入信号的波形图,如图243所示。
如图所示,第一个信号为闸门电路输出信号,第二个为被测信号,第三个为闸门信号。当闸门信号为高电平时,被测信号能够正常地通过闸门电路输出到计数模块,当闸门电路为低电平时,闸门电路输出保持为高电平,导致被测信号无法传输到计数模块,满足设计要求。
根据设计方案,逻辑电路需要根据输入的时基信号,通过逻辑电路来产生控制计数模块的清零信号和控制译码显示模块的锁存信号,以此来实现数字频率计的自动测量和刷新功能。
译码显示模块需要通过逻辑控制电路产生一个译码信号来实现对译码显示模块的锁存数据和刷新数据的功能。译码信号是在计数模块测量完成之后,在清零信号有效之前进行锁存当前测量结果的数据,根据CD4511的功能表, 锁存信号是高电平有效,即在高电平时译码器对高电平来临之前的输入信号进行锁存并保持,在低电平时锁存失效,即根据输入信号的变化实时刷新输出信号。在逻辑控制电路内,为了让其基于时基信号产生锁存信号,采用了555构成的不可重复触发的单稳态触发器。
单稳态触发器的特点是电路有一个稳定状态和一个暂稳状态。在触发信号作用下,电路将由稳态翻转到暂稳态,但是暂稳态是一个不能长久保持的状态,由于电路中RC延时环节的作用,经过一段时间后,电路会自动返回到稳态,并在输出端获得一个脉冲宽度为 的矩形波。在单稳态触发器中,输出的脉冲宽度 ,就是暂稳态的维持时间,其长短取决于电路中电阻R和电容C的参数值。
由555构成的单稳态触发器电路及工作波形如图252所示。图中R,C为外接定时元件,输人的触发信号 接在555的低电平触发端(2脚)。稳态时,输出 为低电平,即无触发器信号( 为高电平)时,电路处于稳定状态且输出低电平。在 的负脉冲作用下,低电平触发端得到低于 ,输出 为高电平,放电三级管T截止,电路进入了暂稳态,定时开始。在暂稳态期间,电源→R→C→地,实现对电容的充电,充电时间常数T=RC, 按指数规律上升。当电容两端电压 上升到 后,6端为高电平,输出 变为低电平,放电三极管T导通,定时电容C充电结束,即暂稳态结束。电路恢复到稳态 为低电 平的状态。当第二个触发脉冲到来时,又重复上述过程。
根据上述555单稳态触发器电路原理, 从零电平上升到 的时间就是输出电压 的脉宽 ,其计算公式如公式5所示。
逻辑控制电路的原理图如图253所示,实现对输入的时基信号进行变换,转化为清零信号和锁存信号。
向逻辑控制电路输入时基信号,使用示波器测量其输入信号和输出的清零信号及锁存信号的波形图,如图254所示。锁存信号在时基信号的下降沿触发,一直持续到时基信号下一次下降沿之前才转化为低电平,清零信号与时基信号相比较发现清零信号在产生于时 基信号的上升沿,且比较短暂,仿真结果满足设计方案。
方波发生器的电路是以555多谐振荡器为模板,通过控制555多谐振荡器的电阻大小和电容大小来改变输出的矩形波的频率。具体的555多谐振荡器电路原理参见节221。根据设计要求,矩形波发生器的电路原理图如图261所示。
使用频率计测量矩形波发生器的输出频率,其最大频率与最小频率如图262所示。
在设计逻辑控制电路时,原本采取的设计方案是用单稳态触发器通过对时基信号的触发产生一个很窄的高电平脉冲信号作为清零信号,再对清零信号通过一个单稳态触发器产生一个很窄的低电平脉冲信号作为锁存信号。这个设计方案是基于所使用单稳态触发器为脉冲触发时,才可能使得单稳态触发器的暂稳态时间低于触发信号的脉冲宽度。但是所使用的单稳态触发电路是由555定时器芯片为核心搭建的,而根据555定时器芯片的功能表,如表311所示,555定时器搭建的单稳态触发电路为电平触发的单稳态电路,故修改设计方案,具体方案参考节251。
在制作频率计时,考虑到电路较为复杂,如果在洞洞板上搭建电路则在电路连接上会受限制,会使用大量的跳线或者杜邦线去连接电路,电路的稳定性和可靠性比较低。故采用设计PCB制作电路板的方式去实现电路。
但是在设计PCB时由于经验不足,在布线时将两个不同网络的线路和焊盘放的过近,导致所制作出来的电路板在有的地方发生了短路的现象,花费了大量的时间去排查和解决短路问题。在放置数码管与CD4511之间的限流电阻时,由于疏忽导致电阻的阻值不等,使得数码管亮度不均匀。
通过本次数字频率计课程设计,加强了我在数字电路方面的认识。在设计频率计的电路时,通过查找资料加深了对时序电路和逻辑电路的了解,同时也学会了如何去通过查阅芯片的数据手册来分析它的功能和建立时间、保持时间等一些参数,以此来选取符合设计功能的芯片。在电路的时序逻辑设计上,通过本次设计让我体会到了数字电路中的时序对于整个系统是否正常能够工作起着决定性作用。在时基电路和逻辑控制电路的设计中所运用的555定时器芯片搭建的不同功能的电路,让我对与单稳态电路和无稳态电路有直接的体会。在仿真电路,学会了使用Protues这一款电子电路仿真软件,并且通过虚拟示波器和逻辑分析仪去观察和分析电路的时序逻辑。
在制作实物时,使用了EDA电路设计软件来设计PCB和制作电路板来完成实物制作,在制作的过程中逐渐熟悉了软件的时候和画PCB的技巧。同时也发现了并非电路仿真成功电路就一定不存在问题。由于在实际电路中,各类元件的参数上的误差和焊接上的缺陷对电路都会造成影响。而且在制作电路时一定要认真检查,如果一处出现失误,会导致整个电路失去作用甚至烧坏电路。所以在制作实物时要足够的细心去排查电路故障产生的原因并且去修正它。
在短短几天的课程设计中,不仅加深了我对数字电路基础知识的掌握程度,而且还让我经历了一个电路从无到有的设计和制作过程,加深了对专业知识的理解,让我对专业知识的学习有了更大的兴趣和动力。
电路的作用主要有两个:
1、传输和转换电能。
2、传递和处理信号。
电路的组成主要包括电源、负载和中间环节三个。最简单的电路,是由电源,用电器(负载),导线,开关等元器件组成。电路导通时叫做通路,断开时叫开路。只有通路,电路中才有电流通过。电路某一处断开叫做断路或者开路。
扩展资料:
模拟电路
将连续性物理自然变量转换为连续的电信号,并通过运算连续性电信号的电路即称为模拟电路。模拟电路对电信号的连续性电压、电流进行处理。
最典型的模拟电路应用包括:放大电路、振荡电路、线性运算电路(加法、减法、乘法、除法、微分和积分电路)。运算连续性电信号。

数字电路
数字电路亦称为逻辑电路,将连续性的电讯号,转换为不连续性定量的电信号,并运算不连续性定量电信号的电路,称为数字电路。
数字电路中,信号大小为不连续并定量化的电压状态。多数采用布尔代数逻辑电路对定量后信号进行处理。典型数字电路有,振荡器、寄存器、加法器、减法器等。运算不连续性定量电信号。
参考资料:---电路


