基于FPGA的总线型LVDS通信系统设计

2007-03-09 19:03:27来源: 互联网
摘要:总线型低压差分信号(BLVDS)是一种性能优良的物理层接口标准。本文介绍一种基于总线型LVDS的通信系统方案,以及利用FPGA芯片实现系统核心模块的设计方法。该方案可广泛使用在高速通信领域,具有较高的应用价值。 关键词:BLVDS FPGA 串化 解串 高速通信 低压差分信号LVDS(Low Voltage Differential Signal)是由ANSI/TIA/EIA-644-1995定义的用于高速数据传输的物理层接口标准。它具有超高速(1.4Gb/s)、低功耗及低电磁辐射的特性,是在铜介质上实现千兆位级高速通信的优先方案;可用于服务器、可堆垒集线器、无线基站、ATM交换机及高分辨率显示等等,也可用于通信系统的设计。BLVDS(Bus LVDS)是LVDS技术在多点通信领域的扩展,要求附加总线仲裁设计、更大的驱动电流(10mA)和更好的阻抗匹配设计。 通常是LVDS电路设计使用各种专用芯片,如美国国家半导体公司的DS92LV16等。我们用FPGA芯片自行设计BLVDS内核及扩展部分。相比之下,使用FPGA可大幅减少芯片数量,降低成本,提高系统可靠性,同时具有更大的灵活性和向后兼容性。由于目前尚无实用的16位VLVDS收发器芯片问世,本设计也填补了专用芯片(ASIC)的空白。 我们最终选了Xilinx公司的XCV50E。此芯片属于Virtex-E系列,具有如下特性: *0.18nm 6层金属工艺,具有5.8万个系统门; *使用1.8V核心电压,低功耗设计; *130MHz同部时钟; *64KB的同步块同存(BlockRAM),可实现真正的双口操作; *支持包括LVDS、BLVDS在内的20种高性能接口标准; *8个全数字的延迟锁定环DLL(Delay Locked Loops),具有时钟移相和乘除功能; *支持IEEE 1149.1边界扫描标准,具有基于SRAM的在系统配置功能。 我们使用Xilinx Foudation F3.1i软件开发XCV50E芯片。设计流程为:首先用编写VHDL语言程序、绘制原理图或设计状态机的方法生成网络表,功能仿真正确后,经过翻译、映射、放置和布线、时序优化及配置过程,生成比特流文件。然后,进行时序仿真,仿真通过后下载到PROM中。(我们用了Xilinx公司的XC18V01。) 1 结构及工作过程 1.1 系统结构和FPGA结构 本通信系统由背板和若干通信子卡组成。背板并更有8个插槽,并布有BLVDS总线和其它控制、地址总线。通信子卡由EP7211芯片(负责数据处理)、XCV50E及DRAM、PROM等外围芯片和元件组成,系统结构如图1所示。 设计完成后的XCV50E由控制部分、发送FIFO、帧编码器、串化器、解串器、帧解码器、数据检出器、接收FIFO、时钟倍频器及输入输出单元等部分组成,结构如图2所示。 1.2 工作过程 在发送子卡中,EP7211将待发数据整理成多个长255字,字宽16位的数据帧,发至FPGA内的发送FIFO中。该FPGA得到总线控制权后,即发送同步帧(由同步字与填充字组成),待被寻址的接收子卡实现与自己的同步后,再发送数据帧。各帧数据经串化器转化为两对差分信号,并从中获得同步信息并实现同步,继而检出有效数据,写入接收FIFO,同时以快中断(FIQ)通知EP7211。 2 软件设计 2.1 EP7211程序设计 通信子卡内的EP7211为系统级芯片,用来预处理和接收数据。EP7211的内核为ARM7TDMI,使用32位精简指令。发送数据的流程如图3所示。接收较简单,只需在快中断(FIQ)服务程序中写入接收FIFO的读取代码即可。 2.2 FPGA设计 FPGA的设计中,发送及接收FIFO的设计用了双口快内存(Block RAM),时钟倍频器用了延迟锁定环(DLL)。帧解码器由30位并行数据产生器、同步字检测阵列和接收状态机组成。以下重点介绍帧编码器和串化器的设计。 (1)帧编码器的VHDL语言设计 帧编码器包括一个长为256的计数器和一个四状态的单热点状态机,用以产生同步帧和数据帧。部分代码如下: PROCESS(RESET,CLK) //产生长256的计数器 IF RESET="1"THEN COUNT<=0; ELSIF CLK"EVENT AND CLK="1" THEN COUNT<=(COUNT+1)MOD 256; END PROCESS; TC<="1"WHEN COUNT=255 ELSE "0"; TYPE STATE_TYPE IS(IDLE,PACK1,PACK2,TRANSMIT); SIGANL SREG:SETAT_TYPE; RPOCESS(CLK,RESET) //状态机进程 IF CLK"EVENT AND CLK="1"THEN IF RESET=1 TEHE SREG<=IDLE ELSE CASE SREG IS WHEN IDLE=> IF SEND_UD="1"THEN SREG<=TRANSMIT; //空闲状态如有发送命令,即转入发送状态 ELSE SREG<=PACK1; //否则,发送填充字1 WHEN PACK1=> (后略) (2)串化器的原理设计 串化器由多级嵌套的子图和若干宏模块组成,原理图的顶层图如图4所示。四个四位并入串出寄存器将16位并行数据拆分为四组串行数据,其中的奇数位和偶数位分别通过一个双数据速率寄存器,得到两个差分信号,同时用另一个双数据速率寄存器产生与之同步的差分时钟。其中,双数据速率寄存器为时序敏感器件,其内部主要部分都加入了时序特性限制,如最大时滞(maxdelay)、最大抖动(maxskew),并用FMAP控件强制性地把相关信号放入同一个函数产生器中。 图4 串化器原理图 3 硬件设计要点 ①BLVDS信号的偏置电压为1.25V,电压摆幅只有350mV,传输速率≥100Mb/s;因此,电路板制作至关重要,要求至少使用四层板。 ②为使干扰信号只以供模方式加到差分线对上(不影响数据正确性),要求差分线对间的距离尽可能小。BLVDS标准要求差分阻抗为100Ω,由公式: 给出。其中,ZDIF为差分线对的差分阻抗,εR为印制板介电常数,δ为信号层到电源层的厚度,b为导线宽度。本电路选用的线距及线宽均为0.18mm。 ③考虑到阻抗不匹配引起的信号反射和导线的电导效应,要求XCV50E芯片的差分引脚尽可能地靠近子卡的边缘连接器(≤1.52cm),并给每个差分引脚串联一个20Ω的贴片电阻。 ④电源方面:Virtex芯片上电时要求有大于500mA的驱动电流,同时,由于多个输出引脚的电位快速变化,要求每对电源和地引脚都要良好旁路。 4 结论 当使用40MHz的外部时钟时,BLVDS总线上的传输速率为120Mb/s,成功实现了多个通信子卡间的高速数据通信。现在,我们正将该通信系统移植到我单位与胜利油田联合研制的SL-6000型高分辨率综合测井系统上。
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/eda/200703/11106.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved