输入特征图和神经网络权重的缓冲区问题

问题描述 投票:0回答:1

我正在开发一种 Verilog 实现,涉及两个缓冲区数组,一个用于输入特征图,另一个用于神经网络权重。我的目标是当 input_valid 和 Weight_valid 信号置位时通过这些缓冲区传输数据。但是,我面临一个问题,即只有权重缓冲区似乎在硬件中正确实现,而 input_fm_buffers 未按预期运行。当有效信号为高电平时,我使用 for 循环和非阻塞分配来同步缓冲区中的数据流。对于为什么会发生这种情况有任何见解吗?

module convolution_ip(input [7:0] data_in , [7:0]weight_in , 
                      input reset , init_valid,  clk, weight_valid , 
                       output [7:0] final_output );
                       
integer i , j ;

reg [7:0] input_fm_buff[24:0] ;
reg [7:0] weight_buff[24:0]; 

always@(posedge clk or posedge reset)begin
     if (reset) begin
            for (int j = 0; j < 25; j = j + 1)
                 begin
                 input_fm_buff[j] <= 8'h00;
                 weight_buff[j] <= 8'h00;
                 end
        end 
     else 
        begin
        if(init_valid)
            begin
                for (int j = 0; j<25; j = j+1) begin
                     if (j==24)begin  input_fm_buff[j] <= data_in;
                      end 
                     else begin 
                      input_fm_buff[j] <= input_fm_buff[j+1];
                     end
                 end 
           end
        if(weight_valid)begin
            for (int i = 0; i<25; i = i+1) begin
                    if (i==24)begin weight_buff[i] <= weight_in;
                          end 
                    else begin 
                     weight_buff[i] <= weight_buff[i+1];
                    end
             end 
         end 
      end         
end

assign final_output = weight_buff[1];

endmodule 

schematic

我观察到一些事情。当我将最终输出连接到 input_fm 时,似乎只有 input_fm_buff 得到实现,而weight_buff 保持不受影响。这是什么意思?

verilog
1个回答
0
投票

input_fm_buff
在综合过程中已被优化,因为在导出输出逻辑时没有在任何地方使用。

© www.soinside.com 2019 - 2024. All rights reserved.