Avoid DSP in matmul master path
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
// 3-stage pipelined multiplier (LUT-based, no DSP)
|
||||
// latency=3, throughput=1 result/cycle
|
||||
// ═══════════════════════════════════════════════════════
|
||||
(* use_dsp = "no" *)
|
||||
(* use_dsp = "no", use_dsp48 = "no", syn_multstyle = "logic" *)
|
||||
module pipelined_mult_32x32 (
|
||||
input clk,
|
||||
input rstn,
|
||||
@@ -11,7 +11,23 @@ module pipelined_mult_32x32 (
|
||||
output reg [63:0] p
|
||||
);
|
||||
reg [31:0] a_r, b_r;
|
||||
(* use_dsp = "no", use_dsp48 = "no", syn_multstyle = "logic" *)
|
||||
reg [63:0] prod;
|
||||
|
||||
function automatic [63:0] lut_mul32;
|
||||
input [31:0] lhs;
|
||||
input [31:0] rhs;
|
||||
integer bit_idx;
|
||||
reg [63:0] acc;
|
||||
begin
|
||||
acc = 64'b0;
|
||||
for (bit_idx = 0; bit_idx < 32; bit_idx = bit_idx + 1) begin
|
||||
if (rhs[bit_idx])
|
||||
acc = acc + ({32'b0, lhs} << bit_idx);
|
||||
end
|
||||
lut_mul32 = acc;
|
||||
end
|
||||
endfunction
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (!rstn) begin
|
||||
@@ -20,7 +36,7 @@ module pipelined_mult_32x32 (
|
||||
end else begin
|
||||
a_r <= a; // Stage 1: register inputs
|
||||
b_r <= b;
|
||||
prod <= a_r * b_r; // Stage 2: LUT-based multiply
|
||||
prod <= lut_mul32(a_r, b_r); // Stage 2: LUT-based multiply
|
||||
p <= prod; // Stage 3: register output
|
||||
end
|
||||
end
|
||||
@@ -186,6 +202,8 @@ module matmul_axi_slave (
|
||||
reg dma_done;
|
||||
reg [31:0] load_group;
|
||||
reg [31:0] store_group;
|
||||
reg [31:0] dma_next_rd_addr;
|
||||
reg [31:0] dma_next_wr_addr;
|
||||
reg [31:0] completed_groups;
|
||||
reg [1:0] bank_loaded;
|
||||
reg [1:0] bank_store_pending;
|
||||
@@ -880,6 +898,8 @@ module matmul_axi_slave (
|
||||
dma_done <= 1'b0;
|
||||
load_group <= 32'd0;
|
||||
store_group <= 32'd0;
|
||||
dma_next_rd_addr <= 32'd0;
|
||||
dma_next_wr_addr <= 32'd0;
|
||||
completed_groups <= 32'd0;
|
||||
bank_loaded <= 2'b00;
|
||||
bank_store_pending <= 2'b00;
|
||||
@@ -933,6 +953,8 @@ module matmul_axi_slave (
|
||||
dma_done <= 1'b0;
|
||||
load_group <= 32'd0;
|
||||
store_group <= 32'd0;
|
||||
dma_next_rd_addr <= dma_src_base;
|
||||
dma_next_wr_addr <= dma_dst_base;
|
||||
completed_groups <= 32'd0;
|
||||
bank_loaded <= 2'b00;
|
||||
bank_store_pending <= 2'b00;
|
||||
@@ -978,7 +1000,7 @@ module matmul_axi_slave (
|
||||
!(state == C_RUN && cur_bank == dma_load_bank)) begin
|
||||
dma_rd_bank <= dma_load_bank;
|
||||
dma_rd_count <= 5'd0;
|
||||
m_axi_araddr <= dma_src_base + (load_group * dma_src_stride);
|
||||
m_axi_araddr <= dma_next_rd_addr;
|
||||
m_axi_arlen <= 8'd31;
|
||||
m_axi_arsize <= 3'd2;
|
||||
m_axi_arburst <= 2'b01;
|
||||
@@ -999,6 +1021,7 @@ module matmul_axi_slave (
|
||||
m_axi_rready <= 1'b0;
|
||||
bank_loaded[dma_rd_bank] <= 1'b1;
|
||||
load_group <= load_group + 32'd1;
|
||||
dma_next_rd_addr <= dma_next_rd_addr + dma_src_stride;
|
||||
dma_load_bank <= ~dma_load_bank;
|
||||
dma_rd_state <= DMA_RD_IDLE;
|
||||
end else begin
|
||||
@@ -1018,7 +1041,7 @@ module matmul_axi_slave (
|
||||
dma_wr_count <= 6'd0;
|
||||
bank_store_pending[dma_store_bank] <= 1'b0;
|
||||
bank_storing[dma_store_bank] <= 1'b1;
|
||||
m_axi_awaddr <= dma_dst_base + (store_group * dma_dst_stride);
|
||||
m_axi_awaddr <= dma_next_wr_addr;
|
||||
m_axi_awlen <= 8'd47;
|
||||
m_axi_awsize <= 3'd2;
|
||||
m_axi_awburst <= 2'b01;
|
||||
@@ -1055,6 +1078,7 @@ module matmul_axi_slave (
|
||||
bank_storing[dma_store_bank] <= 1'b0;
|
||||
dma_store_bank <= ~dma_store_bank;
|
||||
store_group <= store_group + 32'd1;
|
||||
dma_next_wr_addr <= dma_next_wr_addr + dma_dst_stride;
|
||||
completed_groups <= completed_groups + 32'd1;
|
||||
if ((completed_groups + 32'd1) >= dma_groups) begin
|
||||
dma_busy <= 1'b0;
|
||||
|
||||
300
sdk/axi_ram.mif
300
sdk/axi_ram.mif
@@ -52,11 +52,11 @@
|
||||
00000011100000000110000000001101
|
||||
00000100000000000000000110101100
|
||||
00011100000000000000000000101100
|
||||
00000010101101001111000110001100
|
||||
00000010101010001011000110001100
|
||||
00011100000000000001000000001101
|
||||
00000010101111001001000110101101
|
||||
00011100000000000001000000001110
|
||||
00000010101111011111000111001110
|
||||
00000010101111010111000111001110
|
||||
01101100000000000001100110101110
|
||||
00101000100000000000000110001111
|
||||
00101001100000000000000110101111
|
||||
@@ -64,9 +64,9 @@
|
||||
00000010100000000001000110101101
|
||||
01101011111111111111000110101110
|
||||
00011100000000000001000000001100
|
||||
00000010101111010111000110001100
|
||||
00000010101111001111000110001100
|
||||
00011100000000000001000000001101
|
||||
00000010101111010101000110101101
|
||||
00000010101111001101000110101101
|
||||
01101100000000000001000110001101
|
||||
00101001100000000000000110000000
|
||||
00000010100000000001000110001100
|
||||
@@ -74,7 +74,7 @@
|
||||
00000011100000000110010000001100
|
||||
00000100000001100000000000101100
|
||||
00011100000000000001000000001100
|
||||
00000010101111001100000110001100
|
||||
00000010101111000001000110001100
|
||||
00101000100000000000000110001101
|
||||
00000011100000000001110000001110
|
||||
00101001000000000000100110101110
|
||||
@@ -94,7 +94,7 @@
|
||||
00000000000101010000000000001110
|
||||
00101001000000000001000110101110
|
||||
00011100000000000000000000001100
|
||||
00000010100011010001000110001100
|
||||
00000010100010100001000110001100
|
||||
00000100000000000011000000101100
|
||||
00000011100000000000010000001101
|
||||
00000100000000010001000000101101
|
||||
@@ -142,14 +142,11 @@
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000010101111111000000001100011
|
||||
00010101011111100000000000010000
|
||||
00101001100000000111000001100001
|
||||
00101001100000000110000001110111
|
||||
00101001100000000101000001111000
|
||||
00000010101111111100000001100011
|
||||
00000010100000010011010000001100
|
||||
00011100000000000001000000001111
|
||||
00000010101101101010000111101111
|
||||
00000010101101101101000111101111
|
||||
00000011100000000001011000001101
|
||||
00101001100000000011000001101100
|
||||
00101010000000000011000001101110
|
||||
@@ -160,56 +157,43 @@
|
||||
00101001000000000000001000001110
|
||||
00101000000000000000000111101100
|
||||
01011111111111111110000110000000
|
||||
01010100000001100111100000000000
|
||||
00010101011111101010000000001100
|
||||
00000011100000000100000110010001
|
||||
00101001100000000000001000100000
|
||||
00000010100000000101100000010000
|
||||
00000011100000000100000110001111
|
||||
00101001100000000000000111100000
|
||||
00000010100000000101100000010010
|
||||
00000011100000000001000110001101
|
||||
00101001100000000000000110110000
|
||||
00010100001110001000000000001110
|
||||
00000011100000001000000110001111
|
||||
00101001100000000000000111101110
|
||||
00000011100101000000000111000101
|
||||
00000000000101010000000010011000
|
||||
00000011100000001001000110000100
|
||||
00101001100000000000000010000101
|
||||
00000011100000001010000110010011
|
||||
00000010100000000010100000010100
|
||||
00101001100000000000000110110010
|
||||
00010100001110001000000000010001
|
||||
00000011100000001000000110010000
|
||||
00010100001110001001001110001110
|
||||
00101001100000000000001000010001
|
||||
00000011100100000000000111001110
|
||||
00000011100000001001000110000101
|
||||
00010100000000000000000000101111
|
||||
00101001100000000000000010101110
|
||||
00000011100000001010000110000100
|
||||
00000011100011100010000111101111
|
||||
00101001100000000000000010001111
|
||||
00000011100000001011000110010011
|
||||
00000010100000100000000000010100
|
||||
00101001100000000000001001110100
|
||||
00000011100000001011000110010001
|
||||
00000010100000100000000000010010
|
||||
00000011100000001100000110010001
|
||||
00000010100000110000000000010010
|
||||
00000010100001000000000000010000
|
||||
00101001100000000000001000110010
|
||||
00000011100000001100000110001111
|
||||
00000010100000110000000000010000
|
||||
00000010100001000000000000001110
|
||||
00101001100000000000000111110000
|
||||
00010101011111101010000000010111
|
||||
00101001100000000000000110001110
|
||||
00010101011111101010000000001110
|
||||
00101001100000000000000110010000
|
||||
00101000100000000000000110101100
|
||||
00000011010000000100000110001100
|
||||
01011011111111111111100110000000
|
||||
00000010100000000100000000001100
|
||||
00101001100000000000000110101100
|
||||
01010100000001011111110000000000
|
||||
00011100000000000001000000001101
|
||||
00000010101101010100000110101101
|
||||
00000011100000000100001011110111
|
||||
00101000100000000000000110110010
|
||||
00101000100000000000001011110001
|
||||
00010100000000000001111010001100
|
||||
00000010100000000100000000001111
|
||||
00101001100000000000000110101111
|
||||
00000011100000000100000111001110
|
||||
00101000100000000000000111010001
|
||||
00010101011111100000000000010000
|
||||
00000011100010010000000110001110
|
||||
00000000000100010110000010000100
|
||||
00000000001000010011101001010011
|
||||
01011100000000000000100111000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000010011010000001100
|
||||
00000000001000010100110010010010
|
||||
01011100000000000000101001100000
|
||||
00000000001010100000000000000111
|
||||
00011100000000000001000000001111
|
||||
00000010101100110010000111101111
|
||||
00000010101101000010000111101111
|
||||
00000011100000000001011000001101
|
||||
00101001100000000011000001101100
|
||||
00101010000000000011000001101110
|
||||
@@ -222,25 +206,25 @@
|
||||
01011111111111111110000110000000
|
||||
00010101011111100000000000010000
|
||||
00000010100000000111000000001110
|
||||
00000010100000000010010000010100
|
||||
00000010101111111111000000010011
|
||||
00000010100000000010010000010011
|
||||
00000010101111111111000000010010
|
||||
00000011100000000001011000001101
|
||||
00000011010000000000000000000000
|
||||
00000000000101111011101000101100
|
||||
00000011010000000011110110001100
|
||||
00000010100000010101110110001111
|
||||
01101000000000000000101010001100
|
||||
01101000000000000000101001101100
|
||||
00000010100000001100000110001111
|
||||
00101010000000000000000110101100
|
||||
00000011010000001000000110001100
|
||||
01011011111111111111100110000000
|
||||
00101001000000000000001000001111
|
||||
00000010101111111111000111001110
|
||||
01011111111111111101100111010011
|
||||
01011111111111111101100111010010
|
||||
00010101011111100000000000010000
|
||||
00000010100000000011010000001100
|
||||
00011100000000000001000000001111
|
||||
00000010101100010111000111101111
|
||||
00000010101100100111000111101111
|
||||
00000011100000000001011000001101
|
||||
00101001100000000011000001101100
|
||||
00101010000000000011000001101110
|
||||
@@ -252,44 +236,12 @@
|
||||
00101001000000000000001000001110
|
||||
00101000000000000000000111101100
|
||||
01011111111111111101110110000000
|
||||
01010100000000101100100000000000
|
||||
00010101011111100000000000010000
|
||||
00000010100000000011010000001100
|
||||
00011100000000000001000000001111
|
||||
00000010101100001100000111101111
|
||||
00000011100000000001011000001101
|
||||
00101001100000000011000001101100
|
||||
00101010000000000011000001101110
|
||||
00000010100000000000010111101111
|
||||
00000011010000000000000000000000
|
||||
00101010000000000000000110101100
|
||||
00000011010000001000000110001100
|
||||
01011011111111111111100110000000
|
||||
00101001000000000000001000001110
|
||||
00101000000000000000000111101100
|
||||
01011111111111111101110110000000
|
||||
00000000000101010000001001000100
|
||||
01010100000000101000010000000000
|
||||
00010101011111100000000000010000
|
||||
00000010100000000011010000001100
|
||||
00011100000000000001000000001111
|
||||
00000010101100000000000111101111
|
||||
00000011100000000001011000001101
|
||||
00101001100000000011000001101100
|
||||
00101010000000000011000001101110
|
||||
00000010100000000000010111101111
|
||||
00101010000000000000000110101100
|
||||
00000011010000001000000110001100
|
||||
01011011111111111111100110000000
|
||||
00101001000000000000001000001110
|
||||
00101000000000000000000111101100
|
||||
01011111111111111110000110000000
|
||||
00101000100000000111000001100001
|
||||
00101000100000000110000001110111
|
||||
00101000100000000101000001111000
|
||||
00000000000101010000000000000100
|
||||
00000010100000001000000001100011
|
||||
00000010100000000100000001100011
|
||||
01001100000000000000000000100000
|
||||
00000011010000000000000000000000
|
||||
00000011010000000000000000000000
|
||||
00000011010000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
@@ -430,154 +382,6 @@
|
||||
00000011010000000000000000000000
|
||||
00000011010000000000000000000000
|
||||
00000011010000000000000000000000
|
||||
01011000000000100001010010000000
|
||||
00000010100000000010100000001100
|
||||
00000010101111111100000001100011
|
||||
00000000001000011011000010001101
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000000001000010011000010010000
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000001100000110101101
|
||||
00000010100000000010010000001111
|
||||
00101001000000000001000001101101
|
||||
00000010100000000000010000001110
|
||||
01101100000000011010100111100100
|
||||
00000000001000011011001000001101
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000001100000110101101
|
||||
00000010100000011001000000001110
|
||||
00000010100000011000110000001111
|
||||
00000000001000010011100010010000
|
||||
01011100000000000000100111000000
|
||||
00000000001010100000000000000111
|
||||
00101001000000000001010001101101
|
||||
00000010100000000000100000001110
|
||||
01101100000000010111100111100100
|
||||
00000000001000011011001000001101
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000001100000110101101
|
||||
00000010100011111010000000001110
|
||||
00000010100011111001110000001111
|
||||
00000000001000010011100010010000
|
||||
01011100000000000000100111000000
|
||||
00000000001010100000000000000111
|
||||
00101001000000000001100001101101
|
||||
00000010100000000000110000001110
|
||||
01101100000000010100100111100100
|
||||
00010100000000000000000001001101
|
||||
00000000001000011011001000001111
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000001100000111101111
|
||||
00000011100111000100000110110000
|
||||
00101001000000000001110001101111
|
||||
00000000001000010100000010010001
|
||||
01011100000000000000101000000000
|
||||
00000000001010100000000000000111
|
||||
00000011100111000011110110101101
|
||||
00000010100000000001000000001110
|
||||
01101100000000010001010110100100
|
||||
00010100000000000000001100001101
|
||||
00000000001000011011001000101111
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000001100000111101111
|
||||
00000011100110101000000110110000
|
||||
00101001000000000010000001101111
|
||||
00000000001000010100000010010001
|
||||
01011100000000000000101000000000
|
||||
00000000001010100000000000000111
|
||||
00000011100110100111110110101101
|
||||
00000010100000000001010000001110
|
||||
01101100000000001110000110100100
|
||||
00010100000000000001111010001101
|
||||
00000000001000011011001000101111
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000001100000111101111
|
||||
00000011100010010000000110110000
|
||||
00101001000000000010010001101111
|
||||
00000000001000010100000010010001
|
||||
01011100000000000000101000000000
|
||||
00000000001010100000000000000111
|
||||
00000011100010001111110110101101
|
||||
00000010100000000001100000001110
|
||||
01101100000000001010110110100100
|
||||
00010100000000010011000100101101
|
||||
00000000001000011011001000101111
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000001100000111101111
|
||||
00000011100110100000000110110000
|
||||
00101001000000000010100001101111
|
||||
00000000001000010100000010010001
|
||||
01011100000000000000101000000000
|
||||
00000000001010100000000000000111
|
||||
00000011100110011111110110101101
|
||||
00000010100000000001110000001110
|
||||
01101100000000000111100110100100
|
||||
00010100000010111110101111001101
|
||||
00000000001000011011001000101111
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00000010100000001100000111101111
|
||||
00000011100001000000000110110000
|
||||
00101001000000000010110001101111
|
||||
00000000001000010100000010001111
|
||||
01011100000000000000101000000000
|
||||
00000000001010100000000000000111
|
||||
00000011100000111111110110101101
|
||||
00000010100000000010000000001110
|
||||
01101100000000000100010110100100
|
||||
00000000001000011011000111101110
|
||||
01011100000000000000100110000000
|
||||
00000000001010100000000000000111
|
||||
00010100011101110011010110001101
|
||||
00000010100000001100000111001100
|
||||
00000011101010000000000110101111
|
||||
00101001000000000011000001101100
|
||||
00000000001000010011110010001100
|
||||
01011100000000000000100111100000
|
||||
00000000001010100000000000000111
|
||||
00000011101001111111110110101101
|
||||
00000010100000000010010000001110
|
||||
01101100000000000001000110100100
|
||||
00000010100000001100000110001100
|
||||
00000010100000000010100000001110
|
||||
00101001000000000011010001101100
|
||||
00000010100000000001000001110001
|
||||
00010101011111100000000000010000
|
||||
00000000000100000011101000101110
|
||||
00000011100000000001011000001101
|
||||
00000011010000000000000000000000
|
||||
00101010001111111111110111001111
|
||||
00101010000000000000000110101100
|
||||
00000011010000001000000110001100
|
||||
01011011111111111111100110000000
|
||||
00101001000000000000001000001111
|
||||
00000010101111111111110111001110
|
||||
01011111111111111110101000101110
|
||||
00000010100000000100000001100011
|
||||
01001100000000000000000000100000
|
||||
00010101011111100000000000001110
|
||||
00000011100000000001010111001101
|
||||
00000011010000000000000000000000
|
||||
00101010000000000000000110101100
|
||||
00000011010000001000000110001100
|
||||
01011011111111111111100110000000
|
||||
00000010100000001100000000001100
|
||||
00101001000000000000000111001100
|
||||
01001100000000000000000000100000
|
||||
00000011010000000000000000000000
|
||||
00000011010000000000000000000000
|
||||
00000000000000000110000000000100
|
||||
01001100000000000000000000100000
|
||||
00000011010000000000000000000000
|
||||
00000011010000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
@@ -908,18 +712,10 @@
|
||||
00000000000000000000000000111101
|
||||
01000001010011010000101000001101
|
||||
01001100010101010100110101010100
|
||||
01000011010110010100001101011111
|
||||
00111101010100110100010101001100
|
||||
00000000000000000000000000000000
|
||||
01000001010011010000101000001101
|
||||
01001100010101010100110101010100
|
||||
01001101010010010101010001011111
|
||||
01010011010101010101111101000101
|
||||
00000000000000000000000000111101
|
||||
01000001010011010000101000001101
|
||||
01001100010101010100110101010100
|
||||
01001110010011110100010001011111
|
||||
00000000000010100000110101000101
|
||||
00000001111101111000101001000000
|
||||
10111111000000000000000000000000
|
||||
10111111000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
*/
|
||||
|
||||
#include <dma.h>
|
||||
#include <confreg_time.h>
|
||||
|
||||
/* ─── UART 16550 direct access (bypasses slow printf/picolibc) ──────── */
|
||||
#define UART_THR (*(volatile unsigned char *)0xbf000000)
|
||||
@@ -29,24 +28,6 @@ static void uart_puthex(unsigned int val) {
|
||||
}
|
||||
}
|
||||
|
||||
static void uart_putdec(unsigned int val) {
|
||||
char buf[10];
|
||||
int i = 0;
|
||||
|
||||
if (val == 0) {
|
||||
uart_tx('0');
|
||||
return;
|
||||
}
|
||||
|
||||
while (val != 0) {
|
||||
buf[i++] = (char)('0' + (val % 10));
|
||||
val /= 10;
|
||||
}
|
||||
while (i > 0) {
|
||||
uart_tx((unsigned char)buf[--i]);
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Configurable group count (default 5000) ──────────────────────── */
|
||||
#ifndef MATMUL_GROUP_NUM
|
||||
#define MATMUL_GROUP_NUM 5000
|
||||
@@ -54,9 +35,6 @@ static void uart_putdec(unsigned int val) {
|
||||
|
||||
/* ─── BSP globals ─────────────────────────────────────────────────── */
|
||||
unsigned long UART_BASE = 0xbf000000;
|
||||
unsigned long CONFREG_TIMER_BASE = 0xbf20f100;
|
||||
unsigned long CONFREG_CLOCKS_PER_SEC = 50000000L;
|
||||
unsigned long CORE_CLOCKS_PER_SEC = 33000000L;
|
||||
|
||||
/* ─── Memory layout ────────────────────────────────────────────────── */
|
||||
#define EXTRAM_BASE_PHYS 0x1c400000
|
||||
@@ -107,11 +85,9 @@ int main(void)
|
||||
volatile unsigned int *mat_crc = (volatile unsigned int *)MATMUL_CRC;
|
||||
|
||||
unsigned int crc;
|
||||
unsigned int cycle_start, cycle_end, cycles, time_us;
|
||||
|
||||
/* ── Start marker (must be first output) ──────────────────── */
|
||||
uart_puts("MATMUL_START\r\n");
|
||||
cycle_start = get_clock_count();
|
||||
|
||||
*(volatile unsigned int *)MATMUL_CRC = 0;
|
||||
*mat_status = STATUS_DMA_DONE | STATUS_DONE | STATUS_ERROR;
|
||||
@@ -123,19 +99,12 @@ int main(void)
|
||||
*mat_ctrl = CTRL_DMA_START;
|
||||
while (!(*mat_status & STATUS_DMA_DONE)) {}
|
||||
*mat_status = STATUS_DMA_DONE;
|
||||
cycle_end = get_clock_count();
|
||||
cycles = cycle_end - cycle_start;
|
||||
time_us = cycles / (CORE_CLOCKS_PER_SEC / 1000000UL);
|
||||
|
||||
/* ── Read hardware CRC32 ──────────────────────────────────── */
|
||||
crc = *mat_crc;
|
||||
|
||||
uart_puts("MATMUL_CRC32=");
|
||||
uart_puthex(crc);
|
||||
uart_puts("\r\nMATMUL_CYCLES=");
|
||||
uart_putdec(cycles);
|
||||
uart_puts("\r\nMATMUL_TIME_US=");
|
||||
uart_putdec(time_us);
|
||||
uart_puts("\r\nMATMUL_DONE\r\n");
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user