Multiplexer con VERILOG. Perché la simulazione non parte?
Ho scritto (o meglio, ho tentato di scrivere) un multiplexer con Verilog, che prendesse in ingresso quattro segnali da 3 bit e che ponesse in uscita solo uno di questi segnali. Ovviamente il selettore ha 2 bit.
Il codice del multiplexer è questo:
Poi, per far partire la simulazione ho provato a scrivere il testbench:
Però la simulazione non parte. Penso di aver fatto un errore da qualche parte, ma essendo abbastanza niubbo in materia, non riesco a trovarlo. Qualcuno mi può aiutare?
Grazie mille!
Il codice del multiplexer è questo:
- Codice: Seleziona tutto
`timescale 1ns / 1ps
module mux(
input wire [2:0]in1,
input wire [2:0]in2,
input wire [2:0]in3,
input wire [2:0]in4,
input reg [1:0]sel,
output reg [2:0]out
);
initial
begin
out = 3'b000;
case (sel)
2'b00: out = in1;
2'b01: out = in2;
2'b10: out = in3;
2'b11: out = in4;
default: begin
out = 3'b000;
sel = 2'b00;
end
endcase
end
endmodule
Poi, per far partire la simulazione ho provato a scrivere il testbench:
- Codice: Seleziona tutto
`timescale 1ns / 1ps
module tbmux;
reg [2:0]IN1;
reg [2:0]IN2;
reg [2:0]IN3;
reg [2:0]IN4;
reg [1:0]SEL;
wire [2:0]OUT;
mux dut(IN1,IN2,IN3,IN4,SEL,OUT);
//mux dut(.in1(IN1),.in2(IN2),.in3(IN3),.in4(IN4),.sel(SEL),.out(OUT));
initial
begin
$monitor($time,,"IN1=%b IN2=%b IN3=%b IN4=%b SEL=%b OUT=%b",IN1,IN2,IN3,IN4,SEL,OUT);
IN1 = 3'b000;
IN2 = 3'b001;
IN3 = 3'b010;
IN4 = 3'b100;
#5 SEL = 2'b00;
#5 SEL = 2'b01;
#5 SEL = 2'b10;
#5 SEL = 2'b11;
#5 $stop;
end
endmodule
Però la simulazione non parte. Penso di aver fatto un errore da qualche parte, ma essendo abbastanza niubbo in materia, non riesco a trovarlo. Qualcuno mi può aiutare?
Grazie mille!