Я ищу для реализации 32-разрядной параллельной параллельной сборки в Verilog HDL. Вот код, который я написал ...Реализация PIPO в verilog
module pipo(input_seq, answer,reset, clock);
input [31:0] input_seq;
input reset,clock;
output [31:0] answer;
always @ (reset)
begin
if(!reset)
begin
answer[31:0]<=1'b0;
end
end
always @ (posedge clock)
begin
answer[31:1]<=input_seq[30:0];
end
endmodule
Однако это приводит к следующему лог ошибок (с использованием iverilog
):
pipo.v:10: error: answer['sd31:'sd0] is not a valid l-value in pipo.
pipo.v:4: : answer['sd31:'sd0] is declared here as wire.
pipo.v:16: error: answer['sd31:'sd1] is not a valid l-value in pipo.
pipo.v:4: : answer['sd31:'sd1] is declared here as wire.
Elaboration failed
Какие проблемы?
Вы не должны разделить логику сброса регистра и логику синхронизации регистра на отдельные блоки. У вас должен быть один блок 'always @ (posedge clock или negedge reset)'. В вашей конструкции блок синхронизации будет по-прежнему выполняться, если будет активирован синхронизм часов при сбросе, что не является правильным способом моделирования флип-флопа. – Tim