【数字IC手撕代码】Verilog异步复位同步释放|题目|原理|设计|仿真

简介: 【数字IC手撕代码】Verilog异步复位同步释放|题目|原理|设计|仿真

image.png


一、前言


本系列旨在提供100%准确的数字IC设计/验证手撕代码环节的题目,原理,RTL设计,Testbench和参考仿真波形,每篇文章的内容都经过仿真核对。快速导航链接如下:


1.奇数分频

2.偶数分频

3.半整数分批

4.小数/分数分频

5.序列检测器

6.模三检测器

7.饮料机

8.异步复位,同步释放

9.边沿检测(上升沿,下降沿,双边沿)

10.全加器,半加器

11.格雷码转二进制

12.单bit跨时钟域(打两拍,边沿同步,脉冲同步)

13.奇偶校验

14.伪随机数生成器[线性反馈移位寄存器]

15.同步FIFO

16.无毛刺时钟切换电路


应当说,手撕代码环节是面试流程中既重要又简单的一个环节,跟软件类的岗位相比起来,数字IC的手撕代码题目固定,数量有限,属于整个面试中必得分的一个环节,在这个系列以外,笔者同样推荐数字IC求职者使用“HdlBits”进行代码的训练

链接如下

HDLBits — Verilog Practice


二、异步复位同步释放题目


使用Verilog代码,完成异步复位同步释放电路的设计


三、异步复位同步释放的原理


一个带异步复位端DFF的工作流程

假如一个DFF的复位值是0,那么rst_n=0的信号到来时,该DFF进行复位,当rst_n=1的信号到来时,该DFF正常工作。


可能出现的问题

当rst_n的信号重新回到1的时间和clk上升沿到来的信号非常接近的时候,DFF可能会输出亚稳态,造成信号无法识别是1还是0


解决办法

异步复位:对为0的复位信号不做处理,让其正常异步复位

同步释放:对为1的复位信号打两拍,使其拉高时对齐时钟边沿,以此来避免亚稳态的发生


异步复位同步释放的时序图

image.png


四、RTL设计


module rst_asy(clk,rst_n,rst_out);
input clk;
input rst_n;
output reg rst_out;
reg rst_r1;
always@(posedge clk or negedge rst_n)
if(!rst_n)
begin
rst_out<= 1'b0;
rst_r1 <= 1'b0;
end
else
begin
rst_r1 <= rst_n;
rst_out <= rst_r1;
end
endmodule


五、Testbench代码


`timescale 1ns /1ps
module rst_asy_tb();
reg clk ;
reg rst_n;
wire rst_out;
rst_asy u1(.clk(clk),.rst_n(rst_n),.rst_out(rst_out));
always #5 clk = !clk;
initial
begin
clk = 0;
rst_n = 1;
#7
rst_n = 0;
#5
rst_n = 1;
#30
$stop;
end
endmodule


六、仿真分析


d697ab5705194083be581f4960a640ff.png

rst_n重新拉高后,rst_out等了被寄存器存了两次才输出,避免了亚稳态的发生,设计成立

相关文章
【verilog】同步复位,异步复位以及异步复位同步释放
该文讨论了数字电路设计中触发器复位机制的三种类型:同步复位、异步复位和异步复位同步释放。同步复位在时钟边沿确保稳定性,但对复位脉冲宽度有要求;异步复位响应快速,但可能受干扰且时序不确定;异步复位同步释放则结合两者的优点。设计时需根据需求权衡选择。文中还给出了Verilog代码示例。
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
|
机器学习/深度学习 传感器 算法
植保机器人病虫害检测
植保机器人病虫害检测
311 2
【数字IC手撕代码】Verilog单bit跨时钟域快到慢,慢到快,(打两拍,边沿同步,脉冲同步)|题目|原理|设计|仿真
【数字IC手撕代码】Verilog单bit跨时钟域快到慢,慢到快,(打两拍,边沿同步,脉冲同步)|题目|原理|设计|仿真
【数字IC手撕代码】Verilog单bit跨时钟域快到慢,慢到快,(打两拍,边沿同步,脉冲同步)|题目|原理|设计|仿真
【数字IC手撕代码】Verilog序列检测器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog序列检测器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog序列检测器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog同步FIFO|题目|原理|设计|仿真
【数字IC手撕代码】Verilog同步FIFO|题目|原理|设计|仿真
【数字IC手撕代码】Verilog同步FIFO|题目|原理|设计|仿真
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog轮询仲裁器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog轮询仲裁器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog轮询仲裁器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真
【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真
【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真