集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1084|回复: 1

基于FPGA的高速串行数据收发接口设计

[复制链接]
zxopen08 发表于 2017-7-18 10:14:17 | 显示全部楼层 |阅读模式
0 引言

    数据转换器包括模数转换(Analog-to-Digital Converter,ADC)和数模转换(Digital-to-Analog Converter,DAC),是集成电路中的重要组成部分。在数字信号处理技术发展的过程中,普通的数据转换器已难以满足用户对数据传输速率和转换速率的需求,这促使了高速ADC/DAC及其相关技术的快速发展。

    传统的采样数据多使用并行传输方式,该方式不仅使信号容易受到同步难、线间串扰大等问题的影响,还带来PCB布局布线复杂、板层多、成本高等诸多弊端。本文就该问题研究了高速串行数据传输协议——JESD204B,并基于该协议设计了一种高速数据转换器与FPGA之间的数据传输接口。最终通过以Xilinx Vertex-7系列FPGA为逻辑控制单元搭建电路进行实验测试,验证了设计的正确性和可行性。

1 JESD204B协议的优势

    互补金属氧化物半导体(Complementary Metal Oxide Semiconductor,CMOS)和低电压差分信号(Low-Voltage Differential Signaling,LVDS)是数据转换器与FPGA间常用的两种接口电平标准。其中CMOS的瞬态电流会随着数据转换率的提高而增大;LVDS的电流和功耗虽然较为平稳,但接口可支持的最高速率受到限制(仅1~2 Gb/s)[1]。因此这两种接口标准已不再能满足用户对转换器在转换速率、分辨率和更低功耗等方面的需求。

    JESD204B作为高速串行协议提供了一种高性能低功耗的接口解决方案,它的主要优势在于:简化了系统设计,使得PCB布局布线更轻松;减少了芯片引脚数量,从原来的多引脚低速并行接口升级到少引脚高速度串行接口;降低了总体成本,能够实现更小的IC封装和电路板设计,从而降低成本。基于这些优势,JESD204B特别适合一些高速应用,如4G、LTE、医学影像处理、雷达通讯等。

    目前,主流的半导体厂商都推出了支持该协议的高速数据转换器,因此针对高速数据串行传输的接口设计是非常必要的。由于FPGA具有硬件可编程性、运行速度快、性能稳定等优势,且拥有多个Bank 的高速收发器能够支持JESD204B协议,故在应用中多使用FPGA作为逻辑器件与ADC/DAC配合使用,方案架构如图1[2]。

wdz4-t1.gif

2 JESD204B协议接口结构

    JESD204B协议主要由4个部分组成,分别是物理层、链路层、传输层和应用层[3],如图2。

wdz4-t2.gif

    其中物理层用来实现高速串行数据的发送与接收、串行与并行之间的形式转换,即以比特流的形式来传输数据。本设计中使用FPGA的transceiver模块来完成物理层的功能。

    链路层主要负责对采样数据进行8b/10b解码、编码以及后续链路操作。其中,发送端数据链路层负责完成同步字符/K/=/K28.5/的产生与编码、多帧同步、链路对齐、链路同步等操作[2];接收端数据链路层负责完成向发射端请求同步信号、/K/=/K28.5/字符的检测与还原。

    传输层主要完成对发送和接收数据的格式进行相关操作。发送端传输层负责根据用户对数据格式的配置对数据重新打包,包括对采样数据添加尾码以及控制位等;而对于接收端传输层而言,是根据用户对数据格式的配置来剥离尾码及控制位,恢复出原始数据并送至总线。

3 高速串行数据传输接口设计与实现

3.1 总体设计方案

    选用Xilinx公司V7系列FPGA-XC7VX690T作为设计的逻辑控制单元,其内部集成了80组高速收发器GTH,所支持的最高线上速率为13.1 Gb/s,而JESD204B协议的传输速率上限为12.5 Gb/s,因此满足设计要求。

    为了确定时钟配置,首先要计算线上速率。设采样率为600 MS/s,每个采样数据的精度为16位,那么计算得到线上速率为(600 M×16) b/s,又因为在传输的过程中经过8 b/10 b编码,因此总的线上速率为(600 M×16) b/s/8×10=12 Gb/s,逼近了协议所能支持的最大速率。为了兼顾采样率与线上速率,将采样数据拆分为高8位与低8位,分别通过两个通道进行传输。此时单通道上的速率降为6 Gb/s,接近协议传输速率上限的一半且保证了采样率。进而依据core clk=line rate/40的关系计算出本地时钟为150 MHz。为了保证时钟信号的质量,选择由外部信号源提供600 MHz时钟信号,再由时钟芯片进行4分频产生差分时钟信号输入FPGA。最后进行链路参数设计,主要涉及到以下几个重要参数:

    L:链路中通道的个数

    F:每帧中的字节个数

    S:每个数据转换器每帧转换的样本个数

    K:每多帧中的帧数

    M:每个器件中数据转换器的数量

    因此根据之前讨论的采样率与时钟频率问题,将链路参数配置如表1所示。

wdz4-b1.gif

    数据传输方案使用高密度形式,即选择两个通道分别传送采样数据的高8位与低8位。因为每个通道缓存数据位宽为32位,故两个通道在150 MHz本地时钟下,每个周期能够传输4个采样点的信息,满足600 MS/s的采样率。

3.2 传输数据同步机制

    在数据传输过程中,无论是在发射端与接收端之间,还是两个通道之间都需要做到严格的同步才能够保证采样数据的正确传输与恢复。在JESD204B协议中,通过在不同阶段定义不同的数据帧结构来完成同步操作。在数据链路层,主要使用8 b/10 b编码规范定义的特殊字符-K码来完成链路同步以及构成数据帧[2]。在进入用户数据传输状态前,链路需经过代码组同步、初始化帧同步,过程如图3。

wdz4-t3.gif

    主要步骤包括:

    (1)接收端向发送端发送同步请求信号,即拉低SYNC信号;

    (2)发送端接收到同步请求信号后,开始向接收端连续发送/K28.5/字符;

    (3)接收端接收到至少连续4个/K28.5/字符后,取消同步请求(拉高SYNC信号),标志着代码组同步的完成,然后在下一个本地帧时钟的上升沿进入信道初始化帧同步阶段[3]。

    代码组、初始化帧结构及同步过程时序如图4。

wdz4-t4.gif

    其中, /K/字符用于首先进行的代码组同步;/R/字符标志着初始化多帧的开始;/A/字符标志着初始化多帧的结束;/Q/字符用于指示接收端,用户所配置的信息即将开始[4]。可见,通过8 b/10 b编码结合控制字不仅可以使链路得到正确的同步以便对齐,同时也为监控链路、检查错误提供了一种方法。各字符定义如下:

    /K/=/K28.5/;

    /R/=/K28.0/;

    /A/=/K28.3/;

    /Q/=/K28.4/;

3.3 数据传输方案

    正如3.2节中讨论那样,既要兼顾采样率又要考虑串行线上最大速率,因此采用如图5所示的高密度传输方案:在发射端使用两个通道分别传送采样点的高、低8位。

wdz4-t5.gif

4 实验测试结果分析

4.1 设计框架图

    实验采用FPGA自收发环路来验证所设计数据传输接口的逻辑功能,即在发送端与接收端分别使用两对差分的GTH高速串行收发器,信号从发送端输出后经隔直电容再输入至接收端,线上传输速率为6 Gb/s,本地时钟与高速串行收发器的参考时钟均为150 MHz。设计电路单板层数为8层,设计框架如图6。

wdz4-t6.gif

4.2 测试结果

    首先需要通过AXI-LITE接口分别对收发接口进行链路参数的配置,包括数据打包格式、链路选择、同步方式等,以保证数据传输链路的正确建立,其时序如图7。

wdz4-t7.gif

    为了验证传输数据的正确性与同步性,实验选择递增码作为测试码以便发现错误,假设一个采样点的位宽为16位,测试码见表2。

wdz4-b2.gif

    由于使用两个lane分别传输采样数据的高8位和低8位,而每个lane为32 bit位宽,因此在接收端得到的数据是64位。这64位数据中包含了4个样本点的信息。故将在FPGA接收端观察到的数据拆分成了4路,得到的是4路锯齿波,测试结果如图8和图9。

wdz4-t8.gifwdz4-t9.gif

    通过图8可以看出在接收端可以准确地恢复出发送的数据,无错码、乱码存在,证明了发射与接收的正确性。同时通过图9可以看出波形是相位对齐的,说明两个lane之间是同步的。

5 结束语

    高速串行传输是今后高性能ADC和DAC的发展趋势。本文通过分析串行协议JESD204B,设计了一种高速数据自收发接口,并基于Xilinx Vertex-7 FPGA 搭建实验电路,实现了数据的高速串行收发,验证了设计的正确性与有效性。本设计中的发射接口可以配合DAC使用,接收接口可以配合ADC使用,具有一定的工程应用价值。
d643189658 发表于 2017-8-11 18:37:49 | 显示全部楼层
谢谢楼主的分享
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-20 12:42 , Processed in 0.060087 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表