一种新型的FPGA实现RS422串口通信方法

一种新型的FPGA实现RS422串口通信方法
步菲烟
刘杰;臧炜;梁晓鹏;李军武
【摘 要】在FPGA实现RS422串口通信的常用方法中经常遇到诸多问题,如FIFO深度读取不正确、FIFO写数据端口与读数据端口时序竞争、多个模块间信号延时导致FPGA亚稳态等问题,因此设计了一种新型的RS422串口通信实现方法;该方法通过利用寄存器数组作为循环缓存代替FIFO,利用计数器代替传统的波特率产生模块,把常用方法中的多个模块整合成一个模块,只采用一个主时钟,所有寄存器的时钟输入端共享一个时钟,对FPGA逻辑与时序进行了有效约束,避免了FPGA中亚稳态产生;试验结果表明该方法实现的RS422串口通信高速、可靠、稳定,并且利用FPGA实现RS422串口通信,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统的可靠性和稳定性.%The common method of RS422 serial port communication realized by FPGA often encounter many problems,such as FIFO depth is incorrect,the timing of writing FIFO data port and reading FIFO data port are compete,and signal delay between multiple modules leads to FPGA metastable state,so a new method of RS422 serial port communication is proposed.This method replaces the traditional FIFO by using r
egister array as a cyclic queue,uses the counter instead of the baud rate generation module,integrate multiple modules into one module,only one master clock,all registers share one clock with the clock input,and constraints FPGA logic and timing to avoid the FPGA metastable state.The experimental results show that the method is fast,reliable and stable.It can make the whole system more flexible and compact,reduce the whole circuit volume and improve the reliability and stability of the system.
利益相关者理论
【期刊名称】《计算机测量与控制》
【年(卷),期】2017(025)003
【总页数】4页(P191-194)
【关键词】RS422;FPGA;DSP;Verilog HDL
【作 者】刘杰;臧炜;梁晓鹏;李军武
【作者单位】贵州航天凯山石油仪器有限公司,贵阳550000;中国石油渤海装备公司第一机
械厂,河北青县062650;长庆油田第六采油厂,陕西榆林718600;长庆油田第七采油厂,甘肃环县745700
【正文语种】中 文
【中图分类】TP3
目前,嵌入式电子系统设计多采用DSP+FPGA架构,因为其兼顾了DSP和FPGA的优点。DSP的优点是能够实现复杂的算法结构,运算速度高、寻址方式灵活等,适合于运算能力和存储容量有较高要求的应用场合[1]。FPGA的优点是基于可编程逻辑器件进行数字逻辑设计,性能稳定、易于维护、性价比高、产品体积小、信号间干扰小、研制周期短等,并发处理能力强,可以作为DSP的各种外围电路的控制器。因此,采用DSP和FPGA数字信号处理系统可以把两者的优点结合起来,兼顾速度和灵活性,优势互补,符合当前软硬件融合协调工作的趋势。
RS422 串口通信在航空航天及工业控制领域有着广泛的应用,其特点是点对点通信、传输距离长、抗干扰能力强、传输速率高等方面。利用FPGA实现RS422串口通信,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统的可靠性和稳定性。
本文首先介绍了一种FPGA实现RS422串口通信的常用方法,然后设计并实现了一种改进方法,在改进方法中采用寄存器数组作为循环缓存代替FIFO,利用计数器代替波特率产生模块,把常用方法中的四个模块进行整合,采用同步时钟代替异步时钟,对FPGA逻辑与时序进行了有效约束,避免了FPGA中亚稳态产生,提高了RS422串口通信的可靠性、稳定性。
RS422串口通信的帧格式如图1所示。
一帧数据包括起始位、数据位、校验位和停止位。线路空闲时,传输线路保持高电平。当发送数据时,发送节点要先发一个低电平的起始位,表示一帧数据的开始,然后发送有效数据位,通常为8个比特,然后发送奇偶校验位,最后发送停止位,停止位为高电平,表示一帧数据发送结束。
串口通信结构框图如图2所示。
DSP与FPGA之间的通信方式采用DSP的EMIF方式,即地址总线、数据总线和控制总线。FPGA内部实现RS422通信功能,主要包括接收模块、发送模块、波特率产生模块、DSP
接口控制模块等4个部分。RS422串口通信外设一般是指RS422收发芯片,如MAX3087,完成TLL电平和RS422差分电平之间的转换,通常与FPGA相连时要经过数字隔离器,进行地线隔离。
水月料理
光通维持率串口接收模块的功能为:FPGA首先检测数据的起始位,然后获得有效数据位的信息,并且对有效数据位进行奇偶校验后,进行串/并转换,存入串口接收FIFO中,等待DSP进行查询读取,当DSP读串口接收FIFO地址时,FPGA把串口接收FIFO中的数据放到数据总线上。
串口发送模块的功能为:首先DSP通过EMIF接口向FPGA的串口发送FIFO写数据,FPGA把数据存入串口发送FIFO中,进行并/串转换,将串行数据从输出端口按照约定的波特率输出。
波特率产生模块的功能:一般通过FPGA内部的PLL锁相环以及分频模块,获得串口发送模块波特率时钟驱动串口发送模块,获得串口接收模块16倍频波特率时钟驱动串口接收模块。
DSP接口控制模块具体功能为:根据DSP接口的读信号、写信号、片选信号以及地址信号产生相应的接收FIFO读信号、发送FIFO写信号、以及读取接收FIFO深度等功能。
在常用方法中,数据缓存操作通常采用FPGA生产商免费提供的FIFO软核,是一种采用环形存储结构的先进先出存储器[2]。FIFO结构如图3所示。
图3中,FIFO的存储介质为一个双端口RAM,可以同时进行读写操作。左侧为一个写时钟域,由写地址逻辑产生写控制信号和写地址,可以把数据写入RAM;右侧为一个读时钟域,由读地址逻辑产生读控制信号和读地址,可以读出RAM中的数据。另外,由空/满标志位产生逻辑对读写地址相互比较产生空、满标志位以及动态刷新FIFO的深度,该模块需要和读时钟域、写时钟域进行交互,存在跨时钟域的问题。多肽的固相合成
综上所述,常用方法是基于FPGA内部FIFO建立串口通信模块,在工程应用中,经常遇到诸多问题,如FIFO深度读取不正确、FIFO写数据端口与读数据端口时序竞争、多个模块间信号延时导致FPGA亚稳态等问题。究其原因是由于FIFO软核由厂家封装后,对用户开发是一个“黑盒子”,其内部设计无法被用户优化[3]。因此在改进方法中,设计循环缓存代替了FIFO,利用计数器代替了波特率产生模块,可以把串口发送模块整合成一个模块,把串
口接收模块整合成一个模块,并且两个模块只采用一个主时钟,采用同步时序电路设计的FPGA,所有寄存器的时钟输入端共享一个时钟,可以有效地消除亚稳态。
定义一个寄存器数组[4]:reg[7:0] data_HC[511:0],数据宽度为8位,长度为512。
定义一个读指针计数器:reg[8:0] REcount = 9’h000,计数范围为[0~511]。
定义一个写指针计数器:reg[8:0] WEcount = 9’h000,计数范围为[0~511]。
如图4所示,采用一个主时钟对循环缓存data_HC进行读、写操作,当向循环缓存data_HC写入数据后,写指针WEcount加1;当从循环缓存data_HC读出数据后,读指针REcount加1。当读、写指针递增到511后,再加1则自动为0,依次循环。循环缓存还需要建立3个关键的变量。
循环缓存的深度:wire [8:0] cnt;
循环缓存的满标志:wire FULL;
循环缓存的空标志:wire EMPTY;
深度cnt即循环缓存data_HC中数据的个数,利用写指针WEcount与读指针Recount比较,当WEcount >= Recount时,cnt = WEcount -Recount。当WEcount < Recount时,cnt = WEcount +512 -Recount。利用逻辑电路表达式为:
assign cnt = (WEcount >= Recount)?( WEcount -Recount):( WEcount +512 -Recount)。

本文发布于:2024-09-23 05:22:38,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/577297.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模块   串口   数据   时钟   发送   进行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议