带有异步清0、异步置1的D触发器模块描述及其Testbench测试

1、Verilog描述具有有异步清0、异步置1的D触发器

//带有异步清0、异步置1的D触发器模块描述

module D_trigger(clk,set,rst,D,Q);
	input clk;
	input set;
	input rst;
	input D;
	output Q;

	reg Q; //寄存器定义

	always @ (posedge clk or negedge rst or negedge set)
	begin
		if(~rst) //异步清0,低有效
		begin 
			Q <= 1'b0;
		end
		else if(~set) //异步置1,低有效
		begin
			Q <= 1'b1;
		end
		else
		begin
			Q <= D;
		end
	end

endmodule

使用Quartus II 11.0综合布线之后的RTL视图如下:


2、Testbench描述

`timescale 1ns/1ns 

module D_trigger_tb;
    reg clk,set,rst,D;
    wire Q;
    
    D_trigger u1(.clk(clk),.set(set),.rst(rst),.D(D),.Q(Q));
    initial
    begin
        clk=0;
        set=0;
        rst=1;
        
        forever
        begin
            #60 D <= 1;
            #22 D <= 0;
            #2  D <= 1;
            #2  D <= 0;
            #16 D <= 0;
        end
    end
    
    always #940 rst <= ~rst;
    always #360 set <= ~set;    
    always #20 clk <= ~clk;
    
endmodule
(1) `timescaleVerilog HDL 中的一种时间尺度预编译指令,它用来定义模块的仿真时的时间单位和时间精度。格式如下:

`timescale  仿真时间单位/时间精度

     注意:用于说明仿真时间单位和时间精度的数字只能是 110100 ,不能为其它的数字。而且,时间精度不能比时间单位还要大。最多两则一样大。

(2)modelsim仿真Testbench波形




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值