FPGA学习_时序分析

文章目录

  • 前言
  • 一、组合逻辑与时序逻辑
  • 二、建立时间和保持时间
  • 三、建立时间和保持时间


前言

心中有电路,下笔自然神!!!

一、组合逻辑与时序逻辑

  1. 组合逻辑:没有时钟控制的数字电路,代码里的判断逻辑都是组合逻辑
  2. 组合逻辑的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原本的状态无关,逻辑中不牵涉跳变沿信号的处理,组合逻辑的verilog描述方式有两种:
    (1)always @(电平敏感信号列表)
    always模块的敏感列表为所有判断条件信号和输入信号,但一定要注意敏感列表的完整性。在always 模块中可以使用if、case 和for 等各种RTL 关键字结构。由于赋值语句有阻塞赋值和非阻塞赋值两类,建议读者使用阻塞赋值语句“=”。always 模块中的信号必须定义为reg 型,不过最终的实现结果中并没有寄存器。这是由于在组合逻辑电路描述中,将信号定义为reg型,只是为了满足语法要求。
    (2)assign描述的赋值语句。
    信号只能被定义为wire型。
    如以下一条语句:
assign w_flag = r_cnt == 8 && r_en;

第一张图是人为思考画的,第二张为VIVADO综合结果,VIVADO节省了一级组合逻辑。
在这里插入图片描述

在这里插入图片描述

  1. 时序逻辑:有时钟控制的数字电路,有记忆功能,有保存功能,有时钟控制的寄存器都属于时序逻辑电路
    时序逻辑是Verilog HDL 设计中另一类重要应用,其特点为任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。电路里面有存储元件(各类触发器,在FPGA 芯片结构中只有D 触发器)用于记忆信息,从电路行为上讲,不管输入如何变化,仅当时钟的沿(上升沿或下降沿)到达时,才有可能使输出发生变化。
    与组合逻辑不同的是:
    (1)在描述时序电路的always块中的reg型信号都会被综合成寄存器,这是和组合逻辑电路所不同的。
    (2)时序逻辑中推荐使用非阻塞赋值“<=”。
    (3)时序逻辑的敏感信号列表只需要加入所用的时钟触发沿即可,其余所有的输入和条件判断信号都不用加入,这是因为时序逻辑是通过时钟信号的跳变沿来控制的。
always @(posedge i_clk or posedge i_rst)beginif(i_rst)r_ack_lock <= 'd0;else if(r_ack_valid && !w_iic_sda && r_st_cur == P_ST_DADDR1)r_ack_lock <= 'd0;else if(r_ack_valid && w_iic_sda && r_st_cur == P_ST_DADDR1)r_ack_lock <= 'd1;elser_ack_lock <= r_ack_lock;
end

在这里插入图片描述
每一个always块都是由一堆组合逻辑(if-else判断调节都是组合逻辑)和一个时序逻辑构成(代码里只有r_ack_lock 这么一个触发器受时钟控制)
xilinx寄存器(D触发器)原语如下:采用源语设计,EDA软件会严格按照代码进行综合。

   FDCE #(.INIT(1'b0) // Initial value of register (1'b0 or 1'b1)) FDCE_inst (.Q(Q),      // 1-bit Data output.C(C),      // 1-bit Clock input.CE(CE),    // 1-bit Clock enable input.CLR(CLR),  // 1-bit Asynchronous clear input.D(D)       // 1-bit Data input);

二、建立时间和保持时间

一旦涉及到时序的内容,这俩者是无法绕开的概念,一定要非常清楚。
建立时间:时钟上升沿到来之前,数据必须保持稳定的时间。
保持时间:时钟上升沿结束之后,数据必须保持稳定的时间。
建立时间和保持时间就像一个窗口一样,在窗口内数据不可以变化,窗口外则无所谓
只有满足寄存器的建立时间和保持时间,才可以保证数据输出稳定和正确。

时序分析模型:
在这里插入图片描述

在这里插入图片描述

launch edge:时序分析的起点,第一级寄存器数据变化时钟沿。
latch edge:时序分析的终点,数据锁存的时钟沿
Tcycle:时钟周期
Tclk1:时钟到达第一级寄存器的延时
Tclk2:时钟到达第二级寄存器的延时
Tskew:Tskew = Tclk2 - Tclk1,可正可负
Tco:数据输出时延,即当时钟有效变化沿到达时,数据从寄存器D端(输入端)到Q端(输出端)的时延,该数值一般很小
Tdelay:数据传输时延,从D1的Q端到D2的D端所需时间,主要为组合逻辑时延和走线时延。
Tsu:建立时间,时钟上升沿到来之前,数据必须保持稳定的时间。
Thd:保持时间,时钟上升沿结束之后,数据必须保持稳定的时间。

三、建立时间和保持时间

建立时间余量:
数据要求到达时间 = Tskew + Tcycle - Tsu
数据实际到达时间 = Tco + Tdelay
Tsu_slack = 数据要求到达时间 - 数据实际到达时间 = (Tskew + Tcycle - Tsu) - (Tco + Tdelay)
只有当Tsu_slack > 0,电路设计才是稳定的。Tsu_slack 是可控的,当Tsu_slack > 0不满足时:
(1)首先考虑Tdelay,降低组合逻辑时延,如中间多加一级或几级寄存器打拍,这样可以将组合逻辑拆分为几部分,评估组合逻辑时延的方法主要是看组合逻辑级数,xilinx一级组合逻辑时延约为0.4ns,通过代码里的最大组合逻辑可以大概计算出最大的时钟频率。
(2)降低时钟频率
保持时间余量:(图中标注了建立时间要求到达时间和实际到达时间,保持时间的没有标注,但也很好理解)
数据要求到达时间 = Tskew + Thd
数据实际到达时间 = Tco + Tdelay
Thd_slack = 数据实际到达时间 - 数据要求到达时间 = (Tco + Tdelay) - (Tskew + Thd)
只有当Thd_slack> 0,电路设计才是稳定的。Thd_slack是我们没有办法控制的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/765371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

先进电机技术 —— 何为轴电压?

一、特定场景举例 长线驱动指的是在电动机与变频器之间存在较长的连接电缆&#xff0c;尤其是在大型工业应用中&#xff0c;电机可能远离变频器几十米甚至上百米。这种情况下&#xff0c;变频器通过长线向电动机传输功率时&#xff0c;可能会加剧电机轴电压和轴电流的产生&…

《明日边缘2》AI制作电影宣传片

《明日边缘2》AI制作电影宣传片 In the dawn of a new war, the cycle of death and rebirth begins. 在新战争的曙光中&#xff0c;生死轮回的循环悄然开启。 Each repetition brings a new horror, but also a chance for redemption. 每一次循环都带来新的恐怖&#xff0c;却…

第六十二回 宋江兵打大名城 关胜议取梁山泊-飞桨ONNX推理部署初探

石秀和卢俊义在城内走投无路&#xff0c;又被抓住。梁中书把他两个人押入死牢。蔡福把他俩关在一处&#xff0c;好酒好菜照顾着&#xff0c;没让两人吃苦。 第二天就接到城外梁山泊的帖子&#xff0c;说大军已经来到&#xff0c;要替天行道&#xff0c;让他放人&#xff0c;并…

jupyter notebook使用教程

首先是打开jupyter notebook 下载安装好之后&#xff0c;直接在命令行中输入‘jupyter notebook’即可跳转到对应页面 还可以进入想要打开的文件夹&#xff0c;然后再文件夹中打开中断&#xff0c;执行‘jupyter notebook’命令&#xff0c;就能够打开对应文件界面的jupyter …

2024年超声波清洗机品牌哪家好?实力担当超声波清洗机大集合

随着佩戴眼镜人群越来越多&#xff0c;眼镜清洗的需求也是越来越大了&#xff01;也许有人佩戴了十几年眼镜都不知道超声波清洗机是要清洗的&#xff0c;也许有人一开始就注重眼镜的清洗。其实眼镜清洗是一件很简单的事情&#xff0c;可以用超声波清洗机来清洗眼镜。目前超声波…

短视频矩阵系统---php7.40版本升级自研

短视频矩阵系统---php7.40版本升级自研 1.部署及搭建 相对于其他系统&#xff0c;该系统得开发及部署难度主要在各平台官方应用权限的申请上&#xff0c;据小编了解&#xff0c;目前抖音短视频平台部分权限内侧名额已满&#xff0c;巧妇难为无米之炊&#xff0c;在做相关程序…

在SAP S4 OP中使用SAP API Hub 的API

参考资料&#xff1a;https://blog.51cto.com/u_11984354/4907646 NO.21-SAP S4 HANA Cloud API接口测试&#xff08;1&#xff09;-CSDN博客

基于springboot的“漫画之家”系统

目录 背景 技术简介 系统简介 界面浏览 背景 随着科技的不断进步&#xff0c;计算机已经变成了人们日常生活和工作不可或缺的工具。在这样的环境下&#xff0c;互联网技术被广泛运用于各个领域&#xff0c;以提升工作和生活的效率&#xff0c;推动了网络信息技术的迅猛发展…

Java多线程实战-CompletableFuture异步编程优化查询接口响应速度

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

C语言——程序拷贝文件

问题如下&#xff1a; 写一个程序拷贝文件&#xff1a; 使用所学文件操作&#xff0c;在当前目录下放一个文件data.txt&#xff0c;写一个程序&#xff0c;将data.txt文件拷贝一份&#xff0c;生成data_copy.txt文件。 基本思路&#xff1a; 打开文件data.txt&#xff0c;读…

SG5032VAN差分晶振X1G004261001100专用于5G通讯设备

差分晶体振荡器(DXO)是目前行业中公认高技术&#xff0c;高要求的一款晶体振荡器&#xff0c;是指输出差分信号使用2种相位彼此完全相反的信号,从而消除了共模噪声,并产生一个更高性能的系统。差分晶振一般为六脚贴片晶振&#xff0c;输出类型分为好几种,LVDS&#xff0c;LV-PE…

力扣面试150 阶乘后的零 数论 找规律 质因数

Problem: 172. 阶乘后的零 思路 &#x1f468;‍&#x1f3eb; 大佬神解 一个数末尾有多少个 0 &#xff0c;取决于这个数 有多少个因子 10而 10 可以分解出质因子 2 和 5而在阶乘种&#xff0c;2 的倍数会比 5 的倍数多&#xff0c;换而言之&#xff0c;每一个 5 都会找到一…

Linux初学(八)磁盘管理

一、磁盘管理 1.1 简介 磁盘的工作原理&#xff1a; 添加磁盘对磁盘进行分区格式化磁盘挂载和使用磁盘 磁盘的类型&#xff1a; 固态机械 磁盘的接口类型&#xff1a; IDESTSTSCSI 磁盘工作的原理&#xff1a; 磁盘&#xff0c;特别是硬盘&#xff0c;和内存不同&#xff0c;…

目标检测——PP-YOLO算法解读

PP-YOLO系列&#xff0c;均是基于百度自研PaddlePaddle深度学习框架发布的算法&#xff0c;2020年基于YOLOv3改进发布PP-YOLO&#xff0c;2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet&#xff0c;2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列&#xff0c;所以放一起解…

【JavaEE初阶系列】——带你了解volatile关键字以及wait()和notify()两方法背后的原理

目录 &#x1f6a9;volatile关键字 &#x1f388;volatile 不保证原子性 &#x1f388;synchronized 也能保证内存可见性 &#x1f388;Volatile与Synchronized比较 &#x1f6a9;wait和notify &#x1f388;wait()方法 &#x1f4bb;wait(参数)方法 &#x1f388;noti…

【单元测试】一文读懂java单元测试

目录 1. 什么是单元测试2. 为什么要单元测试3. 单元测试框架 - JUnit3.1 JUnit 简介3.2 JUnit 内容3.3 JUnit 使用3.3.1 Controller 层单元测试3.3.2 Service 层单元测试3.3.3 Dao 层单元测试3.3.4 异常测试3.3.5 测试套件测多个类3.3.6 idea 中查看单元测试覆盖率3.3.7 JUnit …

第28章 ansible的使用

第28章 ansible的使用 本章主要介绍在 RHEL8 中如何安装 ansible 及 ansible的基本使用。 ◆ ansible 是如何工作的 ◆ 在RHEL8 中安装ansible ◆ 编写 ansible.cfg 和清单文件 ◆ ansible 的基本用法 文章目录 第28章 ansible的使用28.1 安装ansible28.2 编写ansible.cfg和清…

HDFS集群环境配置

环境如下三台服务器&#xff1a; 192.168.32.101 node1192.168.32.102 node2192.168.32.103 node3 一、Hadoop安装包下载&#xff0c;点此官网下载 二、Hadoop HDFS的角色包含&#xff1a; NameNode&#xff0c;主节点管理者DataNode&#xff0c;从节点工作者SecondaryNameN…

React Native: could not connect to development server

问题&#xff1a; 运行模拟器错误&#xff1a;无法连接到开发服务器 原因分析&#xff1a; 1、确认模拟器连接状态&#xff0c;是连接成功的 查看进程的端口占用&#xff0c;也没问题 lsof -i tcp:8081 kill pid2、检查包服务器是否运行正常 连接真机进行调试发现真机是正常…

基于springboot+vue+Mysql的“智慧食堂”设计与实现

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…