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

LVDS系列8:Xilinx 7系可编程输入延迟(一)

在解析LVDS信号时,十分重要的一环就是LVDS输入信号线在经过PCB输入到FPGA中后,本来该严格对齐的信号线会出现时延,所以需要在FPGA内部对其进行延时对齐后再进行解析。
Xilinx 7系器件中用于输入信号延时的组件为IDELAYE2可编程原语,通过可以编程的32抽头延迟线、环绕式延迟实现信号延迟。
原语可用于组合输入路径、寄存器输入路径、FPGA逻辑直接访问;可以对单个输入引脚进行信号延迟。原语的抽头延迟分辨率也就是延时精度由IDELAYCTRL原语控制。

 IDELAYE2框图:
在这里插入图片描述
 IDELAYE2例化:
(* IODELAY_GROUP = <iodelay_group_name> *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL

IDELAYE2 #(
.CINVCTRL_SEL(“FALSE”), // Enable dynamic clock inversion (FALSE, TRUE)
.DELAY_SRC(“IDATAIN”), // Delay input (IDATAIN, DATAIN)
.HIGH_PERFORMANCE_MODE(“FALSE”), // Reduced jitter (“TRUE”), Reduced power (“FALSE”)
.IDELAY_TYPE(“FIXED”), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
.IDELAY_VALUE(0), // Input delay tap setting (0-31)
.PIPE_SEL(“FALSE”), // Select pipelined mode, FALSE, TRUE
.REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
.SIGNAL_PATTERN(“DATA”) // DATA, CLOCK input signal
)
IDELAYE2_inst (
.CNTVALUEOUT(CNTVALUEOUT), // 5-bit output: Counter value output
.DATAOUT(DATAOUT), // 1-bit output: Delayed data output
.C©, // 1-bit input: Clock input
.CE(CE), // 1-bit input: Active high enable increment/decrement input
.CINVCTRL(CINVCTRL), // 1-bit input: Dynamic clock inversion input
.CNTVALUEIN(CNTVALUEIN), // 5-bit input: Counter value input
.DATAIN(DATAIN), // 1-bit input: Internal delay data input
.IDATAIN(IDATAIN), // 1-bit input: Data input from the I/O
.INC(INC), // 1-bit input: Increment / Decrement tap delay input
.LD(LD), // 1-bit input: Load IDELAY_VALUE input
.LDPIPEEN(LDPIPEEN), // 1-bit input: Enable PIPELINE register to load data input
.REGRST(REGRST) // 1-bit input: Active-high reset tap-delay input
);

 IDELAYE2例化端口:
在这里插入图片描述
端口列表如上图:
C:时钟输入,原语的所有控制输入(如REGRST、LD、CE、INC)都与该时钟输入同步。当该原语配置为VARIABLE, VAR_LOAD和VAR_LOAD_PIPE模式时,该端口必须连接有效时钟。且该时钟必须由全局或区域时钟缓冲器提供。
REGRST:寄存器同步复位信号,当复位置1时,将原语内部流水线寄存器置0,仅在
VAR_LOAD_PIPE模式下使用。
LD:加载抽头值,LD端口置1有效,且与输入时钟C同步;
在VARIABLE模式下,IDELAY置高LD端口会加载IDELAY_VALUE参数端口设置的抽头值作为新的延时值,此时LD端口可当作IDELAY的复位信号,拉高LD后延时抽头值将设置为IDELAY_VALUE参数的值。
在VAR_LOAD模式下,IDELAY会加载由CNTVALUEIN端口设置的抽头值作为新的延时值。
在VAR_LOAD_PIPE模式下,IDELAY会加载当前在流水线寄存器中的抽头值作为新的延时值。
CE:控制INC端口作为抽头值增量或减量的使能,就是CE有效,INC端口的值才能生效。且该端口只在VARIABLE, VAR_LOAD, VAR_LOAD_PIPE这三个模式下使用。
INC:抽头延迟的增量减量,搭配CE使用,只有当CE为高时,INC才有效,当CE为低时INC值不起作用,其中INC=1时抽头值递增,INC=0时抽头值递减,且INC和CE都与时钟C同步,且当CE保持高,每个C的时钟周期,根据INC的值设置,抽头值会在下一个时钟C的上升沿开始进行抽头值的递增递减操作;
IDELAYE2原语的可编程延迟抽头会执行环绕操作,原语的延迟抽头值为0~31共32个数,环绕是指当抽头值当前到达边界,如0或31,在0时如果递减,抽头值将变为31,在31时如果递增,抽头值将变为0;
且信号的延时也只有32个选项,例如对一个信号从延时抽头值0开始一直做INC递增的延时操作,当抽头值到达31,递增1后,抽头值到0,此时这个抽头值0的信号延时与最开始抽头值初始为0的延时是相同的,而不是指从31递增到0后,信号延时在延时抽头值31的延时基础上又往后延迟了一个抽头的延时,这就是该原语的环绕操作。
CINVCTRL:动态控制输入时钟C的极性,且在切换极性时,两个时钟周期内不要控制IDLEAY原语的控制端口。
CNTVALUEIN:用于动态切换加载的抽头值。
IDATAIN:IDATAIN端口输入来自IOB,该输入数据由IOB中的IBUF驱动,也就是FPGA的管脚输入的信号,对FPGA的外部输入信号作延时。
DATAIN:DATAIN端口输入来自FPGA逻辑,该端口为内部逻辑提供了可访问的延迟线。
LDPIPEEN:流水线寄存器加载,当该端口为1时,会把当前CNTVALUEIN引脚上的抽头值加载到管道寄存器中。
DATAOUT:来自两个数据输入端口的延迟数据,延时后的输出数据线可以连接到ILOGIC、ISERDES组件或是FPGA逻辑。
CNTVALUEOUT:该端口用于报告此时输出的延迟数据加载的延迟抽头值。

 IDELAYE2例化参数:
在这里插入图片描述
在这里插入图片描述
上图为原语的例化参数:
IDELAY_TYPE:设置IDELAY原语的延迟的工作模式,有FIXED, VARIABLE, VAR_LOAD,
VAR_LOAD_PIPE四种可选模式;
设置为FIXED模式时,抽头延迟值由参数IDELAY_VALUE的值确定,且该值是预设的,配置后无法更改;
设置为VARIABLE模式时,抽头延迟可选,设置CE=1和INC=1增加抽头延迟,设置CE=1和INC=0减少抽头延迟,递增递减操作与C时钟同步;
设置为VAR_LOAD模式时,置高LD端口,原语将立即加载CNTVALUEIN端口的值作为新的抽头延迟值,同时支持CE和INC协同的递增递减操作;
设置为VAR_LOAD_PIPE模式时,置高LDPIPEEN端口,原语将立即将CNTVALUEIN端口的值加载到原语内部的流水线寄存器中暂存,当置高LD端口,原语将立即加载流水线寄存器中的抽头值作为新的抽头延迟值(该模式一般用于多通道同步修改延迟的情况,同步性强,优化时序),同时支持CE和INC协同的递增递减操作。
DELAY_SRC:选择原语的输入数据源端口,可选值为IDATAIN和DATAIN,设置为IDATAIN时原语使用IDATAIN端口作为输入数据,数据来自IO引脚,设置为DATAIN时原语使用DATAIN端口作为输入数据,数据来自FPGA内部逻辑。
IDELAY_VALUE:指定了初始的抽头延迟数量,默认为0,可设置为0~31之间任意整数;
FIXED模式下,IDELAY_VALUE参数指定原语的抽头延时值;
VARIABLE模式下,IDELAY_VALUE值将作为延迟线的初始延时值,LD置高将会将原语的延迟重置为IDELAY_VALUE的值;
VAR_LOAD和VAR_LOAD_PIPE模式下,IDELAY_VALUE参数不被使用。
HIGH_PERFORMANCE_MODE:高性能模式选择参数,可选值为TRUE和FALSE,
TRUE模式降低抖动,降低抖动将会略微增加功耗,适用于高速场景,
FALSE降低功耗但抖动增加,适用于低速场景。
SIGNAL_PATTERN:数据输入的信号类型,可选值为DATA和CLOCK,由于时钟信号和数据信号有不同的电器特性,时钟信号具有周期性,而数据信号是随机的,两者在延迟链中积累的抖动量也不同,所以选择DATA(输入数据为数据信号)和CLOCK(输入数据为时钟信号),原语将会根据时钟和数据的电气特性的不同执行不同的抖动优化策略。
REFCLK_FREQUENCY:参考时钟频率,与IDELAYCTRL原语参考时钟需严格匹配,否则将会校准失败,范围为(190.0-210.0, 290.0-310.0),默认使用200.0,设置为200MHZ即可。
CINVCTRL_SEL:时钟动态反相的使能,输入时钟端口C是否可以反相,改参数搭配CINVCTRL端口使用,当参数设置为TRUE的同时将CINVCTRL端口置1可以将时钟C反相,当参数设置为FALSE时,时钟不会反相,CINVCTRL端口也将无法使用。
PIPE_SEL:仅在VAR_LOAD_PIPE模式下工作,控制流水线寄存器是否使用,设置为TRUE时启用流水线寄存器,FALSE时不启用流水线寄存器。

 例化约束:
Vivado的例化模板中IDELAYE2原语还有一行约束:
(* IODELAY_GROUP = <iodelay_group_name> *)
该约束可以定义IDELAYE2原语的组,可以将多个IDELAYE2和ODELAYE2原语与一个IDELAYCTRL原语绑定,确保它们共享同一个参考时钟并物理相邻,减少时钟偏差;
使用时同一组的IDELAYE2和ODELAYE2和IDELAYCTRL原语都约束指定为一个相同的组名即可。

 IDELAY工作模式:
IDELAY_TYPE参数设置工作模式,有FIXED, VARIABLE, VAR_LOAD,VAR_LOAD_PIPE:
FIXED固定延迟模式:
IDELAY_VALUE参数值将配置为延时值,配置后无法更改;
VARIABLE可变延迟模式:
在这里插入图片描述
由上表,该模式下,LD置1将加载IDELAY_VALUE参数值作为延时值;
CE和INC搭配执行当前延时值的递增递减操作,CE=1,INC=1递增,CE=1,INC=0递减;
其他输入延时值保持不变;
在这里插入图片描述
上图为VARIABLE模式下,IDELAY_VALUE参数值为0的时序:
时刻1,LD置1,原语加载为IDELAY_VALUE参数值,延时值DATAOUT变为tap0,
时刻2,CE=1,INC=1,延时值从0递增到1,从tap0变为tap1;

VAR_LOAD可加载变量延迟模式:
在这里插入图片描述
由上表,该模式下,
CE和INC搭配执行当前延时值的递增递减操作,同上条;
此时LD置1将加载CNTVALUEIN端口值作为延时值;
其他输入延时值保持不变;
在这里插入图片描述
上图为VAR_LOAD模式下的时序,
时刻1,LD置1,加载CNTVALUEIN端口的值2,延时值DATAOUT变为tap2,
时刻2,CE=1,INC=1,延时值从2递增到3,从tap2变为tap3,
时刻3,LD置1,加载CNTVALUEIN端口的值10,延时值DATAOUT变为tap10,

VAR_LOAD_PIPE可加载变量流水线寄存延迟模式:
该模式与VAR_LOAD模式类似,
CE和INC执行递增递减;
不同的是LD的操作,该模式下LD置1将加载内部流水线寄存器值作为延时值,
流水线寄存器则是在LDPIPEEN端口置1时,将CNTVALUEIN端口的值加载到寄存器中;

下节讲解IDELAYCTRL原语和IDELAYE2的搭配使用;
本文章由威三学社出品
对课程感兴趣可以私信联系

相关文章:

LVDS系列8:Xilinx 7系可编程输入延迟(一)

在解析LVDS信号时&#xff0c;十分重要的一环就是LVDS输入信号线在经过PCB输入到FPGA中后&#xff0c;本来该严格对齐的信号线会出现时延&#xff0c;所以需要在FPGA内部对其进行延时对齐后再进行解析。 Xilinx 7系器件中用于输入信号延时的组件为IDELAYE2可编程原语&#xff0…...

【Oracle专栏】函数中SQL拼接参数 报错处理

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 最近同事反馈了一个很奇怪的问题,即有一个函数,入参是当前年月,主要作用是通过SQL语句将不合规的数据插入到指定表中,插入数据时带上入参的年月参数。当前问题:单独测试SQL没有问题可以执行成功,…...

自然语言处理(NLP)领域大图

以下是一份自然语言处理&#xff08;NLP&#xff09;与大模型领域的领域大图&#xff0c;涵盖技术框架、发展脉络、交叉融合点和应用场景的完整解析&#xff1a; 1. 核心技术体系 基础分析层级 词法分析&#xff1a;分词、词性标注、命名实体识别句法分析&#xff1a;依存句法…...

【Linux我做主】GDB调试工具完全指南

Linux下GDB调试工具完全指南&#xff1a;25个核心命令详解与实战示例 github地址 有梦想的电信狗 前言 GDB&#xff08;GNU Debugger&#xff09;是Linux开发中不可或缺的调试工具&#xff0c;尤其在定位代码逻辑错误和内存问题时表现卓越。本文基于实际开发经验&#xff0…...

Pycharm 如何删除某个 Python Interpreter

在PyCharm中&#xff0c;点击右下角的“Interpreter Settings”按钮&#xff0c;或者通过菜单栏选择“File” > “Settings”&#xff08;macOS用户选择“PyCharm” > “Preferences”&#xff09;。在设置窗口中&#xff0c;导航到“Project: [Your Project Name]” >…...

在 Debian 12 中恢复被删除的 smb.conf 配置文件

https://forum.ubuntu.com.cn/viewtopic.php?t494763 本文结合ai输出&#xff0c;内容中可能有些错误&#xff0c;但确实解决了我的问题&#xff0c;我采取保留完整输出的方式摘录。 在 Debian 12 中恢复被删除的 smb.conf 配置文件&#xff0c;需结合 dpkg 和 ucf&#xff08…...

Day3:个人中心页面布局前端项目uniapp壁纸实战

接下来我们来弄一下个人中心页面布局user.vue <template><view class"userLayout"><view class"userInfo"><view class"avatar"><image src"../../static/Kx.jpg" mode"aspectFill"></im…...

访问”和“初始化本质区别以及C++静态成员变量定义位置详解

&#x1f4a1; 1.访问”和“初始化本质区别&#xff1a; ✅ 访问 protectedNum&#xff1a;Derived 作为 Base 的子类&#xff0c;是可以在自己的函数中访问 protectedNum 的。❌ 初始化 protectedNum&#xff1a;只能通过 Base 的构造函数来初始化&#xff0c;因为它是 Base …...

正则表达式反向引用的综合应用魔法:从重复文本到简洁表达的蜕变

“我....我要....学学学学....编程 java!” —— 这类“重复唠叨”的文本是否让你在清洗数据时头疼不已&#xff1f; 本文将带你一步步掌握正则表达式中的反向引用技术&#xff0c;并结合 Java 实现一个中文文本去重与清洗的实用工具。 结合经典的结巴实例。如何高效地将这样的…...

C实现md5功能

md5在线验证&#xff1a; 在线MD5计算_ip33.com 代码如下&#xff1a; #include "md5.h" #include <string.h> #include "stdio.h"/** 32-bit integer manipulation macros (little endian)*/ #ifndef GET_ULONG_LE #define GET_ULONG_LE(n,b,i) …...

FFmpeg+Nginx+VLC打造M3U8直播

一、视频直播的技术原理和架构方案 直播模型一般包括三个模块&#xff1a;主播方、服务器端和播放端 主播放创造视频&#xff0c;加美颜、水印、特效、采集后推送给直播服务器 播放端&#xff1a; 直播服务器端&#xff1a;收集主播端的视频推流&#xff0c;将其放大后推送给…...

在 Debian 10.x 安装和配置 Samba

1. 更新系统 sudo apt update sudo apt upgrade -y2. 安装 Samba sudo apt install samba -y3. 配置 Samba 备份默认配置文件 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak编辑配置文件 sudo nano /etc/samba/smb.conf示例配置&#xff08;共享目录&#xff09; …...

基础(测试用例:介绍,测试用例格式,案例)

目录 测试用例介绍 测试用例编写格式 案例 测试用例介绍 用例&#xff1a;用户使用软件的案例场景 测试用例&#xff1a;是为测试项目而设计的测试执行文档 测试用例的作用&#xff1a; 防止漏测是实施测试的标准可以作为测试工作量的评估 测试用例编写格式 用例编号 用例…...

C++学习:六个月从基础到就业——内存管理:RAII原则

C学习&#xff1a;六个月从基础到就业——内存管理&#xff1a;RAII原则 本文是我C学习之旅系列的第十九篇技术文章&#xff0c;也是第二阶段"C进阶特性"的第四篇&#xff0c;主要介绍C中的RAII原则及其在资源管理中的应用。查看完整系列目录了解更多内容。 引言 在…...

Windows串口通信

Windows串口通信相比较Android串口通信,在开发上面相对方便一些。原理都是一样,需要仔细阅读厂商设备的串口通信协议。结合串口调试助手进行测试,测试通过后,编写代码实现。 比如近期就接触到了一款天平,其最大测量值为100g,测量精度0.001g。 拿到手之后我就先阅读串口通…...

bert项目解析

数据预处理 读取csv数据集 def read_file(file_path):data []label []with open(file_path, "r", encoding"utf-8") as file:reader csv.reader(file)next(reader) # 跳过标题行# row每一行用英文逗号分割成列表[标签,文本] 所以标签和文本用英文逗…...

Linux `init` 相关命令的完整使用指南

Linux init 相关命令的完整使用指南—目录 一、init 系统简介二、运行级别&#xff08;Runlevel&#xff09;详解三、常用 init 命令及使用方法1. 切换运行级别2. 查看当前运行级别3. 服务管理4. 紧急模式&#xff08;Rescue Mode&#xff09; 四、不同 Init 系统的兼容性1. Sy…...

【开源项目】Excel手撕AI算法深入理解(三):时序(RNN、mamba、Long Short Term Memory (LSTM)、xLSTM)

项目源码地址&#xff1a;https://github.com/ImagineAILab/ai-by-hand-excel.git 一、RNN 1. RNN 的核心思想 RNN 的设计初衷是处理序列数据&#xff08;如时间序列、文本、语音&#xff09;&#xff0c;其核心特点是&#xff1a; 隐藏状态&#xff08;Hidden State&#xff…...

嵌入式音视频开发指南:从MPP框架到QT实战全解析

嵌入式音视频开发指南:从MPP框架到QT实战全解析 一、音视频技术全景概述 1.1 技术演进里程碑 2003-2010年:标清时代(H.264/AVC + RTMP)2011-2018年:高清时代(H.265/HEVC + WebRTC)2019-至今:智能时代(AV1 + AI编解码 + 低延迟传输)1.2 现代音视频技术栈 #mermaid-s…...

构建专业金融图表系统的高效路径——QtitanChart在金融行业的应用价值

QtitanChart是一个C 库&#xff0c;它代表一组控件&#xff0c;这些控件使您可以快速轻松地为应用程序提供漂亮而丰富的图表。QtitanChart在Qt.C 上实现&#xff0c;并且支持所有主要的桌面操作系统 - Windows、Linux和Mac OSX。要将QtitanChart添加到您的程序中&#xff0c;只…...

如何通过window端来ssh连接本地虚拟机的ubuntu

首先在 Ubuntu 虚拟机上安装和配置 SSH 服务&#xff1a; # 安装 SSH 服务器 sudo apt update sudo apt install openssh-server# 检查 SSH 服务状态 sudo systemctl status ssh# 如果没有启动&#xff0c;则启动 SSH 服务 sudo systemctl start ssh# 设置开机自启动 sudo sys…...

问题:el-tree点击某节点的复选框由半选状态更改为全选状态以后,点击该节点展开,懒加载出来子节点数据以后,该节点又变为半选状态

具体问题场景&#xff1a; 用户点击父节点复选框将其从半选变为全选&#xff08;此时子节点尚未加载&#xff09;。 点击节点展开触发懒加载&#xff0c;加载子节点。 子节点加载后&#xff0c;组件重新计算父节点状态&#xff0c;发现并非所有子节点被选中&#xff0c;因此父节…...

【Rust 精进之路之第8篇-工具赋能】深入 Cargo:依赖管理、构建配置与工作空间 (Workspace)

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025-04-20 引言:超越构建,Cargo 是 Rust 生态的引擎 在我们的 Rust 学习之旅初期(第二篇),我们已经与 Cargo 有过初步的接触。我们学会了使用 cargo new 创建项目骨架,用 cargo build 编…...

多模态大语言模型arxiv论文略读(二十六)

Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ➡️ 论文标题&#xff1a;Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ➡️ 论文作者&#xff1a;Xinpeng Ding,…...

Java虚拟机(JVM)平台无关?相关?

计算机的概念模型 计算机实际上就是实现了一个图灵机模型。即&#xff0c;输入参数&#xff0c;根据程序计算&#xff0c;输出结果。图灵机模型如图。 Tape是输入数据&#xff0c;Program是针对这些数据进行计算的程序&#xff0c;中间横着的方块表示的是机器的状态。 目前使…...

Ubuntu 安装 Docker 教程(官方推荐方式)

✅ 步骤 1&#xff1a;卸载旧版本&#xff08;如果有&#xff09; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done---### ✅ 步骤 2&#xff1a;更新 APT 索引并安装依赖项bash sudo a…...

Win10 C盘空间不足清理方法

当Windows 10系统的C盘空间不足时&#xff0c;可以采取以下方法进行清理&#xff1a; 1. 清理临时文件 打开“设置” > “系统” > “存储”。 点击“临时文件”&#xff0c;勾选要删除的临时文件、系统缓存等&#xff0c;然后点击“删除文件”。 2. 使用磁盘清理工具…...

cloudstudio学习笔记之openwebui

代码获取 git clone 参考资料 openwebui官网 https://docs.openwebui.com/getting-started/advanced-topics/development 后端启动 cd backend pip install -r requirements.txt -U sh dev.sh后端启动成功后的界面 在cloudstudio提供的vscode弹出的提示中打开浏览器并在末…...

7.QT-常用控件-QWidget|font|toolTip|focusPolicy|styleSheet(C++)

font API说明font()获取当前widget的字体信息.返回QFont对象.setFont(const QFont& font)设置当前widget的字体信息. 属性说明family字体家族.⽐如"楷体",“宋体”,"微软雅⿊"等.pointSize字体⼤⼩weight字体粗细.以数值⽅式表⽰粗细程度取值范围为[…...

机器学习核心算法全解析:从基础到进阶的 18 大算法模型

在机器学习领域&#xff0c;算法模型是解决实际问题的核心工具。 不同的算法适用于不同的数据场景和任务需求&#xff0c;理解它们的原理与应用是掌握机器学习的关键。 以下将详细解析 18 个核心算法模型&#xff0c;涵盖监督学习、无监督学习、集成学习和深度学习等多个领域…...