闫利军 高志远
摘 要 在航空测试领域RS422总线被广泛用于数据传输。文章介绍了一种RS422总线信号的多通道采集技术,系统以FPGA和DSP为处理器实时采集总线上的数据信息,根据需求可以进行部分数据或者100%数据的采集,按照传输协议将数据传输给主控并生成网络数据包发送出去。
关键词 RS422总线;多通道采集;乒乓操作;DSP;FPGA
中图分类号:TP2 文献标识码:A 文章编号:1671-7597(2014)14-0053-03
RS422总线具有传输距离长、波特率可调、速度快、抗干扰能力强等诸多特点[1],在航空航天以及工业控制领域有着广泛的应用。本文主要研究如何在RS422总线上过滤出用户需要的消息,如何实现多通道RS422消息的实时采集和传输。
1 系统总体设计
系统用到DSP和FPGA两个处理器。DSP负责过滤RS422消息,挑选出用户所需消息,并进行存储,按照协议设定好的时序发送给主控。
FPGA作为DSP和主控进行信息交互的桥梁,负责配置信息的传输,采集数据的传输,同时要将4个通道的RS422消息暂存在FIFO中做缓存,供DSP调用。
系统总体结构框图如图1所示。
2 系统软件设计
RS422软件主要包括配置参数读取,参数过滤,数据获取,数据传输四个模块[2]。软件处理流程图如图2所示。
2.1 系统软件架构
系统软件架构如图3所示,系统软件的设计是按模块化进行的:主控板发出的配置信息通过底板总线传给FPGA,FPGA把功能、通道、消息等配置信息存储在一个双口配置RAM中,其中头标区包括:配置的偏移地址,配置数据,配置命令;通道配置信息包括:通道使能,RS422配置信息,通道中消息个数等;消息配置区包括消息中参数数量,传输协议内容[3]。
待主控板把所有配置信息传输完毕,DSP从配置RAM读出所需要的配置信息对硬件进行配置,同时DSP按照配置信息的要求实时采集数据,处理数据,并把处理后的数据传到FPGA的双口数据RAM中。
2.2 配置参数获取
配置参数由主控板通过底板向板卡发送,板卡将接收到的信息存储在内部双口RAM上,待主控板把所有配置信息传输完毕,DSP 从配置RAM读出所需要的配置信息对硬件进行配置。
FPGA写配置信息到RAM时,需用RAM的时钟CLK做同步处理,当检测到CLK的上升沿时将数据送入相应的地址[4]。FPGA写配置信息过程如图4所示。
DSP对配置空间的读操作与FPGA对配置RAM写操作类似,不同之处在于读写地址的差异。FPGA和DSP与配置RAM连接图如图5所示。
2.3 数据采集
由于RS422数据发送速度和所需采样速度不一致,需要先把RS422数据缓存起来,待DSP 需要时再进行调用。在FPGA内为每个通道开辟了一个FIFO用于缓存RS422信息。由于采集速度比发送RS422速度快,所以不会丢桢[5]。
2.4 参数过滤
RS422消息分两种格式传输:定长传输,变长传输。定长传输的消息由消息块头和消息内容组成。头为1-8个字符,消息内容的长度由协议确定,如图6所示。
变长传输的消息由消息块头、消息内容和结束符三部分组成[6]。消息块头为1-8个字符,当接收到的RS422参数与消息块头相符时,则开始进行参数过滤,消息的长度由结束符确定。当检测到结束符时说明已经接收到了一条完整的消息,如图7所示。
RS422参数的过滤其实就是把参数与消息块头进行对比,如果全部对上则说明过滤出了一条消息,若是定长接收,则接收一帧固定长度的完整消息;若是变长接收,则需要把接收到的每个字符跟结束符进行对比,检测到结束符时说明已接收到了一帧完整的消息[7]。
如图8所示,假设一条消息同步头为AA55,此通道中有四条消息同步头分别为1—AA55,2—AA55AA,3—55,4—55AA。
1)取出第一个参数后,与此通道1,2,3,4消息的同步头的第一个字节进行对比,与同步头第一个字节相符的消息为消息1,2。
2)取出FIFO中的下一个字节,与消息1,2的同步头第二个字节进行对比,发现这两个消息同步头都能对上,但是第1条消息的起始序列长度等于2,即FIFO中消息的同步头与1消息的同步头完全一致,则说明FIFO中存储的是第1条消息。
2.5 数据获取
RS422参数进行过滤后,要先从FIFO取出放进一个数组里,以便超传输或子传输时调用[8]。
如图9中所示:通过pipbuff可以挑选此条消息的部分参数进行采集。当过滤出一条消息后,将此条消息中参数序号跟pipbuff对比,如果一致则将此参数作为有效参数存入数组A。
当存入数组的参数量等于此条消息的长度则一条完整的消息接收完毕,此时可以继续过滤下一条消息,同时把数组A中的数据传给数组B,等待被放入readybuff以便DSP往FPGA的双口RAM上写数据时调用[9]。这样可使过滤和传输互不影响。
当一条消息所有参数都被从数组readybuff中按照传输协议放入FPGA双口RAM后,在主函数中如果数组B刚被新的数据更新过,则把数组B 的数据放入readybuff。
2.6 数据传输
采集到的数据由DSP按照传输协议送往FPGA,在FPGA中对双口RAM用用乒乓操作[10],使DSP写数据和主控读数据互不影响。
1)传输协议。
数据在传输时有两种方式,一种是超传输模式,一种是子传输模式。
当参数的采样率低于小周期频率就会作为子传输,每隔n个小周期传输一次;当参数的采样率大于等于小周期频率会作为超传输,每个小周期传输n次。endprint
子传输时每个参数有不同的小周期偏置,以使一个大周期参数能够均匀分配,避免某一时刻传输数据量大造成效率降低的现象。子传输时每个通道要求每隔interval(2的n次方)个小周期传输一个数据。
处理数据时,以所有消息中最大的采样率进行采样。例如最大采样率为512,某一消息采样率为256,小周期频率为64,则时序如图12所示,其他情况时与图12类似,只是采样率和传输次数不一样。
2)乒乓操作。
数据空间使用1K的RAM分为高512地址区和低512地址区,在对数据空间操作时,按照小周期同步做乒乓操作。
如图13所示,每当小周期同步触发时钟上升沿到来之后,DSP将readybuff的数据写入512空间;同时FPGA从另512空间读取上次存放的数据,送给主控。
3 结束语
本文解决了多通道RS422信号采集时速度与DSP接口速度匹配问题,研究了多通道RS422信号过滤方法,并按照传输协议将数据传输给主控板。用数据三级缓存方式解决了数据过滤和数据发送之间互相影响的问题,在FPGA中利用乒乓操作解决了DSP发送数据和主控取数据互相影响的问题。在通用采集器的“RS422信号采集板卡”设计中经过验证系统稳定可靠达到了设计要求。
参考文献
[1]李奔杰,张文兵,马晋,张新.多通道RS422通信的综合显示控制处理机内部数据交互的软件设计与实现[J].中国测试技术,2011:34-37.
[2]索义芳,高飞,孙磊.基于FPGA 的差分RS422串行收发模块的设计实现[J].现场总线技术应用2010(12):56.
[3]彭宇,姜红兰,杨智明,乔立岩,刘旺.基于DSP和FPGA的通用数字信号处理系统设计[J].国外电子测量技术,2013(1):17-21.
[4]李文海,刘勇,王怡苹,许爱强.串行总线合成仪器设计与实现[J].电子测量与仪器学报,2011,25(10):917-920.
[5]徐国金,吴健,温家鹏,鲍谚,黄勤河.基于误差分析的电池组高精度测量系统的设计[J].仪器仪表学报,2013,34(9):1989-1993.
[6]陈新华,黄如昌.基于KAM500的非定长RS422数据包采集方法研究与实现[J].中国科技博览,2013(20):166-167.
[7]魏列江,甄亮,鲁鸿基.于PHOENIX RS422/485-PRO的高速公路隧道多状态监控现场数据采集系统设计[J].西华大学学报(自然科学),2013,32(1):101-104.
[8]侯宏录.张文芳.基于FPGA的SDRAM控制器设计方案[J].兵工自动化,2012,20(2):57-59.
[9]陈荣军,钟秀媚.一种基于FPGA的SDRAM数据读取方法设计[J].计算机工程应用技术,2012,8(36):8796-8798.
[10]项力领,刘智,杨阳,胡智慧.单片SDRAM的数据读写乒乓操作设计[J].长春理工大学学报(自然科学版)2013,36(5):140-143.
作者简介
闫利军(1981-),工学硕士,工程师,研究方向:机载测试技术。
高志远(1986-),工学硕士,工程师,研究方向:机载测试技术。endprint