锁存器与触发器

本文详细介绍了锁存器与触发器的类型和工作原理,包括SR锁存器、电平触发器(如电平RS触发器、D触发器)、脉冲触发器(如脉冲RS触发器、脉冲JK触发器)以及边沿触发器(如边沿JK触发器、边沿D触发器)。讨论了不同触发器的特点,如电平触发器在CLK为高时输入信号变化可能导致输出多次翻转,而边沿触发器仅在时钟边沿变化时更新输出,提高了抗干扰能力。文章还通过电路分析和仿真结果展示了触发器在遇到噪声干扰或特定输入组合时的行为,并指出了一些设计上的问题和解决方案。
摘要由CSDN通过智能技术生成

SR锁存器(与非门)

SR锁存器是静态存储单元中最简单、最基本的一种。通常由两个与非门或两个或非门组成。
在这里插入图片描述
分析该电路,当S为低(有效电平),R为高(无效电平)时,G1(上边的与非门)输出Q必为1,则G2门输出Qn必为~(1&1)=0,G2门输出连接到G1的输入,使G1门输出Q依然为1,此时撤掉S的输入信号(拉高为无效电平),由于Qn输出0,所以Q依然输出1。整个SR锁存器依然保持这Q=1、Qn=0的输出状态;

当R为低(有效电平),S为高(无效电平)时,Qn输出为1,Q输出为0,且足以保持稳定;

当S、R均为高(无效电平),假设初始时Q=1,Qn=0,此时G1门输入为S(1)以及Qn(0)输出Q依然为1,G2门输入R(1)Q(1)输出依然为0;假设初始时Q=0,Qn=1,此时G1门输入为S(1)以及Qn(1)输出Q依然为0,G2门输入R(1)Q(0)输出依然为1;综上,当SR=1时,SR锁存器表现出保持Q输出不变的状态,与(前提是Q=~Qn);

当S、R均为低电平(有效信号时),此时理论上来说Q、Qn均输出1,且可以保持稳定。但是当S、R同时撤掉有效信号(拉高)时,第一:假设G1、G2同时运算,这是Q、Qn输出的1作用在与非门上导致输出两个输出0,0又作用在与非门导致输出1,循环往复,类似于矩形波,这与上面说的S、R为高电平时锁存器表现出保持Q输出不变的状态相违背;第二:实际上这一状态无法保持稳定。当S、R同时升高为1时,由于实际工艺存在延迟及G1、G2门无法同时运算等多种不可抗力,当G1门率先运算时,此时S、R为1,Qn=1,故G1门输出Q为0,导致G2门输入变成1和0,Qn输出1,总输出Q=0,Qn=1;而当G2门率先运算时,此时S、R为1,Q=1,故G2门输出Q为0,导致G1门输入变成1和0,Q输出1,总输出Q=1,Qn=0;因此输出不具有稳定性。以上所说的不稳定性,仅限于S、R为有效信号的情况下同时撤去信号时,如果一个变无效、一个仍有效,或者两个信号均保持为低电平(有效)不变,SR锁存器仍具有稳定性。
通常,将Q=1,Qn=0称为电路的1状态,Q=0,Qn=1称为0状态。
在这里插入图片描述
门级实现电路:

module test(
	input	s_n,//置位端 低电平有效
	input	r_n,//复位端 低电平有效
	output	q,	//输出q
	output	qn	//输出~q
);

nand a1(q,s_n,qn);
nand a2(qn,r_n,q);

endmodule

在这里插入图片描述

testbench(主要进行了S_n|R_n=1的情况仿真、S_n=0、R_n=0应尽量避免):

`timescale 1 ns/ 1 ps
module test_vlg_tst();

reg r_n;
reg s_n;                                               
wire q;
wire qn;
                       
test i1 (  
	.q(q),
	.qn(qn),
	.r_n(r_n),
	.s_n(s_n)
);
initial                                                
begin  
		r_n = 1; s_n = 0;//初始置1
	#20 r_n = 1; s_n = 1;//q=1 保持
	#20	r_n = 1; s_n = 0;//q=1 置1
	#20 r_n = 0; s_n = 1;//q=1 置零
	#20 r_n = 1; s_n = 1;//q=0 保持
	#20	r_n = 0; s_n = 1;//q=0 置0
	#20 r_n = 1; s_n = 0;//q=0 置1	
	#20 $stop;
end  
                                                                                                     
endmodule

仿真结果:
在这里插入图片描述

电平触发器

电平RS触发器

在这里插入图片描述
在SR锁存器基础上引入CLK控制端,分析电路图:当CLK为1时,G3输出S’,G4输出R‘,此时与SR锁存器控制效果一致,仅仅是S、R为高电平有效的区别;当CLK为0时,不管S、R输入何值,G3、G4均输出1,此时参考SR锁存器真值表可得,处于保持状态,即无论S、R如何变化,Q都保持不变。
同样的为了防止SR锁存器处于不稳定状态,G3、G4应禁止同时输出低电平,即S、R应满足SR=0的条件,否则当S、R同时由高电平转为低电平或者S、R为高时,CLK由1变0,这两种情况下RS触发器输出结果将不可控。
真值表:
在这里插入图片描述
门级电路代码:

`timescale 1 ps/ 1 ps
module test(
	input	s,//置位端 高电平有效
	input	r,//复位端 高电平有效
	input	clk,
	
	output	q,
	output	qn
);
wire o1;
wire o2;

nand a1(o1,s,clk);
nand a2(o2,r,clk);
nand #(11) a3(q,o1,qn); //加上升、下降延时1ps
nand #(11) a4(qn,o2,q); //加上升、下降延时1ps

endmodule

电平RS触发器 a3门、a4门加入延时,延时输入上升时间1ps,延时输入下降时间1ps,这是为了防止在RTL仿真中引起逻辑混乱,见仿真。
在这里插入图片描述

testbench:

`timescale 1 ps/ 1 ps
module test_vlg_tst();

reg r;
reg s; 
reg clk;                                              
wire q;
wire qn;
                       
test i1 (  
	.q(q),
	.qn(qn),
	.clk(clk),
	.r(r),
	.s(s)
);
initial
begin
	r = 0; s = 1;//初始置1
	clk =0;  
end

always                                               
begin  
	#20 r = 0; s = 0;//q=1 保持
	#20	r = 0; s = 1;//q=1 置1
	#20 r = 1; s = 0;//q=1 置零
	#20 r = 0; s = 0;//q=0 保持
	#20	r = 1; s = 0;//q=0 置0
	#20 r = 0; s = 1;//q=0 置1	
end  

always begin
	#10 clk = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值