HDLBits个人刷题详解合集19-Verification:Writing Testnebches-HDBits题目分析

Tb/clock

将为您提供一个包含以下声明的模块:

module dut ( input clk ) ;

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

代码如下:

module top_module ( );

reg clk;

    

    dut uut(

        .clk(clk)

    );

    initial begin

        clk = 0;

    end

    

    always begin

        #5 clk = ~clk;

    end

endmodule

Tb/tb1

创建一个 Verilog 测试平台,该测试平台将为输出 A 和 B 生成以下波形:

代码如下:

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


    // generate input patterns here

    initial begin

A = 0;

        B = 0;

        #10 A = 1;

        #5 B = 1;

        #5 A = 0;

        #20 B = 0;

    end


endmodule

Tb/and

您将获得以下要测试的 AND 门:

module andgate (

    input [1:0] in,

    output out);

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

代码如下:

module top_module();

    reg [1:0] in;

    wire out;

    

    andgate uut(

        .in(in),

        .out(out)

    );

    

    initial begin

        in=2'b00;

        #10;

        in=2'b01;

        #10;

        in=2'b10;

        #10;

        in=2'b11;

    end

    

endmodule

Tb/tb2

下面的波形设置了 clk、in 和 s:

模块 q7 具有以下声明:

module q7 (

    input clk,

    input in,

    input [2:0] s,

    output out);

编写一个测试平台,实例化模块q7并生成这些输入信号,如上面的波形所示。

代码如下:

module top_module();

    parameter clk_period=10;

    reg clk;

    initial clk=0;

    always #(clk_period/2) clk=~clk;

    wire out;

    reg in;

    reg[2:0] s;

    initial

        begin

            in=0;

            s=2;

            #10 s=6;

            #10 in=1;

             s=2;

            #10 in=0;

             s=7;

            #10 in=1;

             s=0;

            #30 in=0;

        end

    

    q7 inst_q7(clk,in,s,out);

endmodule

TB/tff

您将获得一个带有以下声明的 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;

    

    tff u_tff(clk,reset,t ,q) ;

    

    initial begin

        clk=1'b0;

        forever

        #10

        clk=~clk;

    end

   initial begin

        reset = 1'b0;t=0;

        #10;

        reset = 1'b1;

        #10;

        reset = 1'b0;   t=1;

    end

endmodule

HDBits的题目终于更新完了,中间也经历了很多挫折,接下来继续学习FPGA,加油!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值