我是靠谱客的博主 贪玩乌龟,最近开发中收集的这篇文章主要介绍带有异步清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波形




最后

以上就是贪玩乌龟为你收集整理的带有异步清0、异步置1的D触发器模块描述及其Testbench测试的全部内容,希望文章能够帮你解决带有异步清0、异步置1的D触发器模块描述及其Testbench测试所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部