概述
1.异步复位
异步复位:异步复位是指无论时钟是否到来,只要复位信号有效,就对系统进行复位。
代码如下:
module asy(clk,rst_n,d,q);
input wire clk;
input wire rst_n;
input wire d;
output reg q;
always@(posedge clk or negedge rst_n)//�첽��λ
begin
if(!rst_n)
q<=0;
else
q<=d;
end
endmodule
RTL图如下:
异步复位的优缺点:(优点:占用较少逻辑单元。缺点:可能会产生竞争冒险)
testbench如下:
`timescale 1ns/1ns
module tb_asy;
reg clk;
reg rst_n;
reg d;
wire q;
initial
begin
clk=0;
rst_n=0;
#55 rst_n=1;
#55 rst_n=0;
#55 rst_n=1;
#55 rst_n=0;
end
always #10 clk=~clk;
asy asy(
.clk(clk),
.rst_n(rst_n),
.d(d),
.q(q)
);
endmodule
仿真结果如下:
2.同步复位
同步复位:复位信号只有在时钟上升沿到来时才有效。
代码如下:
module syn(clk,rst_n,d,q);
input wire clk;
input wire rst_n;
input wire d;
output reg q;
always@(posedge clk)
begin
if(!rst_n) //同步复位
q<=0;
else
q<=d;
end
endmodule
RTL图如下:
同步复位的优缺点:(优点:可以尽量点少竞争冒险的可能。缺点:会占用更多的逻辑单元)
testbench如下:
`timescale 1ns/1ns
module tb_syn;
reg clk;
reg rst_n;
reg d;
wire q;
initial
begin
clk=0;
rst_n=0;
#55 rst_n=1;
#55 rst_n=0;
#55 rst_n=1;
#55 rst_n=0;
end
always #10 clk=~clk;
syn syn(
.clk(clk),
.rst_n(rst_n),
.d(d),
.q(q)
);
endmodule
仿真结果如下:
3.异步复位同步释放
最后
以上就是现实外套为你收集整理的异步复位,同步复位,异步复位同步释放的全部内容,希望文章能够帮你解决异步复位,同步复位,异步复位同步释放所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复