基于FPGA的RS232接口设计与实现

中国新通信 / 2018年08月28日 12:03

新闻

基于FPGA的RS232异步串行口IP核设计

丁超

【摘要】 RS232是一种常用的异步的串行通讯接口,本文介绍了基于FPGA的RS232接口设计与实现过程,利用FPGA完成全双工串口通信,波特率可任意设置,接口挂载数量多,并能实现多通道同步处理,设计方式灵活,通用性较强。

【关键字】 FPGA RS232接口 串口通信 帧数据解析

一、前言

RS232作为低速短距离通信的串行接口,常用于配合上位机通信。传统单片机实现的RS232串口通信,波特率设置固定,接口挂载数量有限,接口速度较慢等诸多缺点,并且单片机的并行操作,难以实现RS232的全双工功能。为此,本文介绍基于FPGA的RS232接口设计与实现,弥补了单片机在RS232通信中的不足。

二、接口电平转换的设计

使用9针RS232通信接口实际使用时,利用TXD(发送数据)、RXD (接收数据)、GND(地线)三线便能实现串口通信。RS232规定的逻辑电平与一般处理器的逻辑电平不同,在TXD、RXD中,邏辑1电压为-3~-15V,逻辑0电压为+3~+15V。因此要想与PC的232接口通信,需要专门的电平转换芯片将RS232电平转换为TTL电平。我们使用专门的MAX232电频转换芯片可实现电平的转换,保证处理机与PC通信的正常进行。接口传输线缆少,电路设计相对简单。如图2-1所示:

三、逻辑设计

利用FPGA设计RS232接口通信,设计灵活性较大。在FPGA中,接口的通信可同时进行,互不干扰。因此可实现全双工的串口通信。数据的发送与接收可使用独自的波特率,并且波特率可任意设置,保证数据的正确接收与发送。

例如在与PC进行数据交互时,我们规定接收来自PC的数据波特率为115200bps,发送速率为9600bps,数据收发同时进行。在单片机中指令顺利执行,速度也相对较慢,要实现这样一组RS232接口通信较为困难。在FPGA设计中,接口的数据收发可同步进行,RXD,TXD映射到底层的收、发子模块,子模块的操作只受敏感信号主时钟CLK与复位信号的影响,实现收、发同步的同时,每个子模块中波特率可设置为任意波特率,波特率由FPGA描述各自模块内部的计数器,计数到标志位产生波特率时钟,因此可独立将接收波特率设置为115200bps,将发送波特率设置为9600bps。FPGA实现数据收发的逻辑描述如图3-1所示:

当FPGA的RX引脚检测到外部信号发送时,RX电平拉低,进入起始位,FPGA内部接收子模块中,已设置好接收波特率设置,在移位操作后,将8位数据信息解析出来。由于数据流要进行发送处理,并且接收速度大于发送速度,这便会出现数据丢失的可能。因此在接收子模块中将数据缓存如FIFO中作为数据保留,待需要发送时,将数据发送至发送子模块的缓存区域(FIFO),准备好发送状态,数据发送时,由起始位、数据位8位、校验位(可删)、停止位重组 发送至PC端。设计中,接收,发送端保留自身的速度特性,互不影响,实现RS232的全双工通信。FIFO作为数据缓存使用,防止数据流失的可能,确保了数据流收发的正确性。

总结:基于FPGA的RS232接口设计,尽管在成本上高与单片机,但在功能需求较高的接口通信设计中,仍具它独特优势。较之单片机功能固定、资源有限、串行数据处理的缺点,利用FPGA实现RS232接口通信,设计更为灵活,可挂载多组RS232接口实现并行通信,波特率可任意设置,可实现收、发同步进行,内部FIFO数据缓存避免了数据流失。基于FPGA的RS232接口设计具有良好的应用价值。

参 考 文 献

[1]赵志军, 王建英. RS232/CAN智能协议转换器及其通信网络[J]. 中国铁道科学, 2007, 28(3):134-139.

[2]吴兴中, 欧青立. 一种PC与单片机多机RS232串口通信设计[J]. 国外电子测量技术, 2009, 28(1):74-76.

[3]张雄飞, 方方. Windows平台下数据采集串口通讯的实现[J]. 计算机测量与控制, 2001, 9(3):66-68.

[4]戴鹏, 刘剑, 符晓,等. 基于TMS320F2812与LabVIEW的串口通信[J]. 计算机工程, 2009, 35(4):94-96.

[5]陈廷侠, 赵红枝. MAX232在串口通信中的作用分析与测试[J]. 新乡学院学报, 2009, 26(4):19-21.

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。