HDLBits刷题合集—23 Verication: Writing Testbenches

HDLBits刷题合集—23 Verication: Writing Testbenches

HDLBits-176 Tb/clock

Problem Statement
为你提供了带有以下声明的模块:
module dut ( input clk ) ;

编写一个测试台,创建一个模块dut的实例(具有任何实例名称),并创建一个时钟信号来驱动模块的clk输入。 时钟周期为10 ps。 时钟应初始化为零,且其第一次转换为0到1。

在这里插入图片描述
代码如下:

module top_module ( );
reg clk;

    initial
		clk = 0;
    always
        #5 clk = ~clk;
    dut inst_dut(
        .clk(clk)
    );
    
endmodule

HDLBits-177 Tb/tb1

Problem Statement
创建一个Verilog测试平台,它将为输出A和B产生以下波形:

在这里插入图片描述
代码如下:

module top_module ( 
	output reg A, 
	output reg B );//

    initial begin
    	A = 0; B = 0;
        #10 A = 1; B = 0;
        #5  A = 1; B = 1;
        #5  A = 0; B = 1;
        #20 A = 0; B = 0;
        #20 $stop;
    end

endmodule

HDLBits-178 Tb/and

Problem Statement
你将得到以下需要测试的AND门:
module andgate (
input [1:0] in,
output out
);

通过生成以下时序图,编写一个实例化该“AND”门并测试所有4种输入组合的测试平台:

在这里插入图片描述
代码如下:

module top_module();
    reg [1:0] in;
    wire out;
    
    initial 
        begin
            in = 2'b00;
            #10 in = 2'b01;
            #10 in = 2'b10;
            #10 in = 2'b11;
        end
        
    andgate my_andgate(.in(in),.out(out));
    
endmodule

HDLBits-179 Tb/tb2

Problem Statement
下面的波形设置clk,in和s:

在这里插入图片描述
Module q7具有以下声明:
module q7 (
input clk,
input in,
input [2:0] s,
output out
);

编写一个测试平台,以实例化模块q7并完全按照上述波形所示生成这些输入信号。

代码如下:

module top_module();
	reg clk;
	reg in;
    reg [2:0] s;
    wire out;
    
    initial begin
       clk = 0;
       forever begin
          #5 clk = ~clk; 
       end
    end
    
    initial begin
        in = 0; s = 3'b010;
        #10 in = 0; s = 3'b110;
        #10 in = 1; s = 3'b010;
        #10 in = 0; s = 3'b111;
        #10 in = 1; s = 3'b000;
        #30 in = 0; s = 3'b000;
    end
    
    q7 my_q (.clk(clk),
             .in(in),
             .s(s),
             .out(out)
            );
            
endmodule

HDLBits-180 Tb/tff

Problem Statement
你将获得一个带有以下声明的T型触发器模块:
module tff (
input clk,
input reset, // active-high synchronous reset
input t, // toggle
output q
);

编写一个实例化一个tff的测试台,将复位T触发器,然后将其切换到“ 1”状态。

代码如下:

module top_module ();
	reg clk;
    reg reset;
    reg t;
    wire q;
    
    initial 
        begin
            clk = 0;
            forever 
            #5 clk = ~clk;
        end
        
    initial
        begin
            reset=1; t=0;
        #20 reset=0; t=1;
        end
    
    tff my_tff(.clk(clk), .reset(reset), .t(t), .q(q));
    
endmodule

Note
新手一枚,主要分享博客,记录学习过程,后期参考大佬代码或思想会一一列出。欢迎大家批评指正!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值