采用FPGA与USB芯片实现智能仪器远程控制系统的设计与仿真分析

网友投稿 297 2022-11-18

采用FPGA与USB芯片实现智能仪器远程控制系统的设计与仿真分析

1 控制系统及接口简介

1. 1 系统功能

在整个系统中, 上位机可以实时对系统进行监控,并下发相应的命令。智能仪器传出的数据通过RS 232接口传送到FPGA, FPGA 根据上位机下发的命令对这些数据进行判决、处理, 然后经过USB 接口上传给上位机, 再由上位机对FPGA 处理过的数据进行显示、存储等操作。

1. 2 U SB 接口芯片简介

1. 3 RS 232 接口简介

RS232C 标准( 协议) 的全称是EIARS232C 标准。EIARS232C 是用正负电压来表示逻辑状态的,与T TL 以高低电平表示逻辑状态的规定不同。因此,为了能够与计算机接口或终端的T T L 器件连接, 必须使EIARS232C 与T TL 电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件, 也可用集成电路芯片。该设计用的是MAX3232 芯片。

RS 232 的数据传输格式如图1 所示。

图1 RS 232 标准的数据传输格式

RS 232 传输格式包含起始位( 1 b) 、有效数据位( 8 b) 、奇偶校验位( 0~ 2 b) 、停止位( 1 b) 。传输线在空闲时为高电平, 因此起始位为低电平, 停止位为高电平。

奇偶校验位可设置为奇校验、偶校验或不校验, 有效数据位是从低位开始传送。

2 FPGA 设计

2. 1 USB 接口时序

在Slav e FIFO 方式下, 外部逻辑与FX2 的连接信号如图2 所示。

图2 FX2 Slave 模式下接口管脚连接图

2. 2 FPGA 程序设计

FPGA 设计是整个系统的核心部分, 由VHDL 语言实现。FPGA 实现了USB 与RS 232 接口的转换、数据的处理、命令的传输等功能。有了上面的接口时序,便可以进行FPGA 设计。FPGA 部分的总体设计如图3所示。模块介绍:

USB 与FPGA 接口模块: U SB 与FPGA 之间的接口转换模块, 主要功能为将USB 接口传过来的信息缓存到FPGA 内部FIFO, 并将由数据处理模块处理过的数据传给U SB 芯片。即产生控制信号读/ 写U SB 芯片内部FIFO。可以由读/ 写FIFO 两个有限状态机实现。

图3 FPGA 总体设计框图

RS 232 数据缓存模块: 用来缓存由智能仪器发出的数据。是由FPGA IP 核生成的先入先出存储器FIFO。容量为8 b*512 depth, 占用1 个块RAM资源。

RS 232 与FPGA 接口模块: RS 232 与FPGA 之间的接口转换模块。主要功能为进行串/ 并和并/ 串转换。

将USB 数据缓存模块中缓存的内容以合适的速率通过串口发给智能仪器, 并将智能仪器发出的数据缓存到RS 232 数据缓存模块中。此模块也是由两个状态机实现。串口通信必须要设定波特率, 这里采用的波特率为9 600 Kb/ s, 采用的时钟为50 MHz, 相当于传送1 位数据需要约5 028 个时钟周期, 这里采用减法计数器来控制, 即计数器计到5 028 个时钟周期后, 就开始传输下一位数据。

数据处理模块: 主要功能为根据上位机的指令对RS 232 数据缓存中的数据做出相应的处理。处理后再向上位机传。主要的处理方式有定时取数、平滑处理等。实现方式由状态机等实现。FPGA 顶层模块: 主要负责各模块间数据流的流向。以及与外部芯片相连的输入输出信号的定义。

系统在工作时, 在采集数据上传上位机时, 数据通道为: 智能仪器发送的数据通过RS 232接口模块存在RS232 数据缓存模块中缓存。当缓存到一定的数据量后,再通过数据处理模块连续的读取FIFO 中的数据并根据上位机发送的命令进行相应的数据处理, 然后将处理的数据通过USB 与FPGA 接口模块传给USB 接口。在上位机下发控制命令时, 数据通道为: 上位机发送的命令通过USB 口传给FPGA 的RS 232 与FPGA 接口模块, 此模块判断是数据处理指令还是控制仪器指令。如果是数据处理指令, 则传向数据处理模块让其按要求进行数据处理。如果是控制仪器指令, 则将其存入USB 数据缓存模块中, 再由RS 232 与FPGA 接口模块读取, 转成RS2322 格式后传出。由于RS 232 接口速度比USB 接口慢, 用FPGA 内部的异步时钟FIFO 解决速率匹配问题。

将通过RS 232传过来的数据缓存在FIFO 中, 然后存到一定数据量后再全部连续的取出, 如此往复, 从而实现数据的连续采集及上位机的实时显示。将通过USB 传过来的数据放在另一个FIFO 中缓存 , 让FPGA 按照RS232 的速率进行读取。这样可以防止RS 232 的速度跟不上USB 的速度而产生的数据丢失。

FPGA 采用的系统时钟频率为50 MHz, 仿真工具为Mo delsim SE 6. 5a, 仿真用数据为连续的8 b 数据。

仿真结果如图4 所示。

图4 FPGA 读USB 内部FIFO 仿真图

图5 为RS 232 与FPGA 接口部分仿真结果。可以看出, 由RS 232 接收串行数据RXD 已经转换为并行数据din。程序中是在一个有效字节结束后将其存入FIFO 中, 由图可以验证。图6 顶层模块仿真图, 为了验证由FPGA 发出的数据能正确的接受到, 先由FPGA 内部发数据, 然后通过RS 232 的T XD 端口发出,让RXD 与TXD 相连再接收, 可以看出发出的数据可以被正确的接收回来并传向U SB 接口, 说明时序正确。

同理可以验证U SB 端的收发时序。

图5 RS 232 接收端仿真图

图6 顶层模块仿真图

4 结 语

本文采用FPGA 实现了USB 与RS 232 间的接口转换及数据处理的功能。设计中先入先出存储器的运用解决了数据的缓存的和速率匹配问题, 有限状态机的运用使得程序设计更加清晰可靠。该设计将复杂的信号运算集中在FPGA 中完成, 利用FPGA 独特的并行处理能力,减小上位机工作量的同时, 提高了系统运行速度。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Swin_Transformer源码解读
下一篇:信息安全管理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~