当前位置:首页 > 工业控制 > 电子设计自动化
[导读] 当前应用广泛的串行通信接口标准主要有RS232,RS422和RS485,其中RS232串行通信方式采用单端输入输出,传输距离短、通信速率低、抗干扰性能差;RS485与RS422均采用差分串行输入输出,但RS485只有一对双绞线,只能工作

 当前应用广泛的串行通信接口标准主要有RS232,RS422和RS485,其中RS232串行通信方式采用单端输入输出,传输距离短、通信速率低、抗干扰性能差;RS485与RS422均采用差分串行输入输出,但RS485只有一对双绞线,只能工作于半双工模式;RS422采用全双工通信模式,通过两对双绞线可实现双向收发互不影响,且传输速率可达10 Mbit·s-1,传输距离可达2 000 m。以RS422通信协议为代表的串行通信在数据通信吞吐量较小的微处理电路中应用更加简便、灵活,尤其在远距离信息传输中更发挥着不可替代的作用。

1 硬件电路设计

设计主要使用Altera公司的EP3C80F78017和ADI公司的ADM2687EBRIZ。RX+、RX-为差分信号输入端口,差分信号经U2解差分后传输到U1中,通过其中数据接收模块的处理,传送并行数据给CPU。CPU发送的并行数据,经U1中的数据发送模块处理输出待处理的TTL信号,通过U2差分处理后输出差分信号到总线上,TX+、TX-为差分信号输出端口。U1同时接收CPU输出的控制信号,以完成对通信参数的调整。其设计原理如图1所示。

2 软件程序设计

2.1 FPGA整体模块

clk为全局时钟输入端,rst_n为全局复位端,syn_awe为写使能命令端,syn_are为读使能命令端,syn_aoe为输出使能命令端,EA为地址总线数据端,ED为数据总线数据端,rxd_xi为串行数据输入端,txd_xo为串行数据输出端。

divider为时钟产生模块,主要产生通信波特率采样时钟;txd为UART数据发送模块,进行数据并串转换;rxd为UART数据接收模块,进行数据串并转换;uart_wr_ctl为总线解析模块,主要负责解析CPU总线命令,控制其他模块的工作状态;uart422_state_reg为UART工作状态模块,综合rxd和txd的工作状态并输出;uart_rdout_sel为数据输出选择模块,其主要控制总工作状态数据与UART接收数据的选择输出。

2.2 时钟产生模块

模块主要为UART数据收发模块提供了工作时钟,根据时钟分频系数对输入的全局时钟进行计数处理,输出UART通信波特率16倍的分频时钟频率。将时钟分频系数加1,除去全局时钟频率,则等于分频时钟频率。

clk为全局时钟输入端,rst_n为模块复位端,enable为模块使能端,factor为时钟分频系数输入端,clk_out为分频时钟输出端。本模块采用计数分频的设计思想,当计数值大于factor值1/2时,clk_out输出为高电平,反之则输出低电平。

2.3 UART数据发送模块

UART数据发送模块设计简单,主要根据输入的控制信号,对输入的并行数据进行并串转换,并以控制信号要求的数据帧格式和波特率采用LSB模式发送出去。模块在接收到有效的8位并行数据后,根据控制信号命令,按串行数据帧格式,起始增加1位起始位0,然后根据控制信号命令决定是否添加奇偶校验位,再在尾部增加1位或2位停止位1,最后组成通信双方约定的数据帧格式发送出去。

clk为模块工作时钟输入端,rst_n为模块复位端,clk_en为时钟使能端,enable为模块使能端;ctrl_i为控制信号输入端。其中,ctrl_i[3]控制使能发送奇偶校验,ctrl_i[2]控制奇偶校验选择,ctrl_i[1]控制停止位的个数,ctrl_i[0]控制数据启动发送;data_i为待发送数据输入端,frame_bits_i为帧数据位数输入端,txd_xo为数据发送端,st at_o为发送状态输出端。其中,stat_o[1]为发送器完成发送标记位,star_o[0]为发送缓冲器数据载入完成标记位。UART数据发送模块状态机,如图5所示。

2.4 UART数据接收模块

由于外部使用环境的影响,RX输入线上可能产生毛刺。为减小这一影响,该模块设计时采用“多数表决法”,具体处理方法是在一个数据位中间取3个点的采样电平值,若少于2个点为电平“1”,则将该数据位判为电平“0”,否则判为电平“1”。

clk为模块工作时钟输入端,rst_n为模块复位端,clk_en为时钟使能端,enable为模块使能端,rxd_xi为UART数据接收端,ctrl_i为控制信号输入端。其中,ctrl_i[2]控制使能接收奇偶校验,ctrl_i[1]控制奇偶校验选择,ctrl_i[0]控制读UART数据缓冲器使能,frame_bits_i为帧数据位数输入端,data_o为已接收数据输出端,stat_o为接收状态输出端。其中,stat_o[3]为帧错误标记位,stat_o[2]为接收缓冲器数据溢出标记位,stat_o[1]为校验错误标记位,stat_o[0]为数据完成接收标记位。UART数据接收模块状态机,如图7所示。

2.5 总线解析模块

本模块主要根据地址总线数据和数据总线数据,以及输出使能和读写使能命令信号,产生对其他模块的控制信号和片选信号,即解析了总线命令。

clk为全局时钟输入端,rst_n为模块复位端,syn_awe为写使能命令端,syn_are为读使能命令端,syn_aoe为输出使能命令端,EA为地址总线数据端,ED为数据总线数据端,divider_factor为输出时钟产生模块时钟分频系数,divider_enable为输出时钟产生模块使能命令信号,rxd_clk_en为输出UART数据接收模块时钟使能命令信号,rxd_ctrl_i为输出UART数据接收模块控制命令信号,rxd_frame_bits_i为输出UART数据接收模块帧数据位数,rxd_enable为输出UART数据接收模块使能命令信号;txd_clk_en为输出UART数据发送模块时钟使能命令信号,txd_data_i为输出UART数据发送模块待发送数据,txd_enable为输出UART数据发送模块使能命令信号,txd_ctrl_i为输出UART数据发送模块控制命令信号,txd_frame_bits_i为输出UART数据发送模块帧数据位数;data_rd_cs为读UART接收数据命令选择端,uart_state_reg_cs为读总工作状态数据命令选择端。

2.6 UART工作状态模块

模块主要是将输入的UART数据接收模块状态数据与UART数据发送模块状态数据合并为总工作状态数据,并进行输出。

rx_stat_o为UART数据接收模块状态数据的输入端,tx_stat_o为UART数据发送模块状态数据的输入端,uart422_state_out为总工作状态数据输出端。

2.7 数据输出选择模块

模块主要根据输入的读数据命令选择信号,对输入的总工作状态数据和UART接收数据,进行选择输出。

clk为全局时钟输入端,uart_sta_reg_out为总工作状态数据输入端,data_out为UART接收数据输入端,data_rd_cs为读UART接收数据命令选择端,uarrt_state_reg_cs为读总工作状态数据命令选择端,EDO_422为所选数据输出端。

3 仿真结果

在Modelsim_SE10.1b的开发环境下,对FPGA源代码进行逻辑综合仿真,其仿真结果如图11~图18所示。仿真结果表明,设计实现了预期的各种逻辑功能,收发数据准确无误。图19和图20分别为CPU发送和接收的数据,图中所示数据与FPGA仿真结果一致。

4 结束语

设计灵活简单,并可动态调整通信波特率和数据位及停止位长度,还可选择是否使能数据奇偶校验功能,较好地实现了RS422串行总线之间的数据传输,从而大幅增强了设计的可靠性和通用性。后期测试使用证明了,该接口电路设计具有较高的稳定性和实用性,并可用于RS422通信的诸多场合。

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

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
关闭
关闭