当前位置: 首页 > news >正文

LVDS接口总结--(5)IDELAY3仿真

仿真参考资料如下:

 https://zhuanlan.zhihu.com/p/386057087

`timescale 1 ns/1 ps
module tb_idelay3_ctrl();parameter	REF_CLK		=  2.5        ;  // 400MHzparameter	DIN_CLK	    =  3.3        ;  // 300MHzreg			                ref_clk     ;reg			                clk_din     ;reg			                rst     ;wire                        din     ;reg   [8 : 0]               cntvaluein;wire  [8 : 0]               cntalueout  ;wire                        rdy         ;wire                        dout        ;reg   [15 : 0]              test_pattern = 16'h0c55;reg   [3 : 0]               data_cnt = 4'h0;initial beginrst = 1;ref_clk = 0;clk_din = 0;#500;rst = 0;endalways #(REF_CLK/2)  ref_clk = ~ref_clk;
always #(DIN_CLK/2)  clk_din = ~clk_din;always @(posedge clk_din or posedge rst)beginif(rst)data_cnt <= 4'd0;elsedata_cnt <= data_cnt +1'd1;endassign	din = test_pattern[data_cnt];always @(posedge clk_din or posedge rst)beginif(rst)cntvaluein <= 9'd0;else if(data_cnt == 4'd15)cntvaluein <= cntvaluein +1'd1;else;endidelay3_ctrl  u_idelay_ctrl (.ref_clk    ( ref_clk       ),.rst        ( rst           ),.din        ( din           ),.cntvaluein ( cntvaluein    ),.cntalueout ( cntalueout    ),.rdy        ( rdy           ),.dout       ( dout          ));   endmodule

module idelay3_ctrl(input									ref_clk		    ,input									rst		    ,input				            	    din		    ,input       [8 : 0]                     cntvaluein  ,output      [8 : 0]                     cntalueout  ,output                                  rdy         ,output  	                            dout	     );IDELAYCTRL #(.SIM_DEVICE("ULTRASCALE")  // Set the device version for simulation functionality (ULTRASCALE)) inst_IDELAYCTRL (.RDY(rdy), 					// 1-bit output: Ready output.REFCLK(ref_clk), 	// 1-bit input: Reference clock input.RST(rst) 		// 1-bit input: Active high reset input);	IDELAYE3 #(.CASCADE("NONE"),               // Cascade setting (MASTER, NONE, SLAVE_END, SLAVE_MIDDLE).DELAY_FORMAT("TIME"),          // Units of the DELAY_VALUE (COUNT, TIME).DELAY_SRC("IDATAIN"),          // Delay input (DATAIN, IDATAIN).DELAY_TYPE("VAR_LOAD"),           // Set the type of tap delay line (FIXED, VARIABLE, VAR_LOAD).DELAY_VALUE(0),                // Input delay value setting.IS_CLK_INVERTED(1'b0),         // Optional inversion for CLK.IS_RST_INVERTED(1'b0),         // Optional inversion for RST.REFCLK_FREQUENCY(400.0),       // IDELAYCTRL clock input frequency in MHz (200.0-800.0).SIM_DEVICE("ULTRASCALE_PLUS"), // Set the device version for simulation functionality (ULTRASCALE,// ULTRASCALE_PLUS, ULTRASCALE_PLUS_ES1, ULTRASCALE_PLUS_ES2).UPDATE_MODE("ASYNC")           // Determines whe     n updates to the delay will take effect (ASYNC, MANUAL,SYNC))IDELAYE3_inst (.CASC_OUT(),       // 1-bit output: Cascade delay output to ODELAY input cascade.CNTVALUEOUT(cntalueout), // 9-bit output: Counter value output.DATAOUT(dout),         // 1-bit output: Delayed data output.CASC_IN(1'd0),         // 1-bit input: Cascade delay input from slave ODELAY CASCADE_OUT.CASC_RETURN(1'd0), // 1-bit input: Cascade delay returning from slave ODELAY DATAOUT.CE(1'b0),                    // 1-bit input: Active-High enable increment/decrement input.CLK(ref_clk),                 // 1-bit input: Clock input.CNTVALUEIN(cntvaluein[8:0]),   // 9-bit input: Counter value input.DATAIN(),           // 1-bit input: Data input from the logic.EN_VTC(!rdy),           // 1-bit input: Keep delay constant over VT.IDATAIN(din),         // 1-bit input: Data input from the IOBUF.INC(1'b0),                // 1-bit input: Increment / Decrement tap delay input.LOAD(1'b1),               // 1-bit input: Load DELAY_VALUE input.RST(1'b0)                  // 1-bit input: Asynchronous Reset to the DELAY_VALUE);endmodule

delay tap =0

127ps

delay tap =1

131ps

delay tap =2

135ps

delay tap =3

139ps

 

delay tap =100

527ps

delay tap =200

927ps

delay tap =219

1003ps

delay tap =468

1999ps

delay tap =511

2171ps

根据上表可知  delay_tap = 127 + 4N  (N的取值为0到511)

根据简单的计算可知,双沿300M数据(对应单沿600M数据),数据持续时间为1.66ns,取到中间需要0.83ns,对应177taps

http://www.lryc.cn/news/535047.html

相关文章:

  • Vue3(1)
  • 玩转适配器模式
  • 2.11寒假作业
  • untiy 冰面与地面,物理材质的影响
  • 视频编解码标准中的 Profile 和 Level
  • 通用的将jar制作成docker镜像sh脚本
  • AUTOGPT:基于GPT模型开发的实验性开源应用程序; 目标设定与分解 ;;自主思考与决策 ;;信息交互与执行
  • 异步线程中使用RestTemplate注入空指针解决
  • 2024BaseCTF_week4_web上
  • 说一下 jvm 有哪些垃圾回收器?
  • react国际化配置react-i18next详解
  • Java并发编程——上下文切换、死锁、资源限制
  • MS08067练武场--WP
  • ubuntu文件同步
  • C++23 新特性解析
  • 算法05-堆排序
  • Arrays工具类详解
  • 无人机图像拼接数据的可视化与制图技术:以植被监测为例
  • 在 debian 12 上安装 mysqlclient 报错
  • python基础入门:7.1迭代器与生成器
  • Docker 容器 Elasticsearch 启动失败完整排查记录
  • 达梦数据使用笔记
  • 操作系统中的任务调度算法
  • Linux 虚拟服务器(LVS)技术详解
  • AIoT时代来临,物联网技术如何颠覆未来生活?
  • C++17 新特性解析
  • 嵌入式软件C语言面试常见问题及答案解析(四)
  • 在 C# 中,处理 Excel 和 PDF 文件的库有很多。以下是一些比较常用的选择
  • 绩效归因概述
  • Spring Boot 中加载多个 YAML 配置文件