module encoder (op, in, clock, reset);
//$display("We are in initial procedural block");
input [15:0] in;
input clock, reset;
output [3:0] op;
wire [15:0] in;
wire clock, reset;
reg [3:0] op;
always @ (posedge clock)
begin
$display("We are in initial procedural block");
if (reset)
begin
$display("we are in the reset condition");
op = 0;
end
else
begin
case(in)
16'h0002: #1 op = 4'b0001;
16'h0004: #1 op = 4'b0010;
16'h0008: #1 op = 4'b0011;
16'h0010: #1 op = 4'b0100;
16'h0012: #1 op = 4'b0101;
16'h0014: #1 op = 4'b0110;
16'h0018: #1 op = 4'b0111;
16'h0020: #1 op = 4'b1000;
16'h0022: #1 op = 4'b1001;
16'h0024: #1 op = 4'b1010;
16'h0028: #1 op = 4'b1011;
16'h0030: #1 op = 4'b1100;
16'h0032: #1 op = 4'b1101;
16'h0034: #1 op = 4'b1110;
16'h0038: #1 op = 4'b1111;
16'h0040: #1 op = 4'b0000;
default : $display("DEFAULT!!!");
endcase
end
end
endmodule
module encoder_tb;
input in, reset, clock;
output op;
reg [15:0] in = 16'h0000;
reg reset, clock;
wire [3:0] op;
//internal variable
reg [15:0] incremental_value = 16'h0002;
initial
begin
$monitor("time = %g,\tclock = %d,\tin = %h,\top = %b",
$time, reset, in, op);
$display("We are in initial procedural block");
in = 0;
reset = 0;
clock = 0;
op = 0;
#1 clock = !clock;
#10 reset = !reset;
#5 in = in + incremental_value;
#100 $finish;
end
always
begin
#1 clock = !clock;
#10 reset = !reset;
#5 in = in + incremental_value;
end
encoder_tb test_bench (.op(op), .in(in), .clock(clock), .reset(reset));
// Waveform Generation
initial
begin
$dumpfile("encoder.vcd");
$dumpvars(0,op,in,clock,reset);
end
endmodule
위의 내용은 16 비트 입력을 4 비트 출력 인코더로 만들려고 시도한 것입니다. 나는 어떤 오류도없이 내 코드를 컴파일 할 수 있지만, [iverilog encoder_tb.v -o encoder] & [vvp encoder vcd] 명령을 사용하면 $ monitor와 몇 $ display 문을 생각할 때마다 아무 것도주지 않는다. . 나는 오류를 찾으려고 노력했지만 나는 이것에 대해 아주 새롭기 때문에 이것을 디버그 할 수 없다. 모든 도움을 주셨습니다. 감사합니다.Verilog 코드가 오류없이 컴파일되지만 출력되지 않습니다.
디스플레이 문이 복잡한 RTL 디버깅에 정말 충분하지 않다. 파형 뷰어 프로그램을 사용해보아야합니다. * 자일링스 ISE webpack *은 유용하고 무료이며, 아마도 iVerilog * – Tim
이 코드는 2 명의 시뮬레이터에서 컴파일 오류를 발생시킨다. 이것이 당신의 정확한 코드라고 확신합니까? – toolic
@Tim - GTKwave를 사용하여 $ dumpfile 및 $ dumpvars 명령을 사용하여 파형을 생성/포함하려했지만 파형을 생성 할 수 없습니다. 감사합니다 – user3043882