基于FPGA 的低成本长距离高速传输系统的设计与实现
扫描二维码
随时随地手机看文章
摘要:为解决目前高速信号处理中的数据传输速度瓶颈以及传输距离的问题,设计并实现了一种基于FPGA 的高速数据传输系统,本系统借助Altera Cyclone III FPGA 的LVDS I/O 通道产生LVDS 信号,稳定地完成了数据的高速、远距离传输。系统所需的8B/10B 编解码、数据时钟恢复(CDR)、串/并行转换电路、误码率计算模块均在FPGA 内利用VHDL 语言设计实现,大大降低了系统互联的复杂度和成本,提高了系统集成度和稳定性。
0、引言
在地质勘探、工业环境监测、大型科学实验等领域中需要将实时采集到的大量数据以较高的速率传输距离较远,复杂而庞大的数据传输任务给传输系统的设计带来极大的挑战。目前常见的远距离高速传输方案多采用较为复杂的光纤通道等方案,系统的成本、设计难度、体积和功耗都相对较大,限制了其应用场合。
LVDS(Low Voltage Differential Signaling)是一种小振幅差分信号技术,它允许单个信道传输速率达到每秒数百兆比特,其特有的低振幅及恒流源模式驱动只产生极低的噪声,消耗非常小的功率。LVDS 是目前常见的高速数据传输方案,但其多用于芯片间、背板间或设备间进行近距离的数据传输。
本文中提出的高速数据远距离传输系统方案以Altera 公司Cyclone III 系列低成本FPGA 芯片EP3C5E144C8 的为核心,以LVDS 信号为基础,通过增加信道编码、数据时钟恢复、预加重和均衡等技术,保证了数据传输的稳定性和同步性。保证采用UTP-5 双绞线为传输介质时传输速率不低于400Mbps,传输距离为50 米时上的,实现低成本的远距离高速数据传输。
1、方案总体设计
LVDS 信号一种低振幅高速差分信号,由于其电气特性决定了其传输距离有限。为了满足系统使用UTP-5 双绞线实现距离50m 的数据传输要求,需要通过增加预加重和均衡技术来恢复线路上传输的信号波形。由于传输距离较远且传输速率较高,无法直接采用传送位时钟信号和帧同步脉冲来保证系统同步。本系统采取接收端从接收数据中恢复时钟信号的方法简化系统设计方案。
系统整体设计框图如图1 所示,整个系统的核心模块包括了8B/10B 编码、CDR(时钟恢复)、并-串/串-并转换模块、LVDS 接口电路、电缆驱动器(Cable Driver)和电缆均衡器(Cable Equalizer)等。数据在发送端的FPGA 内经过8B/10B 编码,并-串转换经LVDS 模式的I/O 端口转化为LVDS 信号,然后经过线路驱动器芯片CLC001 预加重后,通过UTP-5 双绞线传出数据。接收端收到的信号经过均衡器芯片LMH0074SQ 均衡后进入FPGA,在接收端FPGA 内,数据先经过CDR 模块提取时钟信号,然后字对齐后经过串-并转换产生并行数据流,最后经过8B/10B 解码模块得到传输数据。
整个系统除电缆驱动器和电缆均衡器采用专用芯片外其它功能均在FPGA内部实现,从而极大的减小了系统的复杂度和PCB 板的面积。
图1 系统整体框图
2.FPGA 关键模块设计
FPGA 作为系统的核心芯片,根据系统整体方案的设计思路,FPGA 中含有的模块主要有信道编解码模块、数据时钟恢复模块、串/并转换模块。
2.1 信道编解码模块
在高速数据传输过程中,为了使数据时钟恢复模块中的数字锁相环能够得到足够充足的跳变沿信息,需要采用信道编解码技术消除或减少数字电信号中的直流和低频分量。8B/10B 编码是其中最常用的一种编码方式。
8B/10B 编码被广泛应用于多种高速串行通信协议中。它将8bits 的基带信号映射成10bits 的数据进行发送,防止在基带数据中过多的0 码流或1 码流。通过8B/10B 编码可以提高数据在链路上的传输的性能;使接收器可以正确地恢复时钟;提高码流中一个或者多个比特错误的检测能力;定义特定的码元使接收器能够正确地对齐码元。在本系统中分别在两块FPGA 中实现了8B/10B 编码模块和8B/10B 解码模块。
8B/10B 编码模块如图2 所示,该模块在逻辑上又分成3B/4B 编码模块、5B/6B 编码模块、RD 控制模块等3 部分。编码器首先将接收到的8B 数据分成3 bit 和5 bit 两部分,然后分别编码成4 bit 和6 bit,编码完成的4 bit 和6 bit 再按顺序组合成10B 码。整个系统首先将3 bit 编码成4 bit,RD 控制器读出4 bit 数据的RD 值,然后反馈控制5B/6B 编码模块选择合适的编码。最终RD 控制器判断10B 数据的RD 值,若满足要求则输出,否则将报错。
图2 8B/10B 编码模块逻辑框图
解码模块如图3 所示,可分为6B/5B 解码模块、4B/3B 解码模块和误码检测模块。解码模块相对编码模块而言逻辑过程要简单的多,该模块首先将10 bit 信号分割成4 bit 和6bit 两部分(高低位必须和编码端对应),然后4 bit 和6 bit 数据根据编码列表分别解码成3 bit 和5 bit,在解码过程中判断是否有误码产生有则报错,无则并行输出。
图3 8B/10B 解码模块逻辑框图
2.2.数据时钟恢复模块
在单向数据传输中,串行通信通常需要同时提供数据、位时钟、帧同步脉冲三路信号。在本系统说要求的高速率、长距离的数据传输要求下,这种三线连接方式不但浪费导线,而且往往受环境的影响很难实现三路信号间的同步。在本系统中由于输入信号频率已知,因此可以在FPGA 芯片内部产生与之同频的时钟信号。通过数字锁相环电路锁定输入信号的相位,并使用此时钟信号对输入数据进行采样,从而完成信号的接收。因而,利用数据时钟恢复模块可以从串行位流数据中恢复出接收位同步时钟、帧同步脉冲和接收的数据。
数字锁相环(DPLL)是一种相位反馈控制系统。它根据输入信号与本地估算时钟之间的相位误差对本地估算时钟的相位进行连续不断的反馈调节,从而达到使本地估算时钟相位跟踪输入信号相位的目的。DPLL 通常有三个组成模块:数字鉴相器(DPD)、数字环路滤波器(DLF)、 数控振荡器(DCO)。根据各个模块组态的不同,DPLL 可以被划分出许多不同的类型。根据设计的要求,本文采用超前滞后型数字锁相环(LL-DPLL)作为解决方案,图5 是其实现结构。在LL-DPLL 中,DPD 采用微分型超前-滞后数字鉴相器,DLF 用双向计数逻辑和比较逻辑实现,DCO 采用加扣脉冲式数控振荡器。这样设计出来的DPLL 具有结构简洁明快,参数调节方便,工作稳定可靠的优点,其结构框图如图4 所示。
图4 超前滞后型数字锁相环
环路的工作原理如下:超前滞后型数字鉴相器LL-DPD 比较输入位流数据DataIn 与本地估算时钟ClkEst 的相位,给出相位误差信号Sign 和AbsVal。DLF 对相位误差信号进行平滑滤波,并生成控制DCO 动作的控制信号Deduct 和Insert。DCO 根据控制信号给出的指令,调节内部高速振荡器的震荡频率,使其输出时钟ClkEst(同时反馈给LL-DPD)的相位跟踪输入数据DataIn 的相位。
3.板级电路设计
本系统核心芯片采用Altera 公司的Cyclone III 系列FPGA 中的EP3C5E144C8, Altera 公司的Cyclone III FPGA 系列组合了高性能,低功耗和低成本,逻辑单元(LE) 从5K 到200K,存储器从0.5Mb 到8Mb,静态功耗小于1/4 瓦.
由于设计要求达到高速率、50 米的传输距离,传统的LVDS 接口虽然可以达到较高的传输速率却不能支持长距离传输。所以本系统采用高速串行数字接口(SDI)自适应电缆均衡器及电缆驱动器芯片来实现数据高速率、长距离的传输。
预加重是在信号发送前对其进行预扭曲,以使接收器上的信号质量如同原始发送的质量。当信号在直流电平上保持超过一个比特的时间时,预加重就会抬高高频分量而降低低频分量。本文选用CLC001 电缆驱动芯片,CLC001 采用3.3V 供电,输出幅度可调,理论数据速率最高可达622Mbps 。
接收均衡通过对输入数据运用相对频率特征来补偿信号的损耗特征。本文选用LMH0074SQ 接收均衡芯片,LM0074SQ 是标准清晰度SDI 电缆均衡器,可在540 Mbps 的速度范围内操作,输出抖动典型值为0.2UI。
FPGA 外部电路如图5所示,在发送端,FPGA 产生的LVDS 信号经CLC001 预加重后通过UTP-5 双绞线传输;在接收端,信号先经过LMH0074SQ 均衡后隔直输出。由于LVDS 接口电平标准要求输入电压直流偏置为1.2V,因此需要通过偏置电路在引入1.2V 的直流偏置后再传给FPGA。
图5 FPGA 外围电路
4.数据测试及系统性能分析
4.1 系统测试方案
测试方案主要对系统的静态功耗、动态功耗以及在50 米传输距离时的数据传输速率及相应的误码率进行测试。测试方案连接框图如图6所示。测试所用数据存在发送端例化的ROM 中,接收端FPGA 中例化有FIFO 和ROM,FIFO 用来存储接收的数据,ROM 中则存储有和发送端ROM 中相同的数据,用来计算误码率。同时,在接收端FPGA 中有接收数据计数器和错误比特计数器模块,通过设置SignalTap II 的触发信号和想观察的信号,就可以在SignalTap II Logic Analyzer 的窗口中实时的看到这些信号。
图6 系统测试方案
4.2 功耗测试
本系统通过直流稳压电源供电,方便计算整个系统的功耗。经测试发现,在不同的传输速率时系统的功耗差别不大,动态功耗典型值为数据传输速率100Mbps 时,系统消耗电流0.24A,供电电压3.3V,系统功耗为792mW。静态功耗测量时,不发送数据,但保持50 米双绞线接入,电流为0.20A,供电电压为3.3V,静态功耗为660mW。
4.3 误码率测试
在发送端的FPGA 中采用ROM 来存储数据,通过状态机transmitter_fsm_3b 来控制数据的发送,状态转移图如图7上图所示。接收端则采用FIFO 来存储数据,同时接收端ROM 中存有和发送端相同的数据,以实现接受数据与原始数据的对比,计算误码率,接收端通过状态机receiver_fsm_3b 来控制数据的接收以及误码率的计算,状态转移图如图7下图所示。由于EP3C15F144C8 的RAM 大小总共只有512kbits,再加上signal tap 的开销,所以例化的ROM 和FIFO 比较小,ROM 大小为8Kbyte,内部存储数据由00H~FFH 一直重复,把一次ROM 数据的发送当成一个帧。每发送一次ROM 数据即比较一次FIFO 中与原始ROM 中的数据。重复发送20000 次,总bit 数等于20000 次*(8192*8)bit= 1469120000bit。因为接收端的数据时钟恢复和字对齐需要一定的时间,因而实际成功重复次数不到20000 次,可通过专门的计数器来确定实际重复次数。
图7 状态机状态转移图
在接收端通过SignalTap II Logic Analyzer 实时查看接收数据rx_data、错误比特数error_accumulator 和成功重复次数packet_counter,图8 为SignalTap II Logic Analyzer 接收数据的窗口显示。误码率可通过式1 求得:
误码率=错误比特数/(成功重复次数×8192×8) (1)
图8 SignalTap II Logic Analyzer 数据接收窗口显示
传输速率及相应误码率如表1 所示,在传输数据为400Mbps,传输距离为50 米是误码率仍为0。由于选用的均衡器LM0074SQ 的极限速率为540Mbps,因而在数据速率为500Mbps 时误码率急剧增大。
表1 传输速率及相应误码率
5.总结
本系统高速数据远距离传输方案以Altera 公司的Cyclone III 系列EP3C5E144C8 为核心,使用LVDS 信号传输数据,通过信道编码、数据时钟恢复、预加重和均衡等技术的使用,保证了数据传输的稳定性和同步性,在传输速率为400Mbps,传输距离为50 米时,误码率为0。可以广泛的应用于各种高速远距离数据传输的场合。
Altera 公司新推出的Cyclone IV GX FPGA 中含有8 个收发器,具有时钟数据恢复(CDR)功能,并有在片内集成可编程预加重设置和可调差分输出电压(VOD)提高了信号完整性。本文的后续工作将在Cyclone IV GX 上实现本系统的所有功能,以进一步提高数据传输速率、传输距离、误码率等指标。