FPGA的LVDS介绍和xilinx原语的使用方法中文说明

发布时间 : 星期三 文章FPGA的LVDS介绍和xilinx原语的使用方法中文说明更新完毕开始阅读

// Specify the amount of added delay for input register, \\(Spartan-3E only)

.IOSTANDARD(\ // Specify the I/O standard ) IOBUFDS_inst ( .O(O), // Buffer output

.IO(IO), // Diff_p inout (connect directly to top-level port) .IOB(IOB), // Diff_n inout (connect directly to top-level port) .I(I), // Buffer input

.T(T) // 3-state enable input );

// End of IOBUFDS_inst instantiation

差分时钟组件 1)IBUFGDS

与全局时钟资源相关的原语常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、 BUFGMUX、BUFGDLL和DCM等,如图1所示。

IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。

http://www.xilinx.com/itp/xilinx6/books/data/docs/lib/lib0231_199.html

IBUFGDS原语真值表

IBUFGDS的RTL结构图

Verilog Instantiation Template

IBUFGDS instance_name (.O (user_O), .I (user_I), .IB (user_IB));

LVDS差分的在FPGA中的应用

在高速传输的过程中,经常会受到干扰而误码,因此有时候时钟输入采用差分输入的办法来提高抗干扰的能力。下面已一个二分频为例子:

二分频Verilog代码如下:

`timescale 1ns / 1ps

module div2(clk, div2_clk, rst_n); input clk; input rst_n;

output div2_clk; reg div2_clk;

always@(posedge clk or negedge rst_n) begin

if(!rst_n)

div2_clk<=0;

else div2_clk<=~div2_clk;

end

endmodule

布线布局的仿真(Post-Route Simulation)波形如下:

现在对时钟clk信号进行差分处理,对div2 module进行例化(Create Schematic Symbol)

新建一个div2_diff.sch。添加div2的module在sch上。通过搜索,把时钟缓冲差分组件IBUFGDS也放在div2_diff.sch上。

设置好clk的差分管脚,(按照Verilog命名规范)正的命名为clk_p,负的命名为clk_n。

在添加波形测试文件时要注意,Clock Information选择Multiple Clocks(因为时钟变为两个clk_p、clk_n)

下一步,把clk_p和clk_n都选上:

可以看到仿真的clk_p和clk_n都变为差分输入的了。

联系合同范文客服:xxxxx#qq.com(#替换为@)