Verilog 不允许将Synth 8-2576程序赋值到非寄存器触发器

Verilog 不允许将Synth 8-2576程序赋值到非寄存器触发器,verilog,xilinx,vivado,Verilog,Xilinx,Vivado,我的Verilog代码有一些问题。错误如标题中所述。我不知道这个错误的来源 这是我的密码: 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 );

我的Verilog代码有一些问题。错误如标题中所述。我不知道这个错误的来源

这是我的密码:


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_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

模块红色火龙果触发器管理器(
输入dac_clk_i,
输入trig_a_i,
输入trig_b_i,
输入主触发器,
输出触发输出ch0,
输出触发输出ch1
);
reg trig_out_ch0;
reg trig_out_ch1;
始终@(posedge dac_clk_i)开始
如果(主触发==1'b1)开始

trig_a_i这里有两个问题。Toolic是对的,其中一个问题是您试图为输入赋值,而错误消息并没有太大帮助。但是,由于工具首先注意到的另一个问题,您会收到错误消息


当您在没有类型的情况下声明输入和输出时,默认情况下,它们被假定为
wire
。在
始终
块中使用
指定导线时,这里有两个问题。Toolic是对的,其中一个问题是您试图为输入赋值,而错误消息并没有太大帮助。但是,由于工具首先注意到的另一个问题,您会收到错误消息

当您在没有类型的情况下声明输入和输出时,默认情况下,它们被假定为
wire
。并且您正在使用

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