OSERDESE3与ODELAYE3原语

SelectIO 接口

UltraScale 架构的器件 包括三种I/O:高性能(HP), 高密度 (HD),和高量程(HR) I/O banks 。

  • HP I/O banks满足高速存储和片到片接口性能要求,电压最高1.8V。
  • HR I/O banks支持更大范围电压,电压最高3.3V。
  • HD I/O banks支持低速接口。

其中HP I/O bank中使用OSERDES传输速率可以达到1250Mb/s,ODELAYE经常与OSERDES联合使用,实现皮秒级延时。

OSERDESE3

​ OSERDESE3有两种模式:SDR和DDR。SDR模式下将2或4位并行数据串行输出,DDR模式下将4或8位并行数据串行输出。DDR模式下8位并行数据输出时序如下:

时序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBrsGnWc-1674905867324)(./pic/1.png)]

​ 其中CLK时钟频率是CLKDIV的4倍。

例化代码

OSERDESE3 #(
      .DATA_WIDTH(8),                 // 当输入是8bit并行数据是输入8
      .INIT(1'b0),                    // Initialization value of the OSERDES flip-flops
      .IS_CLKDIV_INVERTED(1'b0),      // 设置为1是CLKDIV时钟反向
      .IS_CLK_INVERTED(1'b0),         // 设置为1是CLK时钟反向
      .IS_RST_INVERTED(1'b0),         // 0为高复位,1为低复位
      .SIM_DEVICE("ULTRASCALE_PLUS")  // Set the device version for simulation functionality 
   )
   OSERDESE3_inst2 (
      .OQ(dataout),         // 输出1bit串行数据
      .T_OUT(t_out),   // 输出到IOB的三态控制端
      .CLK(clk),       // 高速时钟,8bit输入时,该时钟频率为CLKDIV的4倍
      .CLKDIV(clkdiv), // 低速时钟
      .D(data),           // 8bit并行数据输入
      .RST(rst),       //异步高复位
      .T(t_en)            //t_en控制t_out            
   ); 

ODELAYE3

ODELAYE3 原语可以对任意输出信号进行延迟。ODELAYE3原语包含512tap的延迟线。

COUNT 模式

该模式不使用IDELAYCTRL模块。延迟tap未标定,不进行温度和电压补偿。

在DELAY_VALUE 中设置taps,范围0-511。

TIME 模式

必须使用IDELAYCTRL模块。对延迟线进行标定,补偿温度和电压。IDELAYCTRL模式使用时钟与ODELAYE3时钟要一致。

属性

DELAY_FORMAT 属性

ODELAYE3原语中tap延迟有UltraScale器件手册中定义。

当DELAY_FORMAT 时TIME时。

  • 通过ODELAYCTRL模块针对电压和温度,对延迟线进行标定。
  • 当使用DELAY_TYPE使用VARIABLE或VAR_LOAD模式时,EN_VTC需要进行控制。当使用FIXED模式时,EN_VTC置1。

当DELAY_FORMAT 时COUNT时。

  • 不进行标定。不需要IDELAYCTRL模块
  • EN_VTC置0。

DELAY_VALUE属性

当DELAY_FORMAT设置成TIME模式时,DELAY_VALUE设置的值单位为ps。该模式下,写入CNTVALUEIN[8:0] 和从CNTVALUEOUT[8:0] 读取的值仍然为tap的数值。所以调整延迟线延迟时需要进行计算。

延迟类型

FIXED 模式

该模式设置固定延迟,不能动态调整。

当DELAY_FORMAT 为TIME时,EN_VTC 拉至高电平 ,进行温度电压补偿。此时DELAY_FORMAT设置值单位为ps。

当DELAY_FORMAT 为COUNT时,EN_VTC 接低电平 ,不进行温度电压补偿。此时DELAY_FORMAT设置值为tap数。

VARIABLE 模式

该模式可以通过CE和INC调整延迟。

当DELAY_FORMAT 为TIME时,调试延迟过程如下:

1、EN_VTC 置0

2、等待至少10个时钟周期

3、CE置1同时INC置1,增加延迟。CE置1同时INC置0,减少延迟。该过程可重复。

4、等待至少10个周期

5、EN_VTC 置1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wupBuKLs-1674905867325)(./pic/2.png)]

当DELAY_FORMAT 为COUNT时,EN_VTC 一直置0,调试延迟过程执行TIME模式1-4。

VAR_LOAD 模式

该模式下可以使用CNTVALUEIN写入tap置,在至少一个周期后将LOAD置1,将CNTVALUEIN写入DELAYE模块,通过CNTVALUEOUT 读取写入置是否正常。每次增加CNTVALUEIN值不要大于8,否则延迟线会发生抖动。该模式下依然可以使用INC增加或减少延迟。

设置流程如下:

1、EN_VTC 置0

2、等待至少10个时钟周期

3、CE置1同时INC置1,增加延迟。CE置1同时INC置0,减少延迟。该过程可重复。

4、设置CNTVALUEIN,至少一个周期后将LOAD置1,读取CNTVALUEOUT,判断设置是否正常。

5、等待至少10个周期

6、EN_VTC 置1

例化代码

  IDELAYCTRL #(
      .SIM_DEVICE("ULTRASCALE") 
   )
   IDELAYCTRL_inst (
      .RDY(ready1),       // 1-bit output: Ready output
      .REFCLK(clk3), // 1-bit input: Reference clock input
      .RST(sys_rst)        // 1-bit input: Active-High reset input.

   );

ODELAYE3 #(
      .CASCADE("NONE"),               // 不适用级联模式
      .DELAY_FORMAT("TIME"),          // (COUNT, TIME)选择TIME模式
      .DELAY_TYPE("VAR_LOAD"),        // (FIXED, VARIABLE, VAR_LOAD)选择VAR_LOAD
      .DELAY_VALUE(10),                // Output delay tap setting
      .IS_CLK_INVERTED(1'b0),         // 设置为1时CLK时钟反向
      .IS_RST_INVERTED(1'b0),         // 设置为1时RST高复位
      .REFCLK_FREQUENCY(200),       //(200.0-800.0)设置参考时钟频率
      .SIM_DEVICE("ULTRASCALE_PLUS"), // 
      .UPDATE_MODE("ASYNC")           // 
   )
   ODELAYE3_inst2 (
      .CASC_OUT(),       // 不使用
      .CNTVALUEOUT(cnt_value_out_test), // 9-bit output: Counter value output
      .DATAOUT(dataout),         // 延迟模块输出
      .CASC_IN(1'b0),         // 
      .CASC_RETURN(1'b0),   //
      .CE(ce),              // 高有效,与INC一起使用
      .CLK(clk),                 // 1-bit input: Clock input
      .CNTVALUEIN(cnt_value),   // 设置tap值
      .EN_VTC(en_vtc),           //TIME模式时变化,COUNT模式时置0
      .INC(inc),                 // 1时增加tap,0减少tap
      .LOAD(load),               // 1有效,导入CNTVALUEIN
      .ODATAIN(dataout),         // 信号输入
      .RST(rst)                  //高复位
   );

双向信号

当对IO进行双向操作时,除了使用OSERDESE3和ODELAYE3原语,还会用到ISERDESE3和IDELAYE3原语,ISERDESE3使用方法与OSERDESE3类似,IDELAYE3使用方法与ODELAYE3类似。如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s0e6P0Aa-1674905867326)(./pic/3.png)]

工程代码

关注公众号硬码农二毛哥,回复6,回去双向操作代码,代码中使用OSERDESE3、IDELAYE3、ISERDESE3和ODELAYE3原语。
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬码农二毛哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值