首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

不同的AXI总线卷积加速模块3

不同的AXI总线卷积加速模块3

版本2程序继续   
end       else begin        if (slv_reg_wren)          begin            case ( axi_awaddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] )              5'h00:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 0                    slv_reg0[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h01:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 1                    slv_reg1[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h02:              begin                slv_reg0 <= slv_reg1;                slv_reg1 <= slv_reg2;                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 2                    slv_reg2[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                   end                end              5'h03:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 3                    slv_reg3[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h04:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 4                    slv_reg4[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h05:              begin                slv_reg3 <= slv_reg4;                slv_reg4 <= slv_reg5;                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 5                    slv_reg5[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                end              5'h06:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 6                    slv_reg6[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h07:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 7                    slv_reg7[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h08:              begin                slv_reg6 <= slv_reg7;                slv_reg7 <= slv_reg8;                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 8                    slv_reg8[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                end              5'h09:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 9                    slv_reg9[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h0A:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 10                    slv_reg10[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h0B:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 11                    slv_reg11[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h0C:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 12                    slv_reg12[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h0D:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 13                    slv_reg13[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h0E:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 14                    slv_reg14[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h0F:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 15                    slv_reg15[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h10:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 16                    slv_reg16[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end                5'h11:                for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )                  if ( S_AXI_WSTRB[byte_index] == 1 ) begin                    // Respective byte enables are asserted as per write strobes                     // Slave register 17                    slv_reg17[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];                  end  //            5'h12://              for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )//                if ( S_AXI_WSTRB[byte_index] == 1 ) begin//                  // Respective byte enables are asserted as per write strobes //                  // Slave register 18//                  slv_reg18[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];//                end                default : begin                          slv_reg0 <= slv_reg0;                          slv_reg1 <= slv_reg1;                          slv_reg2 <= slv_reg2;                          slv_reg3 <= slv_reg3;                          slv_reg4 <= slv_reg4;                          slv_reg5 <= slv_reg5;                          slv_reg6 <= slv_reg6;                          slv_reg7 <= slv_reg7;                          slv_reg8 <= slv_reg8;                          slv_reg9 <= slv_reg9;                          slv_reg10 <= slv_reg10;                          slv_reg11 <= slv_reg11;                          slv_reg12 <= slv_reg12;                          slv_reg13 <= slv_reg13;                          slv_reg14 <= slv_reg14;                          slv_reg15 <= slv_reg15;                          slv_reg16 <= slv_reg16;                          slv_reg17 <= slv_reg17;                        end            endcase          end      end    end        // Implement memory mapped register select and read logic generation    // Slave register read enable is asserted when valid address is available    // and the slave is ready to accept the read address.    assign slv_reg_rden = axi_arready & S_AXI_ARVALID & ~axi_rvalid;    always @(*)    begin          // Address decoding for reading registers          case ( axi_araddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] )            5'h00   : reg_data_out <= slv_reg0;            5'h01   : reg_data_out <= slv_reg1;            5'h02   : reg_data_out <= slv_reg2;            5'h03   : reg_data_out <= slv_reg3;            5'h04   : reg_data_out <= slv_reg4;
返回列表