LVDS系列13:Xilinx Ultrascale系可编程输入延迟(三)
本节讲解Ultrascale IDELAYE3的参数详细使用;
COUNT模式下使用:
不例化IDELAYCTRL,没有温度电压补偿,EN_VTC保持为低电平;
FIXED延时模式:
DELAY_TYPE设置为FIXED,该模式下DELAY_VALUE参数设置的值为抽头值,范围0~511,且配置后不能更改;
VARIABLE延时模式:
DELAY_TYPE设置为VARIABLE,该模式下选择可变抽头延迟线,用户可以通过INC和CE端口控制抽头延迟线递增或递减一个抽头,INC=1&CE=1递增,INC=0&CE=1递减;
执行步骤,确认EN_VTC=0:
1 等待至少10个时钟周期;
2 使用CE和INC端口来递增或递减延迟线;
3 等待至少5个时钟周期;
VAR_LOAD延时模式:
DELAY_TYPE设置为VAR_LOAD,该模式下可以使用INC和CE来更改延迟线,还可以通过CNTVALUEIN总线端口更改抽头延迟线,通过CNTVALUEOUT可以读取当前使用的抽头数量;
执行步骤,确认EN_VTC=0:
1 读取CNTVALUEOUT值并加载到寄存器中;
2 检查是否需要更新延迟线,也就是要更新的值是否与旧值相同,如相同就不更新;
3 计算要写入延迟线的新延迟值,延迟线每次更新的范围在1~8,如果超过8要限制到8;
4 将新的延迟值放在CNTVALUEIN总线上;
5 等待1个时钟周期,将LD置1保持1个周期, 更新值稳定1个周期后再拉高LD;
6 若要多项更新执行该项,等待5个时钟周期;
7若要多项更新执行该项,将新的延迟值放在CNTVALUEIN总线上;
8若要多项更新执行该项,等待1个时钟周期,将LD置1保持1个周期;
9若要多项更新执行该项,跳转至步骤6继续执行;
注意再COUNT模式下,初始的DELAY_VALUE以抽头数位单位;
不使用内置校准BISC,实际延迟值完全不可知,延迟线没有温度电压补偿;
延迟线最多有512个抽头,抽头总线值范围0~511;
测量和调整都以抽头数为单位来计算;
COUNT模式仿真:
FIXED模式仿真:
设置位FIXED模式,CE、INC、LOAD管脚必须置0;
COUNT模式,FIXED模式下,数据源DATAIN,DELAY_VALUE可以设置为0~511;
DELAY_VALUE设置为0:
DELAY_VALUE设置为100:
DELAY_VALUE设置为511:
其中抽头为0时,延时0.2ns,抽头为100时,延时0.7ns,抽头为511时,延时2.755ns,这里仿真中单个抽头延时为5ps,
不过这里只是仿真的结果,只是为了验证抽头生效与否,在实际运行时,整个COUNT模式下,延时是不可知的,只能知道单个抽头的延时符合之前所述的单个抽头的延时范围;
VARIABLE模式仿真:
COUNT模式,VARIABLE模式下,数据源DATAIN,DELAY_VALUE设置为0;
从抽头值0开始递增:
从抽头值0开始递减:
单次更新逻辑:
VAR_LOAD模式仿真:
COUNT模式,VAR_LOAD模式下,数据源DATAIN,DELAY_VALUE设置为0;
从抽头值0开始,每次抽头值增加100,每次抽头值更新超过8需要拆分;
单次更新100tap,拆分为多次更新8个tap:
单次更新不超过8个tap:
UPDATE_MODE参数验证:
异步和同步使用一个递减操作,从抽头0变化到抽头511进行对比查看;
手动模式与之前7系VAR_LOAD_PIPE模式功能基本相同;
ASYNC异步模式:
可以看到异步模式下,在抽头0变化到抽头511,变化前的数据沿延时0.2ns,变化后的数据沿延时2.755ns,延时在ce和inc输入有效的下一个clk时钟周期生效;
SYNC同步模式:
可以看到同步模式下,在抽头0变化到抽头511,变化前的数据沿延时0.2ns,变化后的第一个数据沿延时0.2ns,变化后的第二个数据沿延时2.755ns,延时在inc和ce属于有效后,再等到datain信号一个跳变沿才生效,所以变化后第二个沿延时生效;
下一节讲解TIME模式下的使用;
本文章由威三学社出品
对课程感兴趣可以私信联系