1.同步复位的基本原理是,复位信号仅在时钟的有效边沿影响或重置触发器的状态。

复位的主要目标之一是使 ASIC 在仿真时进入已知状态。

由于复位树的扇出较大,复位信号相对于时钟周期可能成为 “晚到信号”。即使复位信号会通过复位缓冲树进行缓冲,但在复位信号到达本地逻辑后,限制其必须经过的逻辑数量仍是明智之举。

module ctr8sr (

output reg [7:0] q,

output reg co,

input [7:0] d,

input ld, clk, rst_n);

always @(posedge clk)

if (!rst_n) {co,q} <= 9'b0; // sync reset

else if (ld) {co,q} <= d; // sync load

else {co,q} <= q + 1'b1; // sync increment

endmodule

同步复位代码:

module sync_resetFFstyle (

output reg q,

input d, clk, rst_n);

always @(posedge clk)

if (!rst_n) q <= 1'b0;

else q <= d;

endmodule

同步复位存在的一个问题是,综合工具难以轻易区分复位信号与其他数据信号。

同步复位优点:

1.同步复位逻辑在综合时生成的触发器通常更小,特别是当复位信号与生成 d 输入的逻辑共同作用时。但在这种情况下,组合逻辑的门数会增加,因此总体门数节省可能并不显著。

2. 

同步复位通常可确保电路 100% 同步。同步复位确保复位仅在时钟有效边沿发生。时钟可过滤小的复位毛刺;然而,如果这些毛刺发生在时钟有效边沿附近,触发器可能进入亚稳态。这与其他数据输入没有区别,任何违反建立时间要求的信号都可能导致亚稳态。

在某些设计中,复位信号必须由一组内部条件生成。对于这类设计,建议使用同步复位,因为它可以过滤时钟之间逻辑方程产生的毛刺。

3.通过使用同步复位并在复位过程中使用预定数量的时钟,复位缓冲树中可以使用触发器,有助于使缓冲树的时序保持在一个时钟周期内。

同步复位缺点:

1.同步复位可能需要脉冲展宽器来保证复位脉冲宽度足够宽,以确保在时钟有效边沿期间存在复位信号;

2.从本质上讲,同步复位需要时钟才能复位电路。这对某些设计风格可能不是缺点,但对另一些设计风格可能会很麻烦。例如,如果为了节省功耗而使用门控时钟,则在断言复位的同时时钟可能被禁用。在这种情况下,只有异步复位才能工作,因为复位信号可能在时钟恢复之前被撤销。

异步复位:

异步复位最大的问题是复位释放,也称为复位撤销。

敏感列表中只能包含时钟和复位信号。如果包含其他信号(合法的 Verilog,但非法的 Verilog RTL 综合编码风格),则触发器的仿真模型将不正确,并且 Synopsys 在读取用于综合的模型时会报告错误。

异步复位代码:

module async_resetFFstyle (

output reg q,

input d, clk, rst_n);

always @(posedge clk or negedge rst_n)

if (!rst_n) q <= 1'b0;

else q <= d;

endmodule

异步复位的综合方法

综合异步复位的方法取决于设计者对复位缓冲树的处理方式。如果复位信号直接由外部引脚驱动,通常对复位引脚执行set_drive 0命令,并对复位网络执行set_dont_touch_network命令,可防止综合工具修改该网络

有时可能还需要对复位网络执行set_resistance 0命令。另外,也可以创建一个电阻值为 0 的自定义线载模型,并使用以下命令将其应用于复位输入端口:

set_wire_load -port_list reset

异步复位优点:

1.使用异步复位的最大优点在于,只要供应商库中提供了支持异步复位的触发器,数据路径就能够保证不受复位逻辑的影响。对于那些对数据路径时序要求极高的设计而言,因处理同步复位而插入的逻辑所带来的额外门延迟和网络延迟是难以接受的。通过使用异步复位,设计人员可以确保复位逻辑不会被添加到数据路径中。

2.无论时钟是否存在,电路都能被复位。

异步复位缺点:

1.如果异步复位不是直接由 I/O 引脚驱动,那么在进行 DFT 扫描和测试时,必须禁用来自复位驱动器的复位网络。

2.对于使用异步复位的设计,静态时序分析非常困难。无论是同步复位还是异步复位,都必须对复位树进行时序分析,以确保复位释放能够在一个时钟周期内完成。复位树的时序分析必须在布局后进行,以确保满足这一时序要求。

3.异步复位最大的问题在于其 “异步性”,无论是在复位信号有效还是无效时都存在这个问题。复位信号有效时通常不会有问题,问题主要出在复位信号无效时。如果异步复位在触发器的时钟有效边沿或其附近释放,触发器的输出可能会进入亚稳态,从而导致 ASIC 的复位状态丢失。

4.异步复位还可能存在另一个问题,具体取决于其来源,即由于电路板或系统复位上的噪声或毛刺而导致的虚假复位。

然而,同步复位也存在类似但不同的问题:如果这些虚假复位脉冲在时钟边沿附近发生,触发器仍然可能进入亚稳态(任何违反建立时间要求的数据输入都会出现这种情况)

5.异步复位信号的释放与时钟信号是异步的。这种情况存在两个潜在问题:(1)违反复位恢复时间要求;(2)不同的时序元件在不同的时钟周期释放复位信号。

异步复位需要注意:

必须特别注意复位信号的释放过程,以防止芯片在复位释放时进入亚稳态的未知状态。

当使用同步复位时,复位信号的上升沿和下降沿都必须远离时钟的有效边沿。

异步复位信号的释放与时钟信号是异步的。这种情况存在两个潜在问题:(1)违反复位恢复时间要求;(2)不同的时序元件在不同的时钟周期释放复位信号。

恢复时间也可以看作是一种建立时间(tsu),其形式为 “PRE 或 CLR 信号在 CLK 上升沿之前的无效建立时间”[1]。

如果不满足恢复时间要求,可能会导致寄存器数据输出的信号完整性问题或亚稳态问题。

采用复位同步器解决:

复位同步器的第一个触发器确实存在潜在的亚稳态问题,因为其输入固定为高电平,输出被异步复位为 0,并且复位信号可能在触发器规定的复位恢复时间内释放(复位信号可能在太接近同一触发器时钟输入上升沿时变为高电平)。这就是需要第二个触发器的原因。

复位同步器的第二个触发器不会受到恢复时间亚稳态的影响,因为当复位信号释放时,该触发器的输入和输出均为低电平。由于触发器的输入和输出之间没有逻辑差异,因此输出不可能在两个不同的逻辑值之间振荡。

module async_resetFFstyle2 (

output reg rst_n,

input clk, asyncrst_n);

reg rff1;

always @(posedge clk or negedge asyncrst_n)

if (!asyncrst_n) {rst_n,rff1} <= 2'b0;

else {rst_n,rff1} <= {rff1,1'b1};

endmodule

always @ (posedge clk or negedge rst_n)

if (!rst_n) q <= 0;

else q <= d;

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

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

相关文章

数组和指针回顾,练习与解析

代码见&#xff1a;登录 - Gitee.com 1.数组和指针练习与解析 1.1数组名 1.sizeof(数组名)&#xff0c;这里的数组名表示整个数组&#xff0c;计算的是整个数组的大小。 2.&数组名&#xff0c;这里的数组名表示整个数组&#xff0c;取出的是整个数组的地址。 3.除此之…

【牛客刷题】活动安排

文章目录一、题目介绍二、解题思路2.1 核心问题2.2 贪心策略2.3 正确性证明三、算法分析3.1 为什么按结束时间排序&#xff1f;3.2 复杂度分析3.3 算法流程图解3.3.1 流程图说明3.3.2 关键步骤说明四、模拟演练五、完整代码一、题目介绍 活动安排 题目描述 给定 nnn 个活动&am…

第1讲:C语言常见概念

目录 一、什么是C语言&#xff1f; 二、C语言的历史与成就 三、编译器选择&#xff08;VS2022&#xff09; 1、编译与链接 2、编译器对比 3、VS2022的优缺点 四、VS项目与源文件、头文件介绍 五、第一个C语言程序 六、main函数 七、printf和库函数 八、关键字介绍 …

WinUI3入门18:从APP打开商店链接以及实现内购

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

BI布局拖拽 (1) 深入react-gird-layout源码

因为有个拖拉拽的需求&#xff0c;类似于quickBi那样的效果。在网上调研了一下发现react-grid-layout实现效果类似&#xff0c;但其也有局限性&#xff0c;比如不支持嵌套&#xff0c;不支持在多个gridLyaout之间互相拖拽。 要求&#xff1a;基于react-grid-layout的思路&#…

CentOS环境搭建-快速升级G++版本

在CentOS环境中快速升级G编译器版本&#xff0c;对于追求最新语言特性的开发者来说至关重要。由于CentOS默认的软件仓库可能不提供G的最新版本&#xff0c;我们通常需要借助第三方软件源&#xff0c;如Developer Toolset或使用Spack等包管理器来完成这一任务。下面将详细介绍两…

分布式接口幂等性的演进和最佳实践,含springBoot 实现(Java版本)

一、背景&#xff1a;为什么需要幂等性 在微服务、分布式架构下&#xff0c;网络不可靠、请求重试机制&#xff08;如前端超时重发、客户端重发、网关重试、消息消费失败重试等&#xff09;会带来重复请求&#xff0c;如果接口没有幂等性&#xff0c;可能导致&#xff1a; 重复…

OGRE 3D----6. 背景图片渲染实现详解

1. 背景图片渲染原理 1.1 渲染队列机制 Ogre3D 使用渲染队列(Render Queue)来控制对象的渲染顺序。背景图片需要在所有其他对象之前渲染,因此我们将其设置为 RENDER_QUEUE_BACKGROUND。 1.2 视图变换控制 为了让背景图片始终保持在场景的最远处,我们需要: 使用单位投影…

K线连续涨跌统计与分析工具

K线连续涨跌统计与分析工具 1. 概述 本工具是一个用于分析金融时间序列数据(特别是K线数据)的Python脚本,主要功能是统计连续n根同方向K线后,第n+1根K线的涨跌情况。该工具不仅提供统计分析功能,还支持图形化标记以验证结果,帮助交易者和量化分析师识别市场中的特定模式…

jQuery EasyUI 简介

jQuery EasyUI 简介 引言 随着互联网技术的飞速发展,前端开发变得越来越重要。jQuery EasyUI 作为一款流行的前端UI框架,极大地简化了前端开发的工作流程,提高了开发效率。本文将详细介绍 jQuery EasyUI 的起源、特点、使用方法以及在实际项目中的应用。 一、jQuery Easy…

《测试开发:从技术角度提升测试效率与质量》

测试开发的核心工作内容与职责解析 一、测试开发的定位与核心价值 测试开发&#xff08;Test Development&#xff0c;简称 TestDev 或 SDET&#xff09;是融合软件开发能力与测试工程思维的复合型岗位&#xff0c;不同于传统测试工程师&#xff0c;其核心目标是通过技术手段提…

20250710解决KickPi的K7开发板刷机之后出现DDR异常:ch:1 dq0 fail,write:0x1,read:0x20300

20250710解决KickPi的K7开发板刷机之后出现DDR异常&#xff1a;ch:1 dq0 fail,write:0x1,read:0x20300 2025/7/10 20:36[BEGIN] 2025/7/10 19:29:03 /DDR 2f85f4b2d4 cym 25/03/04-14:38.55,fwver: v1.09 In ch0 ttot10 ch0 ttot10 ch1 ttot10 ch0 ttot18 LPDDR4, 2112MHz chan…

Ansible:强大的自动部署工具

文章目录零、Ansible介绍一、安装 ansible二、配置SSH密钥1.检查密钥是否存在2.两边的机器要互相有对方的密钥三、自动部署1.传输文件(1)inventory.ini(2)sync_blt.yml(3)执行命令2.安装软件(1)inventory.ini(2)install_efvs.yml(3)执行命令零、Ansible介绍 Ansible 是一个开源…

Nacos的基本功能以及使用Feign进行微服务间的通信

Nacos是Dynamic Naming and Configuration Service的缩写。What’s Nacos? 下面结合SpringBoot项目&#xff0c;为你介绍Nacos的基本功能以及如何使用Feign进行微服务间的通信。 一、Nacos的基本功能 Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管…

C1编译器和C2编译器Test01

在HotSpot VM中内嵌有两个JIT编译器&#xff0c;分别为Client Compiler和Server Compiler&#xff0c;通常简称为C1编译器和C2编译器。开发人员可以通过如下命令显式指定JVM在运行时到底使用哪一种即时编译器。(1)-client&#xff1a;指定JVM运行在Client模式下&#xff0c;并使…

MongoDB与Spring Boot完整使用指南

目录 1. MongoDB基础概念 什么是MongoDB? 核心概念对比 文档结构示例 2. MongoDB的特点与优势 主要特点 适用场景 3. MongoDB基本操作 基本CRUD操作 插入文档 查询文档 更新文档 删除文档 4. Spring Boot集成MongoDB 步骤1:添加依赖 步骤2:配置数据库连接 …

swift开发,关于应用、页面、视图的生命周期

目录一、应用生命周期&#xff08;App Lifecycle&#xff09;UIKit (AppDelegate)SwiftUI (使用 ScenePhase)二、页面生命周期&#xff08;ViewController Lifecycle&#xff09;三、视图生命周期&#xff08;UIView Lifecycle&#xff09;四、SwiftUI 视图生命周期五、关键对比…

借助HarmonyOS SDK,《NBA巅峰对决》实现“分钟级启动”到“秒级进场”

《NBA巅峰对决》是由望尘科技推出的国内首个真实还原5V5王朝模式的操作篮球手游&#xff0c;提供流畅操作手感和真实篮球赛场体验。丰富的玩法在为玩家带来高质游戏体验的同时&#xff0c;间接带来了启动流程冗长的问题&#xff0c;资源更新阶段的等待感尤为突出。 “我们发现&…

HT-LINK ICE:海速芯32Gbps信号调理芯片,40dB补偿+国产自主,打破高速互联瓶颈!

HT-LINK ICE&#xff08;TENX海速芯&#xff09;产品解析与推广文案一、产品定位HT-LINK ICE是TENX海速芯推出的高速信号调理芯片&#xff0c;专为PCIe 5.0/6.0、USB4、Thunderbolt等超高速接口设计&#xff0c;提供信号完整性增强和时钟恢复功能&#xff0c;适用于数据中心、A…

深入剖析 ADL:C++ 中的依赖查找机制及其编译错误案例分析

一、ADL 的定义与背景&#xff08;一&#xff09;ADL 的定义ADL&#xff08;Argument-Dependent Lookup&#xff0c;依赖查找&#xff09;是 C 中一种特殊的名称查找机制&#xff0c;用于在调用函数时&#xff0c;根据函数参数的类型来确定查找的命名空间范围。ADL 的核心思想是…