APP下载

高速LVDS接口的FPGA设计与实现

2018-07-27刘华锋

科技视界 2018年9期
关键词:码字报文时钟

刘华锋

【摘 要】常規高速LVDS接口协议中,预置的同步序列会占用报文容量,且需在收端手工调整时钟数据对齐关系,降低了开发效率及平台间的兼容性。本文给出了一种基于8B/10B编码的,具有自动对齐功能的高速LVDS接口,并在Xilinx Virtex-7 FPGA平台上进行了接口测试,结果表明该接口可在600Mbps下稳定、可靠地传输数据。

【关键词】高速LVDS接口;8B/10B;FPGA

中图分类号: TP274.1 文献标识码: A 文章编号: 2095-2457(2018)09-0099-002

DOI:10.19694/j.cnki.issn2095-2457.2018.09.046

Design and Implementation of High Speed LVDS Interface Based on FPGA

LIU Hua-feng

(The 20th Research Institute,CETC, Xian, Shaanxi, China)

【Abstract】In the conventional high speed LVDS interface protocol, the preset synchronization sequence will occupy the message capacity, and it is necessary to align the clock and the data manually at the receiving end, which will reduce the development efficiency and the compatibility between the platforms. In this paper, a high speed LVDS interface based on 8B/10B coding is presented, with which alignment can be accomplished automatically. The interface test on the Xilinx Virtex-7 FPGA platform shows that the interface can transmit data steadily and reliably under 600Mbps.

【Key words】High speed LVDS interface;8B/10B;FPGA

0 引言

随着信息技术的进步,各行各业所产生的数据量越来越大,对数据传输速率的要求也越来越高。为了保证信号的传输质量及抗干扰特性,数字电路往往采用高速串行总线来传输高速信号。其中,现场可编程门阵列(FPGA)内部所集成的高速收发器,速率最高可达到十几个Gbps。然而,大部分数字系统中串行总线速率达到几百Mbps即可满足需求,且低端系列的FPGA芯片内部并未集成高速收发器;相比而言,低电压差分信号传输(LVDS)[1]技术具有高速率、低噪声、低功耗、低电流驱动等特点,且容易在FPGA中实现,性价比高,因此在常规高速数字传输系统中得到了广泛的应用。

LVDS是一种总线标准,在FPGA中实现LVDS总线时,一般需要自定义传输协议。对于低速业务来说(小于200Mbps),对数据进行过采并约定自定义同步序列即可完成收端数据同步及数据解析。当数据速率较高时,需要采用FPGA内部集成SelectIO资源来手工调整数据与时钟的对齐关系,以确保数据的正确传输;该方法的不足之处在于手工调整对齐关系时会导致程序可移植性差,在不同的硬件电路间无法完全通用;此外,采用自定义同步序列进行数据同步时,会占用报文信息容量,报文内部再无法传送与同步序列相同的信息。为了解决上述的问题,本文在传统LVDS实现方法的基础上,引入了8B/10B编码,设计了基于8B/10B编码的自动对齐状态机,并在Xilinx Virtex-7平台上设计实现了600Mbps的高速LVDS接口。

1 8B/10B编码及总线互联平台

1.1 8B/10B编码

8B/10B编码由IBM公司于1983年发明并应用于其200M互连系统中,该编码中的“0”、“1”数量基本一致,且连续的“0”或“1”不超过5位,因此该编码具备保持DC平衡的特性,可避免链路产生DC失调[1]。数据经过8B/10B编码后,在接收端能够被正确复原;此外,10位传送代码可以支持所有的256种8位组合,且剩余组合中的一些编码可以构成K码等特殊控制码字,用于辅助接收端进行还原,及早发现传输错误,并抑制错误继续发生。

1.2 总线互联平台

在信号处理领域,为了同时兼顾处理速度与控制便捷性,硬件平台往往采用CPU结合高性能FPGA的架构[2],本文的LVDS接口设计所基于的硬件平台架构如图1所示,该平台由一片DSP及一片Xilinx Virtex-7 FPGA组成,DSP及FPGA之间采用32位EMIF总线通信,FPGA端双口RAM对数据位宽进行转换,并通过600M LVDS高速总线通信。该平台所设计的LVDS接口是2入2出,其中一对用于传输同步时钟,另外一对用于传输高速串行数据。

该LVDS总线上运行的是自定义串行协议,8bit并行数据经过8B/10B编码、串并转换后,以DDR方式输出;对于收到的串行数据,要经过串并转换、自动对齐、8B/10B解码后方可转换为用户数据。下面对该协议的组成架构进行详细介绍,包含发送单元及接收单元。

2 发送单元

发送单元的目标是将用户数据转换成串行数据并输出,传统LVDS自定义协议中,需要占用用户数据中的特定码字以完成收端同步,这种机制会损耗用户报文容量,且链路中未含有任何编码,无法应对总线上产生的误码。为解决这一问题,本文在传输协议中引入了8B/10B编码,8B/10B编码可增加链路的抗干扰特性[3],且编码中空余的控制码字可用于收端同步,发送单元的具体实现流程如图2所示。

發送单元中,用户数据输入时,要先根据数据及使能生成K码脉冲,即在一帧数据的头部及尾部添加K码,并在添加K码的地方生成K脉冲(本文中,头部的K码为K28.5,尾部的K码为K29.7);随后,将K脉冲及数据进行8B/10B编码,编码后的数据需经过串并转换后方可输出。

FPGA内部的SelectIO资源具有强大的功能,因此,串并转换可通过FPGA内部的OSERDES资源来实现,OSERDES可配置为SDR或DDR模式,由于协议中采用的高速时钟为300M,而编码后的并行数据达到了600Mbps,故将OSERDES配置为DDR模式输出。对于Virtex- 7 系列FPGA来说,单个OSERDES仅支持8:1的数据串并转换,为了转换10bit的编码后数据,需将两个OSERDES进行级联,级联关系通过SHIFTIN及SHIFTOUT管脚控制。经过级联后,可完成对编码后数据的串并转换,串行数据及随路时钟经过单端转差分后输出至FPGA外部端口上。

3 接收单元

接收单元的目标是将线上的串行数据转换为并行用户数据并输出,其主要由时钟分频、时钟数据对齐、串并转换及8B/10B解码等模块组成,具体实现流程如图3所示。

收端收到随路时钟后,首先通过FPGA内部时钟资源BUFR将其分频为60M时钟,并应用该时钟来解析数据;但由于电路布线等外界因素的影响,收端的时钟与数据往往无法对齐[4],因此,收端的串行数据需与时钟对齐后方可解析出正确的并行数据。对于FPGA来说,应用SelectIO中的IDELAY即可调整时钟数据的对齐关系,IDELAY具备64 tap的延时单元,其延迟分辨率为参考时钟周期(5ns)的1/64,可满足本设计的延时需求。

从图3中可知,收端串行数据直接输入IDELAY,IDELAY的输出经过两级ISERDES后转换成了10bit并行数据,并行数据不仅输入了8B/10B解码模块,还输入了Bit_align_Machine模块。Bit_align_Machine模块是动态对齐的核心模块,其输出的bitslip信号可用于调整ISERDES输出的并行数据顺序,ice_delay和inc_delay信号可用于控制IDELAY的延时量。该模块首先通过动态扫眼的方式将整个通道的眼图进行覆盖测试,并恢复到眼图的中心,保证通道的传输质量;随后,检测特定训练序列的同步特性,输出bitslip信号来调整并行数据的顺序,保证并行数据的正确性[5]。本设计中采用0x346作为同步序列,该码字为8B/10B编码表中空余部分的码字,并未占用报文容量。

对齐完成后,Bit_align_Machine会将data_aligned信号拉高,此时,将并行数据进行8B/10B解码、剪除K码后即可得到正确的用户数据。

接收单元的设计避免了因手工调整延时而导致的开发效率低,在不同硬件平台间兼容性差等问题,动态调整了时钟数据的延时关系,提升了通用性。

4 平台验证

为对自定义LVDS高速接口协议进行验证,将该协议在Vivado2015.3上进行综合、布局布线并生成bit文件,将bit文件在本文1.2节所述平台上运行,通过chipscope抓取发射接收时序,结果如图4所示。

从图4中可以看出,发端用户数据添加K码后生成了K脉冲及K码数据,经过8B/10B编码后形成10bit编码数据;收端data_align信号拉高,且(下转第115页)(上接第100页)正确的进行了解码、恢复了用户数据。此外,在DSP端加载测试程序,通过大量随机数对该接口协议进行了测试,结果如图5所示。从图5中可以看出,经过2000多万包的随机数测试后,未出现丢包、错包的情况;

FPGA抓包及DSP测试结果表明:本文所设计的高速LVDS接口传输速率可达到600Mbps且功能稳定、正常。

5 结论

本文在FPGA平台上设计实现了一种基于8B/10B编码的可自动对齐LVDS高速接口协议。该协议应用编码表中剩余控制码字进行收端同步,避免了同步序列占用报文容量;且自动对齐功能能够提升开发效率及接口协议在各平台间的兼容性。测试结果表明:本文所设计的高速LVDS接口协议能够稳定、可靠的传输数据,速率可达到600Mbps。

【参考文献】

[1]Widmer A X, Franaszek P A. A DC-balanced, partitioned-block, 8B/10B transmission code[J]. Ibm J.res.develop, 1983, 27(5):440-451.

[2]王战江. 基于DSP和FPGA为核心的通信信号处理硬件平台设计[D]. 电子科技大学, 2011.

WANG Zhan-jiang. Design of communication signal processing hardware platform based on DSP and FPGA[D].University of Electronic Science and Technology of China,2011.

[3]马建国, 张禹, 刘纪洲. 图像采集系统中LVDS信号交流耦合传输设计[J]. 激光与红外, 2016, 46(11):1404-1407.

MA Jian-guo, ZHANG Yu, LIU Ji-zhou. Design of LVDS AC coupling data transmission in image collection system[J].LASER & INFRARED, 2016, 46(11):1404-1407.

[4]李向阳. 多通道LVDS的实现及传输错误处理[J]. 小型微型计算机系统, 2005, 26(8):1436-1440.

LI Xiang-yang. Multi-Channel LVDS and Transmission Error Handling[J].MINI-MICRO SYSTEMS, 2005, 26(8):1436-1440.

[5]李大鹏, 李雯, 王晓华. 基于FPGA的高速LVDS接口的实现[J]. 航空计算技术, 2012, 42(5):115-118.

LI Da-peng, LI Wen, WANG Xiao-hua. Implementation of High Speed LVDS Interface Based on FPGA[J].Aeronautical Computing Technique, 2012, 42(5):115-118.

猜你喜欢

码字报文时钟
基于J1939 协议多包报文的时序研究及应用
别样的“时钟”
古代的时钟
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
放 下
数据链系统中软扩频码的优选及应用
ATS与列车通信报文分析
时钟会开“花”
长为{4,5,6}的完备删位纠错码的存在性*