关于Verilog的作业

关于Verilog的作业,verilog,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 您需要将C连接到DUT,然后使用已知值驱动它: module tb_experiment1;

这是我在计算机科学系的第一年,我正在学习逻辑设计课程,并在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

您需要将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

Verilog提示:使用自动灵敏度列表<代码>始终@*。对于组合码,使用分块赋值
F=A^B^C@Morgan实际上这不起作用,但我写了这个,它起作用了:开始F
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