基于FPGA的循环冗余校验实验系统的实现
摘要:文章首先分析了循环冗余校验码的功能,在此基础上提出了基于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模块的端口的数据定义如下:平面变压器厂家 | 平面电感厂家
输出为115V、400Hz的单相逆变电源1 引言 直流27V变为交流115V、400Hz的逆变电源在部队和船舶上应用广泛,有较大需求。针对这一情况,我们研制了800VA的单相静态逆变电源,该电源采用直流27V输入,可以输出115V、400H
[DCDC]12V升17V/5A的升压电路大神推荐一个12V升17V/5A的升压电路,最重要的是安全性XL60122428793084BOOSTBOOSTBOOM!!!!!lfc315发表于2017-8-3011:40
XL6012
过不了5A吧YJGCSDYJ发表于2017-8-3013:52
过
[充电器]大家有没有什么验证过的好的充电管理电最近想弄一个充电电路,充电电压按3节锂电池(12.6V)或者4节锂电池(16.8V)需求,充电电流1A左右,目前我在TI上找到有BQ24703和BQ24773两款,看看大家有没有什么好的推荐!CN-3704?xeastsun 发表于 2015-9-13 08:25CN-3704?不知道如韵的芯片在充电充满状态上准不准,我用过一个凌特的芯片LTC4006,有的芯片存在这样一个问题,给锂离子电池充电时,又是充