当前位置:首页 期刊杂志

FPGA与MCU自定义并行总线通信设计及实现

时间:2024-08-31

戴越,张林,刘广民,张勇斌,荆奇,沈杰

(中国工程物理研究院机械制造工艺研究所,四川绵阳,621900)

0 引言

随着信息技术的发展与进步,人类社会已经进入了数字化和智能化时代,计算机微机化得到快速发展,智能化、自动化系统实现了大规模应用。其中具有多控制器的嵌入式系统凭借其小型化、功能多样化的特点得到了不断的改进与发展[1-2]。多控制器之间的实时、可靠的数据通信则是保证嵌入式系统实现复杂功能和稳定运行的基础和前提[3-4]。比如,在基于单片机和FPGA的嵌入系统中,单片机和FPGA需要在彼此之间以及与外部设备和远程中断之间进行大量的数据传输以满足系统设备可以实现自动化、智能化应用的要求[5-6]。为了保证系统可靠性,数据通信的高效性和准确性就显得尤为重要[7]。

本文主要针对应用于脉冲电源的板上系统进行通信方式设计,该系统包含FPGA与单片机两种控制器,信号传输过程具有传输距离短,传输速率要求高,传输可靠性要求高等特点,针对此特点,本文提出自定义并行总线通信设计方法,实现了单片机与FPGA之间数据的高速、可靠传输,为确保系统的稳定运行提供了重要技术保障。基于该通信方式的脉冲电源系统已经使用一年多,未出现任何通信问题。

1 系统方案

通信系统的方案对通信速率,数据传输准确性起着决定性的作用。通信方式的选择是系统方案的基础,决定了数据传输的协议方式,通信总线的选择,后期软硬件的设置等。对通信系统的数据传输效率,传输距离,传输可靠性以及系统成本都有着决定性的影响。

1.1 通信方式选择

现有常用的通信方式主要有两种:串行通信与并行通信。串行通信是指使用一条数据线,将数据从低位到高位或从高位到低位由一个通信系统一位一位地依次传输到另一个通信系统,每一位数据传输时使用一定的时间长度,一般只需少数几根传输线就能完成多系统之间的信息交换,成本低,适合远距离传输,但是由于传输线较少,存在着传输时间慢,效率较低的不足。并行通信指数据的各个数据位同时在多条数据线上进行传输,与串行总线相反,其通信速度快,通信效率高,多用于需要实时、快速的场合,但是传输成本较高,不适宜远距离通信。并行传输和串行传输的区别如图1所示。在系统需要传输一个字节,并行通信需要8根数据线传输数据,而串行通信只需1根数据线,但并行传输速率约为串行传输的8倍[8]。

图1 并行通信系统与串行通信系统

根据现有硬件设计要求,本文所针对的单片机与FPGA通信总线基于同一硬件系统,所以两者信号传输距离短,且系统要求较高的数据信号传输速率,所以选用应并行通信作为系统通信方式。

1.2 系统总体设计

系统主要由三个模块组成,包括人机交互接口(触摸屏 )、MCU控制单元 (C8051)、FPGA控制单元 (Altera,EP4CE75FE23I7),如图2所示。在触摸屏上可实现对脉冲参数的设置并传递给MCU,同时触摸屏也用于接收和实时显示MCU反馈的电流、电压参数;MCU一方面与触摸屏通信完成脉冲电参数的接收和解析,另一方面以自定义总线的方式进行与FPGA之间通信,向FPGA发送设置的参数,同时接收FPGA反馈的参数;作为整个系统的控制核心,FPGA既与MCU通信以完成脉冲电参数的接收和电流、电压参数的反馈,同时进行相应的电路控制。

图2 系统数据通信框图

其中,单片机与FPGA通信基于并行总线的选择,提出了自定义并行总线。数据传输共设有40路IO线,其中8路总线用于控制数据传输,16路用于单片机向FPGA发送数据,另16路用于单片机从FPGA接收数据,采用双向16位传输方案,可以满足更大范围的数据传输要求,满足传输的高效率以及后期数据传输的便捷性、可靠性。具体总线设置如图3所示。该系统可实现单片机与FPGA的异步双向通信,实现上位数据的发送及下位数据的反馈。

图3 单片机与FPGA通信总线示意图

1.3 系统硬件选择

1.3.1 单片机芯片选择

C8051F040是高度集成的混合信号SoC级微控制器芯片,具有与8051单片机兼容的高速CIP-51微控制器内核,除了标准8051的数字外设部件外,片内还集成了数据采集与控制系统中常用的模拟部件及其它一些数字外设部件。

C8051F040单片机系统控制器的内核采用CIP-51微控制器,它与MCS-51指令集完全兼容,可以使用标准803x/805x汇编器和编译器进行软件开发。CIP-51内核具有标准8052的所有外设部件,包括5个16位的计数器/定时器、两个全双工UART串行接口、256字节内部RAM、128字节特殊功能寄存器(SFR)地址空间及8个8位宽的I/O端口。该内核采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高。对于CIP-51内核,70%的指令的执行时间为1或2个系统时钟周期,只有4条指令的执行时间大于4个系统时钟周期。CIP-51共有111条指令。CIP-51工作在最大系统时钟频率25MHz时,其峰值性能达到25MIPS。

1.3.2 FPGA 芯片选择

FPGA的选用选择Altera品牌,保证低成本应用,满足一定的容量,且芯片性能可以满足一般的逻辑设计要求,在满足性能要求的同时选择性价比较高的类型,Cyclone IV是一款低成本、低功耗的FPGA结构,所以选择Altera Cyclone IV系列的EP4CE75F23I7类型芯片,选择配置方式为JTAG,便于实现在线调试,实现程序的实时改进。

2 通信系统硬件电路设计

2.1 单片机外围通信电路及管脚设计

通信接口是通信系统的重要组成部分,是实现系统与外设及其他系统的通信的保证,单片机外围设置16个数据输出端口P5.0-P6.7、16个数据接收端口P3.0-P4.7以及8个通信控制总线端口P7.0-P7.7。

图4 单片机外围管脚设置

2.2 FPGA外围通信电路及管脚设计

FPGA外围借口设置与单片机相匹配,分别设置16个IO口P50-P67用于数据接收、16个IO口P30-P47用于数据发送以及8个通信控制总线IO口P70-P77。

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也连续向单片机发送多个数据,单片机接收完所有数据后进行校验,如果连续多次都校验失败,则向上位机报警,否则视为发送成功。

图5 FPGA外围管脚设置

3.2.1 单片机与FPGA数据传输实现

(1)单片机发送——FPGA接收数据

单片机将参数进行打包定义,通过控制总线通知FPGA开始准备接收数据,FPGA接到通知后反馈准备状态。得知FPGA处于接收状态,将一个16位数据发送到并行总线上,其中数据高四位作为参数号位,用来说明当前参数序号,便于FPGA判断接收。串口P5.0-P5.7用于发送数据的低8位,P6.0-P6.7用于发送数据高8位,在完成单次数据上传后通知FPGA开始接收,FPGA从总线上完成接收后进行处理读取当前参数号并完成参数暂存,然后向单片机反馈本次接收成功指令。当单片机接受到FPGA反馈后说明单次数据发送成功。单片机判断是否完成所有数据的发送,如若未完成则继续重复上一步骤发送,如若完成则发送校验和到FPGA并通知FPGA完成数据发送。当FPGA判断到接收到最后一个数据时,将接收数据进行校验和运算,然后与单片机端发送的校验和进行比较以判断本轮数据传输是否成功。

图6 数据发送流程图

成功后FPGA则向单片机反馈成功指令并完成接收数据的定义与幅值,如若校验和对比异常则说明数据传输异常,FPGA则向单片机反馈失败指令,则系统需要重新进行数据发送流程,如果多次失败系统将会停止数据传输,单片机便向上位机反馈报警。

(2)FPGA发送——单片机接收数据

与单片机发送数据相似,两者之间数据发送时机控制通过控制总线P7实现,数据传输总线负责16位数据,其中P3.0-P3.7为数据的低8位,P4.0-P4.7为数据高8位。传输流程与发送数据相似,均通过应答机制实现FPGA与单片机交流,保证传输的同步性与准确性。 FPGA将数据打包完成并上传至数据总线,其中数据低4位为参数号,高12位为数据值。然后通过将控制总线置1告诉单片机接收数据,单片机接收数据包并进行解析暂存,然后通过控制线通知FPGA已完成当前数据接收,可进行后续动作。FPGA判断数据是否全部发送完毕,如果未完成则重复上述操作继续发送,否则则向单片机发送数据校验和,单片机端接收校验和之后与通过已接收数据计算出的校验和进行比较,判断本次数据传输总流程是否准确完成。成功完成后单片机则向FPGA反馈成功指令,同时完成接收数据的存储,并向触摸屏反馈用于使用者对系统状态的监测。如若校验和对比异常则说明数据传输异常,单片机则向FPGA反馈失败指令,则系统需要重新进行数据发送流程,如果多次失败系统将会停止数据传输,单片机便向上位机反馈报警。

图7 单片机发送数据流程图

图8 FPGA接收数据流程图

3.3 硬件实现及测试

搭建FPGA-单片机板上系统,该硬件系统可实现FPGA与51单片机之间的数据通信过程。然后基于此硬件系统进行单片机-FPGA收发实验,对单片机及FPGA通信变量数据进行实时同步监测,实验结果如图9所示。首先进行单片机发送数据,FPGA接收数据实验,单片机共向FPGA发送4个参数数据,对比图9(a)与图9(b)可以看出,FPGA接收数据与单片机发送数据一致,完成单片机向FPGA发送数据过程。然后,进行FPGA发送数据,单片机接收数据实验,FPGA端共向单片机端发送4个数据, 对比图9(c)与图9(d)可以看出,单片机接收数据与FPGA端发送数据一致,完成FPGA向单片机发送数据过程。

图9 通信实验数据收发状态监测

4 总结

本文提出的基于FPGA与单片机的自定义总线通信系统可实现数据的稳定传输,单次可完成16位数据收发,具有较高的传输效率。采取双向应答机制进行指令反馈保证传输可靠性。数据校验采用校验和方式进行,校验方法简单便捷,且稳定性和准确性较好。该传输流程具有错误自检,自动重发,异常报警等功能,适用性广,可靠性强,在多控制器的嵌入式系统开发中具有较高的实用价值。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!