8b/10b编解码器设计及其在测井系统中的应用

2016-05-07 06:46许磊顾庆水欧莽平郭明亮
测井技术 2016年6期
关键词:重传测井总线

许磊, 顾庆水, 欧莽平, 郭明亮

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

0 引 言

测井系统数据传输一般分2个部分:电缆上的数据传输和井下仪器总线的数据传输。电缆上的数据传输速度已达1 Mbit/s以上[1],当前使用的井下仪器总线主要有贝克休斯公司的1553B、斯伦贝谢公司的DTB、中国公司CAN及以太网总线等。其中1553B速率230 kbit/s,DTB速率100 kbit/s,CAN总线最大传输速率仅为1 Mbit/s且受限于40 m的传输距离[23],这些总线的实际有效数据传输速率远远低于1 Mbit/s。以太网总线应用于测井系统中,而且传输速率够快,但可用的网络芯片温度性能太差,勉强在175 ℃的测井温度下使用[4],离200 ℃以上的高温要求相差甚远。本文研制成功基于8b/10b编解码技术的10 Mbit/s高速仪器总线[15],总线通过8b/10b编解码技术以及位同步技术,结合冲突检测和重传机制,保证了高速数据传输的稳定和可靠,传输距离可达100 m,耐温高于200 ℃。

1 8b/10b编码原理

8b/10b编码由IBM公司提出,在传输数据流中“1”和“0”的个数基本相当,连续的“1”或“0”不超过5个,极大地保证了传输信号的直流平衡,编码后的串行数据流包含同步时钟信息,接收端易于实现时钟恢复,传输效率和可靠性较高,在高速串行总线中应用广泛[6]。

8b/10b基本编码规则是将输入的8 bit数据(8b)按照编码规则映射为10 bit数据(10b)。编码过程中,先将输入数据分解成2组数据,一组拥有低5 bit数据(5b),一组拥有高3 bit数据(3b),2组数据分别进行5b/6b编码和3b/4b编码,再将编码后的4 bit数据(4b)和6 bit的数据(6b)合并为10 bit数据(10b),完成编码。

8b/10b编码数据可统一表示为DX.Y或KX.Y,其中D表示其为数据代码,K表示其为控制代码,X表示输入的原始数据低5 bit的EDCBA,Y表示输入数据的高3 bit的HGF[6-8]。

对于8b数据,它的数据位顺序为HGFEDCBA,即H为最高位,A为最低位,EDCBA经过5b/6b编码为abcdei,HGF经过3b/4b编码为fghj,传送10b编码的顺序为abcdeifghj,5b/6b编码和3b/4b编码通过查询5b/6b和3b/4b编码表的方式进行编码。

为保证传输的直流平衡,引入Running Disparity(RD)标志,在进行5b/6b和3b/4b编码的时候可根据当前的RD值(RD-或RD+)去查表,得到相应的编码。RD初始化值为RD-,第1组编码完成后产生新的RD,然后根据新的RD进行第2组编码,以此类推,直至编码完成。

2 8b/10b编解码器设计与实现

8b/10b编解码器采用verilog HDL语言进行设计,在Actel的A3P060芯片上实现。

2.1 编码器设计与实现

图1 8b/10b编码模块实现流程图

8b/10b编码模块实现流程见图1。8b/10b编码模块将输入的8 bit数据拆分为低5 bit和高3 bit,分别存入5 bit寄存器和3 bit寄存器中,先对低5 bit数据进行5b/6b编码,再对高3 bit数据进行3b/4b编码,将2部分编码数据组合存入10 bit的寄存器中,完成8 bit数据编码。

2.2 解码器的设计与实现

8b/10b解码模块实现方法同编码模块类似,将接收的10 bit数据分成低6 bit和高4 bit,存入2个寄存器中,分别进行5b/6b解码和3b/4b解码,再组合成8 bit的数据输出,完成8b/10b解码。5b/6b解码和3b/4b解码同样利用查表实现。8b/10b解码模块实现流程见图2。

图2 8b/10b解码模块实现流程图

2.3 位同步时钟恢复的实现

控制器利用高频时钟对经过跨时钟域处理的总线信号进行采样,通过异或逻辑判断总线信号跳变沿,并从总线信号跳变沿开始利用4 bit的计数器进行计数,在每个码元的中间进行采样。控制器每次检测到总线信号跳变沿时都将计数器清零,进行一次重同步以确保采样信号的准确性,工作流程见图3。

图3 位同步时钟恢复流程图

总线物理层数据传输速率为10 Mbit/s,即时钟频率为10 MHz,;进行位同步时钟恢复的检测时钟频率为100 MHz,电平同步器亦采用100 MHz的时钟进行处理。

3 测试平台设计

3.1 硬件设计

搭建10 Mnps仪器总线测试平台共有4个模拟仪器节点,所有模拟仪器节点通过差分总线挂接到高速总线上,每个节点板载FPGA实现8b/10b编解码器。4个模拟仪器节点硬件一致,Node1为主控,控制其余3个节点的数据发送和接收,进行解码以及错误诊断后,统计数据传输错误等信息,通过SCI接口发送到地面PC软件进行统计信息及状态显示,同时,地面PC软件可控制各仪器节点数据发送的启停及发送数据量,以此模拟实际测井过程。模拟节点硬件功能见图4。

图4 模拟节点硬件功能示意图

核心编解码及控制部分在FPGA内部实现,硬件设计采用Actel的A3P060实现。DSP选用TI的TMS320F28335-HT,实现测试数据的收发控制和信息处理等,该芯片具备耐高温特性,满足测井系统对高温环境的要求。

DSP与FPGA芯片通过多通道缓冲串行口(Multichannel Buffered Serial Port,McBSP)进行数据通信,该串口通讯速率由用户决定,板载传输速率大于10 Mbit/s。

地面PC软件基于美国国家仪器(NI)公司的LabWindows/CVI环境开发设计。控制与显示软件在测试过程中可打开或关闭任意一节点,可控制模拟节点发送数据量,可将主控节点数据接收统计信息(接收帧数、错误帧数等)直观显示在界面上。

3.2 协议设计

3.2.1 总线帧格式

总线帧分数据帧和确认帧(应答帧)。数据帧由10 bit帧头、8 bit标识符、8 bit控制位、8 bit有效数据长度、2 040 bit数据、16 bit的CRC校验值、10 bit帧尾构成。数据帧除帧头和帧尾,其他部分进行8b/10b编码,在物理层传输的整个数据帧长度为2 620 bit[1]。帧头采用8b/10b编码中的K28.5字符,帧尾采用8b/10b编码中的K28.1字符,这2个字符在8b/10b编码中具有唯一性,可有效避免假帧同步。标识符为仪器地址,控制位用于标识数据帧状态等信息,数据长度标识后面的有效用户数据长度。总线数据帧长度固定,一帧最大可传输的数据长度为255B数据,当要传的数据超过255B后,分成若干帧进行传输;当可传输的数据长度不足255B数据时,有效数据先传,剩余字节补零,该帧的有效数据长度由该帧的数据长度字段指示。

确认帧由接收端产生,接收端每正确接收到一帧数据后产生1个确认信号。确认信号的产生时间在接收完当前帧的帧尾后10个位元时间内产生。

确认帧由帧头和仪器标识符组成。帧头为8b/10b编码中的K28.7字符。仪器标识符8 bit,通过8b/10b编码后进行传输,整个确认帧总长度20 bit。

3.2.2 优先级机制与节点标识

总线节点优先级机制采用基于帧间间隔的优先级机制,不同的仪器节点根据各自的特征被分配不同的帧间间隔值,值越小,优先级越大。帧间间隔是指该支仪器需要通过总线发送数据时刻开始,当检测到总线空闲后,不能立即发送数据,还必须等到满足帧间间隔所需要的时间后才可发送该帧数据。

每个仪器节点分配1个仪器地址(占8 bit),从节点发送的数据帧头部带有本身仪器地址,主控节点以此来识别具体是哪个仪器节点的数据。同时,仪器地址跟仪器节点帧间间隔关联,以此通过仪器地址决定仪器优先级。

3.2.3 冲突检测与数据重传

总线的冲突检测机制采用基于帧间隔优先级的CSMA/CA机制,处理方法如下。

(1) 仪器节点一直检测总线数据,如果连续10个位元为高电平,则将总线状态设置为空闲状态,检测到低电平,则空闲状态无效;总线速率为10 Mbit/s,因此每个位元周期为100 ns。

(2) 仪器节点检测到总线空闲后,继续检测总线数据,当总线空闲时间满足该仪器节点的数据帧帧间间隔时,将总线状态设置为长空闲状态。

(3) 当某个仪器节点有一帧数据需要发送时,首先检测总线数据,查看总线是否空闲,若空闲同时总线状态处于长空闲状态,则立即发送数据;

虽然设计了优先级机制和冲突检测机制,在实际应用中,由于总线支线长度不同、阻抗变化等因素不可避免造成时间延迟,还会存在数据冲突的可能。为此设计了冲突以及数据帧错误的重传机制。

发送端发送数据前进行冲突检测,检测到数据帧冲突后,启动数据重传机制。数据重传前继续检测总线状态,每个节点的帧间间隔不同,再次发生冲突的概率微乎其微,而且发送端设计多于10次的重传次数,完全可以解决数据冲突问题。

主控节点接收到从几点数据帧后会启动错误检测,主要检测错误类型:帧头帧尾检测、CRC校验检测、标识符检测、8b/10b码流是否符合编码要求检测、数据帧总位宽是否符合帧格式要求检测等。

若主控节点接收到的数据有错,则不发送确认信号。此时若发送端检测到该次数据帧发送完后40个位元内无确认信号,则认为数据发送出错,发送端启动重传机制,保证数据的正确传输。

4 测试结果

4.1 传输速率和可靠性测试

测试在实验室搭建的100 m双绞线传输介质上进行,共进行多次长时间数据测试,结果见表1。

表1 总线测试结果

测试结果说明

(1) HSC-TOOL1~HSC-TOOL3为高速总线模拟节点,可设置数据发送帧长,统计接收的帧数和错误帧数,每帧数据长度255 B。

(2) LSC-TOOL为一组1 Mbit/s总线,也是1组双绞线,3个节点HSIB混绕一起,人为引入干扰,进行HSIB通道的电磁抗干扰测试。

(3) 测试时长24 h 21 min,共传输267 337 500帧数据(每帧255 B),未产生错误帧。

4.2 冲突检测及重传机制测试

主控节点控制2个仪器节点同时发送数据,进行冲突的检测和数据重传测试。经过长时间测试,示波器捕获到冲突的发生。

通过示波器捕获的波形图可以看出,D1和D2通道的2个仪器节点在某一时刻产生冲突,冲突后D2通道的仪器节点具有高优先级,立刻进行数据重传,D0通道(主控节点)正确接收,D2通道的仪器节点发送完毕后,D1通道仪器节点启动数据发送。后续传输过程中未发生冲突,冲突避免机制效果良好。

4.3 高温性能测试

HSIB模块在200 ℃高温环境下进行了高温性能测试,整个升温过程中,HSIB模块的+3.3 V电流基本保持不变,仅在200 ℃高温后有几mA的增加;+1.5 V电流基本随温度升高而升高。

在202 ℃高温下,持续测试了近7 h,+3.3 V和+1.5 V的电流基本没有发生变化,+3.3 V电流为57 mA,+1.5 V电流为35 mA,总功耗约为240 mW。

5 结 论

(1) 通过测井仪器总线平台的测试,8b/10b编解码器模块完全可以实现在100 m双绞总线上的稳定可靠的高速数据传输;高温试验证明,HSIB模块满足200 ℃测井环境的高温要求。

(2) 8b/10b编解码器不仅可以应用在井下仪器总线中,还可以应用在井下单支仪器内部,比如仪器内部探头与控制器之间的大数据量高速传输、传感器阵列的高速数据传输总线等方面。

(3) 本文设计的编解码器已经成功应用到测井系统的井下仪器总线中。测井仪器对高温的要求越来越高(耐温200 ℃以上),在成熟传输总线或受限于温度、或受限于传输速率的情况下,本文设计的8b/10b编解码器是一种优异的高温和大数据量高速传输解决方案。

参考文献:

[1] 顾庆水, 欧莽平, 张菊茜, 等. 井下测井仪器数据总线的研究与设计 [J]. 测井技术, 2015, 39(1): 90-93.

[2] 唐丽丽, 黄向东, 何刚. CAN总线在成像测井系统中的应用 [J]. 测井技术, 2004, 28(2): 164-166.

[3] 于海生. CAN总线工业测控网络系统的设计与实现 [J]. 仪器仪表学报, 2001, 22(1): 17-18.

[4] 陈文轩, 岳宏图, 陈文, 等. 网络化井下仪器数据总线研究 [J]. 测井技术, 2011, 35(6): 572-575.

[5] 耿立忠, 王鹏, 马骋, 等. RS485高速数据传输协议的设计与实现 [J]. 清华大学学报: 自然科学版, 2008, 48(8): 1311-1314.

[6] Widmer A X, Franaszek P A. A DC Balance, Partitioned-block, 8b/10b Transmission Code [J]. IBM Journal of Research and Development, 1983, 23(5): 441-443.

[7] 李宥谋. 8b/10b编码器的设计与实现 [J]. 电视技术, 2005(6): 26-30.

[8] 叶雷, 朱红. 8b/10b编解码器的IP核设计 [J]. 电子设计工程, 2005(11): 19-22.

猜你喜欢
重传测井总线
本期广告索引
无线网络中基于网络编码与Hash查找的广播重传研究
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
面向异构网络的多路径数据重传研究∗
一种基于CAN总线的误码测试方法
一种基于散列邻域搜索网络编码的机会中继重传方法
基于测井响应评价煤岩结构特征
随钻电阻率测井的固定探测深度合成方法
CAN总线并发通信时下位机应用软件设计