找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于FPGA的低成本长距离高速传输系统的设计与实现

[复制链接]
admin 发表于 2013-3-27 18:48:39 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 借助Altera Cyclone III FPGA的LVDS I/O通道产生LVDS信号,稳定地完成了数据的高速、远距离传输。系统所需的8B/10B编解码、数据时钟恢复(CDR)、串/并行转换电路、误码率计算模块均在FPGA内利用VHDL语言设计实现,大大降低了系统互联的复杂度和成本,提高了系统集成度和稳定性。
关键词: 数据传输;高速;远距离;FPGA;LVDS
       在地质勘探、工业环境监测、大型科学实验等领域中需要将实时采集到的大量数据以较高的速率传输较远距离,复杂而庞大的数据传输任务给传输系统的设计带来极大的挑战。目前常见的远距离高速传输方案多采用较为复杂的光纤通道等方案,系统的成本、设计难度、体积和功耗都相对较大,限制了其应用场合。
     本文提出的高速数据远距离传输系统方案以Altera公司Cyclone III系列低成本FPGA芯片EP3C5E144C8为核心,以LVDS信号为基础,通过增加信道编码、数据时钟恢复、预加重和均衡等技术,保证了数据传输的稳定性和同步性,确保采用UTP-5双绞线为传输介质时传输速率不低于400 Mb/s,传输距离为50 m以上,实现低成本的远距离高速数据传输。
1 方案总体设计
     LVDS(Low Voltage Differential Signaling)是一种低振幅高速差分信号,其电气特性决定了其传输距离有限。为了满足系统使用UTP-5双绞线实现距离50 m的数据传输要求,需要通过增加预加重和均衡技术来恢复线路上传输的信号波形。由于传输距离较远且传输速率较高,所以无法直接采用传送位时钟信号和帧同步脉冲来保证系统同步。本系统采取接收端从接收数据中恢复时钟信号的方法简化系统设计方案。
     系统整体设计框图如图1所示,系统的核心模块包括了8 B/10 B编码、CDR(时钟恢复)、并-串/串-并转换模块、LVDS接口电路、电缆驱动器(Cable Driver)和电缆均衡器(Cable Equalizer)等。数据在发送端的FPGA内经过8 B/10 B编码,并-串转换经LVDS模式的I/O端口转化为LVDS信号,然后经过线路驱动器芯片CLC001预加重后,通过UTP-5双绞线传出数据。接收端收到的信号经过均衡器芯片LMH0074SQ均衡后进入FPGA,在接收端FPGA内,数据先经过CDR模块提取时钟信号,然后字对齐后经过串-并转换产生并行数据流,最后经过8 B/10 B解码模块得到传输数据。
    20121107044824533242401.gif
       系统除电缆驱动器和电缆均衡器采用专用芯片外,其他功能均在FPGA内部实现,从而极大地减小了系统的复杂度和PCB板的面积。
2 FPGA关键模块设计
2.1 信道编解码模块

     在高速数据传输过程中,为了使数据时钟恢复模块中的数字锁相环能够得到足够充足的跳变沿信息,需要采用信道编解码技术消除或减少数字电信号中的直流和低频分量。8 B/10 B编码是其中最常用的一种编码方式。
     8 B/10 B编码被广泛应用于多种高速串行通信协议中。它将8 bit的基带信号映射成10 bit的数据进行发送,防止在基带数据中过多的0码流或1码流。通过8 B/10 B编码可以提高数据在链路上的传输性能;使接收器可以正确地恢复时钟;提高码流中一个或者多个比特错误的检测能力;定义特定的码元使接收器能够正确地对齐码元[1]。在本系统中分别在两块FPGA中实现了8 B/10 B编码模块和8 B/10 B解码模块。
     8 B/10 B编码模块如图2所示,该模块在逻辑上又分成3 B/4 B编码模块、5 B/6 B编码模块、RD控制模块等3部分。编码器首先将接收到的8 B数据分成3 bit和5 bit两部分,然后分别编码成4 bit和6 bit,编码完成的4 bit和6 bit再按顺序组合成10 B码。整个系统首先将3 bit编码成4 bit,RD控制器读出4 bit数据的RD值,然后反馈控制5 B/6 B编码模块选择合适的编码。最终RD控制器判断10 B数据的RD值,若满足要求则输出,否则将报错。
    20121107044824673862402.gif
       解码模块如图3所示,可分为6 B/5 B解码模块、4 B/3 B解码模块和误码检测模块。解码模块相对编码模块而言逻辑过程要简单,该模块首先将10 bit信号分割成4 bit和6 bit两部分(高低位必须和编码端对应)。然后,4 bit和6 bit数据根据编码列表分别解码成3 bit和5 bit,在解码过程中判断是否有误码产生,有则报错,没有则并行输出。
    20121107044824720732403.gif
   2.2 数据时钟恢复模块
     在单向数据传输中,串行通信通常需要同时提供数据、位时钟、帧同步脉冲三路信号[2]。在本系统所要求的高速率、长距离的数据传输要求下,这种连接方式不但浪费导线,而且受环境影响很难实现三路信号间的同步。利用数据时钟恢复模块可以从串行位流数据中恢复出接收位同步时钟、帧同步脉冲和接收的数据。
     数字锁相环(DPLL)是一种相位反馈控制系统[3]。它根据输入信号与本地估算时钟之间的相位误差对本地估算时钟的相位进行连续不断的反馈调节,从而使本地估算时钟相位跟踪输入信号相位。DPLL通常由3个模块组成:数字鉴相器(DPD)、数字环路滤波器(DLF)、 数控振荡器(DCO)。根据各个模块组态的不同,DPLL可以被划分出许多不同的类型。根据设计的要求,本文采用超前滞后型数字锁相环(LL-DPLL)作为解决方案,图4是其实现结构。在LL-DPLL中,DPD采用微分型超前-滞后数字鉴相器,DLF用双向计数逻辑和比较逻辑实现,DCO采用加扣脉冲式数控振荡器。这样设计出来的DPLL具有结构简洁明快、参数调节方便、工作稳定可靠的优点[2]。
    20121107044824751982404.gif
   3 板级电路设计
     由于设计要求达到高速率、50 m的传输距离,传统的LVDS接口虽然可以达到较高的传输速率,但不能支持长距离传输,所以本系统采用高速串行数字接口(SDI)自适应电缆均衡器及电缆驱动器芯片来实现数据高速率、长距离的传输。
     预加重是在信号发送前对其进行预扭曲,以使接收器上的信号质量如同原始发送的质量。当信号在直流电平上保持超过一个比特的时间时,预加重就会抬高高频分量而降低低频分量。本文选用CLC001电缆驱动芯片,CLC001采用3.3 V供电,输出幅度可调,理论数据速率最高可达622 Mb/s[4]。
     接收均衡通过对输入数据运用相对频率特征来补偿信号的损耗特征。本文选用LMH0074SQ接收均衡芯片,LM0074SQ是标准清晰度SDI电缆均衡器,可在540 Mb/s的速度范围内操作,输出抖动典型值为0.2UI[5]。
     FPGA外部电路如图5所示。在发送端,FPGA产生的LVDS信号经CLC001预加重后通过50 m UTP-5双绞线传输;在接收端,信号先经过LMH0074SQ均衡后隔直输出。由于LVDS接口电平标准要求输入电压直流偏置为1.2 V,因此需要通过偏置电路引入1.2 V的直流偏置后再传给FPGA。
    20121107044824767612405.gif
   4 数据测试及系统性能分析
4.1 系统测试方案

     测试方案主要对系统的静态功耗、动态功耗以及在50 m传输距离时的数据传输速率及相应的误码率进行测试。测试方案连接框图如图6所示。测试所用数据存在发送端例化的ROM中,接收端FPGA中例化有FIFO和ROM,FIFO用来存储接收的数据,ROM中则存储和发送端ROM中相同的数据,用来计算误码率。同时,在接收端FPGA中有接收数据计数器和错误比特计数器模块,通过设置SignalTap II的触发信号和欲观察的信号,就可以在PC机端的Quartus II软件中的SignalTap II Logic Analyzer窗口中实时看到这些信号。
    20121107044824798862406.gif
   4.2 功耗测试
     本系统通过直流稳压电源供电,以方便计算整个系统的功耗。经测试发现,在不同的传输速率时系统的功耗差别不大,动态功耗典型值为数据传输速率100 Mb/s时,系统消耗电流0.24 A,供电电压3.3 V,系统功耗为792 mW。静态功耗测量时,不发送数据,但保持50 m双绞线接入,电流为0.20 A,供电电压为3.3 V,静态功耗为660 mW。
4.3 误码率测试
     由于EP3C15F144C8的RAM只有512 Kbit,再加上Signal Tap的开销,所以例化的ROM和FIFO比较小,ROM大小为8 KB,内部存储数据由00H~FFH一直重复,把一次ROM数据的发送当成一个帧。每发送一次ROM数据即比较一次FIFO中与原始ROM中的数据。重复发送20 000次,总数据量等于20 000次×(8 192×8)bit=1 469 120 000 bit。因为接收端的数据时钟恢复和字对齐需要一定时间,因而实际成功重复次数不到20 000次,可通过专门的计数器来确定实际重复次数。
     在SignalTap II Logic Analyzer中,设置触发信号为系统倍频后的主时钟,在接收端通过SignalTap II Logic Analyzer实时查看接收数据rx_data、错误比特数error_accumulator和成功重复次数packet_counter,图7为SignalTap II Logic Analyzer接收数据的窗口显示。误码率可通过下式求得:
     误码率=错误比特数/(成功重复次数×8 192×8)      (1)
   
       传输速率及相应误码率如表1所示,在传输数据为400 Mb/s、传输距离为50 m时误码率仍为0。由于选用均衡器LM0074SQ的极限速率为540 Mb/s,因而在数据速率为500 Mb/s时误码率急剧增大。
    20121107044824845732408.gif
       Altera公司新推出的Cyclone IV GX FPGA中含有8个收发器,具有时钟数据恢复(CDR)功能,并在片内集成了可编程预加重设置和可调差分输出电压(VOD),提高了信号完整性。后续工作是在Cyclone IV GX上实现本系统的所有功能,以进一步提高数据传输速率、传输距离、误码率等指标。
参考文献
[1] 杨云,邓元庆.基于VHDL的双校验位8B10B编解码系统设计[J].以太网,2005(11).
[2] 李新昌,吴嗣亮,王旭.数字锁相环技术在恢复位时钟中的应用[J].军民两用技术与产品,2004(2).
[3] 胡华春,石玉.数字锁相环原理与应用[M].上海:上海科学技术出版社,1990.
[4] CLC001 datasheet.http://www.datasheet5.com/view-69E97D583C975C48.html.
[5] LMH0074SQ datasheet.http://www.datasheet5.com/view-3ED52CB88D36BEC8.html.
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-31 03:26 , Processed in 0.072048 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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