【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL74

news2024/10/3 3:37:31

异步复位同步释放

描述

题目描述:    

请使用异步复位同步释放将输入数据a存储到寄存器中,并画图说明异步复位同步释放的机制原理

信号示意图:

clk为时钟

rst_n为低电平复位

d信号输入

dout信号输出

波形示意图:

输入描述:

clk为时钟

rst_n为低电平复位

d信号输入

输出描述:

dout信号输出

解题思路

 主要参考以下博文

异步复位同步释放 - 知乎 (zhihu.com)

了解复位的概念 

电路的任何一个寄存器、存储器结构和其他时序单元都必须附加复位逻辑电路,以保证电路能够从错误状态中恢复、可靠地工作。对于综合实现的真实电路,通过复位使电路进入初始状态或者其他预知状态。

同步复位

下面给出一个简单的同步复位的D触发器Verilog代码如下:

module Sync_rst(
	input		clk,
	input		rst, //Synchronous reset
	input		d,
	output	reg	q
);

	always @(posedge clk) begin
		if (!rst)	q <= 1'b0;
		else			q <= d;
	end

endmodule

RTL视图如下所示:

 同步复位的优点:

  1. 抗干扰性高,可以剔除复位信号中周期短于时钟周期的毛刺;
  2. 电路稳定性强。

同步复位的缺点:

  1. 大多数逻辑器件的目标库内的DFF都只有异步复位端口,将其用于同步复位时,综合器就会在寄存器的数据输入端插入额外的组合逻辑,占用更多的逻辑资源;
  2. 同步复位依赖于时钟,如果电路中的时钟信号出现问题,则无法完成复位。
  3. 对复位信号的脉冲宽度有要求,必须大于指定的时钟周期,由于线路上的延迟,可能需要多个时钟周期的复位脉冲宽度,且很难保证复位信号到达各个寄存器的时序
异步复位

一个简单的异步复位的D触发器,Verilog代码如下:

module Async_rst(
	input		clk,
	input		rst_n,
	input 	d,
	output reg q
);

	always@(posedge clk or negedge rst_n) begin
		if(!rst_n)  q<= 1'b0;
		else 			q <= d;
	end	
endmodule

RTL视图如下所示:

 异步复位的优点:

  1. 无需额外的逻辑资源,实现简单;
  2. 复位信号不依赖于时钟。

异步复位的缺点:

  1. 复位信号容易受到外界的干扰,如毛刺等影响;
  2. 复位信号释放的随机性,可能导致时序违规,倘若复位释放时恰恰在时钟有效沿附近,就很容易使电路处于亚稳态

异步复位同步释放

异步复位:复位信号可以直接不受时钟信号影响,在任意时刻只要是低电平就能复位,即复位信号不需要和时钟同步;如上图所示,当rst_n有效时(即rst_n = 1'b0时),第一级D触发器和第二级D触发器的输出rst_0、rst_1均为低电平(即rst_0=1‘b0、rst_1'b0);此时,以rst_1作为复位信号的第三个D触发器的复位信号有效,其输出dout被复位,即dout = 1'b0;该过程被称为异步复位

同步释放:让复位信号取消的时候,必须跟时钟信号同步,即刚好跟时钟同沿;在上图中,假设rst_n撤除(即rst_n = 1’b1)时发生在clk上升沿,如果不加该电路(异步复位同步释放电路)可能会发生亚稳态事件(有的时候会打三拍)。但是加上此电路后,假设第一级D触发器在clk_上升沿时rst_n刚好撤除(即rst_n = 1’b1),则第一级D触发器可能输出高电平“1”,也可能输出亚稳态,也可能输出低电平。但此时第二级触发器不会立刻更新输出,第二级触发器输出值为前一级触发器的输出状态rst_0。显然第一级触发器之前为低电平,故第二级触发器输出保持复位(rst_2 = 1'b0).直到下一个时钟有效沿到来之后,才随着变为高电平(rst_2 = 1'b1)。即实现同步释放

其Verilog代码如下(题解Verilog代码):
`timescale 1ns/1ns

module ali16(
input clk,
input rst_n,
input d,
output reg dout
 );

//*************code***********//
reg rst_0, rst_1;

//异步复位同步释放
always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin  rst_0 <= 1'b0; rst_1 <= 1'b0; end
    else begin         rst_0 <= 1'b1; rst_1 <= rst_0;end
end
//将输入数据存储到寄存器中
always @(posedge clk or negedge rst_1) begin
    if (!rst_1)   dout <= 1'b0; 
    else          dout <= d;    
end
//*************code***********//
endmodule
异步复位同步释放波形图如下所示:

异步复位同步释放的优点

  • 避免复位信号释放的时候造成的亚稳态问题
  • 只要复位信号一有效,电路就处于复位状态,以时钟沿无关
  • 有效捕捉复位,即使是短脉冲复位也不会丢失
  • 有明确的复位撤销行为,复位的撤离是同步信号,因此有良好的撤离时序和足够的恢复时间
  • 两级触发器打两拍的方法解决亚稳态的问题;

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

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

相关文章

在线翻译界的4大宝藏,一站式解决语言难题!

现在全球化越来越厉害&#xff0c;语言根本就不是啥沟通的阻碍了。不管是搞学术研究、商务交流&#xff0c;还是平常学习&#xff0c;翻译工具都成了咱少不了的帮手。今天呢&#xff0c;我给大家推荐四款在 2024 年特别受推崇的邮件翻译神器&#xff0c;像百度在线翻译啥的。这…

Suricata:开源网络分析和威胁检测

Suricata 是一款高性能、开源网络分析和威胁检测软件&#xff0c;被大多数私人和公共组织使用&#xff0c;并被主要供应商嵌入以保护他们的资产。 Suricata 功能 Suricata 提供全面的网络安全监控 (NSM) 功能&#xff0c;包括记录 HTTP 请求、捕获和存储 TLS 证书以及从网络流…

带你深入浅出设计模式:一、单例模式,正确理解懒汉式和饿汉式

此为设计模式第一谈&#xff01; 用总-分-总的结构和生活化的例子给你讲解设计模式&#xff01; 码农不易&#xff0c;各位学者学到东西请点赞收藏支持支持&#xff01; 开始部分&#xff1a; 总&#xff1a;对于单例模式&#xff0c;在开发中通常用于设计配置信息类、数据库…

A/D转换器的基本概念(分辨率+转换时间+采样定律+量化误差)+A/D转换方法(Flash(同步)型A/D转换器+计数型转换器)

2024-10-02&#xff0c;星期三&#xff0c;21:41&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。Hello&#xff0c;大家好啊&#xff0c;真的是好久没见了&#xff0c;上次更新还是在九月份&#xff0c;九月的最后一周出了一周的差&#xff0c;然后继续上了两…

代码随想录训练营Day19 | 235. 二叉搜索树的最近公共祖先 | 701.二叉搜索树中的插入操作 | 450.删除二叉搜索树中的节点

Leetcode 235. 二叉搜索树的最近公共祖先 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且…

【Nacos入门到实战三】安装Nacos Server:从零开始搭建配置中心

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

vue3项目如何添加属于自己的 live2d 看板娘 (支持换模型)

一、效果如下&#xff0c;想要更加效果前往我的博客 snows_ls BLOGhttp://124.223.41.220/ 资源我放这个仓库咯&#xff0c; 直接拉取即可 snows_l/live2d-sourcehttps://gitee.com/snows_l/live2d-source 二、引入&#xff08;看板娘出来了&#xff09; 直接在vue项目html中…

查找与排序-快速排序

排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要访问外存。常见的内部排序算法有&#xff1a;插入排序、希尔排序、选择排序…

高效论文写作指南:那些你必须知道的工具与平台

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在完成论文写作过程中&#xff0c;有许多实用的工具和平台可以帮助提高效率、确保质量&#xff0c;并保持学术规范。以下是一些常用的论文写作工具和平台&#xff1a; 1. 文献管理工具…

数据网格:数据去中心化的特征

在现代的数据管理架构理念中&#xff0c;常常会谈及数据网格&#xff0c;将它用来解决大规模、复杂数据环境下的数据管理和利用问题。本文将探讨数据网格的概念以及数据去中心化和数据网格的紧密联系。 一数据网格 数据网格定义&#xff1a;数据网格将数据视为一种产品&#x…

中原台球展,2025郑州台球展会,中国台球产业链发展大会

阳春三月&#xff0c;万物复苏&#xff0c;商机无限&#xff1b;品牌宣传正当季&#xff0c;产品招商正当时&#xff0c;新品发布好时期。抓住台球发展的这波财富机遇&#xff0c;借助壹肆柒郑州台球展这个超级平台&#xff0c;将品牌和产品快速打造成为覆盖全国市场的顶流。20…

Acwing 简单博弈论

公平组合游戏ICG 若一个有限满足&#xff1a;由两名玩家交替行动&#xff1a; 在游戏进程的任意时刻&#xff1b;可以执行的合法行动与轮到哪名玩家无关&#xff1b;不能行动的玩家判负&#xff1b; 则称该游戏为一个公平组合游戏。NIM博弈属于公平组合游戏&#xff0c;但城建…

鸢尾花书实践和知识记录[编程1-11二维和三维可视化]

作者空间 文章目录 思维导图函数使用 二维可视化方案平面散点图散点图的示例代码1&#xff1a;绘制鸢尾花的散点图代码2Plotly绘制散点图 数据类型和绘图工具的对应 平面等高线代码3生成等高线网格数据 plotly.express关键的绘图函数 Plotly的另一个模块代码4 Plotly生成的 热图…

以旅游购物贸易方式报关出口的货物是什么意思

旅游购物贸易方式的定义 ‌旅游购物贸易‌是指国内外旅游者通过旅游渠道&#xff0c;携带外币现钞、外币票据入境&#xff0c;到外汇指定银行兑换成人民币&#xff0c;并在特定区域进行商品采购、报检、报关后&#xff0c;将所购货物运回国内进行销售的贸易行为。这种贸易方式通…

官方外卖霸王餐对接接口渠道如何选择?

对接官方外卖霸王餐接口渠道通常涉及以下步骤&#xff1a; 选择服务提供商&#xff1a;选择一个提供外卖霸王餐API接口服务的平台。注册与申请&#xff1a;在选定服务提供商的平台上进行注册并创建账号&#xff0c;然后提交API接口使用申请。获取接口文档和密钥&#xff1a;申…

CSS基础-常见属性

6、CSS三大特性 6.1 层叠性 如果样式发生冲突&#xff0c;则按照优先级进行覆盖。 6.2 继承性 元素自动继承其父元素、祖先元素所设置的某些元素&#xff0c;优先继承较近的元素。 6.3 优先级 6.3.1 简单分级 1、内联样式2、ID选择器3、类选择器/属性选择器4、标签名选择器/…

SpringBoot框架下的社区医院信息系统开发

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理社区医院信息平台的相关信息成为必然。开发…

钢琴灯品牌排行榜前十名有哪些?护眼灯钢琴灯品牌排行榜

钢琴灯品牌排行榜前十名有哪些&#xff1f;要说近期比较火爆的家电产品&#xff0c;那一定绕不开护眼灯钢琴灯。作为能够提高光线质量&#xff0c;帮助我们营造舒适环境的热门好物&#xff0c;其受到了很多专业人士的认可。但是作为一名专业的家电测评师&#xff0c;我想在此提…

找到字符串中第一个匹配项的下标(c语言)

1./给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 //示例 1&#xff1a; //输入&#xff1a;haystac…

plt用数组显示图像

目录 plt.imshow实战 plt.imshow plt.imshow 可以用来显示二维数组表示的图像&#xff0c;也可以用来显示热图&#xff08;heatmap&#xff09;等。基本语法如下&#xff1a; plt.imshow(X, cmapviridis, interpolationnearest)参数说明&#xff1a; X&#xff1a;二维数组&…