基于FPGA与MCU并行通信设计的研究
摘要
关键词
FPGA;MCU并行;通信设计
正文
1 研究背景
科技是现代社会发展的基础,该技术对社会发展各个方面都有一定帮助,不仅能推动社会科技进步,也能实现政治、经济、军事等各方面优化。在整个国际历史的发展历程中,在给世界带来巨大影响和变化的因素里,科学技术常常扮演着重要的角色。科学技术革命无论是对人们的日常生活还是对整个社会的发展,都有着巨大的刺激,让世界向着繁荣富强不断地进步。在第一次技术革命中,科技引领世界进入资本主义国家,而第五次技术革命引领电子信息技术的普及进入世界发展,引领世界走向信息化。因此可以得出,由于科学技术的影响,社会不断地向越来越高级的部分转化。自动化本身是现代技术发展趋向,机电一体化技术在发展过程中,在自动化方面要求逐渐提高。首先,FPGA系统在控制性与抗干扰性方面都具有良好的水平,而且系统设计与开发时间较短,具有良好的优越性,同时,FPGA系统能够进行较好的扩展,并且在整体结构配置方面较为灵活,可以结合自身需求进行改变。但是,传统的FPGA系统很难构成所开发的硬件结构,缺少自己的模块,这些缺点已成为APP的主要困扰之一。FPGA在国内是比较常见的一种技术,为了有效地应对上述问题,将FPGA和单片机进行有效组合并以串行通信为基础,这样会有助于节约资源。
2 通信系统硬件电路设计
2.1单片机外围通信电路及管脚设计
通信接口是通信系统的重要组成部分,是实现系统与外设及其他系统的通信的保证,单片机外围设置16个数据输出端口P5.0-P6.7、16个数据接收端口P3.0-P4.7以及8个通信控制总线端口P7.0-P7.7。如图1所示。
图1单片机外围管脚设置
2.2 FPGA外围通信电路及管脚设计
FPGA外围接口设置与单片机相匹配,分别设置16个IO口P50-P67用于数据接收、16个IO口P30-P47用于数据发送以及8个通信控制总线IO口P70-P77。如图2所示。
3并行通信原理及软件设计
3.1并行通信数据传输原理
3.1.1并行接口输入数据的过程外设
将数据送到“数据输入线”,通过“输入数据准备好”状态线通知CPU将数据从并行总线接口取走,接口先将数据锁存到“输入缓冲器”,接口在其内“状态寄存器”的相应位置1,便于CPU查询和接口向CPU发中断请求之用。CPU从接口将数据取走后,通过“数据输入回答”线通知外设,已经完成当前数据读取,可以进行下一步动作,接口将“数据输入准备好”、“数据输入回答”信号清除,以便外设输入下一个数据。
3.1.2并行接口输出数据的过程与数据
输入相似,接口“数据输出缓冲器”为空,“数据输出准备好”状态线送1,收到CPU发送的数据,将之复位清0,数据通过“数据输出”线送到外设,由“数据输出准备好”线通知外设接收数据。
3.2单片机与FPGA并行通信设计
单片机-FPGA通信程序的主体思路是:数据整体打包发送,即单片机连续发送多个数据给FPGA,FPGA接收完所有数据之后,以某种方式进行校验(求和,或CRC),如果校验成功则视为发送成功,否则视为发送失败,并重新发送数据,当多次发送失败后,停止发送,并通过串口向上位机进行可视化反馈,提醒用户进行相应动作。同理当FPGA向单片机反馈参数时,FPGA也连续向单片机发送多个数据,单片机接收完所有数据后进行校验,如果连续多次都校验失败,则向上位机报警,否则视为发送成功。
图2FPGA外围管脚设置
3.2.1单片机与FPGA数据传输实现
(1)单片机发送——FPGA接收数据单片机将参数进行打包定义,通过控制总线通知FPGA开始准备接收数据,FPGA接到通知后反馈准备状态。得知FPGA处于接收状态,将一个16位数据发送到并行总线上其中数据高四位作为参数号位,用来说明当前参数序号,便于FPGA判断接收。串口P5.0-P5.7用于发送数据的低8位,P6.0-P6.7用于发送数据高8位,在完成单次数据上传后通知FPGA开始接收,FPGA从总线上完成接收后进行处理读取当前参数号并完成参数暂存,然后向单片机反馈本次接收成功指令。具体发送流程如图3所示。当单片机接受到FPGA反馈后说明单次数据发送成功。单片机判断是否完成所有数据的发送,如若未完成则继续重复上一步骤发送,如若完成则发送校验和到FPGA并通知FPGA完成数据发送。当FPGA判断到接收到最后一个数据时,将接收数据进行校验和运算,然后与单片机端发送的校验和进行比较以判断本轮数据传输是否成功。成功后FPGA则向单片机反馈成功指令并完成接收数据的定义与幅值,如若校验和对比异常则说明数据传输异常,FPGA则向单片机反馈失败指令,则系统需要重新进行数据发送流程,如果多次失败系统将会停止数据传输,单片机便向上位机反馈报警。(2)FPGA发送——单片机接收数据与单片机发送数据相似,两者之间数据发送时机控制通过控制总线P7实现,数据传输总线负责16位数据,其中P3.0-P3.7为数据的低8位,P4.0-P4.7为数据高8位。如图1所示。传输流程与发送数据相似,均通过应答机制实现FPGA与单片机交流,保证传输的同步性与准确性。FPGA将数据打包完成并上传至数据总线,其中数据低4位为参数号,高12位为数据值。然后通过将控制总线置1告诉单片机接收数据,单片机接收数据包并进行解析暂存,然后通过控制线通知FPGA已完成当前数据接收,可进行后续动作。FPGA判断数据是否全部发送完毕,如果未完成则重复上述操作继续发送,否则则向单片机发送数据校验和,单片机端接收校验和之后与通过已接收数据计算出的校验和进行比较,判断本次数据传输总流程是否准确完成。成功完成后单片机则向FPGA反馈成功指令,同时完成接收数据的存储,并向触摸屏反馈用于使用者对系统状态的监测。如若校验和对比异常则说明数据传输异常,单片机则向FPGA反馈失败指令,则系统需要重新进行数据发送流程,如果多次失败系统将会停止数据传输,单片机便向上位机反馈报警。
图 3 数据发送流程图
图4 单片机发送数据流程图
3.3硬件实现及测试
搭建FPGA-单片机板上系统,该硬件系统可实现FPGA与51单片机之间的数据通信过程。然后基于此硬件系统进行单片机-FPGA收发实验,对单片机及FPGA通信变量数据进行实时同步监测,实验结果如图5所示。首先进行单片机发送数据,FPGA接收数据实验,单片机共向FPGA发送4个参数数据,对比图5(a)与图5(b)可以看出,FPGA接收数据与单片机发送数据一致,完成单片机向FPGA发送数据过程。然后,进行FPGA发送数据,单片机接收数据实验,FPGA端共向单片机端发送4个数据,对比图5(c)与图5(d)可以看出,单片机接收数据与FPGA端发送数据一致,完成FPGA向单片机发送数据过程。
图5 通信实验数据收发状态监测
4总结
本文提出的基于FPGA与单片机的自定义总线通信系统可实现数据的稳定传输,单次可完成16位数据收发,具有较高的传输效率。采取双向应答机制进行指令反馈保证传输可靠性。数据校验采用校验和方式进行,校验方法简单便捷,且稳定性和准确性较好。该传输流程具有错误自检,自动重发,异常报警等功能,适用性广,可靠性强,在多控制器的嵌入式系统开发中具有较高的实用价值。
参考文献:
[1] 牛凤文,余搏立.基于单片机PLC系统开发与MCGS上位监控系统设计研究[J].安阳师范学院学报,2020,000(002):103-107.
[2] 徐晓磊,翟娟,徐状.基于PLC和单片机的多功能物料传送控制系统的设计[J].软件,2020(03).188-189.
[3] 伞宏力,唐兴喆.STM32单片机与S7-200Smart以太网通讯系统设计[C]//第十七届沈阳科学学术年会论文集.2020.
[4] 邢文生,邓小飞,张彦锋等.基于真实PLC和计算机虚拟电梯部件的交互式实训平台:,CN110660288A[P].2020.
[5] 张定华, 胡祎波, 曹国彦,等.面向工业网络通信安全的数据流特征分析[J]. 西北工业大学学报, 2020,38(01):199-208.
...