异步复位,同步复位,异步复位同步释放

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.异步复位同步释放

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值