数字IC手撕代码-异步复位同步释放

2023-10-31

 前言:

        本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。

目录如下:

1.数字IC手撕代码-分频器(任意偶数分频)

2.数字IC手撕代码-分频器(任意奇数分频)

3.数字IC手撕代码-分频器(任意小数分频)

4.数字IC手撕代码-异步复位同步释放

5.数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)

6.数字IC手撕代码-序列检测(状态机写法)

7.数字IC手撕代码-序列检测(移位寄存器写法)

8.数字IC手撕代码-半加器、全加器

9.数字IC手撕代码-串转并、并转串

10.数字IC手撕代码-数据位宽转换器(宽-窄,窄-宽转换)

11.数字IC手撕代码-有限状态机FSM-饮料机

12.数字IC手撕代码-握手信号(READY-VALID)

13.数字IC手撕代码-流水握手(利用握手解决流水线断流、反压问题)

14.数字IC手撕代码-泰凌微笔试真题

15.数字IC手撕代码-平头哥技术终面手撕真题

16.数字IC手撕代码-兆易创新笔试真题

17.数字IC手撕代码-乐鑫科技笔试真题(4倍频)

18.数字IC手撕代码-双端口RAM(dual-port-RAM)

        ...持续更新

为了方便可以收藏导览博客: 数字IC手撕代码-导览目录


目录

异步复位同步释放

 代码

testbench

波形


异步复位同步释放

请你用verilog,设计一个电路实现异步复位同步释放功能。

为什么要,异步复位同步释放?这个功能有什么用?

这八个字包含两个步骤,异步复位,同步释放

异步复位的意思是复位信号rstn和clk信号不是同时到来的,在always语句块中表现为:

always @(posedge clk or negedge rstn) begin

    if(!rstn)

        reg _1   <= 1'b0;

end

        当异步复位信号到来时,寄存器 reg_1 会被直接拉低,这是不会产生问题的,当rstn下降沿和clk上升沿同时到来时,如果rstn比clk先到来一瞬间,且原来的reg_1信号为1,reg_1会被拉低为0,后一瞬间,clk来了,因为前一瞬间的reg_1值被拉低了,所以在clk到来时,一定有set_up不满足要求...

        但是,一进always 语句块后,由于rstn是0,所以reg_1会被赋值为0,还是0。也就是说不管我reg_1的set_up / hold满不满足要求,reg_1都会被重置到0,不会有任何问题,如图所示: 

        综上所述,异步复位信号是不会产生问题的,但是为什么要同步释放?是释放信号会出问题吗?

        答:是的,当rstn释放的时候(从0变1)时,如果rstn释放边沿和clk释放边沿很接近,那么就会出现亚稳态,而亚稳态在电路里面是非常致命的,在亚稳态采样到的数据是不准确的,而电路中一个不准确的值,会导致这后面的所有值都不准确。

        当rstn释放的时候,寄存器的输入端D可能因为某个组合逻辑电路和rstn有关系,导致D随rstn同步拉高。那在clk上升沿到来的时候,就会有D的set_up不满足,出现亚稳态,边沿采样的时候,输出reg_1不知道该采D=0的信号还是D=1的信号,所以不妨打两拍,不着急在rstn释放的时候采样,用两个寄存器来延迟两个周期,等到数据D稳定了之后再同步拉高rstn采样。 

 代码

module asyn_rstn_syn_re(
    input      clk      ,
    input      rstn     ,
    output reg rstn_out
);

reg rstn_1;

always @(posedge clk or negedge rstn)begin
    if(!rstn)begin
        rstn_1   <= 1'b0;
        rstn_out <= 1'b0;
    end
    else begin
        rstn_1   <= rstn;
        rstn_out <= rstn_1;
    end
end

endmodule

testbench

module asyn_rstn_syn_re_tb();

reg clk,rstn;

wire rstn_out;

always #10 clk = ~clk;

initial begin
    clk <= 1'b0;
    rstn <= 1'b0;
    #30
    rstn <= 1'b1;
end

asyn_rstn_syn_re u_asyn_rstn_syn_re(
    .clk        (clk)       ,
    .rstn       (rstn)      ,
    .rstn_out   (rstn_out)
);

endmodule

波形

        总结:异步复位为0 的时候不做处理,当rstn从0变1的时候,打两拍随clk同步拉高,此时寄存器输入的D已经稳定很长时间,可以避免亚稳态的发生。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字IC手撕代码-异步复位同步释放 的相关文章

  • PRBS笔记

    1 概述 PRBS 伪随机二进制序列 也称为伪随机码 通常被用来测试高速信号的信号质量 伪随机 也说明了该码流并不是真正的随机 而是具有特性属性 码流由 多项式 决定 具有重复周期 PRBS具有多种阶数 如PRBS7 PRBS15 PRBS
  • STM32【复习串口】

    串口复习加深理解笔记 杂谈 USART FLAG TXE发送缓冲区空标志 说明可以往数据寄存器写入数据了 但并不代码数据发送完成了 USART FLAG TC发送完成标志 这个才是代表USART在缓冲区的数据发送完成了 即从机接收到了数据
  • Verilog:【1】时钟分频电路(clk_divider.sv)

    碎碎念 作为Basic Verilog的第一个学习笔记 打算用这种命名方式来对博客进行命名 应该有助于检索 简单阅览了部分工程的代码 发现里面有很多嵌套关系 因此决定先从基础模块开始 也是为了整个博客内容的流畅性 读者朋友有问题的话 也可以
  • Vivido添加pynq-Z2开发板

    一 下载pynq z2开发板文件 下载地址 https www tulembedded com FPGA ProductsPYNQ Z2 html 二 将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards fi
  • PLL时钟约束

    方法 1 自动创建基时钟和 PLL 输出时钟 例 derive pll clocks 这一方法使您能够自动地约束 PLL 的输入和输出时钟 ALTPLL megafunction 中指定的 所有 PLL 参数都用于约束 PLL 的输入和输出
  • Matlab 高斯信道下QPSK通带通信系统的简单仿真

    1 原理 2 仿真 3 总结反思 4 参考资料 1 原理 QPSK的具体内容请参考百度 QPSK的调制jie框图大致如下 QPSK信号可以采用正交调制的方式产生 如第一张图片的左半部分 I路信号与cos 信号相乘 Q 路信号与sin信号相乘
  • 手把手教你Modelsim仿真【2020.4版本】

    首先新建一个文件夹 test5 打开Modelsim 依次选择 File gt Change Directory 把目录选择到创建的 test5 文件夹 创建库 依次选择 File gt New gt Library 一般我们选择第三个 库
  • 关于Keil中Memory中观察不到数据变化的问题以及启动文件栈的初始化

    关于Keil中Memory中观察不到数据变化的问题 在KEIL中观察Memory数据变化 一定要记得只能在RAM地址或ROM之内观察 如下图所示 RAM的地址设置在地址为0x20000000开始的地方 大小为0x20000 因此只有在这个范
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • 小梅哥Xilinx FPGA学习笔记9——语法(阻塞与非阻塞赋值)

    阻塞赋值与非阻塞赋值详解 注意 阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 非阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 注意 阻塞赋值与非阻塞赋值 只有在时序逻辑中才有 不是阻塞赋值 也不是非阻塞赋值
  • 八段数码管动态显示(输入数据为BCD编码)

    八段数码管动态显示 输入数据为BCD编码 一 数码管概述 图1 八段共阴数码管内部等效原理图 图2 八段共阳数码管内部等效原理图 上面两图分别是对应八段共阴 共阳的数码管内部等效图 共阴是将八个LED数码管的阴极连接在一起接低 阳极segm
  • FPGA_时钟显示(时钟可调)

    1 实验说明 在数码管显示数据的基础上 让六位数码管显示数字时钟 并且通过按键可以对时间进行修改 实验目标 六位数码管分别显示时间的时分秒 且通过按键可实现加减调整时间及清零功能 key1 切换键 选择待调整的时间单位 时 分 秒 key2
  • 【DDR3 控制器设计】(3)DDR3 的写操作设计

    写在前面 本系列为 DDR3 控制器设计总结 此系列包含 DDR3 控制器相关设计 认识 MIG 初始化 读写操作 FIFO 接口等 通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO 接口设计等 附上汇总博客直达链接 DD
  • FPG—VGA显示器字符显示(附代码)

    目录 1 实操 1 1 字符取模 1 2 顶层模块 1 3 图像数据生成模块 1 3 1 模块框图 1 3 2 波形图绘制 1 3 3 代码编写 1 3 4 仿真验证 2 总结 本例程大部分与VGA显示驱动内容相同 只是显示部分改变了 故此
  • 画时序图软件——TimeGen和Timing Designer下载

    在写实验报告的时候需要画波形图 但是手头没有很好的软件 就上网搜了一些 分享出来 这里分享的是TimeGen和Timing Designer两个软件 资源均来自网上 有侵权请联系 TimeGen使用和安装都比较简单 我发的应该里面有破解方法
  • 无线网络管理系统与无线路由器的区别

    第5章 波形发生器软件设计 本章我们将介绍系统的软件设计 系统中控制软件占有很重要的地位 它不仅要产生波形数据 控制波形的发生 还要控制显示电路和键盘电路 因此系统软件的好坏直接决定着系统的功能和稳定 5 1软件的总体结构 在本系统中 由于
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步

随机推荐

  • Java:关于Java中的线程中断的几种方法

    Java 关于Java中的线程中断的几种方法 1 使用线程的stop 来中断线程 2 使用线程的interrupt 来中断线程 3 通过共享变量来控制 使用线程的stop 来中断线程 这种方式是直接调用线程的stop 方法 可以直接让线程终
  • 子网地址,广播地址,子网掩码,主机地址范围,求法总结

    熟练转换 十进制 gt 二进制 如给出 主机数或者说划分多少个子网 这时候 我们用2的n次方 2 gt 主机数或子网数 求出n n表示子网位数 那么子网总数为 2的n次方 而一个字节8位 那么剩下8 n 位主机号 可得出 子网间隔为2的 8
  • NTP-时间同步,(Linux / Windows)服务端搭建到时间同步配置操作-直接拿下

    一 NTP服务器搭建跟同步配置 centos8 1 安装chrony服务 centos8系统版本自带 centos8以前的版本为ntpd服务 yum install chrony 2 启动服务 Systemctl start chronyd
  • MySQL——变量与游标

    今天我们来一起学习MySQL中 的变量 系统变量与用户变量 以及什么是游标 游标如何使用 1 变量 在 MySQL 数据库的存储过程和函数中 可以使用变量来存储查询或计算的中间结果数据 或者输出最终的结果数据 在 MySQL 数据库中 变量
  • 多线程的锁

    简介 1 失败后进行锁膨胀 偏向锁 gt 轻量锁 gt 重量锁 2 偏向锁 认为没有竞争 每次都是同一个线程获取的锁 所以第一次通过CAS后 把线程id放到锁对象Mark Word后 以后每次都不需要CAS操作 3 轻量级锁 认为没有竞争
  • jdbc驱动安装以及简单测试

    最近又需要写jdbc啦 正好顺便把下载配置教程整理一下 教程分三个部分 下载jdbc驱动 配置jdbc到项目 简单连接一下数据库 1 下载jdbc驱动 下载网址 https dev mysql com downloads connector
  • 菜鸟级的Git与GitHub使用总结

    前言 这几天一直在折腾学习Git和GitHub的使用 几天下来 在网上查阅了大量的资料 总算有一些成果 作为一个已经工作两年了的菜鸟程序员 现在才来学习使用Git及github 实在忏愧 网上某大神说的好 不会使用Git和github 根本
  • 史上最牛mysql-02 (MySQL的下载、安装、配置)

    2 MySQL的下载 安装 配置 个人博客 www xiaobeigua icu 2 1 MySQL的4大版本 MySQL Community Server 社区版本 开源免费 自由下载 但不提供官方技术支持 适用于大多数普通用户 MySQ
  • chrome 该文件可能已遭到删除、移动,或者文件权限不允许进行访问

    最新 我他妈的直接拖到浏览器里 貌似就好了 下边也操作过 不知道是否有影响 草草草草 创建MyChromeDevUserData的文件夹 打开终端 输入下面的命令 需要替换路径中的yourname open n Applications G
  • springboot整合ELK快速搭建日志管理系统

    一 ELK简介 ELK是Elastic公司的三个组件 三个组件共同配合实现日志收集 Elasticsearch是实时全文搜索和分析引擎 提供搜集 分析 存储数据三大功能 是一套开放REST和JAVA API等结构提供高效搜索功能 可扩展的分
  • 动态规划解决TSP(旅行推销员问题)

    本篇文章参考自https blog csdn net hu413031273 article details 51329514 TSP问题 Travelling Salesman Problem 又译为旅行推销员问题 货郎担问题 即假设有一
  • electron报错:Refused to execute inline event handler because it violates the following Content 。。。

    electron 页面添加 onClick 点击事件报错 Refused to execute inline event handler because it violates the following Content Security
  • python读取多个文件夹/子文件夹里面的图片,并且将图片转为灰度图

    最近在做CNN 因此要大量读取图片 朋友给了这个代码给我 我觉得不错就分享一下 用了这个代码一下子就能读取所有子文件夹下所有图片了 这是dataset 我把图片全部存放在他的子文件夹里 便于区分各类图片 我的图片全部存放在子文件夹中 然而当
  • nest 非对称加密(rsa),登录密码为例

    nest import as NodeRSA from node rsa let priKey new NodeRSA b 1024 priKey setOptions encryptionScheme pkcs1 解密 export fu
  • 算法:子集和数问题N-Sum(N数之和)

    在LeetCode上有两数之和 三数之和 四数之和的问题 干脆直接写一个N数之和 问题描述 已知数组A 0 N 1 给定某数值sum 找出数组中的若干个数 使得这些数的和为sum 解决方法 设一个bool向量x 0 N 1 x i 0表示不
  • CSDN CODE 初体验

    写在前头 自从在2012年初写了一篇 一个人的Scrum之准备工作 两年过去了 how time flies 在文中我费劲千辛万苦搭好了工作环境 自己乐在其中 这是一种痛并快乐着的感觉 本以为自己就开始的一段时间熟悉环境费心些 没想到后来的
  • stm32如何设置蜂鸣器温度报警_基于 51 单片机无线 RF433M 传输胎压监测 GSM 短信报警设计...

    功能介绍 发射机组成 STC89C52RC BMP180 大气压模块 RF433Mhz 无线模块 接收机组成 STC89C52RC RF433Mhz 无线模块 SIm800CGSM 模块 蜂鸣器 按键 功能描述 两个发射分别采集大气压信息和
  • Ubuntu添加交叉编译成功

    先把arm linux那个包复制到自己建的文件夹 自己建文件夹mkdir min 复制cp r arm linux home lin min 查看路径的命令为pwd sudo vim etc profile 在最后添加 export PAT
  • 洛谷 P1746 离开中山路

    https www luogu com cn problem P1746 contestId 67264 AC代码 include
  • 数字IC手撕代码-异步复位同步释放

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代