FPGA实现D触发器

D触发器逻辑

D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。
因此,D触发器在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即"0"和"1",在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。
D触发器有集成触发器和门电路组成的触发器。触发方式有电平触发和边沿触发两种,前者在CP(时钟脉冲)=1时即可触发,后者多在CP的前沿(正跳变0→1)触发。
D触发器的次态取决于触发前D端的状态,即次态=D。因此,它具有置0、置1两种功能。
对于边沿D触发器,由于在CP=1期间电路具有维持阻塞作用,所以在CP=1期间,D端的数据状态变化,不会影响触发器的输出状态。
D触发器应用很广,可用做数字信号的寄存,移位寄存,分频和波形发生器等等。

D触发器代码

这里选择上升沿有效。
module D_trigger(
	input clk,
	input rst_n,
	input A,
	output reg B
	
	);
	wire C;
	assign C = A;
  always @ (posedge clk)
    begin
        B <= A;
    end
endmodule


`timescale 1ns/1ns
`define clock_period 20

module  D_trigger_TB;//模块名
	reg clk;//输入
	reg rst_n;
	reg A;
	wire B;//输出

D_trigger D_trigger0(
	.clk(clk),
	.rst_n(rst_n),
	.A(A),
	.B(B)
	);
	initial clk = 1;
	always #(`clock_period/2)clk = ~clk;

	initial begin
	rst_n = 1'b0;
	A = 0;
	#(`clock_period*20 + 1 );
	rst_n = 1'b1;
	A = 1;
	#(`clock_period*5);
	A = 0;
	#(`clock_period*5);
	A = 1;
	#(`clock_period*50);
	$stop;
	end
	endmodule

D触发器仿真结果


可以看到信号A通过D触发器后,B将A的值延迟了一个周期,而用assign赋值则是同步进行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值