ZYNQ-fpga学习(三)锁存器的设计

一、工作原理

 

         该电路主要是由两个部分组成,第一个部分是由 G1、G2 两个 与非门组成的 RS 锁存器,第二个部分是由 G3、G4 两个与非门组成的控制电路。C 为控制信号,用来控 制 G3 和 G4 的激励输入。

        当控制信号 C=0 时,根据与非门的逻辑定律,无论 D 输入 什么信号,RD 和 SD 信号同时为 1。根据由与非门组成的 RS 锁存器的逻辑定律,RD 和 SD 都同时等于 1的话,锁存器的输出端 Q 将维持原状态不变。

        当控制端 C=1 时,如果此时 D=0,SD 就等于 1,RD就等于 0,根据 RS 锁存器的逻辑规律,电路的结果就为 0 状态;如果 D =1,那么 RD 就等于 1,SD 也就 等于 0,锁存器的结果就为 1 状态。

二、Verilog代码 

module D_latch(
	input c,
	input d,
	output reg q
    );
	always@(*)
		begin
		if(c==1'b1)
			q=d;
		end
endmodule

三、tb代码

`timescale 1ns / 1ps

module tb_dlatch();
	reg c;
	reg d;
	wire q;
	
initial
	begin
	c=1;d=0;
	#100
	c=1;d=1;
	#100
	c=0;d=0;
	#100
	c=0;d=0;
	#100
	c=1;d=0;

	end
	D_latch dlatch(
	.c(c),
	.d(d),
	.q(q)
	);
endmodule

四、仿真结果 

五、RTL原理图 

注意:在绝大多数设计中我们要避免产生锁存器。它会让你设计的时序出问题,并且它的隐蔽性很强,很难查出问题。锁存器最大的危害在于对电平信号敏感,容易产生毛刺和影响工具进行时序分析,这对于 下一级电路是极其危险的。所以,只要能用触发器的地方,就不用锁存器。

 

  • 15
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值