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

在vivado中对数据进行延时,时序对齐问题上的理清

        在verilog的ISP处理流程中,在完成第一个模块的过程中,我经常感到困惑,到底是延时了多少个时钟?今日对这几个进行分类理解。

目录

1.输入信号激励源描述

1.1将数据延时[9]个clk

1.2将vtdc与hzdc延时[9]个clk(等价于单bit的数据延时clk)

1.3将vtdc延时2个hzdc长度

2.总结


1.输入信号激励源描述

        分为水平信号r_vtdc与垂直信号r_hzdc,r_data为传输过来的数据,接下来对该信号分类进行延时。

        输入:

 -----------------------------------------------------------------------输入always @(posedge pi_pxck)beginr_vtdc   <= pi_darkvtdc  ;r_hzdc   <= pi_darkhzdc  ;r_data   <= pi_darkcpa   ;end

1.1将数据延时[9]个clk

          分析:对数据做延时时钟个数大小,需要建立相应的数组,每来1个clk,将数组里i存储上的数据传给第i+1个,从而达到延时时钟个数大小的时钟。但往往设置的数组大小会偏大几个,跟其中的非阻塞赋值有关。

-----------------------------------------------------------------数据延时时钟个数    integer                             i                                        ;//循环reg                 [p_mtgrcpwd - 1 : 0]    shift_reg[0:9]                         ; //缓存数组reg                 [p_mtgrcpwd - 1 : 0]    r_declk   = {(p_mtgrcpwd){1'd0}}       ;  //延时时钟个数输出的数据   --------------------------------------------------------------------数组初始化为0    initial beginfor ( i = 0; i < 10; i = i + 1) beginshift_reg[i] <= {p_mtgrcpwd{1'b0}};endend  ----------------------------------------------------------------数据延时时钟个数always@(posedge pi_pxck)beginbeginshift_reg[0] <= r_data; // 将新值移入寄存器endfor ( i = 0; i <9; i = i+1) beginshift_reg[i+1] <= shift_reg[i];endr_declk <= shift_reg[9];end 

  带来延时的几处地方有:

(1)shift_reg[0] <= r_data; r_data非阻塞赋值传给shift_reg[0]延时1个时钟。

(2) shift_reg[i+1] <= shift_reg[i];延时9个clk

(3)r_declk <= shift_reg[9];延时1个clk

共计延时:1+9+1=11个clk

1.2将vtdc与hzdc延时[9]个clk(等价于单bit的数据延时clk)

同1.1原理相同,只是不需要建立数组,因为是但bit,只是延时高低电平而已。

-----------------------------------------------------------------------------------------------------延时vtdc与hzdcreg                                 [9 : 0]                                         r_sfvtdc = 10'd0                        ;reg                                 [9 : 0]                                         r_sfhzdc = 10'd0                        ;  reg                                                                                 vtdca    = 10'd0                        ;        reg                                                                                 hzdca    = 10'd0                        ;  ---------------------------------------------------------------------------------------------------延时always @(posedge pi_pxck)beginr_sfvtdc <= {r_sfvtdc[8 : 0], r_vtdc};r_sfhzdc <= {r_sfhzdc[8 : 0], r_hzdc};end
---------------------------------------------------------------------------------------------------垂直与水平信号输出    always @(posedge pi_pxck)beginvtdca <= r_sfvtdc[9];hzdca <= r_sfhzdc[9];end        

带来延时的几处地方有:

(1) r_sfvtdc <= {r_sfvtdc[8 : 0], r_vtdc};延时1个clk。

(2) vtdca <= r_sfvtdc[9];延时10个clk。

        共计延时11个clk。

1.3将vtdc延时2个hzdc长度

每次水平信号出现下降沿时,才将vtdc传给延时的数组,r_sfvtdc[x]要与if判断条件下的r_sfhzdc对应的延时相对齐,若用vtdc,会少一行,且延时时钟个数偏差会较大。

--------------------------------------------------------------vtdc延时2行reg                    [1 : 0]     r_sfvtdb = 2'd0                           ;        reg                                vtdcb    = 1'd0                           ;   ----------------------------------------------------------vtdc延时2行准备always @(posedge pi_pxck)beginif(r_sfhzdc[1:0] == 2'b10)                      //代表出现下降沿r_sfvtdb <= {r_sfvtdb[0],r_sfvtdc[1] };        end      --------------------------------------------------------vtdc延时2行always @(posedge pi_pxck)beginvtdcb <= r_sfvtdb[1];       end   

(1) r_sfvtdb <= {r_sfvtdb[0],r_sfvtdc[1] };延时2个clk

(2) vtdcb <= r_sfvtdb[1]; 延时2行1个clk

共计2行3个clk。

2.总结

其实也不能单纯的说延时多少个clk。而是以,此时时钟的上升沿为参考标准(此时的数据相对齐的时刻),此刻信号从1变为0,认为是1。此时刻信号从0变成1,认为是0。相对应的分析时序,理清思路。以垂直或水平信号的上升沿/下降沿为基准,看延时了多少个clk。

相关文章:

在vivado中对数据进行延时,时序对齐问题上的理清

在verilog的ISP处理流程中&#xff0c;在完成第一个模块的过程中&#xff0c;我经常感到困惑&#xff0c;到底是延时了多少个时钟&#xff1f;今日对这几个进行分类理解。 目录 1.输入信号激励源描述 1.1将数据延时[9]个clk 1.2将vtdc与hzdc延时[9]个clk(等价于单bit的数据…...

Django REST Framework:如何获取序列化后的ID

Django REST Framework&#xff1a;如何获取序列化后的ID &#x1f604; 嗨&#xff0c;小伙伴们&#xff01;今天我们来聊一聊Django REST Framework&#xff08;简称DRF&#xff09;中一个非常常见的操作&#xff1a;如何获取序列化后的ID。对于那些刚入门的朋友们&#xff…...

QT笔记——QPlainTextEdit

文章目录 1、概要2、文本设计2.1、设置文本2.1、字体样式&#xff08;大小、下划线、加粗、斜体&#xff09; 1、概要 QPlainTextEdit 是 Qt 框架中用于处理纯文本编辑的控件&#xff0c;具有轻量级和高效的特点&#xff0c;以下是它常见的应用场景&#xff1a; 文本编辑器&am…...

链表 —— 常用技巧与操作总结详解

引言 链表作为一种动态数据结构&#xff0c;以其灵活的内存管理和高效的插入删除操作&#xff0c;在算法与工程实践中占据重要地位。然而&#xff0c;链表的指针操作复杂&#xff0c;容易引发内存泄漏和野指针问题。本文博主将从基础操作到高阶技巧&#xff0c;系统化解析链表的…...

Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)

绪论​ 每日激励&#xff1a;“唯有努力&#xff0c;才能进步” 绪论​&#xff1a; 本章是MySQL中常见的函数&#xff0c;利用好函数能很大的帮助我们提高MySQL使用效率&#xff0c;也能很好处理一些情况&#xff0c;如字符串的拼接&#xff0c;字符串的获取&#xff0c;进制…...

【C++BFS 离散化】1036. 逃离大迷宫|2164

本文涉及知识点 CBFS算法 LeetCode1036. 逃离大迷宫 在一个 106 x 106 的网格中&#xff0c;每个网格上方格的坐标为 (x, y) 。 现在从源方格 source [sx, sy] 开始出发&#xff0c;意图赶往目标方格 target [tx, ty] 。数组 blocked 是封锁的方格列表&#xff0c;其中每个…...

[c语言日寄]在不完全递增序中查找特定要素

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…...

HtmlRAG:RAG系统中,HTML比纯文本效果更好

HtmlRAG 方法通过使用 HTML 而不是纯文本来增强 RAG 系统中的知识表示能力。通过 HTML 清洗和两步块树修剪方法&#xff0c;在保持关键信息的同时缩短了 HTML 文档的长度。这种方法优于现有基于纯文本的RAG的性能。 方法 其实主要看下围绕html提纯思路&#xff0c;将提纯后的…...

LeetCode题解:2690. 无穷方法对象,Proxy

Problem: 2690. 无穷方法对象 思路 这个问题的核心在于创建一个对象&#xff0c;该对象能够响应对其任何方法的调用&#xff0c;并返回调用的方法名称。为了实现这一点&#xff0c;我们可以利用 JavaScript 中的 Proxy 对象。Proxy 对象允许我们自定义对象的基本操作&#xff…...

在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档教程

既然我们已经在本地部署了DeepSeek,肯定希望能够利用本地的模型对自己软件开发、办公文档进行优化使用,接下来就先在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档的教程奉上。 前提: (1)已经部署好了DeepSeek,可以看我的文章:个人windows电脑上安装DeepSe…...

2023-arXiv-CoT Prompt 思维链提示提升大型语言模型的推理能力

arXiv | https://arxiv.org/abs/2201.11903 摘要&#xff1a; 我们探讨了如何生成思维链&#xff08;一系列中间推理步骤&#xff09;显著提高大型语言模型执行复杂推理的能力。在三个大型语言模型上的实验表明&#xff0c;思维链提示提高了一系列算术、常识和符号推理任务的性…...

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<10>

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 今天我们继续来复习指针… 目录 一、看一段代码二、 一维数组传参的本质三、冒泡排序3.1 基本思想四、二…...

如何在MacOS上查看edge/chrome的扩展源码

步骤 进入管理扩展页面点击详细信息复制对应id在命令行键入 open ~/Library/Application Support/Microsoft Edge/Default/Extensions/${你刚刚复制的id} 即可打开访达中对应的更目录 注意 由于原生命令行无法直接处理空格 ,所以需要加转义符\,即&#xff1a;open ~/Librar…...

C++病毒(^_^|)(2)

第二期 声明&#xff1a; 仅供损害电脑&#xff0c;不得用于非法。损坏电脑&#xff0c;作者一律不负责。此作为作者原创&#xff0c;转载请经过同意。 直接上代码 #include <bits/stdc.h> #include <windows.h> using namespace std; HHOOK g_hHook;void lrud(…...

CNN|ResNet-50

导入数据 import matplotlib.pyplot as plt # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号import os,PIL,pathlib import numpy as npfrom tensorflow import keras from tensor…...

Java堆外内存的高效利用与性能优化

在Java开发中&#xff0c;堆外内存&#xff08;Direct Memory&#xff09;是除Java堆以外的内存区域。它允许Java程序直接分配和管理非堆内存&#xff0c;这为高性能的数据处理提供了可能。 1、 什么是堆外内存&#xff1f; 堆外内存&#xff0c;也称为直接内存&#xff08;D…...

吉祥汽车泰国首发,用 Unity 实现行业首创全 3D 座舱虚拟世界

11 月 19 日&#xff0c;均瑶集团吉祥智驱&#xff08;以下简称“吉祥汽车”&#xff09;首款纯电动汽车 JY AIR 在泰国首发。延续吉祥航空在飞行体验上的优势&#xff0c;吉祥汽车对 JY AIR 赋予了将航空级服务标准延伸至地面的使命&#xff0c;为用户提供一站式大出行体验。此…...

【OpenCV】双目相机计算深度图和点云

双目相机计算深度图的基本原理是通过两台相机从不同角度拍摄同一场景&#xff0c;然后利用视差来计算物体的距离。本文的Python实现示例&#xff0c;使用OpenCV库来处理图像和计算深度图。 1、数据集介绍 Mobile stereo datasets由Pan Guanghan、Sun Tiansheng、Toby Weed和D…...

Uniapp 原生组件层级过高问题及解决方案

文章目录 一、引言&#x1f3c5;二、问题描述&#x1f4cc;三、问题原因❓四、解决方案&#x1f4af;4.1 使用 cover-view 和 cover-image4.2 使用 subNVue 子窗体4.3 动态隐藏原生组件4.4 使用 v-if 或 v-show 控制组件显示4.5 使用 position: fixed 布局 五、总结&#x1f38…...

iOS实现生物识别

1. info.plist中添加权限申请 <key>NSFaceIDUsageDescription</key> <string>APP would like to use Face ID</string> <key>NSBiometricUsageDescription</key> <string>APP would like to use Touch ID</string>2. 添加库 …...

React 初级教程

一、React 简介 React 是由 Facebook 开发的开源 JavaScript 库,用于构建用户界面(UI)。特点: 声明式编程:通过描述 UI 应该是什么样子(而不是操作 DOM)来构建界面。组件化:将 UI 拆分为独立可复用的组件。跨平台:支持 Web(React)、移动端(React Native)、VR 等。…...

【数据结构初阶第十节】队列(详解+附源码)

好久不见。。。别不开心了&#xff0c;听听喜欢的歌吧 必须有为成功付出代价的决心&#xff0c;然后想办法付出这个代价。云边有个稻草人-CSDN博客 目录 一、概念和结构 二、队列的实现 Queue.h Queue.c test.c Relaxing Time&#xff01; ————————————《有没…...

萌新学 Python 之列表 list

list 列表&#xff1a;用中括号定义&#xff0c;元素写在中括号之间&#xff0c;元素之间使用逗号分隔 list1 [] # 空列表 list2 [1] # 元素为1个 list3 [a, b, c] print(type(list1), type(list2), type(list3)) # <class list> <class list> <class …...

250213-RHEL8.8-外接SSD固态硬盘

It seems that the exfat-utils package is still unavailable, even after enabling the RPM Fusion repository. This could happen if the repository metadata hasn’t been updated or if the package isn’t directly available in the RPM Fusion repository for RHEL 8…...

游戏引擎学习第99天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板&#xff1a;制作一些光场(Light Field) 当前的目标是为游戏添加光照系统&#xff0c;并已完成了法线映射&#xff08;normal maps&#xff09;的管道&#xff0c;但还没有创建可以供这些正常映射采样的光场。为了继续推进&…...

Linux初始化 配置yum源

问题出现&#xff1a;&#xff08;报错&#xff09; 1 切换路径 2 备份需要操作的文件夹 3 更改 CentOS 的 YUM 仓库配置文件&#xff0c;以便使用阿里云的镜像源。 4 清除旧的yum缓存 5 关闭防火墙 6 生成新的yum缓存 7 更新系统软件包 8 安装软件包...

【笛卡尔树】

笛卡尔树 笛卡尔树定义构建性质 习题P6453 [COCI 2008/2009 #4] PERIODNICF1913D Array CollapseP4755 Beautiful Pair[ARC186B] Typical Permutation Descriptor 笛卡尔树 定义 笛卡尔树是一种二叉树&#xff0c;每一个节点由一个键值二元组 ( k , w ) (k,w) (k,w) 构成。要…...

Ubuntu启动geteck/jetlinks实战:Docker启动(无法登录)

参考&#xff1a; JetLinks 物联网基础平台 安装Docker Ubuntu下载安装Docker-Desktop-CSDN博客 sudo apt install -y docker-compose 下载源码 git clone https://github.com/jetlinks/jetlinks-community.git cd jetlinks-community 启动 cd docker/run-all sudo dock…...

Java String 类深度解析:内存模型、常量池与核心机制

目录 一、String初识 1. 字符串字面量的处理流程 (1) 编译阶段 (2) 类加载阶段 (3) 运行时阶段 2. 示例验证 示例 1&#xff1a;字面量直接赋值 示例 2&#xff1a;使用 new 创建字符串 示例 3&#xff1a;显式调用 intern() 注意点1&#xff1a; ⑴. String s1 &q…...

不到一个月,SQLite 3.49.0来了

距离 SQLite 3.48.0 发布不到一个月&#xff0c;SQLite 开发团队于 2025 年 2 月 6 日发布了 SQLite 3.49.0 版本。这更新速度的确让人感动&#xff0c;那么这个版本又有哪些更新呢&#xff1f; 查询优化器 新版本改进了自动索引&#xff08;query-time index&#xff09;优化…...