我希望实现 Y =(〜A&〜B&C)| (A&〜B&〜C)| (〜A&B&〜C)。以下是我在ModelSim中拥有的东西。
boolean_function.v
`timescale 1ns/1ps
module boolean_function (Ain, Bin, Cin, Yout);
input Ain, Bin, Cin;
output Yout;
assign Yout = (~Ain & ~Bin & Cin) | (Ain & ~Bin & ~Cin) | (~Ain & Bin & ~Cin);
endmodule
boolean_function_tb.v
`timescale 1ns/1ps
module boolean_function_tb();
reg Ain, Bin, Cin;
wire Yout;
boolean_function bf(.Ain(Ain),.Bin(Bin),.Cin(Cin),.Yout(Yout));
initial
begin
Ain = 0; Bin = 0; Cin = 0;
#50;
Ain = 0; Bin = 0; Cin = 1;
#50;
Ain = 0; Bin = 1; Cin = 0;
#50;
Ain = 0; Bin = 1; Cin = 1;
#50;
Ain = 1; Bin = 0; Cin = 0;
#50;
Ain = 1; Bin = 0; Cin = 1;
#50;
Ain = 1; Bin = 1; Cin = 0;
#50;
Ain = 1; Bin = 1; Cin = 1;
#50;
end
endmodule
我能够同时编译这两个代码,但是在仿真过程中,所有输出均设置为零,并且无论输出波形运行多长时间都不会改变。
我尝试单独分配每个案例,例如:
assign Yout = (~Ain & ~Bin & Cin);
assign Yout = (Ain & ~Bin & ~Cin);
assign Yout = (~Ain & Bin & ~Cin);
它也可以编译,但是输出保持不变。
我还更改了测试平台行
Ain = 0; Bin = 0; Cin = 0;
更改为
的格式 Ain = 0'b0; Bin = 0'b0; Cin = 0'b0;
并且它也可以编译,但再次提供相同的输出。
我希望遍历三个输入的所有可能组合,并在满足布尔函数的条件之一时使输出等于一。