当前位置:首页 > EDA > 电子设计自动化
[导读]摘要:文章首先分析了循环冗余校验码的功能,在此基础上提出了基于FPGA的实现方法,详细阐述了CRC校验编解码的实现方法,并提出了基于现有的实验箱设备实现小型的CRC校验系统的总体设计框架和设计思路,完成了CRC校验

摘要:文章首先分析了循环冗余校验码的功能,在此基础上提出了基于FPGA的实现方法,详细阐述了CRC校验编解码的实现方法,并提出了基于现有的实验箱设备实现小型的CRC校验系统的总体设计框架和设计思路,完成了CRC校验实验系统的设计,充分提高了设备的使用效率。
关键字:循环冗余校验 CRC编解码 实验系统

一、引言
    随着人们对数据业务的需求越来越多,数据通信在近来得到了长足的发展。但是由于通信信道传输特性的不理想和加性噪声的影响,设备之间的数据通信常会发生一些无法预测的错误,为确保高效而无差错的传输数据,降低错误而带来的影响,必须对数据进行差错检测及控制。在诸多检错手段中,循环冗余检测方法(CRC)是非常有效的一种方法。CRC是对传送数据进行校验的特点是:检错能力极强,开销小,易于编程。从其检错能力来看,它所不能发现错误的几率达0.0047%以下,从其性能及开销上均远远优于奇偶校验以及算术和检错等方式。因而,在数据存储和数据通信领域,CRC无处不在。
    FPGA是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物,采用了逻辑单元阵列这样一个新概念,内部包括可配置逻辑模块CLB、输出输入模块IOB和内部连线三个部分。用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。因此,FPGA的使用非常灵活。利用FPGA实现CRC校验是一个高效的切实可行的方法。
    在教学过程中,我们尝试利用现有的EDA实验箱设备,设计实现小型的CRC校验系统,拓展设备的功能,提高设备使用效率。

二、系统总体设计
    循环冗余校验CRC是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。它的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
     校验码的具体生成过程为:假设发送信息用信息多项式C(x)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。
    生成多项式是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。在发送方,利用生成多项式对信息多项式做模2除(异或运算)生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除(异或运算)检测,当被传送信息(CRC
码)任何一位发生错误时,被生成多项式做模2除(异或运算)后应该使余数不为0。
    基于这样的原理,利用FPGA实现的小型的循环冗余校验实验系统可以由五个部分组成:数据输入电路、CRC编码处理电路、CRC解码处理电路、时钟电路、显示电路。作为CRC校验的输入部分,本设计采用通用的数字机械式键盘。本系统显示信息电路采用共阴极8位7段数码管显示码值,使用3-8译码器译码。CRC校验结果提示电路用LED灯显示,方便、简洁。时钟电路使用可调数字信号源产生时钟。编解码处理电路使用FPGA适配器。发送端首先将数据写入设计好的FIFO存储器,然后依次地调出数据进行编码,然后将生成的CRC码发送出去,并给以接收端一个接收信号;接收端收到信号后,开始对接收到的数据进行解码,并将解码信息反馈给发送方。当解码正确时,发送方继续发送下一个数据,当解码错误时,发送方把刚发的数据重新调出,进行编码,发送出去。系统原理图见图1。



三、系统具体设计
1、CRC编解码的设计
    本系统最主要的部分是CRC编解码的设计。
    首先来讨论编码的设计。本文设计完成12位信息位加5位CRC校验位的通信系统的发送和接收,CRC模块的端口的数据定义如下:
    sdata:12位待发送的信息 datald:sdata的装载信号
    error:误码警告信号 datafini:数据接收完成
    rdata:接收模块接收的12位有效信息数据
    clk:时钟信号
    datacrc:附加5位CRC校验码的17位CRC吗,在生成模块发送,被接收模块接收
    hsend、hrecv:生成、检错模块的握手信号,协调相互之间的关系
    设计的总体思路:首先装载信息位12位数据,取出其中的高6位与生成多项式系数作异或运算,得到的结果取其低5位与原来信息码的低6位并置并在其后补上一个”0”,补足12位,再与生成多项式做同样的异或运算,连续作7次这样的运算,最后得到的异或结果就是CRC校验位。这样通过巧妙的移位运算实现多项式的相除运算。
    部分程序代码的实现如下:

    解码部分的设计与编码部分类似,不过更加简单,只需要将接收的CRC码直接与发端相同的生成多项式相除,除尽表示没有出现传输差错,直接去掉校验位,就可以得到信息码了。关键的部分代码如下:
   


2、其他部分的设计
    (1)数据输入电路部分:将其设计成为一个FIFO的数据缓存器,这样做的目的,可以接收源源不断传来的数据,另一方面考虑到可能传输出现差错,可以从缓存将数据调出来重新传输一遍,直到正确传输为止,才删去数据。
    (2)显示电路部分:输入数据与输出数据都可以采用数码管来进行显示,通过数码管显示可以清楚地观察到传输过程中数据传输的准确性。传输过程出现的差错可以由接收端反馈,在发送端可以用LED灯进行提示。
    (3)按键消抖电路部分:由于设计采用开关是机械开关结构,因此在开关切换的瞬间会在接触点出现信号来回弹跳的现象。基于VHDL的按键消抖法主要有三种:电平检测消抖法、定时检测消抖法以及脉宽检测消抖法。本系统采用定时检测消抖法可以进行按键的消抖。
    至于时钟电路,对于数码显示电路而言,需要额外提供一个较高频率的扫描电路,其他的时钟可以用普通的时钟提供。
    实验系统的实物图如下:



四、结束语
    基于以上的系统的架构和主要的设计思想,我们通过两台EDA实验箱完成了CRC循环冗余校验,模拟了现实的完整的包含发送、传输和接收模块的系统,实验证明,系统能够完成CRC校验,拓展了设备的功能,提高了设备的利用率,达到了设计的目的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭