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

上传人:lis****210 文档编号:215946378 上传时间:2023-06-04 格式:DOCX 页数:8 大小:17.08KB
收藏 版权申诉 举报 下载
一种新型的FPGA实现RS422串口通信方法_第1页
第1页 / 共8页
一种新型的FPGA实现RS422串口通信方法_第2页
第2页 / 共8页
一种新型的FPGA实现RS422串口通信方法_第3页
第3页 / 共8页
资源描述:

《一种新型的FPGA实现RS422串口通信方法》由会员分享,可在线阅读,更多相关《一种新型的FPGA实现RS422串口通信方法(8页珍藏版)》请在装配图网上搜索。

1、一种新型的FPGA实现RS422串口通信方法刘杰;臧炜;梁晓鹏;李军武【摘要】在FPGA实现RS422串口通信的常用方法中经常遇到诸多问题,如FIFO 深度读取不正确、FIFO写数据端口与读数据端口时序竞争、多个模块间信号延时 导致FPGA亚稳态等问题,因此设计了一种新型的RS422串口通信实现方法;该方 法通过利用寄存器数组作为循环缓存代替FIFO,利用计数器代替传统的波特率产生 模块,把常用方法中的多个模块整合成一个模块,只采用一个主时钟,所有寄存器的时 钟输入端共享一个时钟,对FPGA逻辑与时序进行了有效约束,避免了 FPGA中亚稳 态产生;试验结果表明该方法实现的RS422串口通信高速

2、、可靠、稳定,并且利用 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 m

3、ultiple 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 register array as a cyclic queue,uses the counter instead of the baud rate generation module,integrate multiple modules into one module,onl

4、y 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 vol

5、ume 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

6、+FPGA架构,因为其兼顾了 DSP和FPGA的优点。DSP的优点是能够实现复杂的算法结构,运算速度高、寻址方式 灵活等,适合于运算能力和存储容量有较高要求的应用场合1。FPGA的优点是 基于可编程逻辑器件进行数字逻辑设计,性能稳定、易于维护、性价比高、产品体 积小、信号间干扰小、研制周期短等,并发处理能力强,可以作为DSP的各种外 围电路的控制器。因此,采用DSP和FPGA数字信号处理系统可以把两者的优点 结合起来,兼顾速度和灵活性,优势互补,符合当前软硬件融合协调工作的趋势。RS422 串口通信在航空航天及工业控制领域有着广泛的应用,其特点是点对点通 信、传输距离长、抗干扰能力强、传输速率

7、高等方面。利用FPGA实现RS422串 口通信,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统的可靠性 和稳定性。本文首先介绍了一种FPGA实现RS422串口通信的常用方法,然后设计并实现了 种改进方法,在改进方法中采用寄存器数组作为循环缓存代替FIFO,利用计数 器代替波特率产生模块,把常用方法中的四个模块进行整合,采用同步时钟代替异 步时钟,对FPGA逻辑与时序进行了有效约束,避免了 FPGA中亚稳态产生,提 高了 RS422 串口通信的可靠性、稳定性。RS422 串口通信的帧格式如图1 所示。一帧数据包括起始位、数据位、校验位和停止位。线路空闲时,传输线路保持高电 平。当发送数

8、据时,发送节点要先发一个低电平的起始位,表示一帧数据的开始, 然后发送有效数据位,通常为 8 个比特,然后发送奇偶校验位,最后发送停止位, 停止位为高电平,表示一帧数据发送结束。串口通信结构框图如图2所示。DSP与FPGA之间的通信方式采用DSP的EMIF方式,即地址总线、数据总线和 控制总线。FPGA内部实现RS422通信功能,主要包括接收模块、发送模块、波 特率产生模块、DSP接口控制模块等4个部分。RS422串口通信外设一般是指 RS422收发芯片,如MAX3087,完成TLL电平和RS422差分电平之间的转换, 通常与FPGA相连时要经过数字隔离器,进行地线隔离。串口接收模块的功能为:

9、FPGA首先检测数据的起始位,然后获得有效数据位的信 息,并且对有效数据位进行奇偶校验后,进行串 /并转换,存入串口接收 FIFO 中, 等待DSP进行查询读取,当DSP读串口接收FIFO地址时,FPGA把串口接收 FIFO中的数据放到数据总线上。串口发送模块的功能为:首先DSP通过EMIF接口向FPGA的串口发送FIFO写 数据,FPGA把数据存入串口发送FIFO中,进行并/串转换,将串行数据从输出端 口按照约定的波特率输出。波特率产生模块的功能:一般通过FPGA内部的PLL锁相环以及分频模块,获得 串口发送模块波特率时钟驱动串口发送模块,获得串口接收模块16倍频波特率时 钟驱动串口接收模块

10、。DSP接口控制模块具体功能为:根据DSP接口的读信号、写信号、片选信号以及 地址信号产生相应的接收FIFO读信号、发送FIFO写信号、以及读取接收FIFO 深度等功能。在常用方法中,数据缓存操作通常采用FPGA生产商免费提供的FIFO软核,是一 种采用环形存储结构的先进先出存储器2。FIFO结构如图3所示。图3中,FIFO的存储介质为一个双端口 RAM,可以同时进行读写操作。左侧为 个写时钟域,由写地址逻辑产生写控制信号和写地址,可以把数据写入RAM ; 右侧为一个读时钟域,由读地址逻辑产生读控制信号和读地址,可以读出RAM中 的数据。另外,由空/满标志位产生逻辑对读写地址相互比较产生空、满

11、标志位以 及动态刷新FIFO的深度,该模块需要和读时钟域、写时钟域进行交互,存在跨时 钟域的问题。综上所述,常用方法是基于FPGA内部FIFO建立串口通信模块,在工程应用中, 经常遇到诸多问题,如FIFO深度读取不正确、FIFO写数据端口与读数据端口时 序竞争、多个模块间信号延时导致FPGA亚稳态等问题。究其原因是由于FIFO软 核由厂家封装后,对用户开发是一个“黑盒子”,其内部设计无法被用户优化 3 因此在改进方法中,设计循环缓存代替了 FIFO,利用计数器代替了波特率产生模 块,可以把串口发送模块整合成一个模块,把串口接收模块整合成一个模块,并且 两个模块只采用一个主时钟,采用同步时序电路

12、设计的FPGA,所有寄存器的时钟 输入端共享一个时钟,可以有效地消除亚稳态。定义一个寄存器数组4 : reg7:0 data_HC511:0,数据宽度为8位,长度为 512。定义一个读指针计数器:reg8:0 REcount = 9h000,计数范围为0511。定义一个写指针计数器:reg8:0 WEcount = 9h000,计数范围为0511。 如图4所示,采用一个主时钟对循环缓存data_HC进行读、写操作,当向循环缓 存data_HC写入数据后,写指针WEcount加1 ;当从循环缓存data_HC读出数 据后,读指针REcount加1。当读、写指针递增到511后,再加1则自动为0,

13、依次循环。循环缓存还需要建立3个关键的变量。循环缓存的深度:wire 8:0 cnt;循环缓存的满标志:wire FULL;循环缓存的空标志:wire EMPTY;深度cnt即循环缓存data_HC中数据的个数,利用写指针WEcount与读指针 Recount 比较,当 WEcount = Recount 时,cnt = WEcount -Recount。当 WEcount = Recount)?( WEcount -Recount):( WEcount +512 -Recount)。空、满标志产生的原则是:写满而不溢出,读空而不多读。即在满信号有效时若继 续向FIFO写数据,应根据设计的要求

14、对数据作保持或抛弃重发处理,空标志的产 生也是如此。当深度cnt=0时,设置空标志EMPTY=1。当深度cnt=256时,设置满标志FULL=1。当然,满标志FULL的深度cnt数值可以灵活设置。利用逻辑电路表达 式为3:assign EMPTY = (cnt = 9d0)?1:0;assign FULL = (cnt =9d256)?1:0;当向循环缓存data_HC写入数据时,代码示例如下:if(FULL)begindata_HCWEcount = data_in;WEcount = WEcount + 1;end当从循环缓存data_HC读出数据时,代码示例如下:if(EMPTY)beg

15、indata_out = data_HCREcount;REcount = Recount + 1;end串口发送模块的时钟一般和串口发送波特率一致,当发送数据时,只需要按照时钟 把循环缓存中的数据并/串转换后,按帧格式发送。串口接收模块的时钟一般是串口接收波特率的16倍频。当接收数据时,由于接收 节点和发送节点的时钟异步,所以需要对数据位进行多次采样,采样次数越多,采 样点就可以越靠近数据位中点,降低采样错误的概率。但是,采样次数越多,其系 统开销就越大。因此,设计串口接收模块的时钟是串口接收波特率的16倍频,每 个数据位可以采样16次,并且只取靠近中间的3个采样点,如第7、8、9次, 并且

16、对3次的采样点值,通过3判2进行裁决,进一步降低采样误码概率。上述方法中,需要通过FPGA的主时钟经过PLL锁相环和分频模块产生串口发送 时钟和串口接收时钟,分别驱动串口发送模块和串口接收模块。利用计数器完全可 以替代波特率产生模块,其优点是只需要FPGA的主时钟,而不进行分频,其时 钟相位、延时都不会由于分频而产生变化。例如,RS422串口全双工通信,收、发波特率都为38400bpt/s,FPGA中模块主 时钟用14.745 6 MHz。在串口发送模块,以14.745 6 MHz时钟的上升沿为触发 模式进行计数,当计数到384时,进入图5串口发送模块状态机,根据状态机执 行相应的动作,并且计

17、数重新置 1,主时钟下一个上升沿来时,继续进行计数动作 在串口接收模块,以14.745 6 MHz时钟的上升沿为触发模式进行计数,当计数 到24时,进入图6串口接收模块状态机,根据状态机执行相应的动作,并且计数 重新置1 ,主时钟下一个上升沿来时,继续进行计数动作。DSP向数据缓存data_HC写数据,FPGA检测到DSP的串口写信号有效,并且数 据缓存未满,把DSP数据总线上的数据装入数据缓存data_HCWEcount,并且 WEcount写指针加1。FPGA中串口发送模块,以主时钟上升沿进行计数,当计 数到分频时钟的值(BAND二主时钟频率/发送数据波特率)时,进行状态机判断和跳 转,并

18、且计数值重新置1 ,过程如图5所示。发送模块状态机设计如下:状态1检测循环缓存data_HC是否为空,如果循环缓 存data_HC非空,读取data_HCREcount值(1个字节),REcount读指针加1 , 跳转到状态2,然后依次从状态2状态12跳转,其状态为发送起始位、数据位 0数据位7,奇偶校验位、停止位。FPGA中串口接收模块,以主时钟上升沿进行计数,当计数到分频时钟的值 (BAND=主时钟频率/(接收数据波特率*16倍频)时,进行状态机判断和跳转,并 且计数值重新置1 ,过程如图6所示。接收模块状态机设计如下:状态 1 检测数据线是否有起始位,如果检测到起始位, 跳转到状态2,状

19、态2为检测到起始位的中间位置,然后依次从状态3状态11 跳转,其状态为数据位0数据位7,奇偶校验位的中间位置采样,最后跳转到状 态12,停止位的中间位置,对数据进行奇偶校验,以及判断data_HC是否满,如 果未满,把数据写入数据缓存data_HCWEcount,并且WEcount写指针加1。 DSP可以读取与FPGA约定的两个地址,一个为数据缓存深度地址4,如 addr_data_count,另一个为数据缓存中数据地址,如addr_data。当DSP读取数 据缓存深度地址时,FPGA可以把数据缓存深度ent锁存后放到DSP数据线上。 当DSP读取数据缓存中数据地址时,FPGA判断数据缓存da

20、ta_HC非空后,把 data_HCREcount锁存后放到数据线上,并且读指针REcount加1。在XXX组合导航系统中,FPGA硬件采用A3P1000,DSP采用TI公司的 TMS320C6713B,产品包含与陀螺、上位机、转位机构、北斗系统等进行RS422 串口通信的 11 个接收、发送模块。采用改进方法后,在测试过程中,常温条件下, 产品连续工作100多个小时,未出现串口通信错误。在高温、低温条件下,分别 进行1小时测试,未出现任何通信异常现象,也没有出现误码现象。在常用方法中,如图2所示,多个模块间需要传递时钟、数据、FIFO控制信号等, 系统很容易产生亚稳态。亚稳态就是触发器工作在

21、一种不确定的状态,这种不确定 的状态将会影响到下一级触发器,最终导致连锁反应,从而使整个系统功能失常。当信号在异步电路中或多个时钟域之间传输时,容易产生亚稳态现象。在改进方法 中,通过模块整合,只采用一个主时钟,所有寄存器时钟输入端共享一个时钟,有 效避免了系统亚稳态的产生。本文首先介绍了一种FPGA实现RS422串口通信的常用方法,包括波特率产生、 串口发送、串口接收、FPGA的FIFO软核等模块,然后设计并实现了一种改进方 法。在改进方法中由于设计了循环缓存代替了 FIFO,利用计数器代替了波特率产 生模块,因此,可以把串口发送模块整合成一个模块,把串口接收模块整合成一个 模块,并且串口发送模块、串口接收模块只采用一个主时钟,采用同步时序电路设 计的FPGA,所有寄存器的时钟输入端共享一个时钟,可以有效地消除亚稳态,提 高了 RS422 串口通信的可靠性、稳定性,具有较高的应用推广价值。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!