Xilinx原语详解——IBUFDS & OBUFDS

如题所述

在FPGA应用中,差分信号的使用极为普遍,例如在HDMI接口、LVDS接口的ADC、显示器等设备中。然而,FPGA内部通常仅支持单端信号。因此,为了实现单端信号与差分信号之间的相互转换,Xilinx提供了一组原语,即IBUFDS与OBUFDS。下面将详细介绍这两个原语的功能与实现。



IBUFDS详解



IBUFDS,即输入缓冲器差分信号版本,是一个专门用于接收低电压差分信号的器件。其原理框图如图1所示,包括两个输入端口I和IB,它们必须连接到极性相反的差分信号。输出端O则将输入的差分信号转换为单端信号输出。IBUFDS的真值表如图2所示,正常工作条件是I和IB端口的信号极性相反。通常情况下,不会出现两个端口电平均为高或低的状况,除非差分走线未进行等长处理,这属于硬件设计的问题。



IBUFDS对应的Verilog HDL原语模板如下,用于在设计中直接调用。



OBUFDS详解



OBUFDS,即输出缓冲器差分信号版本,主要用于将FPGA内部的单端信号转换为差分信号输出。其框图如图3所示,包括单端输入信号I和差分输出端O、OB。OBUFDS功能相对简单,真值表如图4所示。



对应于Verilog HDL原语模板,用于实现OBUFDS的功能。



IOBUFDS详解



考虑到实际应用中可能需要双向差分信号的转换,Xilinx提供了IOBUFDS,该器件能够实现双向差分转换。其框图如图5所示,T为三态使能信号,当T为低电平时,I作为FPGA输出的单端信号,而IO和IOB作为转换后的差分输出引脚。当T为高电平时,三态门关闭,此时IO作为差分输入的正极,IOB作为差分输入的负极,O作为差分输入转换后的单端输入信号。IOBUFDS的真值表如图6所示,对应Verilog HDL原语模板如图所示。



仿真与实现



为了验证IBUFDS、OBUFDS与IOBUFDS的功能,可以通过一个工程完成三个原语的仿真。设计文件将外部输入的差分信号ibufds_p和ibufds_n转换为单端信号ibufds_o,该信号通过触发器延迟一个时钟得到ibufds_o_r,然后使用OBUFDS将其转换回差分信号obufds_p和obufds_n输出。同时,通过一个三态控制信号t控制IOBUFDS的三态使能端口,实现双向信号的转换。



仿真结果如图7所示,图中对IBUFDS的四种输入取值进行了仿真,验证了其功能的正确性。对于OBUFDS和IOBUFDS的仿真结果如图8和图9所示,验证了其逻辑实现的正确性。



FPGA内部实现



在FPGA中,IBUF和OBUF的位置根据功能的不同,可以实现IBUFDS、OBUFDS、IOBUFDS等多种功能。例如,图10展示了IBUFDS两个差分输入管脚的布局,Xilinx将相邻的两个管脚配置为差分对,以实现IBUFDS的功能。图11展示了OBUFDS的实现,将两个管脚组合成差分信号,通过位于P脚的IOB模块实现OBUFDS的功能。对于IOBUFDS,其实现则更为复杂,涉及ILOGIC和OLOGIC的使用,以及考虑到三态使能信号,需要同时使用上下两条路径,如图13所示。



综上所述,通过IBUFDS、OBUFDS与IOBUFDS,Xilinx提供了一套完整的差分信号输入与输出解决方案,使得FPGA能够在多种应用场景中灵活地处理差分信号,极大地增强了其应用的广泛性和灵活性。

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜