黄赟 潘雷 丁辉
摘要:針对传统总线无法同时满足不同节点间高速通信、实时通信、电气隔离、与故障隔离的问题,提出了基于M-LVDS总线的高速通信系统设计方案。系统用M-LVDS总线取代了传统总线,用FPGA来实现M-LVDS总线控制器,可以实现节点的故障隔离。
关键词:FPGA:M-LVDS;高速通信
中图分类号:TP334.7 文献标识码:A 文章编号:1007-9416(2019)06-0019-02
M-LVDS总线能够实现多个节点之间高速并发通信,总线速率最大可以达到100Mbps,总线上节点之间电气隔离,而且每一个节点均采取措施进行错误检测,永久故障节点会被关闭,而不会影响其他节点的正常工作。
1 M-LVDS总线简介
M-LVDS总线是一种支持多节点的差分总线,支持多个节点之间高速传输数据。图1展示了M-LVDS总线的拓扑结构。其中,各节点之间数据的传输采用双网的方式,双网的物理和功能都保持独立,各自采用重发机制,以保证数据有效性。
2 FPGA的功能描述
在M-LVDS总线上每个节点都是一个独立的嵌入式板卡,板卡内部包括处理器、存储器和总线控制器等, M-LVDS总线控制器用FPGA实现,FPGA包含以下功能:
(1)多主仲裁:FPGA对总线进行监听,只要总线空闲就可发起仲裁,仲裁通过就开始发送报文;(2)数据安全:FPGA内部采取措施进行错误检测、错误标定及错误自检;(3)故障隔离:FPGA能够把永久故障和短暂扰动区分开来。永久故障的节点会被关闭;(4)报文控制:FPGA将信息均以固定报文格式发送;(5)信息路由:FPGA支持数据帧、维护帧和时钟帧。
3 FPGA的逻辑设计
通过FPGA来实现M-LVDS总线控制器,FPGA内部包含了以下6个模块:
(1)mlvds_regs寄存器子模块:该模块提供与CPU的接口,维护M-LVDS总线控制器中的可编程寄存器,包括:控制寄存器、状态寄存器、中断寄存器。(2)mlvds_tx_queue发送队列子模块:该模块内部有数据FIFO缓存区,当一个完整帧写入到数据FIFO时,将向mlvds_transmitter请求发送数据。(3)mlvds_transmitter发送子模块:该模块负责仲裁M-LVDS总线的使用权,节点在发送数据之前,必须先通过总线仲裁获得总线使用权。只有获得总线使用权后,才能将本节点的数据帧发送到总线上。(4)mlvds_sample接收采样子模块:该模块负责用相位依次相差90°的4个时钟同时对M-LVDS总线上的数据进行采样,从而确保其中至少有1个时钟采样到了正确的数据帧。(5)mlvds_rx_queue接收队列子模块:该模块负责接收MLVDS总线上的数据帧,并且会对接收到的数据帧进行过滤检查,判断是否符合本地节点的接收过滤规则,同时会将接收过程中的错误状态信息反馈给CPU。(6)mlvds_link_monitor链路状态监测子模块:该模块负载监测链路的当前状态,包括总线是否已经连接上、总线是否处于空闲状态、本节点是否处于正常状态。
4 数据发送流程
M-LVDS总线上节点发送数据的流程:
步骤1,当节点有数据帧要发送时,首先CPU将数据写入FPGA内的发送FIFO中;
步骤2,数据帧进入发送缓冲区,使发送缓冲区不为空;
步骤3,当发送缓冲区不为空时,FPGA会触发一个数据发送请求;
步骤4,当FPGA内有数据发送请求时,仲裁通过则可以往总线上发送数据帧;
步骤5,根据CRC生成多项式:G(x)=x16+x15+x2+1,计算得到数据帧的CRC校验值,将该CRC校验值附在数据帧的后面一起进行并串转换;
步骤6,将并串转换后的数据发送到M-LVDS总线上。
5 数据接收流程
M-LVDS总线上节点接收数据的流程:
步骤1,FPGA用4个相位依次相差90°的时钟同时对总线上的数据进行串行采样,从而保证至少有一个时钟能够采样到正确的数据;
步骤2,将采样到的数据进行串并转换,然后进行帧解析,提取出帧长,帧类型等字段;
步骤3,预先设定的帧长范围是0~256字节,当收到的数据帧的长度超过这个范围时则认为数据帧不合法,并丢弃;
步骤4,根据CRC生成多项式:G(x)=x16+x15+x2+1,对收到的数据帧进行CRC校验,校验通过则说明数据接收正确,否则说明数据接收错误,将数据帧丢弃;
步骤5,判断节点的FPGA接收FIFO是否还有空间存放接收到的数据帧,如果没有足够的空间则会将数据帧丢弃,并产生错误报警;
步骤6,将数据帧放入FPGA接收FIFO中,供CPU读取。
6 结语
文中描述的新技术已经被应用于安全计算机平台CVC-200的开发,并获得了现场长时间稳定运行的良好效果。新技术的采用解决了传统总线无法同时满足不同节点间高速通信、实时通信、电气隔离、与故障隔离的问题,为安全系统设计中的数据传输提供了有效的方案。
参考文献
[1] 李大鹏,李雯,王晓华.基于FPGA的高速LVDS接口的实现[J].航空计算技术,2012,42(05):115-118.
[2] 鄢玲玲,文丰,李辉景.一种基于LVDS高速传输的接口优化设计[J].电测与仪表,2016,53(20):80-83.
[3] 黄万伟.Xilinx FPGA高速串行传输技术与应用[M].北京:电子工业出版社,2015.
Design of M-LVDS Bus Controller Based on FPGA
HUANG Yun,PAN Lei,DING Hui
(Hardware Technology Center of CASCO Signal Co., Ltd., Shanghai 200071)
Abstract:Aiming at the problem that traditional bus system cannot meet the requirements of real-time communication, high-speed communication, electrical isolation and fault isolation at the same time, a design scheme of high-speed communication system based on M-LVDS is proposed in the paper. The system uses M-LVDS to replace the traditional bus, and uses FPGA to realize the M-LVDS controller. And FPGA is the bridge device between CPU and M-LVDS. The test result shows that the operation of the system is stable, the transmission is accurate, and the expected transmission task is successfully completed. When FPGA detects the fault, FPGA can realize the fault isolation of the faulty node.
Key words:FPGA;M-LVDS;high-speed communication