基于LVDS协议的可编程高速信号模拟源设计

    董晔+徐大专+朱秋明+蒋学东+许梁津

    摘 要:设计了一种基于低压差分信号(LVDS)协议的可编程高速信号模拟源。该信号模拟源采用Xilinx公司的Spartan-3E系列现场可编程门阵列(FPGA)作为核心处理芯片,整个逻辑设计集成在一片FPGA内,包括数据生成、信号采集、缓存、并串转换以及LVDS协议数据传输与通用异步收发器控制字(UART)传输的全双工通信等功能。本设计电路结构简单、采集与发送数据速率高、传输接口通用性强且收发具有灵活的可编程性。

    关键词:信号模拟源;LVDS;UART;可编程逻辑器件

    中图分类号:TN919.3 文献标识码:A 文章编号:1673-5048(2014)05-0050-05

    0 引 言

    随着通信技术的发展,高速数字系统设计中所采用的高性能微处理器的运行速度越来越快,芯片与芯片之间、外部设备与板卡之间的传输速率也越来越高。低压差分信号(LowVoltageDifferentialSignaling,LVDS)传输技术,是一种基于ANSI/TIA/EIA-644LVDS接口标准,满足高性能数据传输应用的新型传输技术。随着用户对系统抗干扰能力、通用性、结构简化等要求,使得LVDS传输技术的优势越来越明显。LVDS拥有350mV低压差分信号以及快速过渡时间。由于电压信号幅度较低,且采用恒流源供电,因此产生的噪声极低,且不论频率高低,消耗的功率几乎不变,最高传输速率可达3.125Gbps[1-2]。

    本文设计并实现了一个基于LVDS传输协议的可编程高速信号模拟源,该模拟源采用现场可编程门阵列(FieldProgrammableGateArray,FPGA)作为核心处理单元,进行数据生成、逻辑控制和先入先出(FirstInputFirstOutput,FIFO)寄存器资源分配。用户可通过RS-232串口进行参数灵

    活配置,控制FPGA状态机的跳转,实现各种功能。

    1 硬件总体设计

    设计框图如图1所示。逻辑运算采用FPGA进行设计,因为FPGA具有重构性高、设计灵活、逻辑运算速度快、逻辑资源密度高等优点。设计的所有控制逻辑全部采用硬件电路实现,逻辑运算集成在一片FPGA中,减少外部电路的复杂度,同时也有利于降低功耗,提高电路工作效率[3]。

    其硬件设备组成如图2所示。主控FPGA芯片外部电路包括电源模块、片外存储模块和时钟模块。电源模块主要将外部提供的5V线性电源转换为FPGA以及各芯片所需的3.3V驱动电压、2.5 V辅助电压、1.2V内核电压,电源模块输出电流为1.5mA。本设计所用FPGA是基于SRAM查找表技术,掉电后其所有信息都将会丢失。因此,FPGA所需的配置数据应存储在片外的非易失性存储介质,如Flash中。待系统上电后,自动把配置数据从片外存储器加载到FPGA,这个过程即为FPGA的加载配置过程。本设计片外Flash采用的是与SpartanXC3S1200E相匹配的XCF04S芯片。系统时钟由外置30MHz晶振提供,经过DCM分频后,由FPGA分配到各个逻辑模块中,保证各个逻辑运算的时隙误差最小化。BNC接口将待测设备通过LVDS控制协议串口传输进来的信号在示波器上实时、直观地显示。

    通信接口技术是目前的一个重要发展方向,是基于软件与硬件的综合设计技术。UART串口与 LVDS协议接口控制相对简单,不需要多余的驱动即可实现数据的有效传输。

    系统工作流程如图3所示。系统上电工作时,顶层状态机进入初始状态,使能UART接收模块,准备接收PC发送过来的命令字。收到命令字后,FPGA使能UART发送模块,将命令字返回,并对命令字进行解读,进行状态机的跳转。

    可编程接口设计和LVDS协议控制设计是本设计的主要部分。可编程接口设计完成PC对FPGA的控制以及结果的采集处理;LVDS协议控制设计完成FPGA与待测设备之间数据的采集、处理、传输等功能。

    FPGA接入的时钟由30MHz晶振产生。低于6 MHz的时钟,无法通过DCM分频获得,一般通过计数分频的方式,由计数器跳转控制时钟的翻转。高于6MHz的时钟通过DCM分频所得。

    2 高速信号模拟源软件设计 2.1 可编程接口设计

    PC经通用异步收发器(UniversalAsynchronous ReceiveTransmitter,UART)对LVDS协议串口进行逻辑控制。

    UART为串行通信方式。只需要2根信号传输线(TXD、RXD)就可以完成一组数据的全双工通信。信号传输也只有2种状态,逻辑高电平(1)和逻辑低电平(0)[4]。

    由于串行数据帧与接收时钟是异步的,接收器采样频率是位时钟频率的整数倍。倍数越高,接收数据各位的分辨率越高。接收方应该在数据位跳变稳定的情况下采样,即尽可能地靠近位周期的中心处对每位采样。要求收发双方的时钟误差容限在±5%[5-7]。

    根据RS-232传输协议,本设计的数据位为8 bit,无奇偶校验位,加上起始位与停止位需10个时钟周期。波特率设定为9600。当FPGA检测到起始位的下降沿后,状态机跳转到UART接收模块,对字符接收。计数器同时从0计数,累加到1562时,对RXD线上信号进行第一次采样,此后每隔30000000/9600=3125次就采一次样,一直到字符传输完毕。计数器频率为30MHz。移位寄存器将传输的UART串行信号转换成8位并行信号,送入数据寄存器,便于FPGA对字符进行解析。完成一帧数据的接收。

    UART传输信号主要对FPGA顶层状态机进行控制,控制FPGA时钟的选择、对外传输速率的改变、数据的发送接收、并串转换等功能。LVDS协议串口共有51脚,去除电源和地,考虑收发,可以同时传输四路数据、时钟并行的信号。所以,UART字符的定义为:D0、D1,选择数据与时钟传输通道;D4、D5,选择需要传输的速率;D2传输启动信号,控制外部待测设备的开关;D3在自检诊断时使用,为高时,LVDS协议控制串口组成闭环,FPGA对闭环数据进行比对,得出诊断结果;D6、D7对待测设备返回的状态信号进行采集、存储,并向PC端传输(如图4所示)。

    根据串行通信协议格式,UART发送端口包括TXD控制器、数据寄存器、移位寄存器。数据寄存器寄存待发送的数据,包括状态信号、自检诊断结果数据、“反馈校验”的命令字符。

    UART接收模块接收到字符后,将字符原样返回,做“反馈校验”使用。FPGA对UART传输过来的命令字读取后传输给PC端进行判断,将反馈校验字符与发送字符逐位比较,若不同,PC提示板卡运行错误。“反馈校验”值为正确的时候,对命令字逐位进行解析,每位的定义由UART接收模块给出。不同的字符会产生不同的逻辑运算。除了“反馈校验”通过UART发送端输出,还有两路数据通过此输出,一路是自检诊断信号,由字符定义可知,当D3为高逻辑电平时,短接诊断通道打开,通过UART发送端口将结果传输给PC,1字节;一路是状态信号,状态信号是待测设备返回给FPGA的数据信号,当D7为高逻辑电平时,状态机跳转到状态输出模块,通过UART发送端口,将FIFO中缓存的状态信号传输给PC,直观地观察状态变化,状态信号共128字节。

    UART发送时,开始位首先发送出去,同时发送数据由数据寄存器装载到移位寄存器中,将数据以9600Hz逐位发送出去,并按照线性控制寄存器的要求加上停止位(如图5所示)。其时钟、帧结构配置和工作过程与接收模块类似,因此,发送模块也可以通过相似的状态机实现。

    2.2 LVDS协议控制实现

    LVDS协议控制工作流程如图6所示。LVDS为差分信号,一对线传输一个信号,一条线传输正信号,另一条线传输相反的电平信号,在接收端相减,这对于抑制共模噪声十分有利。差分信号线极性相反,它们耦合得越紧密,相互抵消的磁力线就越多,泄露到外界的电磁能量也就越少。

    本设计LVDS协议控制接口的功能分为提供待测设备电源和地、提供待测设备启动/停止信号、向待测设备传输数据和时钟信号、上传待测设备的状态信号以及为短接诊断提供数据通行环路。

    2.2.1 LVDS收发模块

    FPGA与待测设备之间的通信通过LVDS协议控制端口实现。FPGA可同时控制4路待测设备,每一路包含启动/停止信号、数据和时钟信号、待测设备返回的状态信号。FPGA对命令字解析后,会确定以多少速率,启动哪一路待测设备。

    时钟信号共有四路,分别对应相关的数据传输速率,10MHz,15MHz,20MHz,30MHz。四路速率均由外部30MHz晶振经过DCM分频所得。当UART传输不同的命令字时,会激发状态机的变化,为保证在命令字传输过程中,LVDS串口传输正常运作,四路传输互不干扰,可对时钟的触发信号进行锁存。因为D0、D1决定信号传输通道,D2控制待测设备的启动/停止,D4、D5决定信号传输速率,可以将这5bit控制字符联合起来,进行特定通道,特定速率的传输操作,用一个状态机对5bit信号进行锁存,这样可以分别对四路通道进行不同的控制而不会互相干扰。

    待测设备所需的启动/停止信号以及返回的状态信号不需要差分输入输出(如图7所示),FPGA与待测设备可直接通过LVDS串口进行通信。但出于对FPGA的保护考虑,FPGA与LVDS串口之间通过芯片SN74LVTN245隔离,防止LVDS串口所接的外部设备出现故障时,对FPGA造成损伤。SN74LVTN245输入输出电压保持为3.3V,通过DIR脚的高电平(发送)还是低电平(接收),可以控制信号的传输方向。

    LVDS协议串口接收待测设备传输的状态信号(如图8所示),每一路状态信号有两个输出方向,一路直接接BNC,连接到示波器上,可以直观显示状态的变化;一路通过SN74LVTN245转换后传输给FPGA进行缓存,在有需要的时候通过RS-232传输给PC。

    传输数据采用上升沿采样,以16进制0xFAF320为帧同步头,用来在读取数据的时候提供数据开始位;接着同步头的是由UART接收过来的字符,用来在单独对待测设备进行读取时可以直观核对是不是该命令字的输出结果,便于校验;后面是四字节的帧计数字节,此四字节主要用来查看在传输过程中是否有丢帧现象存在;最后是120个字节的数据位,用于查看在帧数据传输中有没有丢字节出现。一帧为128字节,1024bit数据。图10为LVDS数据和时钟信号传输图形。

    LVDS协议控制发送端数据和时钟信号为差分信号,传输介质为两对差分信号线。时钟信号与传输速率同步改变。

    2.2.2 LVDS协议自检模块

    待测设备接收数据后,通过USB将存储的数据导入PC。依据FPGA生成数据的规律,在侦测到3字节的同步头后,将后面第5~8字节的帧计数字节以及9~128字节分别剥离开来。帧计数字

    节从0开始累加,每传输一帧数据自加1,一直到16进制的0xFFFFFF后又从0开始循环。PC将帧计数字节与具有相同变化的数组进行比较,每缺少一帧计数1,算出丢帧率=丢帧数/总帧数。最后的120字节同为累加数值以16进制表示,数据00~77,依次递增。同样将其与具有相同变化的数组比较,每丢一个字节或错发一个字节,这一帧发送错误。最后与前面的帧计数字节的丢帧数一起除以总帧数可得出误码率。误码率可直观显示数据传输的性能好坏。

    对待测数据通过LVDS控制协议串口接收到的数据进行分析时,有时候会发现误码率计算与预想的不一致,却又无法确定是待测设备工作出现错误,还是FPGA测试设备工作出现错误。针对这一情况设计了LVDS自检模块。

    LVDS协议自检流程如图11所示。在自检时,将LVDS控制协议输出串口与输入串口短接,FPGA向LVDS协议串口发送的数据直接经短接头返回,FPGA采集返回的数据,并与0xFAF320逐位比对。四路通道合用一个字节,高四位为0,低四位分别对应4~1通道的诊断结果。数值正确,则输出串口工作正常信号值1;不正确,则不正确通道显示0。

    自检信号与FPGA向LVDS串口发送数据模式相反。此时LVDS主动向FPGA发送差分的数据以及时钟信号。差分信号转TTL/CMOS可以通过与DS90LV047功能相反的芯片———DS90LV048,如图12所示。

    3 结 论

    本文提出并实现了一种基于LVDS协议的可编程高速信号模拟源实现方案,该系统结构简洁、成本低、可靠性高。样机的实测结果表明,该系统能够很好地实现UART串口高速全双工通信以及LVDS的信号收发工作,适合于各类LVDS协议的数据收发设备性能测试与验证。

    参考文献:

    [1]杨翠虹,文丰,姚宗.基于LVDS的高速数据传输系统设计[J].通信技术,2010,43(9):59-61.

    [2]侯利民,苏淑靖.基于低压差分信号(LVDS)总线的数字信号源设计与实现[J].科学技术与工程,2013,13(32):9714-9718.

    [3]王敬美,杨春玲.基于FPGA和UART的数据采集器设计[J].电子器件,2009,32(2):386-390.

    [4]杨扬,叶梵,李力.基于FPGA的UART设计与实现[J].电子测量技术,2011,34(7):80-82.

    [5]李宏毅,王大明,顾雪琳,等.简化UART功能的FPGA实现[J].现代电子技术,2004(4):64-66.

    [6]牛涛,吴斌,焦凤川.基于FPGA的UART电路的设计[J].电子测量技术,2006,29(3):73-75.

    [7]王永成,党源源,徐抒岩.基于CPLD实现DSP的UART设计研究[J].电子器件,2008,31(3):1067-1072.

    根据串行通信协议格式,UART发送端口包括TXD控制器、数据寄存器、移位寄存器。数据寄存器寄存待发送的数据,包括状态信号、自检诊断结果数据、“反馈校验”的命令字符。

    UART接收模块接收到字符后,将字符原样返回,做“反馈校验”使用。FPGA对UART传输过来的命令字读取后传输给PC端进行判断,将反馈校验字符与发送字符逐位比较,若不同,PC提示板卡运行错误。“反馈校验”值为正确的时候,对命令字逐位进行解析,每位的定义由UART接收模块给出。不同的字符会产生不同的逻辑运算。除了“反馈校验”通过UART发送端输出,还有两路数据通过此输出,一路是自检诊断信号,由字符定义可知,当D3为高逻辑电平时,短接诊断通道打开,通过UART发送端口将结果传输给PC,1字节;一路是状态信号,状态信号是待测设备返回给FPGA的数据信号,当D7为高逻辑电平时,状态机跳转到状态输出模块,通过UART发送端口,将FIFO中缓存的状态信号传输给PC,直观地观察状态变化,状态信号共128字节。

    UART发送时,开始位首先发送出去,同时发送数据由数据寄存器装载到移位寄存器中,将数据以9600Hz逐位发送出去,并按照线性控制寄存器的要求加上停止位(如图5所示)。其时钟、帧结构配置和工作过程与接收模块类似,因此,发送模块也可以通过相似的状态机实现。

    2.2 LVDS协议控制实现

    LVDS协议控制工作流程如图6所示。LVDS为差分信号,一对线传输一个信号,一条线传输正信号,另一条线传输相反的电平信号,在接收端相减,这对于抑制共模噪声十分有利。差分信号线极性相反,它们耦合得越紧密,相互抵消的磁力线就越多,泄露到外界的电磁能量也就越少。

    本设计LVDS协议控制接口的功能分为提供待测设备电源和地、提供待测设备启动/停止信号、向待测设备传输数据和时钟信号、上传待测设备的状态信号以及为短接诊断提供数据通行环路。

    2.2.1 LVDS收发模块

    FPGA与待测设备之间的通信通过LVDS协议控制端口实现。FPGA可同时控制4路待测设备,每一路包含启动/停止信号、数据和时钟信号、待测设备返回的状态信号。FPGA对命令字解析后,会确定以多少速率,启动哪一路待测设备。

    时钟信号共有四路,分别对应相关的数据传输速率,10MHz,15MHz,20MHz,30MHz。四路速率均由外部30MHz晶振经过DCM分频所得。当UART传输不同的命令字时,会激发状态机的变化,为保证在命令字传输过程中,LVDS串口传输正常运作,四路传输互不干扰,可对时钟的触发信号进行锁存。因为D0、D1决定信号传输通道,D2控制待测设备的启动/停止,D4、D5决定信号传输速率,可以将这5bit控制字符联合起来,进行特定通道,特定速率的传输操作,用一个状态机对5bit信号进行锁存,这样可以分别对四路通道进行不同的控制而不会互相干扰。

    待测设备所需的启动/停止信号以及返回的状态信号不需要差分输入输出(如图7所示),FPGA与待测设备可直接通过LVDS串口进行通信。但出于对FPGA的保护考虑,FPGA与LVDS串口之间通过芯片SN74LVTN245隔离,防止LVDS串口所接的外部设备出现故障时,对FPGA造成损伤。SN74LVTN245输入输出电压保持为3.3V,通过DIR脚的高电平(发送)还是低电平(接收),可以控制信号的传输方向。

    LVDS协议串口接收待测设备传输的状态信号(如图8所示),每一路状态信号有两个输出方向,一路直接接BNC,连接到示波器上,可以直观显示状态的变化;一路通过SN74LVTN245转换后传输给FPGA进行缓存,在有需要的时候通过RS-232传输给PC。

    传输数据采用上升沿采样,以16进制0xFAF320为帧同步头,用来在读取数据的时候提供数据开始位;接着同步头的是由UART接收过来的字符,用来在单独对待测设备进行读取时可以直观核对是不是该命令字的输出结果,便于校验;后面是四字节的帧计数字节,此四字节主要用来查看在传输过程中是否有丢帧现象存在;最后是120个字节的数据位,用于查看在帧数据传输中有没有丢字节出现。一帧为128字节,1024bit数据。图10为LVDS数据和时钟信号传输图形。

    LVDS协议控制发送端数据和时钟信号为差分信号,传输介质为两对差分信号线。时钟信号与传输速率同步改变。

    2.2.2 LVDS协议自检模块

    待测设备接收数据后,通过USB将存储的数据导入PC。依据FPGA生成数据的规律,在侦测到3字节的同步头后,将后面第5~8字节的帧计数字节以及9~128字节分别剥离开来。帧计数字

    节从0开始累加,每传输一帧数据自加1,一直到16进制的0xFFFFFF后又从0开始循环。PC将帧计数字节与具有相同变化的数组进行比较,每缺少一帧计数1,算出丢帧率=丢帧数/总帧数。最后的120字节同为累加数值以16进制表示,数据00~77,依次递增。同样将其与具有相同变化的数组比较,每丢一个字节或错发一个字节,这一帧发送错误。最后与前面的帧计数字节的丢帧数一起除以总帧数可得出误码率。误码率可直观显示数据传输的性能好坏。

    对待测数据通过LVDS控制协议串口接收到的数据进行分析时,有时候会发现误码率计算与预想的不一致,却又无法确定是待测设备工作出现错误,还是FPGA测试设备工作出现错误。针对这一情况设计了LVDS自检模块。

    LVDS协议自检流程如图11所示。在自检时,将LVDS控制协议输出串口与输入串口短接,FPGA向LVDS协议串口发送的数据直接经短接头返回,FPGA采集返回的数据,并与0xFAF320逐位比对。四路通道合用一个字节,高四位为0,低四位分别对应4~1通道的诊断结果。数值正确,则输出串口工作正常信号值1;不正确,则不正确通道显示0。

    自检信号与FPGA向LVDS串口发送数据模式相反。此时LVDS主动向FPGA发送差分的数据以及时钟信号。差分信号转TTL/CMOS可以通过与DS90LV047功能相反的芯片———DS90LV048,如图12所示。

    3 结 论

    本文提出并实现了一种基于LVDS协议的可编程高速信号模拟源实现方案,该系统结构简洁、成本低、可靠性高。样机的实测结果表明,该系统能够很好地实现UART串口高速全双工通信以及LVDS的信号收发工作,适合于各类LVDS协议的数据收发设备性能测试与验证。

    参考文献:

    [1]杨翠虹,文丰,姚宗.基于LVDS的高速数据传输系统设计[J].通信技术,2010,43(9):59-61.

    [2]侯利民,苏淑靖.基于低压差分信号(LVDS)总线的数字信号源设计与实现[J].科学技术与工程,2013,13(32):9714-9718.

    [3]王敬美,杨春玲.基于FPGA和UART的数据采集器设计[J].电子器件,2009,32(2):386-390.

    [4]杨扬,叶梵,李力.基于FPGA的UART设计与实现[J].电子测量技术,2011,34(7):80-82.

    [5]李宏毅,王大明,顾雪琳,等.简化UART功能的FPGA实现[J].现代电子技术,2004(4):64-66.

    [6]牛涛,吴斌,焦凤川.基于FPGA的UART电路的设计[J].电子测量技术,2006,29(3):73-75.

    [7]王永成,党源源,徐抒岩.基于CPLD实现DSP的UART设计研究[J].电子器件,2008,31(3):1067-1072.

    根据串行通信协议格式,UART发送端口包括TXD控制器、数据寄存器、移位寄存器。数据寄存器寄存待发送的数据,包括状态信号、自检诊断结果数据、“反馈校验”的命令字符。

    UART接收模块接收到字符后,将字符原样返回,做“反馈校验”使用。FPGA对UART传输过来的命令字读取后传输给PC端进行判断,将反馈校验字符与发送字符逐位比较,若不同,PC提示板卡运行错误。“反馈校验”值为正确的时候,对命令字逐位进行解析,每位的定义由UART接收模块给出。不同的字符会产生不同的逻辑运算。除了“反馈校验”通过UART发送端输出,还有两路数据通过此输出,一路是自检诊断信号,由字符定义可知,当D3为高逻辑电平时,短接诊断通道打开,通过UART发送端口将结果传输给PC,1字节;一路是状态信号,状态信号是待测设备返回给FPGA的数据信号,当D7为高逻辑电平时,状态机跳转到状态输出模块,通过UART发送端口,将FIFO中缓存的状态信号传输给PC,直观地观察状态变化,状态信号共128字节。

    UART发送时,开始位首先发送出去,同时发送数据由数据寄存器装载到移位寄存器中,将数据以9600Hz逐位发送出去,并按照线性控制寄存器的要求加上停止位(如图5所示)。其时钟、帧结构配置和工作过程与接收模块类似,因此,发送模块也可以通过相似的状态机实现。

    2.2 LVDS协议控制实现

    LVDS协议控制工作流程如图6所示。LVDS为差分信号,一对线传输一个信号,一条线传输正信号,另一条线传输相反的电平信号,在接收端相减,这对于抑制共模噪声十分有利。差分信号线极性相反,它们耦合得越紧密,相互抵消的磁力线就越多,泄露到外界的电磁能量也就越少。

    本设计LVDS协议控制接口的功能分为提供待测设备电源和地、提供待测设备启动/停止信号、向待测设备传输数据和时钟信号、上传待测设备的状态信号以及为短接诊断提供数据通行环路。

    2.2.1 LVDS收发模块

    FPGA与待测设备之间的通信通过LVDS协议控制端口实现。FPGA可同时控制4路待测设备,每一路包含启动/停止信号、数据和时钟信号、待测设备返回的状态信号。FPGA对命令字解析后,会确定以多少速率,启动哪一路待测设备。

    时钟信号共有四路,分别对应相关的数据传输速率,10MHz,15MHz,20MHz,30MHz。四路速率均由外部30MHz晶振经过DCM分频所得。当UART传输不同的命令字时,会激发状态机的变化,为保证在命令字传输过程中,LVDS串口传输正常运作,四路传输互不干扰,可对时钟的触发信号进行锁存。因为D0、D1决定信号传输通道,D2控制待测设备的启动/停止,D4、D5决定信号传输速率,可以将这5bit控制字符联合起来,进行特定通道,特定速率的传输操作,用一个状态机对5bit信号进行锁存,这样可以分别对四路通道进行不同的控制而不会互相干扰。

    待测设备所需的启动/停止信号以及返回的状态信号不需要差分输入输出(如图7所示),FPGA与待测设备可直接通过LVDS串口进行通信。但出于对FPGA的保护考虑,FPGA与LVDS串口之间通过芯片SN74LVTN245隔离,防止LVDS串口所接的外部设备出现故障时,对FPGA造成损伤。SN74LVTN245输入输出电压保持为3.3V,通过DIR脚的高电平(发送)还是低电平(接收),可以控制信号的传输方向。

    LVDS协议串口接收待测设备传输的状态信号(如图8所示),每一路状态信号有两个输出方向,一路直接接BNC,连接到示波器上,可以直观显示状态的变化;一路通过SN74LVTN245转换后传输给FPGA进行缓存,在有需要的时候通过RS-232传输给PC。

    传输数据采用上升沿采样,以16进制0xFAF320为帧同步头,用来在读取数据的时候提供数据开始位;接着同步头的是由UART接收过来的字符,用来在单独对待测设备进行读取时可以直观核对是不是该命令字的输出结果,便于校验;后面是四字节的帧计数字节,此四字节主要用来查看在传输过程中是否有丢帧现象存在;最后是120个字节的数据位,用于查看在帧数据传输中有没有丢字节出现。一帧为128字节,1024bit数据。图10为LVDS数据和时钟信号传输图形。

    LVDS协议控制发送端数据和时钟信号为差分信号,传输介质为两对差分信号线。时钟信号与传输速率同步改变。

    2.2.2 LVDS协议自检模块

    待测设备接收数据后,通过USB将存储的数据导入PC。依据FPGA生成数据的规律,在侦测到3字节的同步头后,将后面第5~8字节的帧计数字节以及9~128字节分别剥离开来。帧计数字

    节从0开始累加,每传输一帧数据自加1,一直到16进制的0xFFFFFF后又从0开始循环。PC将帧计数字节与具有相同变化的数组进行比较,每缺少一帧计数1,算出丢帧率=丢帧数/总帧数。最后的120字节同为累加数值以16进制表示,数据00~77,依次递增。同样将其与具有相同变化的数组比较,每丢一个字节或错发一个字节,这一帧发送错误。最后与前面的帧计数字节的丢帧数一起除以总帧数可得出误码率。误码率可直观显示数据传输的性能好坏。

    对待测数据通过LVDS控制协议串口接收到的数据进行分析时,有时候会发现误码率计算与预想的不一致,却又无法确定是待测设备工作出现错误,还是FPGA测试设备工作出现错误。针对这一情况设计了LVDS自检模块。

    LVDS协议自检流程如图11所示。在自检时,将LVDS控制协议输出串口与输入串口短接,FPGA向LVDS协议串口发送的数据直接经短接头返回,FPGA采集返回的数据,并与0xFAF320逐位比对。四路通道合用一个字节,高四位为0,低四位分别对应4~1通道的诊断结果。数值正确,则输出串口工作正常信号值1;不正确,则不正确通道显示0。

    自检信号与FPGA向LVDS串口发送数据模式相反。此时LVDS主动向FPGA发送差分的数据以及时钟信号。差分信号转TTL/CMOS可以通过与DS90LV047功能相反的芯片———DS90LV048,如图12所示。

    3 结 论

    本文提出并实现了一种基于LVDS协议的可编程高速信号模拟源实现方案,该系统结构简洁、成本低、可靠性高。样机的实测结果表明,该系统能够很好地实现UART串口高速全双工通信以及LVDS的信号收发工作,适合于各类LVDS协议的数据收发设备性能测试与验证。

    参考文献:

    [1]杨翠虹,文丰,姚宗.基于LVDS的高速数据传输系统设计[J].通信技术,2010,43(9):59-61.

    [2]侯利民,苏淑靖.基于低压差分信号(LVDS)总线的数字信号源设计与实现[J].科学技术与工程,2013,13(32):9714-9718.

    [3]王敬美,杨春玲.基于FPGA和UART的数据采集器设计[J].电子器件,2009,32(2):386-390.

    [4]杨扬,叶梵,李力.基于FPGA的UART设计与实现[J].电子测量技术,2011,34(7):80-82.

    [5]李宏毅,王大明,顾雪琳,等.简化UART功能的FPGA实现[J].现代电子技术,2004(4):64-66.

    [6]牛涛,吴斌,焦凤川.基于FPGA的UART电路的设计[J].电子测量技术,2006,29(3):73-75.

    [7]王永成,党源源,徐抒岩.基于CPLD实现DSP的UART设计研究[J].电子器件,2008,31(3):1067-1072.