Я хочу реализовать Y = (~ A & ~ B & C) | (A & ~ B & ~ C) | (~ A & B & ~ C) в ModelSim 10,7b. Вот что я имею в 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
Я могу скомпилировать оба кода, но во время моделирования все выходы установлены на ноль и не меняются независимо от того, как долго работает выходной сигнал.
Я пытался назначить каждому из случаев seperateley, такие как:
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;
и это также было в состоянии скомпилировать, но снова выдать тот же вывод.
Я собираюсь просмотреть все возможные комбинации трех входов и сделать вывод равным единице при выполнении одного из условий булевой функции.