APP下载

基于FPGA的多串口控制器的设计与实现

2017-11-03胥飞燕郑华荣周宦银胡洁微曹剑锋

物联网技术 2017年10期
关键词:串口

胥飞燕++郑华荣++周宦银++胡洁微++曹剑锋

摘 要:针对工程应用中经常需要使用一个控制终端与多个设备通信的问题,文中设计了基于FPGA的多串口控制器。该控制器实现了一对四的多串口通信功能,为控制器中的每个串口都分配了一个FIFO,用以缓存收到的数据,并为每个设备的串口设置了优先级,在工作中控制器优先响应优先级别高的串口请求。文中详述了各功能模块的设计思路和方法,且各功能模块都通过了ISim仿真,验证了本设计的正确性。

关键词:FPGA;串口;逻辑控制;ISim仿真

中图分类号:TP39;TN957 文献标识码:A 文章编号:2095-1302(2017)10-00-02

0 引 言

海上浮动的专用监测系统除搭载专用探头外,还有温度传感器、GPS定位系统、北斗定位系统等设备。这些设备都需要与控制终端进行串口通信,以便响应控制终端的命令及回传监测数据,但在控制终端上为每个设备都分配一个串口是不合理的,因此为了提高系统的集成度,降低硬件成本,有必要设计一种一对多的串口通信控制器。

1 多串口控制器的结构

多串口控制器的结构原理如图1所示。其由逻辑控制模块和5个UARTFIFO模块构成,前者用于控制主串口(UARTFIFO_C)与其余4个从串口(UARTFIFO_i)模块的逻辑联接,UARTFIFO模块用于控制终端、搭载设备的数据收发。

2 UARTFIFO模块设计

UARTFIFO模块主要由UART串口模块和FIFO模块构成,如图2所示。UART串口模块包括波特率发生单元、发送单元和接收单元,FIFO模块具有16 B的先入先出缓存单元[1]。表1所列为UARTFIFO模块的引脚功能表。作为主从式通信系统,主串口需要处理4个从串口发送过来的数据,而这种情况下容易出现主串口正发送某个从串口数据时,另一个从串口也请求响应。为了不影响后续数据的发送,同时避免数据丢失,需要为每个UART的接收模块配置一个FIFO用于缓存UART接收模块接收到的数据[2]。每当UART接收模块接收完一帧数据后,rec_ready会输出一个正脉冲,rec_ready的信号作为FIFO的写使能信号。

3 逻辑控制模块设计

逻辑控制模块由发送控制单元和接收控制单元两部分构成,发送控制单元负责主串口(UARTFIFO_C)与某个从串口(UARTFIFO_i)通信的逻辑控制,接收单元负责某个从串口与主串口通信的逻辑控制。

3.1 发送控制单元

作为主从式系统,主串口(UARTFIFO_C)选择与某个从串口(UARTFIFO_i)通信,发送数据的命令格式为地址字节+命令字节。当UARTFIFO_C接收到一帧数据时,其引脚FULL1输出高电平,指示FIFO中有新数据,发送控制单元读取第一帧数据并译出地址后,根据该地址将UARTFIFO_C的数据发送到相应串口的TXDBUF(7∶0)端,并判断该从串口TXDOVER1是否为高电平,如果为高电平则使能TXDCMD1,启动从串口的发送模块。

3.2 接收控制单元

串行外设接收到控制端发送的命令后响应命令,按照预定格式返回串行数据,与该外设对应的UART串行数据输入端RXD接收串行数据,并对其进行处理,输出并行数据和标志位re_ready。当UARTFIFO_i接收完一帧数据时,其引脚FULL1输出高电平,指示FIFO中有新数据,接收控制单元寄存FULL1的信号,并查询UARTFIFO_C的TXDOVER1是否为高电平。如果为高电平则等待,如果为0则发出使能信号RDREQ1,读出UARTFIFO_i中FIFO缓存的数据并传给UARTFIFO_C的TXDBUF(7∶0)端,使能TXDCMD1,直到UARTFIFO_i中的EMPTY1为高电平停止。当有多个UARTFIFO_i同时向UARTFIFO_C请求发送数据时,逻辑控制模块寄存各串口FULL1的信号,并判断其优先级别,优先响应级别高的串口请求,之后再响应优先级别低的请求。

4 Isim仿真

图3所示为UART模块的ISim仿真结果。由仿真波形可知,串口RXD端接收到的串行数据从rec_buf(7∶0)输出的同时rec_ready输出一个正脉冲,当txd_buf(7∶0)中有数据需要发送时,txd_cmd给出一个正脉冲使能串口发送模块,数据从TXD端串行输出,数据发送完后txd_over输出高电平。

5 结 语

本设计的突出优点在于可以灵活定制串口的数量,满足多串口场合的需要,替代采用专用串口芯片的传统设计方法,降低多串口系统的复杂度,提高系统稳定性。

参考文献

[1]于海,樊晓娅.基于FPGA异步FIFO的研究与实现[J].微电子学与计算机,2007,24(3):210-213.

[2]殷安龙,张持健,陈林,等.基于FPGA的多串口通信设计与实现[J].电子设计工程,2006,14(17):45-47.

[3] Charles H.Roth.数字系统设计与VHDL(第2版)[M].北京:电子工业出版社,2008:156-157.

[4]唐文龍,田茂,吴志强,等.基于SoC FPGA异步通信接口的实现[J].物联网技术,2015,5(12):38-39.

[5]游小荣.一种串口三相电能采集设备的研制[J].物联网技术,2014,4(10):22-23.

[6]韩德红,张显才,李向东.基于FPGA的串口控制器设计与实现[J].空军预警学院学报,2008,22(2):113-116.

[7]司兆龙,张亚君.基于FPGA的多路数据采集系统设计[J].物联网技术,2015,5(1):45-47.

[8]张宏亮,周鹏.FPGA片内监测系统的设计[J].物联网技术,2017,7(2):80-83.endprint

猜你喜欢

串口
浅谈AB PLC串口跟RFID传感器的通讯应用
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
基于并行控制的FPGA多串口拓展实现