新闻中心

EEPW首页>EDA/PCB>设计应用> 基于FPGA的带CRC校验的异步串口通信

基于FPGA的带CRC校验的异步串口通信

作者: 时间:2010-12-23 来源:网络 收藏

码生成
循环冗余校验(cyclic redundancy check,)是一种在数据传输中广泛应用的差错检测方法。的设计思想是将数据包当作一个多位的二进制数,用这个二进制数除以一个选定的多项式,所得的余数作为校验数据直接附加在数据后面发送出去,在接收端对数据除以相同的多项式如余数为零则表示没有错误被检测到。CRC的工作过程如下:假设需要发送的数据为8位,校验多项式一般为X16+X12+X5+1。首先将发
送数据左移16位生成一个新的数列,然后采用模2运算(异或)将新数列除以校验多项式,所得余数序列即为冗余循环码,将其直接加到数据后面即可。
部分程序如下:
f.JPG
将生成CRC码与接收到得CRC码进行比较,判断传输过程是否有误,若无误就将数据信息发送出去。
1.2.3 数据发送
数据发送部分的功能是将检验完毕后的正确数据发送出去,实际上是一个并/串转换。当数据校验正确后err置位,通过pos_err滤波检测err的上升沿,上升沿到来时pos_err置高1个时钟周期,此时开始进行数据发送。串口的传输格式是:1位起始位,8位数据为,1位停止位。所以需要将数据装载成发送格式,然后再发送出去。发送时先发送起始位O,再发送数据低位,然后发送高位,最后在发送停止位1。这部分用计数器num进行计数,在case(num)语句块里,分别发送这10位。

2 实验验证
按照以上设计方案编写Verilog HDL程序,下载到芯片中,通过微机与设计系统的来验证该设计方案的可行性与可靠性。下载程序前,事先连接电路,连接好电源、串口线、 Byteblaster下载电缆。程序代码用开发软件QuartusⅡ5.O下载到芯片里,具体操作步骤如下:
新建Verilog HDL文件→输入并保存代码→新建工程→设置选项(选择目标芯片,本实验用的是cyclone公司的EPlC6T144C8N,配置方式,下载方式等)→编译→配置引脚→编译→选择下载电缆→下载运行。
按照以上步骤下载好程序即可以进行实验验证。微机串口调试助手的选项如下:波特率:96 000 b/s;校验位:NONE;数据位:8位;停止位:1位;接收区设置:16进制显示;发送端设置:16进制发送。
表1所示为实验验证结果,其中的12的CRC码为3273,34的CRC码是76D7。
g.JPG

实验验证结果可以看出,数据传送的正确率很高。

3 结语
简单介绍了芯片、Verilog HDL、串口协议以及硬件电路设计,详细分析了软件部分各个模块的设计方法,并下载程序到FPGA芯片,通过微机与系统之间的串口通信,验证了该设计的可行性与可靠性。在实现过程中,着重分析了移位串/并,并/串转换过程,并加入CRC检验码生成过程和具体校验过程,用Verilog HDL语言编程,实现了串口通信的采集、数据处理、数据发送的全过程。该方案的特点是实现容易,速度快,效率高,实用性强,可以广泛应用于终端、打印机、逻辑分析仪、磁盘等与计算机相距不远的人-机交互设备和串行存储的外部设备。

本文引用地址://m.amcfsurvey.com/article/191423.htm

fpga相关文章:fpga是什么


通信相关文章:通信原理



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭