Здесь есть две проблемы. Toolic прав, что одна из проблем заключается в том, что вы пытаетесь назначить значение для ввода, а сообщение об ошибке не очень полезно. Но вы получаете это сообщение об ошибке из-за другой проблемы, которую инструмент замечает первым.
Когда вы объявляете входы и выходы без типа, они по умолчанию считаются wire
. И вы присваиваете провода в блоке always
с назначением <=
, что вы можете делать только для типов reg
. Таким образом, вы присваиваете проводам способ, которым вам разрешено присваивать регистры, поэтому:
[Synth 8-2576] процедурное присвоение незарегистрированному trig_i_b не разрешено
Если вы исправили это, введя типы ввода reg
module red_pitaya_trigger_manager(
input dac_clk_i,
input trig_a_i,
input trig_b_i,
input master_trig,
output trig_out_ch0,
output trig_out_ch1
);
reg trig_a_i; // note
reg trig_b_i;
reg trig_out_ch0;
reg trig_out_ch1;
always @(posedge dac_clk_i) begin
if (master_trig == 1'b1) begin
trig_a_i <= 1'b0;
trig_b_i <= 1'b0;
trig_out_ch0 <= master_trig;
trig_out_ch1 <= master_trig;
end
else if (master_trig == 1'b0) begin
//master_trig <= 1'b0;
trig_out_ch0 <= trig_a_i;
trig_out_ch1 <= trig_b_i;
end
end
endmodule
Тогда вы увидите более полезное сообщение при сборке:
[Synth 8-6104] Входной порт 'trig_a_i' имеет внутренний драйвер
[Synth 8-6104] Входной порт 'trig_b_i' имеет внутренний драйвер