IDELAY
用户IO管脚的输入通路都有一个IDELAY模块,可用于数据信号或时钟信号,使二者同步,实现准确采集输入数据.IDELAY具有可控的64抽头延迟线,每个抽头的延迟都是经过精密校准的78ps(这个不同的芯片应该不同),且与进程,电压和温度特性无关.可弥补PCB的布线长度不一致带来的延时不同的问题.
信号说明:
I:单比特输入信号,来自于IOB 的串行输入数据; C:单比特输入信号,时钟输入信号; INC:单比特输入信号,用于增加或减少延迟抽头数; CE:单比特输入信号,使能延迟抽头数增加或减少的功能; RST:单比特输入信号,复位延迟链的延迟抽头数,如果没有编程输入则为0; O:单比特输出信号。
Eg. IDELAY#(
.IOBDELAY_TYPE(“DEFAULT”),
.IOBDELAY_VALUE(0) //输入延迟周期,可设置0—63
) IDELAY_inst(
.O(data_o),
.C(c),
.CE(ce),
.I(data_i),
.INC(inc),
.RST(rst)
);
OBUFDS
将标准单端信号转换成差分信号,输出端口需要直接对应到顶层模块的输出信号.与IBUFDS为一对互逆操作.
Eg. OBUFDS #( .IOSTANDARD("DEFAULT") // 指名输出端口的电平标准 ) OBUFDS_inst ( .O(O), // 差分正端输出,直接连接到顶层模块端口 .OB(OB), // 差分负端输出,直接连接到顶层模块端口 .I(I) // 缓冲器输入 );
IOBUF
单端双向缓冲器,其IO接口必须和指定的电平标准相对应,支持LVTTL,LVCOMS12, LVCMOS18, LVCMOS25以及33等信号标准.同时还可通过DRIVE, FAST以及SLOW等约束来满足不同驱动和抖动速率的需求.默认的驱动能力是12mA,低抖动. IOBUF由IBUF和OBUFT两个基本组件构成,当IO端口为高阻时,其输出口O为不定态.
Eg. // Xilinx HDL 库向导版本,ISE 9.1 IOBUF #( .DRIVE(12), // 指定输出驱动的强度 .IOSTANDARD("DEFAULT"), // 指定I/O 电平的标准,不同的芯片支持的接口电平可能会有所不同 .SLEW("SLOW") // 制定输出抖动速率 ) IOBUF_inst ( .O(O), // 缓冲器的单元输出 .IO(IO), // 缓冲器的双向输出 .I(I), // 缓冲器的输人 .T(T) // 3 态使能输入信号 );
PULLDOWN / PULLUP
IO口内部上位或下位.上位是为了解决总线驱动能力不足时提供电流的,下拉电阻是用来吸引电流的.
Eg. PULLDOWN pulldown_inst( .O(data_o) );
PULLUP pullup_inst( .O(data_o) ); |