当前位置:首页 > 工业控制 > 电子设计自动化

摘要:在工业控制中如何提高一对多的串口通讯可靠性和系统的集成性成为研究热点。本文利用嵌入式技术,提出基于CPLD/FPGA的多串口扩展设计方案。实现并行口到多个全双工异步通讯口之间的转换,并根据嵌入式系统实时性的需要,在每个UART接收器中开辟了8个接收缓冲单元,实现高速嵌入式CPU与RS232通讯设备之间的速度匹配,同时,串行口波特率等参数可根据需要进行设置。通过实践证明,本文设计的基于CPLD/FPGA的多串口完全符合工业控制中一对多串口通讯的要求。

在工业控制中,设备的通讯与控制主要采用简洁高效的串口方式进行。工控机通过PCI扩展卡方式进行串口的扩展,或采用电路复杂的扩展芯片实现串口扩展。随着嵌入式技术发展,嵌入式系统的应用逐步代替了成本高昂的工业控制计算机。为了简化硬件电路的设计,降低系统成本,本文提出了一种基于CPLD/FPGA多串口扩展的方案,实现多个外设串口的扩展和管理,同时解决一对多的串口通讯可靠性问题,满足嵌入式系统串口扩展的需求。

1 系统结构

本设计以CPLD/FPGA芯片为核心,在芯片内部通过设计、编程实现并行总线接口到多个串行口的扩展。设计的多串口扩展包括并行总线接口、4路接收缓冲器、4路发送器、波特率发生器和UART接口。为实现高速嵌入式CPU与RS232通讯设备之间的速度匹配,充分利用嵌入式系统的实时性,在每个接收缓冲器中开辟了8个接收缓冲单元。在实际应用中,可根据嵌入式系统扩展的需要,灵活增减串口数量以及接收缓冲单元个数。在通讯过程,波特率发生器的时钟信号由外部有源晶振提供,选择合适的晶振频率即可获得高性能的数据传输。系统结构如图1所示。

2 功能模块设计

2.1 接收缓冲模块

2.1.1 接收缓冲模块构架

在设计过程中,为便于串口扩展功能的实现,将功能相似的部件进行了集成。本设计以4路UART接口扩展为例,接收缓冲部分包含了4个独立的接收缓冲器,其结构如图2所示。接收缓冲器共用clk时钟信号,并将其作为串行数据接收的波特率;每个接收缓冲器均有单独的rxd、bf、cs引脚,其功能分别为:串行数据输入、接收缓冲器储存状态、接收缓冲器片选。各接收缓冲器的片选端分别与2-4译码器的输出脚相连。译码器的输入端构成了4路接收缓冲器选择的地址线,分别对应a3、a4脚;结构图中数据总线d0~d7、读缓冲端rd、缓冲储存状态清‘0’端clr和缓冲单元地址线a0~a2为共用信号端口,分别与4个接收缓冲器相连。

2.1.2 接收缓冲器内部结构

接收缓冲器内部由RXD接收器、地址及写控制器和双端口RAM构成,如图3所示。

1)RXD接收器

RXD接收器的作用是接收串行设备发送的数据。clk脚引入波特率时钟后,程序首先检测串行数据输入脚rxd的电平,当检测到rxd脚电平为‘0’即串行数据的开始信号后,接收器开始接收数据。连续接收8位数据后,接收到的数据将被送至d0~d7端,同时reg_flag端产生一个负脉冲信号,触发写控制器的ad_cnt端,写控制器的地址线加‘1’并同时产生双端口RAM的写操作信号,完成接收数据的存储。

接收时,clk时钟为波特率的16倍,clk信号8分频后即串行数据位的周期的中间位置检测rxd脚电平状态,以保证串行数据准确地接收,累计计数至16分频时完成一位数据的接收。连续接收8位数据后,并判断第9位状态为‘1’时(停止位),完成一个字节的接收。RXD接收器的程序如下:

2)写控制器

写控制器的ad_cnt端接收到RXD接收器的reg_flag负脉冲信号后,对地址寄存器进行加‘1’操作,并将新的地址状态送至双端口RAM的地址总线a0~a2。同时,reg_flag负脉冲触发写控制器对clk时钟计数,向双端口RAM产生cs片选信号和wr写控制信号,将RXD接收器d0~d7的数据写入双端口RAM地址线所对应的存储单元中。

3)双端口RAM

通过一系列时序信号的组合,RXD接收器接收的数据将暂存到双端口RAM中。本设计中,双端口RAM直接调用的Quartus8.0存储器子库中的LPM_RAM_DP元件。

2.2 发送模块

发送部分由4路并行的TXD发送器、2-4译码器和4输入或门组成,如图4所示。4路TXD发送器共用时钟信号clk、数据端d0~d7、发送启动端load;每个发送器均有单独sf、cs、txd引脚,其功能分别为:发送状态标志、TXD发送器选择、串行数据输出。TXD发送器的cs端分别与2-4译码器的输出脚相连,译码器的输入端a0~a1即构成发送部分的地址线;发送器的sf端经过4输入或门输出,构成发送部分的发送状态标志。

在通讯过程中,load脚接收到CPU的控制信号后,根据地址线a0~a1的组合选择相应的TXD发送器,将数据总线d0~d7上的数据通过txd脚逐位输出,通过串行总线发送至接收设备。一个字节发送完成后,发送状态端sf置‘0’,CPU可检测sf端的电平状态,以判断数据是否发送完成,也可以利用sf引脚的状态触发CPU中断,完成多个数据的连续发送。发送器的程序与接收器相匹配,在此不再阐述。

2.3 波特率发生器

UART的接收和发送按照相同的波特率进行数据传送。波特率发生器分别给接收部分和发送部分提供时钟信号,并且接收的波特率时钟是发送的16倍,利用16倍波特率时钟对串行数据进行高速采样,以确保接收数据的准确性。为实现与不同传输速率的串行设备通信,波特率发生器对系统时钟进行不同系数的分频,根据CPU控制线的组合可分别产生4800bit/s、9600bit/s、19200bit/s、38400bit/s等多种波特率。

3 仿真与实现
本串口扩展器通过VHDL编程,在Ouartus8.0下进行了仿真。由于仿真信号较多,仅对关键部件的信号进行分析。图5给出了RXD接收器仿真波形。在测试过程中,首先确定通信的波特率为19 200 bit/s,即RXD接收器CLK时钟为波特率的16倍,发送设备通过串行总线向RXD接收器发送F1H,当RXD接收器完成数据的接收后,立即将数据送至数据总线d0~d7,仿真结果如图5所示。

给写控制器的ad_cnt端输入地址计数脉冲,地址线a0~a2进行加‘1’操作,片选线cs和写操作端wr根据CLK时钟信号相应输出低电平,完成接收数据的写存储。连续存储8个字节后,缓冲器状态标志bf置‘1’。将clr端输入低电平,bf标志清‘0’,同时地址线a0~a2回到“000”状态。写控制器的仿真结果如图6所示。

给TXD发送器的数据总线d0~d7输入AAH,通过串行总线发送至接收设备。load端置‘0’,启动发送。发送完成后,sf标志清‘0’。检查接收设备的接收值,与发送数据完全匹配。TXD发送器的波形仿真结果如图7所示。

4 结束语

本文详细介绍了CPLD/FPGA多串口设计的内部构成,对各个模块的工作原理和关键信号进行了分析,给出了EDA软件仿真形波和测试结果。通过对FPGA/CPLD多串口的设计与实现,为嵌入式系统中串口的扩展提供了一定的帮助。

作者:粟慧龙 肖辽亮 湖南铁道职业技术学院 来源:电子设计工程

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器

当我们提到成本优化型FPGA,往往与简化逻辑资源、有限I/O和较低制造工艺联系在一起。诚然,在成本受限的系统设计中,对于价格、功耗和尺寸的要求更为敏感;但随着一系列创新应用的发展、随着边缘AI的深化,成本优化型FPGA也...

关键字: AMD FPGA Spartan 边缘计算

全球领先的高性能现场可编程门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)提供商Achronix Semiconductor公司宣布,该公司参加了由私募股权和风险投资公司Baird Capital举...

关键字: FPGA 智能汽车 eFPGA

全新 FPGA 能为嵌入式视觉、医疗、工业互联、机器人与视频应用提供高数量 I/O、功率效率以及卓越的安全功能

关键字: FPGA 嵌入式视觉 机器人

Altera致力于为客户提供端到端的FPGA、易于使用的AI、软件和弹性供应链。

关键字: FPGA AI

在半导体领域,大部分对于AI的关注都集中在GPU或专用AI加速器芯片(如NPU和TPU)上。但事实证明,有相当多的组件可以直接影响甚至运行AI工作负载。FPGA就是其中之一。

关键字: FPGA AI 半导体

半导体产品老化是一个自然现象,在电子应用中,基于环境、自然等因素,半导体在经过一段时间连续工作之后,其功能会逐渐丧失,这被称为功能失效。半导体功能失效主要包括:腐蚀、载流子注入、电迁移等。其中,电迁移引发的失效机理最为突...

关键字: 半导体 电迁移 FPGA
关闭
关闭