关于Verilog的任务

时间:2014-10-11 20:34:47

标签: verilog

这是我在计算机科学系的第一年,我正在修读逻辑设计课程并在Verilog工作。

出现了这个问题,我该如何解决呢?

作业说:

  

实现布尔函数
  y=a ⊕ b ⊕ c
  其中⊕代表异或操作。

我写下这个:

module experiment1(A,B,C,F);
input A,B,C;
output F;

reg F;
always@(A or B or C)
    F<= A^B^C;
endmodule

当我运行测试平台时,它只需要A和B,它不包括C。

然后我将“C”添加到测试平台,它工作正常。为什么测试台不会自动将“C”添加到计算中?

Testbench代码:

module tb_experiment1;

// Inputs
reg A;
reg B;

// Outputs
wire F;

// Instantiate the Unit Under Test (UUT)
experiment1 uut (
    .A(A), 
    .B(B),
    .F(F)
);

initial begin
    // Initialize Inputs
    A = 1;
    B = 0;

    // Wait 100 ns for global reset to finish
    #100;

    // Add stimulus here

end

endmodule

1 个答案:

答案 0 :(得分:0)

您需要将C连接到DUT,然后使用已知值驱动它:

module tb_experiment1;

// Inputs
reg A;
reg B;
reg C;

// Outputs
wire F;

// Instantiate the Unit Under Test (UUT)
experiment1 uut (
    .A(A), 
    .B(B),
    .C(C),
    .F(F)
);

initial begin
    // Initialize Inputs
    A = 1;
    B = 0;
    C = 1;

    // Wait 100 ns for global reset to finish
    #100;

    // Add stimulus here

end

endmodule