을 사용합니다. Verilog를 사용하고 시뮬레이션의 모든 입력은 문제가 없지만 모든 출력은 높은 임플란트 상태 (웨이브 창에서 파란색 선)로 유지됩니다.Modelsim 시뮬레이션 출력은 항상 높은 임플란트 상태 (파란색 선)
module de_mux(
input clk, NewPacket,
input [7:0] DataIn,
output reg [7:0] DataOut0, DataOut1, DataOut2, DataOut3, DataOut4, DataOut5, DataOut6, DataOut7
);
reg [2:0] h = 3'bxxx;
reg [3:0] l = 4'bxxxx;
reg [7:0] t = 8'b00000000;
always @ (posedge clk)
begin
DataOut0 <= 8'b00000000;
DataOut1 <= 8'b00000000;
DataOut2 <= 8'b00000000;
DataOut3 <= 8'b00000000;
DataOut4 <= 8'b00000000;
DataOut5 <= 8'b00000000;
DataOut6 <= 8'b00000000;
DataOut7 <= 8'b00000000;
case (h)
3'b000: DataOut0 <= t;
3'b001: DataOut1 <= t;
3'b010: DataOut2 <= t;
3'b011: DataOut3 <= t;
3'b100: DataOut4 <= t;
3'b101: DataOut5 <= t;
3'b110: DataOut6 <= t;
3'b111: DataOut7 <= t;
default:;
endcase
if (NewPacket)
begin
h <= DataIn [6:4] - 3'b001;
l <= DataIn [3:0] + 4'b0001;
end
else if (l > 0)
begin
t <= DataIn;
l <= l - 4'b0001;
end
else
begin
t <= 8'b00000000;
end
h <= h + 3'b001;
end
endmodule
및 테스트 벤치 파일 : 문제가 어디 있는지 모르는
module de_mux_test();
reg clk;
reg NewPacket;
reg [7:0] DataIn;
wire [7:0] DataOut0, DataOut1, DataOut2, DataOut3, DataOut4, DataOut5, DataOut6, DataOut7;
always begin
#10 clk = ~clk;
end
initial begin
clk = 1'b1;
NewPacket = 1'b1; DataIn = 8'b01110011; #20
NewPacket = 1'b0; DataIn = 8'b00010001; #20
NewPacket = 1'b0; DataIn = 8'b00100010; #20
NewPacket = 1'b0; DataIn = 8'b00110011; #20
NewPacket = 1'b0; DataIn = 8'b01000100; #20
NewPacket = 1'b0; DataIn = 8'b00000000; #20
NewPacket = 1'b1; DataIn = 8'b00000010; #20
NewPacket = 1'b0; DataIn = 8'b10001000; #20
NewPacket = 1'b0; DataIn = 8'b10011001; #20
//NewPacket = 1'b0; DataIn = 8'b00000000;
#20
#20
$finish;
end
endmodule
여기
는 .V 파일입니다. 왜 이런 일이 일어나는가 ...
테스트 벤치에서'de_mux'의 인스턴스화가 보이지 않습니다. – gudok
아! 내가 얼마나 부주의한지. 직접적인 코멘트 주셔서 감사합니다. –