Мое задание состоит в том, чтобы закодировать простой 2-4-декодер, а затем отобразить возможные результаты и форму волны.Verilog testbench код с использованием gEDA и iVerilog
Я использую комплект gEDA вместе с Icarus Verilog (iVerilog) в качестве компилятора и GTKWave для формы волны.
Это мое первое кодирование с Verilog или работа с набором gEDA. Из поиска в Google кажется, что мне нужно следовать этому проекту:
- подумайте о дизайне, который хотите реализовать. В моем случае декодер
- реализовать проект в VHDL/Verilog.
- Внедрение тестового стенда в VHDL/Verilog.
- Compile дизайн файл и файл с iVerilog испытательного стенда
- Использованием и испытательным стендом .vcd файл дамп для отображения сигнала с использованием GTKWave
Файл обыкновения компилировать испытательный стенд, и я не знаю, почему, я попытался несколько вариаций и я продолжаю получать ошибки. Буду признателен за любую оказанную помощь. Спасибо.
Вот мой код дизайн файла:
// 2 to 4 Decoder
// File Name: decoder.v
module decoder(X,Y,E,Z);
input X,Y,E;
output [0:3]Z;
wire [0:3]Z;
wire X1, Y1;
not
inv1(X1,X),
inv2(Y1,Y);
and
and1(Z[0],X1,Y1,E),
and2(Z[1],Y1,X,E),
and3(Z[2],Y,X1,E),
and4(Z[3],X,Y,E);
endmodule
Вот мой испытательный стенд код:
module decoder_tb;
input X,Y,E;
output [0:3]Z;
//wire [0:3]Z;
//wire X1, Y1;
// should create .vcd dump file for GTKWave
initial
begin
$dumpfile("decoder.vcd");
$dumpvars();
end
decoder decode(X,Y,E,Z);
initial
begin
$display($time,"<< Z[0]=%d Z[1]=%d Z[2]=%d Z[3]=%d >>", Z[0] , Z[1] , Z[2] , Z[3]);
end
initial
begin
#0
X = 0; Y = 0; E = 1;
#5
X = 0; Y = 1; E = 1;
#10
X = 1; Y = 0; E = 1;
#15
X = 1; Y = 1; E = 1;
end
endmodule
команды в терминале я использую являются:
iverilog -o decoder.vvp decoder.v decoder_tb.v
gtkwave decoder.vcd
EDIT: Вот точное сообщение об ошибке
[email protected]:~/verilogCode$ iverilog -o decoder.vvp decoder.v decoder_tb.v
decoder_tb.v:26: error: X is not a valid l-value in decoder_tb.
decoder_tb.v:6: : X is declared here as wire.
decoder_tb.v:26: error: Y is not a valid l-value in decoder_tb.
decoder_tb.v:6: : Y is declared here as wire.
decoder_tb.v:26: error: E is not a valid l-value in decoder_tb.
decoder_tb.v:6: : E is declared here as wire.
decoder_tb.v:28: error: X is not a valid l-value in decoder_tb.
decoder_tb.v:6: : X is declared here as wire.
decoder_tb.v:28: error: Y is not a valid l-value in decoder_tb.
decoder_tb.v:6: : Y is declared here as wire.
decoder_tb.v:28: error: E is not a valid l-value in decoder_tb.
decoder_tb.v:6: : E is declared here as wire.
decoder_tb.v:30: error: X is not a valid l-value in decoder_tb.
decoder_tb.v:6: : X is declared here as wire.
decoder_tb.v:30: error: Y is not a valid l-value in decoder_tb.
decoder_tb.v:6: : Y is declared here as wire.
decoder_tb.v:30: error: E is not a valid l-value in decoder_tb.
decoder_tb.v:6: : E is declared here as wire.
decoder_tb.v:32: error: X is not a valid l-value in decoder_tb.
decoder_tb.v:6: : X is declared here as wire.
decoder_tb.v:32: error: Y is not a valid l-value in decoder_tb.
decoder_tb.v:6: : Y is declared here as wire.
decoder_tb.v:32: error: E is not a valid l-value in decoder_tb.
decoder_tb.v:6: : E is declared here as wire.
12 error(s) during elaboration.
Спасибо, мужчина, не знаю, почему я этого не пытался. – milleraj66
@ milleraj66: Добро пожаловать. В этом случае мои симуляторы выдавали гораздо более значимые сообщения об ошибках, чем ваш: «Идентификатор« X »не отображается в списке портов». – toolic