基于485总线的高速多主从模式总线节点设计与实现

2022-01-22 10:04周建琼张菊茜顾庆水
科技视界 2021年36期
关键词:发送数据总线仪器

李 谦 周建琼 张菊茜 顾庆水 陈 伟

(1.中海油田服务有限公司油田事业部,河北 三河065201;2.电子科技大学,四川 成都611731)

0 引言

在测井行业中,井下仪器工作环境较为恶劣,高温、高压和振动等外界因素均对仪器的设计提出了很高的技术和工程要求,同时井况的不确定性,对测井仪器的尺寸也有严格的要求,导致测井仪器设计的集成度都较高,一根仪器一般需要采集多个或者多种信号,各个信号节点之间相对独立,同时连接在一根总线上,通过一个统一的控制单元,控制各个节点的信号采集和数据传输操作,多采用主从模式的485总线或者1 Mbit/s的CAN总线实现。随着行业的进步和科技的发展,能够提供井周图像的成像类仪器受到了业界的普遍欢迎,然而由于成像类仪器信号采集数据量大,且节点数量多,传统总线以主控制单元为发起点的主从模式和1 Mbit/s的传输速率已经不能满足仪器设计的要求,急需一种效率更高、速率更快、更加稳定的工作模式应用于测井仪器的内部总线中[1]。本文设计的总线节点以FPGA和485总线接口为基础,利用485总线的电气标准,通过借鉴总线竞争和侦听技术,并融入8b/10b编码技术,可以实现40 m短距离内10 Mbit/s速率的可靠数据传输,针对测井仪器信号节点数据特点,通过对节点优先级和数据帧进行优化设计,实现各个节点均具备自动采集、自动发送数据的“多主从模式”,使得各个节点更加独立,仪器设计更加灵活,从而更好地满足成像类仪器的设计要求。

1 总体设计方案

本文设计总线节点的主要功能是接收总线上的数据并转发给节点处理模块,同时,将节点处理模块的数据发送到总线上,实现各个节点自行运行和数据传输的“多主从工作模式”,同时采用高速传输,提高数据传输效率,从而实现测井仪器对地层信息的快速采集、汇总和处理[2]。本文设计的智能节点包括三部分内容:核心处理单元、总线接口单元和数据接口单元。核心处理单元以FPGA为硬件平台,完成地址设定、数据结构转换、8b/10b编解码技术和总线空闲侦听等功能;总线接口单元,由FPGA内部接口控制模块和485总线接口芯片实现;数据接口单元由FPGA内部数据逻辑接口控制模块和数据接口连线实现。根据仪器内部总线长度较短的特点,一般不超过40 m,采用485总线接口实现仪器内部总线高速数据传输速率的要求,传输速率可达10 Mbit/s,并通过FPGA中的逻辑控制,实现“自动工作模式”,同时,保障数据传输的可靠性和稳定性。

2 硬件设计方案

总体架构中的硬件设计方案,不仅要完成稳定的实时性传输,还应考虑到测井作业的恶劣环境对系统的影响。所以,在器件选型上着重考虑所有芯片的功耗和耐温等性能指标。基于以上考虑,经过反复对比,本文选用ACTEL公司的A3P系列作为核心处理单元FPGA芯片,由于硬件核心的内部逻辑较为复杂,同时还要兼顾存储空间和芯片尺寸,选择A3P250VQG100芯片;总线驱动芯片方面选择TI的SN65HVD11D芯片;数据接口单元亦通过FPGA的IO口实现,预留20个IO口引脚,可以满足现代设计流行的并行端口和高速串行端口等多种接口的需求。上述芯片在耐温方面均满足工业级以上设计要求[3]。硬件整体结构如图1所示。

图1 硬件整体结构

总线接口单元通过驱动电路实现485总线的电气特性,其接口信号电平较低,不易损坏接口电路的芯片,且传输速率可以高达10 Mbit/s,总线接口采用平衡驱动器和差分接收器的组合,抗共模干能力增强,抗噪声干扰性好。本设计中选择的SN65HVD11D芯片能够实现标准的485总线驱动,其电路的参考设计如图2所示。

图2 总线驱动电路参考设计

电阻R1为HSC通道匹配电阻,由于通信载体是双绞线,其特性阻抗一般约为120Ω,电阻R1可以有效减少线路上传输信号的反射,该电阻只存在于总线两端的节点上;电阻R4和R5用于保护仪器内部总线通道,当本节点的硬件出现故障不会使整个总线的通信受到影响,电阻R2和电阻R3保证总线在默认情况下保持一个确定的电平。驱动接口芯片SN65HVD11D的引脚1、2、3和4直接连接至FPGA的I/O引脚上,数据的收发均由FPGA来实现。

作为本文设计核心的A3P250VQG100T芯片,为现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物[4]。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。在耐温方面能够满足工业级设计的要求[5]。本设计节点中除总线接口单元的485总线驱动芯片外,其他功能均在FPGA中实现,结构简单,可靠耐用。硬件设计方案的实现,是10M的高速总线通讯的基础。

3 软件设计方案

本文设计中,接口控制、逻辑模块、通信算法均和编解码模块均在FPGA中软件代码实现,其内部实现方案如图3所示。本设计中节点模块与信号采集单元接口为McBSP全双工高速串口,和一根BUSY信号线,用于信号采集单元数据发送的数据流控制,McBSP接口传输速率也设为10 Mbit/s。8b/10b编解码技术的应用主要为提升总线高速率传输可靠性,降低总线通信误码率。

图3 FPGA内部实现方案

FPGA工作主频为100 MHz,由外部输入时钟经过FPGA内部的PLL产生。内部主要包含总线与信号采集单元的数据发送和接收两个功能,以及总线多主型工作模式的实现逻辑。

3.1 信号单元接收总线数据功能

该功能通过总线驱动器控制模块、帧检测模块、总线接收模块、8B/10B解码模块、数据帧解析模块和McBSP控制逻辑模块来实现。各个模块功能介绍和详细数据流程描述如下:

(1)总线驱动器控制模块,实现总线接口驱动芯片的控制逻辑功能;

(2)帧检测模块,接收并解析总线数据帧起始信息,实现检测总线数据是否对该节点有效的判断功能;

(3)总线接收模块,接收并解析总线数据帧数据信息,将串行数据转换为并行数据输出;

(4)8b/10b解码模块,实现8b/10b解码功能,10位并行数据转为8位并行数据输出;

(5)数据帧解析模块,缓存整帧数据,从数据帧中取出有效数据信息,经过校验后输出;

(6)McBSP控制逻辑模块,实现McBSP接口的数据流和逻辑控制;

总线驱动控制模块检测到差分信号跳变,并产生单端信号跳变传递给帧检测模块和总线接收模块,帧检测模块解析数据并比对地址信息,如果地址不一致则返回检测状态,如果地址一致,则告知总线接收模块开始接收数据,串行数据转换为10位并行数据,经过8b/10b解码模块后转换为8位并行数据,在数据帧解析模块中缓存整帧数据,通过解析和校验后,将有效数据通过McBSP控制逻辑模块发送到信号采集单元的McBSP接口接收端[6]。

3.2 总线发送信号单元数据功能

该功能通过McBSP控制逻辑模块、数据帧组帧模块、帧检测模块、总线空闲监测模块、数据控制模块、8B/10B编码模块、总线发送模块和总线驱动器控制模块来实现。

(1)McBSP控制逻辑模块,实现McBSP接口的数据流和逻辑控制,内部采用FIFO作为两个端口数据的缓冲;

(2)数据帧组帧模块,缓存有效数据,产生CRC校验码,按帧结构要求组成数据帧;

(3)总线空闲监测模块,监测总线状态是否空闲,控制busy信号;

(4)数据控制模块,控制发送数据流,添加数据帧中标识位信息;

(5)8b/10b编码模块,编码是将一组连续的8位数据分解成两组数据,一组3位,一组5位,经过编码后分别成为一组4位的代码和一组6位的代码,从而组成一组10位的数据发送出去[7];

(6)总线发送模块,将并行数据转换为满足总线电气要求的串行数据;

(7)总线驱动器控制模块,实现总线接口驱动芯片的控制逻辑功能;

信号单元将采集的信号数据发送到McBSP接口,FPGA中McBSP接口模块对串行数据进行解析缓存并发出通知,数据帧组帧模块接收到通知后,通过8位并口从McBSP模块依次取出固定长度数据后进行CRC校验形成校验码,并按照帧结构的要求组合成标准数据帧,组帧完成后通知数据控制模块,该模块读取总线空闲监测模块的状态,如果busy,则暂不读取数据,同时,通过McBSP模块通知信号采集单元暂停发送数据,如果空闲,则依次读取数据,并将地址信息填充到数据帧标识位,然后8位并行输出给8B/10B编码模块,编码完成后10位并行输出到总线发送模块,转换为串行数据单端信号输出到总线驱动器控制模块,最终产生差分信号通过接口芯片发送到总线上。

3.3 总线多主型工作模式的实现

多主从工作模式总线,重点是在发送端需要竞争总线,取得发送数据的权利,在接收端需要迅速检测数据是否为该节点有效数据。本文设计总线节点主要靠帧检测模块、总线空闲监测模块、本节点地址、目标节点地址,以及硬件设计的配合来实现。任意总线节点在发送数据之前,首先发送自身地址,通过自身地址的优先级来竞争总线使用权,然后发送目标地址,通知目标节点准备接收数据。

总线空闲监测模块,用于监测总线状态,默认处于监听模式,使用100 MHz对总线的接收信号进行采样。根据硬件设计特点,总线空闲的状态下总线驱动控制模块输出的单端信号均为高电平,如果总线空闲状态下监测到高低边沿,总线空闲检测模块将该边沿作为数据起始使能信号,标识总线有数据传输,busy信号置位,告知节点总线被占用。接收到帧检测模块发出的数据帧结束信号,开启计数器,如果连续监测到一定时间的高电平,意味着该帧数据发送完成,节点busy信号归零,各个节点可以从新开启竞争总线。节点发送完整个一帧数据需延迟一段时间后继续发送下一帧数据,设定数据帧发送间隔,是为其他节点提供发送数据的机会,保证总线的公平使用。等待时间的长短,由总线是否需要接收节点反馈,以及反馈信息的长短等总线协议要求而定,可以根据总线应用层的实际需要在FPGA内调整。

帧检测模块,用于判断总线数据是否为该节点有效数据,以及该节点是否竞争到了总线使用权。帧检测模块中被写入8b/10b编码后的节点地址信息,收到总线数据后,与帧标识位中目标地址段进行比对,如果一致,则总线数据为该节点有效数据,开始接收总线数据,如果不一致,则返回检测状态,从而实现节点接收有效数据功能;节点发送数据帧的时候,根据硬件设计特点,该节点同时也可以收到数据帧,此时帧检测模块比对帧标识位中最前段的本地地址信息,如果与自身地址信息一致,则该节点成功竞争到总线,并强行控制busy信号清零,可以继续发送数据,反之,则意味着总线被其他节点竞争到,数据发送控制权交还给总线空闲监控模块的busy信号,从而实现总线竞争功能。

为了保障总线安全,专门设计了帧检测错误计数模块,记录帧检测模块检测数据帧结束信息段连续错误的次数,如果连续多次发现检测到数据帧,但是没有正确检测到帧结束信息段,认为该节点异常,将该节点所有功能关闭,脱离总线。正常情况下帧检测模块正确接收到结束段,并通知总线空闲监控模块开始计数,用于判断总线空闲。

软件设计方案的实现,是本设计节点完成多主从模式总线通讯的基础。

4 调试与验证

本文设计节点主要具备两个特点,10 Mbit/s的高速总线通信速率和多主从工作模式。

为了验证10 Mbit/s高速总线通讯速率和可靠性,以及验证多主从工作模式,设计制作了3个节点电路板,三块电路均连接在总线上,每个节点分配了不同地址,为方便测试,信号单元接口端均设计为标准串口,每个节点连接一个上位机,在上位机中输入目标节点地址和255个字长的数据,即可将数据发送到目标节点,且在目标节点上位机中显示,发送数据位固定数据,目标节点中对此数据进行检验,从而验证数据准确性,同时,用示波器检测总线信号频率,确定数据传输速率,见图4。实验证明,按照上述测试方式,验证了数据传输速率为10 Mbit/s,数据准确可靠,且每个节点均可以发送数据到任意其他节点。

图4 主从工作模式测试

测试节点竞争机制,由于串口速率过慢,只采用2个节点竞争的方式,防止节点个数过多,所有节点数据阻塞在接收节点对上位机的串口模块中。实验中将两个节点的串口连接到同一个上位机上,当上位机发送数的时候,使得两个节点同时向第三个节点发送数据,见图5。此时,发现第三个节点的上位机首先接收到地址设置优先级高的节点的数据,紧接着接收到另外一个节点数据,证明节点竞争机制正常运作。

图5 竞争模式测试

5 结语

多主从工作模式的特点在于多个节点可以自主发送数据给总线上任意一个节点,这种工作模式可以实现仪器内部各个节点之间按照预先设计的流程协同合作,让各个信号采集单元的采集工作更加灵活,相互之间的配合更加自由,并且可以通过主控节点的调度,随时改变工作模式。本文设计节点应用于仪器内部总线,协助实现总线多从工作模式,且能够达到10 Mbit/s的传输速率,完全满足成像类仪器内部信号采集单元之间总线通讯和协同工作的要求。该节点电路已经在多种成像类仪器中使用,效果良好。

猜你喜欢
发送数据总线仪器
《现代仪器与医疗》2022年征订回执
《现代仪器与医疗》2022年征订回执
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
基于马尔科夫链的LoRaWAN网络节点性能分析
带标记方式的CRDSA++协议性能分析*
我国古代的天文仪器
使用IPSec安全传输数据
多通道ARINC429总线检查仪
基于EtherCAT总线的ROV控制系统设计