【2017年整理】基于FPGA的带CRC检验的一步串口通信

上传人:德****1 文档编号:1031803 上传时间:2017-05-26 格式:DOCX 页数:5 大小:126.52KB
返回 下载 相关 举报
【2017年整理】基于FPGA的带CRC检验的一步串口通信_第1页
第1页 / 共5页
【2017年整理】基于FPGA的带CRC检验的一步串口通信_第2页
第2页 / 共5页
【2017年整理】基于FPGA的带CRC检验的一步串口通信_第3页
第3页 / 共5页
【2017年整理】基于FPGA的带CRC检验的一步串口通信_第4页
第4页 / 共5页
【2017年整理】基于FPGA的带CRC检验的一步串口通信_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《【2017年整理】基于FPGA的带CRC检验的一步串口通信》由会员分享,可在线阅读,更多相关《【2017年整理】基于FPGA的带CRC检验的一步串口通信(5页珍藏版)》请在金锄头文库上搜索。

1、基于 FPGA的带 CRC校验的异步串口通信田 佳,王一平 山东大学 时间:2010 年 12月 28日 现代电子技术字 体: 大 中 小关键词: Verilog HDL串口通信 FPGACRC检验 摘要:由于 FPGA具有速度快,效率高,灵活稳定,集成度高等优点,所以为了提高串口通信的速度和效率,在串行通信中采用 FPGA来实现串口通信是十分必要的。由于通信传输的不确定性以及干扰等原因,串行通信经常会出现异常情况。然而,在串行通信中添加 CRC校验,可以提高通信的可靠性。采用Verilog HDL设计的一个带 CRC校验的串口通信程序,对其下栽到 FPGA芯片中进行实验验证,得到的结论是用

2、FPGA进行串口通信,可大大提高通信的速度和效率,且 CRC校验确保了通信的准确性及卡可靠性。关键词:Verilog HDL;串口通信;FPGA; CRC检验现场可编程门阵列(field programmable gate array,FPGA)在数字电路设计中已经被广泛使用。这种设计方式可以将以前需要多块集成芯片的电路设计到一块大模块可编程逻辑器件中,大大减少了电路板的尺寸,增强了系统的可靠性和设计的灵活性。本文详细介绍了已在实际项目中应用的基于 FPGA的串口通信设计。硬件描述语言(hardware description language,HDL)是一种用形式化方法来描述数字电路和设计数

3、字逻辑系统的语言。数字逻辑电路设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自化(EDA)工具进行仿真,再自动综合到门级电路,然后用 ASIC或 Soft-Core实现其功能。Verilog HDL是硬件描述语言的一种,用于数字电子系统设计。串口通信是指在一个时间内传输 1位数字数据。从19世纪的二进位电报编码,发展到现在的 RS 232(EIA 232),主要用于连接终端和大型主机。串口通信在过去的 40年里,大大推动了通信技术的发展。通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同

4、遵守。因此,也叫通信控制规程,或称传输控制规程,它属于 ISOsOSI 七层参考模型中的数据链路层,其主要完成的作用如下:(1)实现数据格式化;(2)进行串并转换;(3)控制数据传输速率;(4)进行错误检测;(5)进行 TTL与 EIA电平转换;(6)提供 EIA-RS 232C接口标准所要求的信号线;(7)为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA与 TTL电平转换器以及地址译码电路组成。1 方案设计与分析11 硬件电路该方案的硬件电路设计包括:FPGA 芯片、MAX3232,DB9。其硬件电路与微机通信的结构框图如图 1所示。12 软件设计

5、思想软件部分的设计流程如图 2所示。121 波特率设置系统时钟是由 PFGA的 16引脚输入的 24 MHz时钟,而异步串口通信的波特率设置为 9 600 bs,所以需要对主频进行分频。分频过程定义了 2个常量,分别用来存储波特率 96 000 bs 的分频计数最大值bpspara和分频计数的一半 bps_para_2。每个系统时钟的上升沿来临时计数器 cnt加 1,每 bps_para_2个系统时钟周期 clk_bps改变 1次状态,这样就产生了 96 000 bs 的波特率。部分分频代码如下:122 数据接收数据接收模块所要完成的任务包括:(1)连续接收 3个字节:1 个字节的数据信息和

6、2个字节的数据信息的 CRC校验码; (2)取出这 3个字节的第一个字节,重新生成 CRC码;(3)讲新生成的 CRC码与接收到得 CRC比较,若相同则传输过程中没有出现错误;若不相同则传输过程有错误,等待接收下一组数据。单字节串并转换串口通信发送数据的格式:1 位起始位(低),8 位数据位,1 位停止位(高),共 10位(这里没有校验位 ParityBit)传输时的顺序是:起始位+数据位低位-数据位高位+停止位,其时序图如图 3所示;3 字节连续接收并储存为了连续接收 3个字节数据,定义中断寄存器 neg_int和计数器 count,复位时都清零,开始接收数据时 rx_int置高,每接受完

7、1个字节,rx_int 清零,此时检测 rx_int的下降沿,下降沿到来时计数器count加 1,直到接收完第 3个字节时 count的值是 3。部分程序如下:因为 HDL是硬件描述语言,所以必须时刻检测是否有起始位到来,需用几个并行的 always语句块来处理。在接受完第 1个字节后继续检测下降沿,并把接收到的数据暂存到寄存器 data中,接收完第 2个字节后仍继续检测下降沿,并暂存数据到 crc1615:8,接收完第 3个字节继续检测下降沿,暂存数据到 crc167:O。等待下面的校验处理。下面用 case语句块来暂存数据。CRC 码生成循环冗余校验(cyclic redundancy c

8、heck,CRC)是一种在数据传输中广泛应用的差错检测方法。CRC的设计思想是将数据包当作一个多位的二进制数,用这个二进制数除以一个选定的多项式,所得的余数作为校验数据直接附加在数据后面发送出去,在接收端对数据除以相同的多项式如余数为零则表示没有错误被检测到。CRC 的工作过程如下:假设需要发送的数据为 8位,校验多项式一般为 X16+X12+X5+1。首先将发送数据左移 16位生成一个新的数列,然后采用模 2运算(异或)将新数列除以校验多项式,所得余数序列即为冗余循环码,将其直接加到数据后面即可。部分程序如下: 将生成 CRC码与接收到得 CRC码进行比较,判断传输过程是否有误,若无误就将数

9、据信息发送出去。123 数据发送数据发送部分的功能是将检验完毕后的正确数据发送出去,实际上是一个并串转换。当数据校验正确后 err置位,通过 pos_err滤波检测 err的上升沿,上升沿到来时 pos_err置高 1个时钟周期,此时开始进行数据发送。串口通信的传输格式是:1 位起始位,8 位数据为,1 位停止位。所以需要将数据装载成发送格式,然后再发送出去。发送时先发送起始位 O,再发送数据低位,然后发送高位,最后在发送停止位 1。这部分用计数器 num进行计数,在 case(num)语句块里,分别发送这 10位。2 实验验证按照以上设计方案编写 Verilog HDL程序,下载到 FPGA

10、芯片中,通过微机与设计系统的通信来验证该设计方案的可行性与可靠性。下载程序前,事先连接电路,连接好电源、串口线、 Byteblaster 下载电缆。程序代码用开发软件 Quartus5O 下载到 FPGA芯片里,具体操作步骤如下:新建 Verilog HDL文件输入并保存代码新建工程设置选项(选择目标芯片,本实验用的是cyclone公司的 EPlC6T144C8N,配置方式,下载方式等)编译配置引脚编译选择下载电缆下载运行。按照以上步骤下载好程序即可以进行实验验证。微机串口调试助手的选项如下:波特率:96 000 bs;校验位:NONE;数据位:8 位;停止位:1 位;接收区设置:16 进制显

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号