From 57ba5d271da42027dd6c7b719ca57b3cec769e5e Mon Sep 17 00:00:00 2001 From: FallenSigh Date: Thu, 25 Jun 2026 15:44:18 +0800 Subject: [PATCH] Remove all debug and printf --- rtl/ip/matmul/matmul_axi_slave.v | 8 - sdk/axi_ram.mif | 860 +++++++++++++----------- sdk/fft.bin | Bin 0 -> 56604 bytes sdk/fft_dma.bin | Bin 0 -> 56940 bytes sdk/software/examples/asm/user-sample.c | 11 - sdk/software/examples/fft/fft.c | 14 + sdk/software/examples/fft/fft.h | 16 + sdk/software/examples/fft_dma/dma.c | 37 + sdk/software/examples/fft_dma/dma.h | 30 + sdk/software/examples/fft_dma/fft.c | 14 + sdk/software/examples/fft_dma/fft.h | 16 + sdk/user-sample.bin | Bin 41308 -> 41548 bytes 12 files changed, 587 insertions(+), 419 deletions(-) create mode 100755 sdk/fft.bin create mode 100755 sdk/fft_dma.bin create mode 100644 sdk/software/examples/fft/fft.c create mode 100644 sdk/software/examples/fft/fft.h create mode 100644 sdk/software/examples/fft_dma/dma.c create mode 100644 sdk/software/examples/fft_dma/dma.h create mode 100644 sdk/software/examples/fft_dma/fft.c create mode 100644 sdk/software/examples/fft_dma/fft.h diff --git a/rtl/ip/matmul/matmul_axi_slave.v b/rtl/ip/matmul/matmul_axi_slave.v index 7b574ef..d33bdfe 100644 --- a/rtl/ip/matmul/matmul_axi_slave.v +++ b/rtl/ip/matmul/matmul_axi_slave.v @@ -341,8 +341,6 @@ module matmul_axi_slave ( if (c0_part == 2'd0) s_axi_rdata = target_c0[31:0]; else if (c0_part == 2'd1) s_axi_rdata = target_c0[63:32]; else s_axi_rdata = {30'b0, target_c0[65:64]}; - $display("RCH B0_C off=%h elem=%d part=%d data=%h raw=%h", - current_r_offset, c0_elem, c0_part, s_axi_rdata, target_c0); end else if (current_r_offset >= ADDR_B1_A && current_r_offset < ADDR_B1_B) s_axi_rdata = b1_a[(current_r_offset - ADDR_B1_A) >> 2]; @@ -352,8 +350,6 @@ module matmul_axi_slave ( if (c1_part == 2'd0) s_axi_rdata = target_c1[31:0]; else if (c1_part == 2'd1) s_axi_rdata = target_c1[63:32]; else s_axi_rdata = {30'b0, target_c1[65:64]}; - $display("RCH B1_C off=%h elem=%d part=%d data=%h raw=%h", - current_r_offset, c1_elem, c1_part, s_axi_rdata, target_c1); end end end @@ -449,10 +445,6 @@ module matmul_axi_slave ( else b1_c[calc_idx] <= ({2'b0, mult_p_r[0]} + {2'b0, mult_p_r[1]}) + ({2'b0, mult_p_r[2]} + {2'b0, mult_p_r[3]}); - $display("ACCUM calc_idx=%d expr=%h", - calc_idx, - ({2'b0, mult_p_r[0]} + {2'b0, mult_p_r[1]}) + - ({2'b0, mult_p_r[2]} + {2'b0, mult_p_r[3]})); if (calc_idx == 4'd15) begin calc_done_pulse <= 1'b1; diff --git a/sdk/axi_ram.mif b/sdk/axi_ram.mif index 2df5c46..40c859e 100644 --- a/sdk/axi_ram.mif +++ b/sdk/axi_ram.mif @@ -52,7 +52,7 @@ 00000011100000000110000000001101 00000100000000000000000110101100 00011100000000000000000100101100 -00000010100011111011000110001100 +00000010100100110111000110001100 00011100000000000001000000001101 00000010101111001001000110101101 00011100000000000001000000101110 @@ -94,7 +94,7 @@ 00000000000101010000000000001110 00101001000000000001000110101110 00011100000000000000000000001100 -00000010100011010001000110001100 +00000010100011110001000110001100 00000100000000000011000000101100 00000011100000000000010000001101 00000100000000010001000000101101 @@ -142,162 +142,194 @@ 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 -00000010101110100100000001100011 +00010100001111101010000000001100 +00000010101111101000000001100011 +00000011100001000000000110010001 +00000011100011000000000110010000 +00000011100001100000000110001111 +00000010100000000000010000001110 +00000010100000000000100000001101 +00000011100011100000000110001100 00011100000000000001000000000100 -00000010101101101111000010000100 -00101001100001011011000001100001 -00101001100001011010000001110111 -00101001100001011001000001111000 -00101001100001011000000001111001 -00101001100001010111000001111010 -00101001100001010110000001111011 -00101001100001010101000001111100 -00101001100001010100000001111101 -01010100000001000101010000000000 -00010101011111101010000000001010 -00010100100000010101111111110100 -00000010100000100100000001110000 -00000010100000010100000001110010 -00010101011110001000000000000001 -00000010100111100000000000010111 -00000010100000000100000001101011 -00000011100000001000000101000101 -00000011100000011000000101000100 -00000011101111011000001010010100 -00000000000100010100000000001001 -00000000000100010100100000001000 -00000000000100010100001011110111 -00000000000101010000001000000111 -00000010100001010100000001110001 -00000011100000010000000000111011 -00000000000100010010110010100101 -00000000000100010100100010000100 -00000011100000000001000101010011 -00000010100000000001100000011010 -00000000000100000101001000010100 -00000010100000000000010000011001 -00000011100001011000000101000110 -00000011100101000000000000111000 -00000000000101010000001001001100 -00000000000101010000000101101101 -00000000000100000000010100011101 -00000000000100000110110100011100 -00000000000100000011001110101111 -00000000000100000011001110001110 -00101000100000000000000111101111 -00101000100000000000000111001110 -00000010100000000001000110101101 -00000010100000000001000110001100 -00101001101111111111000110101111 -00101001101111111111000110001110 -01011111111111111110001001001101 -00000000000101010000000101101100 -00101000100000000000000110001110 -00000000000100000011000010101101 -00000010100000000001000110001100 -00101001100000000000000110101110 -01011111111111111111001001001100 -00000000000101010000001001001100 -00101000100000000000000110001110 -00000000000100000011000010001101 -00000010100000000001000110001100 -00101001100000000000000110101110 -01011111111111111111000011101100 -00101001100000000000001001111010 -00101001100000000000000101011001 -00000011010000000000000000000000 -00101000100000000000001001101100 +00000010101101101000000010000100 +00101001100000001000000001101111 +00101001100000001001000001101100 +00101001100000010111000001100001 +00101001100000000110000001110001 +00101001100000000111000001110000 +00101001100000001010000001101110 +00101001100000001011000001101101 +00101001100000010101000001110111 +00101001100000010100000001111000 +00101001100000010010000001111010 +00101001100000010001000001111011 +00101001100000010000000001111100 +00101001100000001111000001111101 +00101001100000001110000001111110 +00101001100000001101000001111111 +00010101011111101010000000011000 +00101001100000010110000001110110 +00101001100000010011000001111001 +01010100000001010000000000000000 +00000010100000000001100000001100 +00000011100000000001001100010111 +00101001100000000000001011101100 +00101000100000000110000001100110 +00000010100000000010100000001000 +00000010100000100000000000000111 +00010100001110001000000000000101 +00000000000101010000000000000100 +01010100000001000110110000000000 +00000000000101010000000000000100 +01010100000001001010010000000000 +00101000100000001010000001101100 +00010100001110001000000000011010 +00000011100101000000001101011011 +00000010100000000000010000011111 +00010101011111101010000000011110 +00000010100000000000100000011101 +00000010100000000000010000011100 +00000011100000100000001101011010 +00101001100000000000001100001100 +00000011010000000000011111111001 +00000000010000001000101100111001 +00000010100000001100000001101100 +00000000000100000110010110001100 +00101000101111111010000110000110 +00000010101111111111111111111000 +00000010100000000010100000001000 +00000010100000100000000000000111 +00000000000101010000001101000101 +00000000000101010000000000000100 +00000011010000000000011100011000 +01010100000001000001000000000000 +00101000100000000000001011101100 00000011010000000001100110001100 01011011111111111111100110000000 -00000011100000101000000101001100 -00101000100000000000000110001110 -00000000000100000011001010001101 -00000010100000000001000110001100 -00101001100000000000000110101110 -01011111111111111111000110000110 -00000000000101010000001000001100 -00000000000100000110000100101111 -00000011010000000000000000000000 -00101000100000000000000110001110 -00000000000100000011000111101101 -00000010100000000001000110001100 -00101001100000000000000110101110 -01011111111111111111001000101100 -00000010100000110000000100101001 -00000010100000100000000100001000 -01011111111111110100010100110111 -00010101011110001000000000010010 -00000000000101010000001100010000 -00000010101111111111110000001101 -00011100000000000001000000010001 -00000010101100100110001000110001 -00000011101100100000001001010010 -00101000100000000000001000001100 -00000000010001001010000110110011 -00000010100000000001001000010000 -00000000000101011011000110101101 -00101001100000000011000001101101 -00101010000000000011000001101101 -00000000010001001010000110001111 -00000000010001001100000110001110 -00000000010000001000100110101101 -00000000000100000011011000101101 -00101000100000000000000110100101 +00101001100000000000001011111101 +00000010100000000000011111110110 +01011000000000000110001111111100 +00000010100000000000010000000100 +01010100000001000011000000000000 +00000010100000001100000001101100 +00000000010000001000101100011000 +00000000000100000110000110011000 +00101000101111111100001100000101 +00000010100000000101000000001000 +00000010100000110000000000000111 +00000000000101010000001101100110 +00000010100000000000010000000100 +01010100000000111100110000000000 +00000000000101010000000000000100 +01010100000001000000010000000000 +00000010100000001100000001101100 +00000000000100000110010110011001 +00101000101111111110001100101101 +00000010100000000010100000001100 +00101001100000000000001111001101 +01011000000000000100111011001100 +00000010100000100000001101011010 +00000010100000110000001101111011 +00000000000101010000001011011111 +01010011111111110110001111111111 +00000010100000001100000001101101 +00000000010000001000101100001100 +00000000000100000011000110101100 +00101000101111111100000110000101 +00000010100000000101000000001000 +00000010100000110000000000000111 +00000000000101010000001101100110 +00000010100000000000010000000100 +01010100000000110111100000000000 +00000000000101010000000000000100 +01010100000000111011000000000000 +00101000100000001011000001101100 +00101001100000000000001111001100 +01010011111111111011111111111111 +00010101011111101010000000001101 +00000011100000000001000110101101 +00101000100000000000000110101100 +00000011010000000001100110001100 +01011011111111111111100110000000 +00000010100000000000100000001100 +00101001100000000000000110101100 +00000010100000000000010000000100 +01010100000000111000000000000000 +00101000100000001001000001100101 +00010100001110001000000000000110 +00000010100000000101000000001000 +00000010100000110000000000000111 +00000011101011110000000011000110 +00000010100000000000010000000100 +01010100000000110010010000000000 +00000010100000000000010000000100 +01010100000000110101110000000000 +00010101011110001000000000010001 +00000011100101000000001000101111 +00000010101111111111110000000101 +00011100000000000001000000010000 +00000010101100000000001000010000 +00000011101100100000001000110001 +00101000100000000000000111101100 +00000000010001001010000010110010 +00000010100000000001000111101111 +00000000000101011011000010100101 +00101001100000000011000001100101 +00101010000000000011000001100101 +00000000010001001010000110001110 +00000000010001001100000110001101 +00000000010000001000100010100101 +00000000000100000001011000000101 +00101000100000000000000010100101 00000000010001001110000110001100 -00000000000101011100110010100101 -00000000000101011011110010101101 -00101001100000000011000001101101 -00101010000000000011000001101101 -00000000010001001010000010101111 -00000000010000001000100110101101 -00000000000100000011011000101101 -00101000100000000000000110100101 -00000000000101011011110010100101 -00000000000101011011100010101101 +00000000000101011100100010100101 +00000000000101011011100010101110 +00101001100000000011000001101110 +00101010000000000011000001101110 +00000000010001001010000010110010 +00000000010000001000100111001110 +00000000000100000011101000001110 +00101000100000000000000111000101 +00000000000101011100100010100101 +00000000000101011011010010101101 00101001100000000011000001101101 00101010000000000011000001101101 00000000010001001010000010101110 00000000010000001000100110101101 -00000000000100000011011000101101 +00000000000100000011011000001101 00101000100000000000000110100101 00000000000101011011100010100101 00000000000101011001010110001100 00000011010000111111110110001100 00000000010000001000100110001100 -00000000000100000011001000101100 +00000000000100000011001000001100 00000000010001001010000010101101 00101000100000000000000110000101 -00000000000101011011010010101101 -01011111111111110111001000010010 -00000000000101000011010000000101 +00000000000101011011010010100101 +01011111111111110111000111110001 +00000000000101000001010000000101 00011100000000000001000000000100 -00000010101011110100000010000100 -01010100000000100111100000000000 +00000010101011001110000010000100 +01010100000000101101000000000000 00011100000000000001000000000100 -00000010101011110110000010000100 -01010100000000100110110000000000 -00101000100001011011000001100001 -00101000100001011010000001110111 -00101000100001011001000001111000 -00101000100001011000000001111001 -00101000100001010111000001111010 -00101000100001010110000001111011 -00101000100001010101000001111100 -00101000100001010100000001111101 +00000010101011010000000010000100 +01010100000000101100010000000000 +00101000100000010111000001100001 +00101000100000010110000001110110 +00101000100000010101000001110111 +00101000100000010100000001111000 +00101000100000010011000001111001 +00101000100000010010000001111010 +00101000100000010001000001111011 +00101000100000010000000001111100 +00101000100000001111000001111101 +00101000100000001110000001111110 +00101000100000001101000001111111 00000000000101010000000000000100 -00000010100001011100000001100011 +00000010100000011000000001100011 01001100000000000000000000100000 00000011010000000000000000000000 00000011010000000000000000000000 -00000011010000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 @@ -430,9 +462,37 @@ 00000011010000000000000000000000 00000011010000000000000000000000 00000011010000000000000000000000 +00010101011111100110000000001100 +00000000010000001001100010000100 +00000000000100000011000010000100 +00101000100000000101000010001100 +00000011010000000000010110001100 +01011100000000000001110110000000 +00101001100000000000000010000101 +00000011101111110100010000001100 +00101001100000000001000010000110 +00101001100000000010000010000111 +00101001100000000011000010001000 +00101001100000000100000010001100 +01001100000000000000000000100000 +00000011010000000000000000000000 +00000011010000000000000000000000 +00000011010000000000000000000000 +00000000010000001001100010000100 +00010101011111100110000000001100 +00000000000100000011000010000100 +00000011010000000000000000000000 +00101000100000000101000010001100 +00000011010000000000100110001100 +01011011111111111111100110000000 +00000010100000000000100000001100 +00101001100000000101000010001100 +01001100000000000000000000100000 +00000011010000000000000000000000 +00000011010000000000000000000000 00000010101111110000000001100011 00011100000000000001000000001100 -00101000100101101011000110001100 +00101000100100101111000110001100 00101001100000001001000001100101 00101001100000001010000001100110 00000000000101010000000010000101 @@ -470,7 +530,7 @@ 00101001100000001110000001101100 01010100001111110101100000000000 00011100000000000001000000001100 -00101000100101001010000110001100 +00101000100100001110000110001100 00101000100000000000000110001100 00101001100000000110000001100100 00101001010000011101000001100000 @@ -539,7 +599,7 @@ 01101000000100011010101000101110 00000000010000001000100111001110 00011100000000000001000000001101 -00000010101100000010000110101101 +00000010101011000110000110101101 00000000000100000011100110101110 00101000100000000000000111001110 01001100000000000000000111000000 @@ -769,11 +829,11 @@ 00101001000000011100110001101101 00101000100000000010000001101110 00000010100000010001110000001101 -00011100000000000001000000011000 -00000010101000001010001100011000 +00011100000000000000111111111000 +00000010100111001110001100011000 01100100000000000000110110101110 -00011100000000000001000000011000 -00000010101000001000001100011000 +00011100000000000000111111111000 +00000010100111001100001100011000 00000010101111011111110000001101 00000000000101001011011011110111 00000000000101010000000000010110 @@ -806,10 +866,10 @@ 00101000100000000010000001101110 00000010100000010001110000001101 00011100000000000000111111111000 -00000010100111101000001100011000 +00000010100110101100001100011000 01100100000000000000110110101110 00011100000000000000111111111000 -00000010100111100110001100011000 +00000010100110101010001100011000 00000010101111011111110000001101 00000000000101001011011011110111 00000000000101010000000000001111 @@ -838,8 +898,8 @@ 00000000000100010011100110110000 01100100000000000110010000010000 00000010100000000100000000000110 -00011100000000000001000000010100 -00000010101000110101001010010100 +00011100000000000000111111110100 +00000010100111111001001010010100 00000010100000000001110000000111 00101000100000100110000001110010 00101000100000100101000001110001 @@ -913,7 +973,7 @@ 01100100000000000110010000011110 00000010100000000100000000010011 00011100000000000000111111101101 -00000010100111100111000110101101 +00000010100110101011000110101101 00000010100000000001110000010100 00101000100000100110000001110001 00101000100000100101000001110000 @@ -939,7 +999,7 @@ 01100100000000000101110000011110 00000010100000000100000000010010 00011100000000000000111111101101 -00000010100111001101000110101101 +00000010100110010001000110101101 00000010100000000001110000010011 00101000100000100110000001101111 00101000100000100101000001110000 @@ -1031,7 +1091,7 @@ 00101001100000010110000001101100 01010100000101000110100000000000 00011100000000000000111111101110 -00000010100101111010000111001110 +00000010100100111110000111001110 00101000100000000000000111000110 00101000100000000001000111000111 01010100011010001011000000000000 @@ -1047,12 +1107,12 @@ 00101000100000000010000001101101 00000010100000011000010000001110 00011100000000000000111111111100 -00000010100011111001001110011100 +00000010100010111101001110011100 01011000000000000000110110101110 00011100000000000000111111111100 -00000010100011111011001110011100 +00000010100010111111001110011100 00011100000000000000111111101110 -00000010100101100111000111001110 +00000010100100101011000111001110 00101000100000000001000111001111 00101000100000000000000111001110 00000010101111111111111101011111 @@ -1092,7 +1152,7 @@ 00101000100000010111000001101100 01011111111111111000010010000000 00011100000000000000111111111111 -00000010100101000001001111111111 +00000010100100000101001111111111 00101000100000000000001111100110 00101000100000000001001111100111 00101000100000001010000001100100 @@ -1438,7 +1498,7 @@ 00101001100000000100000001101101 00010100000000000000000011101110 00011100000000000000111111101101 -00000010101101110010000110101101 +00000010101100110110000110101101 00000011101000001100000111001110 00101001100000010001000001101101 00000010100000011110000000001101 @@ -1463,7 +1523,7 @@ 00000000000101010000000000011011 00000000000101010000000000011111 00011100000000000000111111111000 -00000010101101100011001100011000 +00000010101100100111001100011000 01010011111101011110011111111111 00000010101111111111110000001110 00101001100000001010000001101100 @@ -1516,7 +1576,7 @@ 00101010000000000000001101111111 01010011111111111110111111111111 00011100000000000000111111101101 -00000010101100101001000110101101 +00000010101011101101000110101101 00101001100000010001000001101101 00000011010000001000001011101110 01011000000000000110000111000000 @@ -1541,7 +1601,7 @@ 00000010100000000000100000001110 01010011111111100001101111111111 00011100000000000000111111101101 -00000010101100001011000110101101 +00000010101011001111000110101101 01010011111111111001111111111111 00000010100000000001001101101101 00101001100000000100000001101101 @@ -1688,7 +1748,7 @@ 00000010100000100111000001110011 00000010100000000001110000000111 00011100000000000000111111110100 -00000010101011100100001010010100 +00000010101010101000001010010100 00000010100000000100000000000110 00000010101111111100001000010000 00000000000101010000001001101100 @@ -1707,7 +1767,7 @@ 00000010100000100111000001110010 00000010100000000001110000010100 00011100000000000000111111101101 -00000010101011001101000110101101 +00000010101010010001000110101101 00000010100000000100000000010011 00000010101111111100001111011110 00000000000101010000001001001100 @@ -1724,7 +1784,7 @@ 00000010100000100111000001110001 00000010100000000001110000010011 00011100000000000000111111101101 -00000010101010111100000110101101 +00000010101010000000000110101101 00000010100000000100000000010010 00000010101111111100001111011110 00000000000101010000001000101100 @@ -1743,7 +1803,7 @@ 00101000100000000010000001101100 01011100000000010111010010000000 00011100000000000000111111101101 -00000010101001001101000110101101 +00000010101000010001000110101101 00101001100000000000000110001101 00000010100000000000010000001101 00101001100000000001000110001101 @@ -1787,7 +1847,7 @@ 01100100000000000100100000011000 00000010100000000100000000011011 00011100000000000000111111111010 -00000010101001111101001101011010 +00000010101001000001001101011010 00000010100000000001110000011101 00101000100000100110000001101110 00101000100000100101000001101101 @@ -1837,7 +1897,7 @@ 00101000100000011110000001101101 01100000000000010101010000001101 00011100000000000000111111001101 -00000010100111101111000110101101 +00000010100110110011000110101101 00101001100000000000000110001101 00000010100000000000010000001101 00101001100000000001000110001101 @@ -1882,8 +1942,8 @@ 00000000000100010110100000011010 00000000000101010000000110001110 00000010100000000100000000011101 -00011100000000000000111111111011 -00000010101000011101001101111011 +00011100000000000000111111011011 +00000010100111100001001101111011 00000010100000000001110000011110 00101000100000100110000001101111 00101000100000100101000001101101 @@ -1945,7 +2005,7 @@ 01100100000000000101110000011010 00000010100000000100000000001110 00011100000000000000111111011110 -00000010100111011111001111011110 +00000010100110100011001111011110 00000010100000000001110000010001 00101000100000100110000001101111 00101000100000100101000001101101 @@ -1972,7 +2032,7 @@ 00000010100000000001110000011110 00101001100000000010000001101101 00011100000000000000111111011111 -00000010100111000100001111111111 +00000010100110001000001111111111 01011100000000011000001101100000 01011100000000011000001110100000 00000000000100000111001100001101 @@ -2033,7 +2093,7 @@ 01100111111111000111000000011000 00000010100000000100000000011011 00011100000000000000111111011010 -00000010100110000111001101011010 +00000010100101001011001101011010 00000010100000000001110000011101 00101000100000100110000001101110 00101000100000100101000001101101 @@ -2247,7 +2307,7 @@ 01100111111111111100010000011011 00000010100000000100000000011101 00011100000000000000111111011000 -00000010100010110001001100011000 +00000010100001110101001100011000 00000010100000000001110000011110 00101000100000100110000001101100 00101000100000100101000001101101 @@ -2286,7 +2346,7 @@ 01100111111110001000010000010111 00000010100000000100000000011010 00011100000000000000111111011000 -00000010100010001110001100011000 +00000010100001010010001100011000 00000010100000000001110000011011 00101000100000100110000001101110 00101000100000100101000001101101 @@ -2364,7 +2424,7 @@ 00000000000101010000000010101110 01011100000000000010111000000000 00011100000000000000111111001100 -00000010100001001011000110001100 +00000010100000001111000110001100 00101000100000000000000110000110 00101000100000000001000110000111 01010100010100111101110000000000 @@ -2408,7 +2468,7 @@ 00000010101111111111000010001101 00101001100000000000000010000000 00011100000000000000111111001110 -00101000100110111100000111001110 +00101000100110000000000111001110 00101000100000000000000111001100 01011100000000000001000110000000 00101001100000000000000010001100 @@ -2434,7 +2494,7 @@ 01001100000000000000000000100000 01011100000000000001100110001101 00011100000000000000111111001100 -00101000100110010100000110001100 +00101000100101011000000110001100 00000010100000000011000000001101 00101001100000000000000110001101 01001100000000000000000000100000 @@ -2464,7 +2524,7 @@ 00000010101111111110000000001100 00000000000100000101110010010111 00011100000000000000111111011010 -00000010100110000111001101011010 +00000010100101001011001101011010 00000000000101001011001100011000 00101001100000000000001101010111 00000010101111111111001100011000 @@ -2476,7 +2536,7 @@ 00000000000100000110011011110111 00101001100000000000001101010111 00011100000000000000111111001100 -00000010100101111100000110001100 +00000010100101000000000110001100 00101000100000000000000110001101 01011111111111111000100110100000 00101001100000000000000110011000 @@ -2484,7 +2544,7 @@ 00000010101111111100000001100011 00101001100000000010000001110111 00011100000000000000111111001100 -00000010100101110011000110001100 +00000010100100110111000110001100 00101000100000000000000010010111 00101000100000000000000110001100 00101001100000000000000001111001 @@ -2527,7 +2587,7 @@ 00000010101111111010110000001100 01101100000000000011100110000100 00011100000000000000111111001100 -00101000100100110111000110001100 +00101000100011111011000110001100 00000010100000000011000000001101 00101001100000000000000110001101 00000000000101010000000000010111 @@ -2544,7 +2604,7 @@ 00000000000101001001001100011000 00000010100000000010001100011001 00011100000000000000111111011010 -00000010100100111001001101011010 +00000010100011111101001101011010 00101000100000000000001101010111 01011100000000000001111011100000 00000000000101010000001100100100 @@ -2736,7 +2796,7 @@ 01011000000011111111011101000000 00101000100000000111000001101101 00011100000000000000111111001100 -00000010101011011100000110001100 +00000010101010100000000110001100 00101001100000000001000001101100 01011000000000000001000110100000 00000010100000000000110110001100 @@ -2772,7 +2832,7 @@ 00101001100000000000000110101100 00101000100000000111000001101101 00011100000000000000111111001100 -00000010101001001000000110001100 +00000010101000001100000110001100 00101001100000000001000001101100 01011011111111111000000110100000 00101000100000000111000001101110 @@ -2801,17 +2861,17 @@ 00000010101100000000011100011000 00101001100000010010000001100000 00011100000000000000111111001100 -00000010101010011100000110001100 +00000010101001100000000110001100 00101000100000000000000110000110 00101000100000000001000110000111 01010100010100111011100000000000 00011100000000000000111111001100 -00000010101010011001000110001100 +00000010101001011101000110001100 00101000100000000000000110000110 00101000100000000001000110000111 01010100010011001111010000000000 00011100000000000000111111001100 -00000010101010010110000110001100 +00000010101001011010000110001100 00101000100000000000000110000110 00101000100000000001000110000111 01010100001110000111000000000000 @@ -2820,7 +2880,7 @@ 00000000000101010000000010111011 01010100010111011001000000000000 00011100000000000000111111001100 -00000010101010001111000110001100 +00000010101001010011000110001100 00101000100000000000000110000110 00101000100000000001000110000111 01010100010011001011110000000000 @@ -2852,7 +2912,7 @@ 01101000000000000011010110010110 00000000010000001000111011001101 00011100000000000000111111001100 -00101000101111110011000110001100 +00101000101110110111000110001100 00000000000100000011010110001100 00101000100000000000000110000110 00101000100000000001000110000111 @@ -2973,7 +3033,7 @@ 00000000010000001000110110001101 00000000010010001001001011011101 00011100000000000000111111001100 -00101000101101111010000110001100 +00101000101100111110000110001100 00000000000100000011010110001100 00000011010000000100001110101110 00101000100000000001000110001101 @@ -2981,7 +3041,7 @@ 00101000100000000000000110001100 01011000000000000100000111000000 00011100000000000000111111001110 -00101000101101110100000111001110 +00101000101100111000000111001110 00101000100000001000000111000110 00101000100000001001000111000111 00101000100000001011000001100100 @@ -2996,7 +3056,7 @@ 00000000000101010000000010111100 00000010100000000000110000011000 00011100000000000000111111011110 -00101000101101100101001111011110 +00101000101100101001001111011110 01010000000000000011010000000000 00000011010000000000011110101111 01011000000000000010010111100000 @@ -3025,7 +3085,7 @@ 00000011010000000011111110101100 00000000010000001000110110001101 00011100000000000000111111001100 -00101000101101000110000110001100 +00101000101100001010000110001100 00000000000100000011010110001100 00101000100000000000000110000110 00101000100000000001000110000111 @@ -3033,7 +3093,7 @@ 00101000100000001110000001100101 00000000010010001001001110111101 00011100000000000000111111011110 -00101000101101000000001111011110 +00101000101100000100001111011110 01010100010010010111000000000000 00000000000101010000000010011001 00000000000101010000000010111100 @@ -3043,7 +3103,7 @@ 00101000100000001111000001101100 01011000000000011100110110000000 00011100000000000000111110101110 -00000010100110110010000111001110 +00000010100101110110000111001110 00101000100000000000000111000110 00101000100000000001000111000111 00000000000101010000001100100100 @@ -3055,7 +3115,7 @@ 00101000100000000100000001101100 01100100000000001110010000001100 00011100000000000000111110101110 -00000010100110101000000111001110 +00000010100101101100000111001110 00101000100000001000000001101101 00101000100000000000000111000110 00101000100000000001000111000111 @@ -3080,7 +3140,7 @@ 00000000000101010000000110100111 01010100010010001100000000000000 00011100000000000000111110101111 -00000010100110010001000111101111 +00000010100101010101000111101111 00101000100000000000000111100110 00101000100000000001000111100111 01010100001101000011110000000000 @@ -3088,7 +3148,7 @@ 00000000000100000001011100011000 01011100000000010011001111000000 00011100000000000000111110101100 -00000010100110001011000110001100 +00000010100101001111000110001100 00101000100000010001000001101110 00101000100000001100000001101101 00101000100000000000000110000110 @@ -3118,7 +3178,7 @@ 01100000000001000010110110110110 00000000010000001000111011001101 00011100000000000000111111001100 -00101000101011101001000110001100 +00101000101010101101000110001100 00000000000100000011010110001100 00101000100000000000000110011010 00101000100000000001000110011011 @@ -3127,7 +3187,7 @@ 01100000000000101100000000011111 01011100000001110010001111100000 00011100000000000000111110101100 -00000010100101100100000110001100 +00000010100100101000000110001100 00101000100000000000000110000110 00101000100000000001000110000111 00000000000101010000001101000100 @@ -3169,23 +3229,23 @@ 00101001100000010001000001101100 00101000100000000110000001101100 00011100000000000000111111001101 -00101000101010110110000110101101 +00101000101001111010000110101101 00000000000100000011100110101101 00101000100000000000000110100110 00101000100000000001000110100111 01011000000000001111110110000000 00011100000000000000111110101100 -00000010100100011110000110001100 +00000010100011100010000110001100 00101000100000000000000110000100 00101000100000000001000110000101 00101001100000001100000001111000 00011100000000000000111110111000 -00000010100100101011001100011000 +00000010100011101111001100011000 01010100001111000000010000000000 00101000100000001100000001101111 00000000000101010000001100100110 00011100000000000000111110111001 -00000010100100100100001100111001 +00000010100011101000001100111001 00000000000101010000000111100111 01010100010011011011110000000000 00101000100000000001000001111110 @@ -3261,7 +3321,7 @@ 00000000000101010000000010111001 01011100000000001000011110001100 00011100000000000000111110111100 -00000010100011001000001110011100 +00000010100010001100001110011100 00101000100000000000001110000110 00101000100000000001001110000111 00101000100000001100000001100100 @@ -3293,7 +3353,7 @@ 00000000000101010000000111011110 01010011111111111110101111111111 00011100000000000000111110101100 -00000010100010111010000110001100 +00000010100001111110000110001100 00101000100000000000000110000110 00101000100000000001000110000111 01010100010001010101100000000000 @@ -3370,7 +3430,7 @@ 00000000000101010000000110011110 01010011111111111100111111111111 00011100000000000000111110101100 -00000010100001101101000110001100 +00000010100000110001000110001100 00101000100000000000000110000110 00101000100000000001000110000111 00000010100000000000011100011000 @@ -3756,7 +3816,7 @@ 01010011111111010010101111111111 00101000100000000111000001101101 00011100000000000000111110101100 -00000010101011011101000110001100 +00000010101010100001000110001100 00101001100000000001000001101100 00000010100000000010000110001100 01011111111100000001010110100000 @@ -3789,13 +3849,13 @@ 00000010101111111100000001100011 00101001100000000010000001110111 00011100000000000000111110110111 -00000010100001100000001011110111 +00000010100000100100001011110111 00101000100000000000001011100100 00101001100000000011000001100001 01011000000000000001100010000000 01010111111010100100111111111111 00011100000000000000111110101100 -00000010100001011001000110001100 +00000010100000011101000110001100 00101001100000000000001011100000 00101001100000000000000110000000 00101000100000000011000001100001 @@ -3803,7 +3863,7 @@ 00000010100000000100000001100011 01001100000000000000000000100000 00011100000000000000111110101100 -00000010100001010000000110001100 +00000010100000010100000110001100 00101000100000000000000110001101 01011100000000000001100110100000 00000010100000000000010000001101 @@ -3814,7 +3874,7 @@ 00000000000101010000000000000100 01001100000000000000000000100000 00011100000000000000111110101100 -00000010100001000110000110001100 +00000010100000001010000110001100 00101000100000000000000110001101 01100100000000001000000110100100 00000010101111111100000001100011 @@ -3828,7 +3888,7 @@ 00000000000101010000000000001100 01011100000000000011110010000000 00011100000000000000111110101100 -00000010100000111001000110001100 +00000010101111111101000110001100 00101000100000000000000110000100 00000000000101010000000110011001 01011000000000000000100010000000 @@ -3839,7 +3899,7 @@ 01011000000000000000100010000000 00101001100000000000001100010111 00011100000000000000111110101100 -00000010100000101110000110001100 +00000010101111110010000110001100 00101000100000000000000110001100 00101000100000000011000001100001 00101000100000000010000001110111 @@ -3849,7 +3909,7 @@ 00000010100000000100000001100011 01001100000000000000000000100000 00011100000000000000111110101100 -00000010100000100100000110001100 +00000010101111101000000110001100 00101000100000000000000110001100 00000000000101010000000110000100 01001100000000000000000000100000 @@ -4163,7 +4223,7 @@ 00000010101111111111110110001100 00000000010000001000100110001100 00011100000000000000111110001101 -00000010100101011010000110101101 +00000010100100011110000110101101 00000000000100000011000110101100 00101000100000000000000110000101 00000000000101010000000000000110 @@ -4474,7 +4534,7 @@ 00000010100000000000100000000100 01010000000000000000010000000000 00011100000000000000111110001110 -00000010100110110100000111001110 +00000010100101111000000111001110 00000000000101010000000000001100 00000000000101010000000111001101 00000010100000001000000000010000 @@ -4544,48 +4604,48 @@ 00101001001111111111110110000000 01010011111111111111001111111111 00011100000000000000111110000100 -00101000100101100101000010000100 +00101000100100101001000010000100 00000010100000111100000010000100 01001100000000000000000000100000 00000000000101010000000010001100 00011100000000000000111110001101 -00000010100011100111000110101101 +00000010100010101011000110101101 00101000100000000000000110100100 01100100000000000011000110000000 00011100000000000000111110001110 -00101000100101011001000111001110 +00101000100100011101000111001110 00000000000100010011100010001110 00000000000100010011000000001111 01101100000000000010110111001111 00011100000000000000111110001100 -00101000100101001000000110001100 +00101000100100001100000110001100 00000010100000000011000000001101 00101001100000000000000110001101 00000010101111111111110000000100 01001100000000000000000000100000 00011100000000000000111110001110 -00101000100101001011000111001110 +00101000100100001111000111001110 00000000000100010001000111001110 01101011111111111101110111001100 00000000000100000011000010001100 00101001100000000000000110101100 01001100000000000000000000100000 00011100000000000000111110001100 -00101000100101000010000110001100 +00101000100100000110000110001100 00101001100000001000000010001100 00011100000000000000111110001100 -00101000100100111100000110001100 +00101000100100000000000110001100 00101001100000001001000010001100 00011100000000000000111110001100 -00101000100100111011000110001100 +00101000100011111111000110001100 00101001100000011000000010001100 00010101111111111111111100001100 00000000000101010011000010100101 00011100000000000000111110001100 -00101000100100101110000110001100 +00101000100011110010000110001100 00101001100000001010000010001100 00011100000000000000111110001100 -00101000100100110101000110001100 +00101000100011111001000110001100 00101001100000000000000010000000 00101001100000000001000010000000 00101001100000000010000010000000 @@ -4601,28 +4661,28 @@ 00101001100000001011000010001100 01001100000000000000000000100000 00011100000000000000111110000101 -00000010100010110111000010100101 +00000010100001111011000010100101 00011100000000000000111110000100 -00101000100100011101000010000100 +00101000100011100001000010000100 01010000000000010000110000000000 00011100000000000000111110001100 -00000010100010110001000110001100 +00000010100001110101000110001100 00101000100000000000000110000100 00000010101111111100000001100011 00101001100000000010000001110111 00101001100000000011000001100001 00011100000000000000111110010111 -00000010100110001101001011110111 +00000010100101010001001011110111 01011000000000000000100010010111 01010100000001110000010000000000 00011100000000000000111110001100 -00000010100010100110000110001100 +00000010100001101010000110001100 00101000100000000000000110000100 00000010100000011100001011101100 01011000000000000000100010001100 01010100000001101110110000000000 00011100000000000000111110001100 -00000010100010011111000110001100 +00000010100001100011000110001100 00101000100000000000000110000100 00000010100000111000001011110111 01011000000000000001010010010111 @@ -4636,18 +4696,18 @@ 01001100000000000000000000100000 00000010101111111100000001100011 00011100000000000000111110001100 -00000010100111001001000110001100 +00000010100110001101000110001100 00011100000000000000000000001101 00000010101111011011000110101101 00000000000101010000000000000110 00000010100000000001000000000101 00011100000000000000111110000100 -00000010100101101111000010000100 +00000010100100110011000010000100 00101001100000000011000001100001 00101001100000000000000110001101 01010111111111101101011111111111 00011100000000000000111110001101 -00000010100101101010000110101101 +00000010100100101110000110101101 00000010100000000000010000000110 00000010100000000010010000000101 00000010100000011100000110100100 @@ -4659,14 +4719,14 @@ 00000010100000000100000001100011 01010011111111101010011111111111 00011100000000000000111110001100 -00000010100101011100000110001100 +00000010100100100000000110001100 00101000100000000000000110001101 01011100000000000010010110100000 00011100000000000000000000001101 00000010101111000111000110101101 00101001100000000000000110001101 00011100000000000000111110001100 -00000010100110101011000110001100 +00000010100101101111000110001100 00101000100000000000000110001100 01011100000000000000100110000000 01010011111111110111011111111111 @@ -4780,7 +4840,7 @@ 00101000010000000011100010000100 01010000000011100111000000000000 00011100000000000000111110001100 -00101000100001110100000110001100 +00101000100000111000000110001100 00101000100000000000000110001100 00000010101111111100000001100011 00101001100000000010000001110111 @@ -4794,7 +4854,7 @@ 00000011010000000100000110001101 01011100000000000010010110100000 00011100000000000000111110001101 -00101000100001011100000110101101 +00101000100000100000000110101101 00000010100000000010010000001110 00101001100000000000000110101110 00000011100000010000000110001100 @@ -4909,7 +4969,7 @@ 01011100000000000000100110000000 01010011110110101010111111111111 00011100000000000000111110001100 -00101000101111101001000110001100 +00101000101110101101000110001100 00000010100000000011000000001101 00101001100000000000000110001101 00000000000101010000000000000100 @@ -4937,7 +4997,7 @@ 00101000100000001010001011101110 01011011111111111110000111000000 00011100000000000000111110011000 -00101000101111001101001100011000 +00101000101110010001001100011000 00000000010001001011000110001101 00101000100000000000001100011001 00000011010000000000010110101101 @@ -5065,12 +5125,12 @@ 01010011111111111100111111111111 01011100000000000001100010000000 00011100000000000000111110000101 -00101000101101011010000010100101 +00101000101100011110000010100101 00011100000000000000000000000100 00000010101111111101000010000100 01010011111110011100111111111111 00011100000000000000111110001100 -00101000101101010010000110001100 +00101000101100010110000110001100 00101000100000000000000110001100 00000010101111111100000001100011 00101001100000000010000001110111 @@ -5241,7 +5301,7 @@ 00101000100000000011000001101110 01011100000000000100000010000000 00011100000000000000111110001100 -00101000101010011101000110001100 +00101000101001100001000110001100 00000010100000000011000000001101 00101001100000000000000110001101 00101010010000000011001011101100 @@ -5476,7 +5536,7 @@ 00000010101111111010110000001100 01101100000000000100010110000101 00011100000000000000111101101100 -00101000100110110010000110001100 +00101000100101110110000110001100 00000010100000000011000000001101 00101001100000000000000110001101 00000000000101010000000000011010 @@ -5505,7 +5565,7 @@ 01010111110100001100111111111111 01011100000000000110010010000000 00011100000000000000111101101101 -00101000100110100011000110101101 +00101000100101100111000110101101 00101000100000000000000110101100 01011000000000000011000110000000 01011100000000001000111110001100 @@ -5575,7 +5635,7 @@ 00000010100000111111110000001100 01101100000000000001110110000101 00011100000000000000111101101100 -00101000100101001111000110001100 +00101000100100010011000110001100 00000010100000100010100000001101 00101001100000000000000110001101 00000010101111111111110000000100 @@ -5611,7 +5671,7 @@ 00000010100000000000100000001100 01101100000000000001110110000100 00011100000000000000111101101100 -00101000100100101011000110001100 +00101000100011101111000110001100 00000010100000000010010000001101 00101001100000000000000110001101 00000010101111111111110000000100 @@ -5621,7 +5681,7 @@ 00000010100000000000100000001100 01101000000000000110000110000100 00011100000000000000111101101100 -00101000100100100000000110001100 +00101000100011100100000110001100 00101000100000000000000110001100 00000010101111111000000001100011 00101001100000000110000001110111 @@ -5644,7 +5704,7 @@ 01010100000000011010010000000000 01010011111111111110001111111111 00011100000000000000111101101100 -00101000100100001010000110001100 +00101000100011001110000110001100 00000010100000000010010000001101 00101001100000000000000110001101 00000010101111111111110000000100 @@ -5667,7 +5727,7 @@ 01001100000000000000000000100000 01011100000000000111100010000000 00011100000000000000111101101100 -00101000100011110010000110001100 +00101000100010110110000110001100 00101000100000000000000110001100 01011000000000001000000110000000 00000010101111111000000001100011 @@ -5696,14 +5756,14 @@ 00000010100000000000011011110111 01010011111111111100101111111111 00011100000000000000111101101100 -00101000100011010110000110001100 +00101000100010011010000110001100 00000010100000000010010000001101 00101001100000000000000110001101 00000010101111111111110000000100 01001100000000000000000000100000 01001100000000000000000000100000 00011100000000000000111101101100 -00101000100011001111000110001100 +00101000100010010011000110001100 00000010100000000010010000001101 00101001100000000000000110001101 00000010101111111111110000000100 @@ -5715,7 +5775,7 @@ 00000000000101010000000000000100 01001100000000000000000000100000 00011100000000000000111101101100 -00101000100011000011000110001100 +00101000100010000111000110001100 00000010100000000010010000001101 00101001100000000000000110001101 00000010101111111111110000000100 @@ -5723,7 +5783,7 @@ 00000010100000000000100000001100 01101100000000000001110110000100 00011100000000000000111101101100 -00101000100010111011000110001100 +00101000100001111111000110001100 00000010100000000010010000001101 00101001100000000000000110001101 00000010101111111111110000000100 @@ -5733,7 +5793,7 @@ 00000010100000000000100000001100 01101100000000000010000110000100 00011100000000000000111101101100 -00101000100010110001000110001100 +00101000100001110101000110001100 00000010100000000010010000001101 00101001100000000000000110001101 00000010101111111111110000000100 @@ -5742,12 +5802,12 @@ 00000000000101010000000000000100 01010011111111111111011111111111 00011100000000000000111101101100 -00000010100010100001000110001100 +00000010100001100101000110001100 00101000100000000000000110001100 00101001000000000000000110000100 01001100000000000000000000100000 00011100000000000000111101101100 -00000010100000111000000110001100 +00000010101111111100000110001100 00101000100000000000000110001101 00000010100000000001010110101110 00101010000000000000000111001100 @@ -5756,7 +5816,7 @@ 00101001000000000000000110100100 01001100000000000000000000100000 00011100000000000000111101101100 -00000010100000101111000110001100 +00000010101111110011000110001100 00101000100000000000000110001101 00000010101111111100000001100011 00000010100000000001010110101110 @@ -5785,7 +5845,7 @@ 00000000010001001010000011010010 00000010100000000010000000001111 00011100000000000000111101101100 -00101000100010001000000110001100 +00101000100001001100000110001100 00000000000100000100100110001100 00101010000000000000000110001100 00000010100000001000000000010000 @@ -5856,7 +5916,7 @@ 00000000010001001110000111010010 00000010100000000110000000001111 00011100000000000000111101110000 -00101000100001000001001000010000 +00101000100000000101001000010000 00000000000100000100101000010000 00101010000000000000001000010000 00000010100000001000000000001100 @@ -5920,7 +5980,7 @@ 00000000010001001110000011101110 00000010100000000110000000010001 00011100000000000000111101101111 -00101000100000000001000111101111 +00101000101111000101000111101111 00000000000100000011100111101111 00101010000000000000000111101110 00000010100000001000000000010000 @@ -6122,7 +6182,7 @@ 00000000010001001110000011010010 00000010100000000110000000001111 00011100000000000000111101110000 -00101000101100110111001000010000 +00101000101011111011001000010000 00000000000100000100101000010000 00101010000000000000001000010000 00000010100000001000000000001110 @@ -6188,7 +6248,7 @@ 00000000010001001110000110110001 00000010100000000110000000001111 00011100000000000000111101110000 -00101000101011110101001000010000 +00101000101010111001001000010000 00000000000100000100011000010000 00101010000000000000001000010001 00000010100000001000000000001110 @@ -6240,7 +6300,7 @@ 00000000010001001110000011110001 00000010100000000110000000001110 00011100000000000000111101101100 -00101000101011000001000110001100 +00101000101010000101000110001100 00000000000100000100010110001100 00101010000000000000000110001100 00000010100000001000000000001111 @@ -7073,7 +7133,7 @@ 00000000000101011110001110110000 01101000000000101001010110011011 00011100000000000000111101001111 -00000010101010101010000111101111 +00000010101001101110000111101111 00000000010000001000101101101110 00000000000100000011100111101110 00101000100000000000000111001100 @@ -7786,7 +7846,7 @@ 00000010100000000000011101110001 01101000000000100100000110011001 00011100000000000000111100101110 -00000010101111110001000111001110 +00000010101110110101000111001110 00000000010000001000101100111001 00000000000100000110010111011001 00101000100000000000001100101100 @@ -9164,7 +9224,7 @@ 00000010100000001000000000001101 01101000000000000010000110000100 00011100000000000000111100001100 -00101000101101010101000110001100 +00101000101100011001000110001100 00000000000100000001000110001100 00101010000000000000000110000100 00000000000100010001000110100100 @@ -9172,7 +9232,7 @@ 00000011010000000000000000000000 00000000010001001010000010000100 00011100000000000000111100001100 -00101000101101001101000110001100 +00101000101100010001000110001100 00000000000100000001000110001100 00101010000000000000000110000100 00000010100000000110000000001101 @@ -9182,7 +9242,7 @@ 01101000000000000010010010001100 00000000010001001110000010000100 00011100000000000000111100001100 -00101000101101000011000110001100 +00101000101100000111000110001100 00000000000100000001000110001100 00101010000000000000000110000100 00000010100000000010000000001101 @@ -9190,7 +9250,7 @@ 01001100000000000000000000100000 00000000010001001100000010000100 00011100000000000000111100001100 -00101000101100111011000110001100 +00101000101011111111000110001100 00000000000100000001000110001100 00101010000000000000000110000100 00000010100000000100000000001101 @@ -9804,97 +9864,97 @@ 01101100011101010110111000101000 00000000000000000010100101101100 00000000000000000000000000110000 -00011100000000000000100100101000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000000100100111100 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000000100011011000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000000100101000100 -00011100000000000000100101100100 -00011100000000000001101000010000 -00011100000000000000100101011100 -00011100000000000000100101101100 -00011100000000000001101000010000 -00011100000000000000100111010100 -00011100000000000000100111011100 -00011100000000000000100111011100 -00011100000000000000100111011100 -00011100000000000000100111011100 -00011100000000000000100111011100 -00011100000000000000100111011100 -00011100000000000000100111011100 -00011100000000000000100111011100 -00011100000000000000100111011100 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000000101101101000 -00011100000000000001101000010000 -00011100000000000000101001110100 -00011100000000000000101010101000 -00011100000000000000101101101000 -00011100000000000000101101101000 -00011100000000000000101101101000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000000101000011100 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001010111111000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001011010101100 -00011100000000000001101000010000 -00011100000000000001011101001000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001011110110100 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000000101101101000 -00011100000000000001101000010000 -00011100000000000000101001110100 -00011100000000000000101010101100 -00011100000000000000101101101000 -00011100000000000000101101101000 -00011100000000000000101101101000 -00011100000000000000101000100100 -00011100000000000000101010101100 -00011100000000000000101001100100 -00011100000000000001101000010000 +00011100000000000000101000011000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000000101000101100 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000000100111001000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000000101000110100 +00011100000000000000101001010100 +00011100000000000001101100000000 00011100000000000000101001001100 -00011100000000000001101000010000 -00011100000000000001010110001100 -00011100000000000001010111111100 -00011100000000000001011001110000 -00011100000000000000101001100100 -00011100000000000001101000010000 -00011100000000000001011010101100 -00011100000000000000100100100000 -00011100000000000001011101001100 -00011100000000000001101000010000 -00011100000000000001101000010000 -00011100000000000001100000011000 -00011100000000000001101000010000 -00011100000000000000100100100000 +00011100000000000000101001011100 +00011100000000000001101100000000 +00011100000000000000101011000100 +00011100000000000000101011001100 +00011100000000000000101011001100 +00011100000000000000101011001100 +00011100000000000000101011001100 +00011100000000000000101011001100 +00011100000000000000101011001100 +00011100000000000000101011001100 +00011100000000000000101011001100 +00011100000000000000101011001100 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000000110001011000 +00011100000000000001101100000000 +00011100000000000000101101100100 +00011100000000000000101110011000 +00011100000000000000110001011000 +00011100000000000000110001011000 +00011100000000000000110001011000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000000101100001100 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001011011101000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001011110011100 +00011100000000000001101100000000 +00011100000000000001100000111000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001100010100100 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000000110001011000 +00011100000000000001101100000000 +00011100000000000000101101100100 +00011100000000000000101110011100 +00011100000000000000110001011000 +00011100000000000000110001011000 +00011100000000000000110001011000 +00011100000000000000101100010100 +00011100000000000000101110011100 +00011100000000000000101101010100 +00011100000000000001101100000000 +00011100000000000000101100111100 +00011100000000000001101100000000 +00011100000000000001011001111100 +00011100000000000001011011101100 +00011100000000000001011101100000 +00011100000000000000101101010100 +00011100000000000001101100000000 +00011100000000000001011110011100 +00011100000000000000101000010000 +00011100000000000001100000111100 +00011100000000000001101100000000 +00011100000000000001101100000000 +00011100000000000001100100001000 +00011100000000000001101100000000 +00011100000000000000101000010000 00110000001100000011000000110000 00110000001100000011000000110000 00110000001100000011000000110000 @@ -10106,38 +10166,38 @@ 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 -11111111111110000110011111101000 -11111111111110000110010110010100 -11111111111110000110011010010000 -11111111111110000110010111110000 -11111111111110000110011010010000 -11111111111110000110011110110000 -11111111111110000110011010010000 -11111111111110000110010111110000 -11111111111110000110010110010100 -11111111111110000110010110010100 -11111111111110000110011110110000 -11111111111110000110010111110000 -11111111111110000110011000000000 -11111111111110000110011000000000 -11111111111110000110011000000000 -11111111111110000110011111001000 -11111111111110000111001001111000 -11111111111110000111000001111000 -11111111111110000111000001111000 -11111111111110000111000001110100 -11111111111110000111000010000100 -11111111111110000111000010000100 -11111111111110000111001001000000 -11111111111110000111000001110100 -11111111111110000111000010000100 -11111111111110000111001001000000 -11111111111110000111000010000100 -11111111111110000111000001110100 -11111111111110000111001000111000 -11111111111110000111001000111000 -11111111111110000111001000111000 -11111111111110000111001001011000 +11111111111110000110100011011000 +11111111111110000110011010000100 +11111111111110000110011110000000 +11111111111110000110011011100000 +11111111111110000110011110000000 +11111111111110000110100010100000 +11111111111110000110011110000000 +11111111111110000110011011100000 +11111111111110000110011010000100 +11111111111110000110011010000100 +11111111111110000110100010100000 +11111111111110000110011011100000 +11111111111110000110011011110000 +11111111111110000110011011110000 +11111111111110000110011011110000 +11111111111110000110100010111000 +11111111111110000111001101101000 +11111111111110000111000101101000 +11111111111110000111000101101000 +11111111111110000111000101100100 +11111111111110000111000101110100 +11111111111110000111000101110100 +11111111111110000111001100110000 +11111111111110000111000101100100 +11111111111110000111000101110100 +11111111111110000111001100110000 +11111111111110000111000101110100 +11111111111110000111000101100100 +11111111111110000111001100101000 +11111111111110000111001100101000 +11111111111110000111001100101000 +11111111111110000111001101001000 00000010000000100000000100000000 00000011000000110000001100000011 00000100000001000000010000000100 @@ -10266,8 +10326,8 @@ 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 -00011100000000000101011100010100 -00011100000000000101011010110100 +00011100000000000101100000000100 +00011100000000000101011110100100 00000000000000000000000000000000 00011100000010000000100000101111 00011100000010000000011110101100 @@ -10307,17 +10367,17 @@ 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 -00011100000000000100101001001100 +00011100000000000100101100111100 00011100000010000000101010110000 00011100000010000000110010101100 00011100000010000000011011011000 -00011100000000000100111100100100 +00011100000000000101000000010100 00011100000010000000011010110000 -00011100000000000100110000101100 +00011100000000000100110100011100 00011100000010000000101010111100 -00011100000000000100101111001100 -00011100000000000100100111100100 -00011100000000000100101010101100 +00011100000000000100110010111100 +00011100000000000100101011010100 +00011100000000000100101110011100 00011100000011110000000000000000 00011100000010000000111001000000 00011100000010000000100110110000 diff --git a/sdk/fft.bin b/sdk/fft.bin new file mode 100755 index 0000000000000000000000000000000000000000..a02d2700abd1816c7a113b80688c5cfa2a01f4c3 GIT binary patch literal 56604 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�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 & STATUS_BUSY_BIT) { + // printf("channel %d busy\n", ch_id); + return; // 通道正忙,处理报错或重试 + } + + // 写入基本地址和长度 + ch->SRC_ADDR = src; + ch->DST_ADDR = dst; + ch->LENGTH = bytes; + ch->TAG = tag; // 可选,填入任务ID + + // 置 Burst 属性并触发传输 + // AXI SIZE: 2 (代表 2^2 = 4 Bytes,与 32-bit 数据线匹配) + // AXI LEN: 15 (代表 16 beats 突发传输,最高效) + uint32_t ctrl_val = CTRL_BURST_SIZE(2) | CTRL_BURST_LEN(15); + + // 写入 CTRL 并拉高 Bit 0 (Start) + ch->CTRL = ctrl_val | CTRL_START_BIT; +} + +void dma_wait_polling(int ch_id) { + volatile dma_ch_regs_t* ch = DMA_CH(ch_id); + + // 死等 Done bit 置 1 + while (!(ch->STATUS & STATUS_DONE_BIT)) { + } + + // 清除 Done 标志位 (Write 1 to Clear Bit 1) + // 注意:写 1 清 0 的设计,所以我们对 bit 1 写入 1 + ch->STATUS = STATUS_DONE_BIT; +} \ No newline at end of file diff --git a/sdk/software/examples/fft_dma/dma.h b/sdk/software/examples/fft_dma/dma.h new file mode 100644 index 0000000..8187fb9 --- /dev/null +++ b/sdk/software/examples/fft_dma/dma.h @@ -0,0 +1,30 @@ +#pragma once + +#include + + +typedef struct { + volatile uint32_t SRC_ADDR; // 0x00: 源地址 + volatile uint32_t DST_ADDR; // 0x04: 目的地址 + volatile uint32_t LENGTH; // 0x08: 传输总字节数 + volatile uint32_t TAG; // 0x0C: 软件 Tag (硬件不处理,留给软件标记任务用) + volatile uint32_t CTRL; // 0x10: 控制寄存器 (配置 Burst 属性 + 启动) + volatile uint32_t STATUS; // 0x14: 状态寄存器 (Busy, Done) + volatile uint32_t RESV[10]; // 0x18 ~ 0x3C: 保留空间,凑齐 0x40 字节 +} dma_ch_regs_t; + +// DMA 控制器基地址 +#define CDMA_MUX_BASE 0xbf300000 +#define DMA_CH(i) ((volatile dma_ch_regs_t*)(CDMA_MUX_BASE + (i) * 0x40)) + +// CTRL 寄存器位定义 +#define CTRL_START_BIT (1 << 0) +#define CTRL_BURST_SIZE(x) (((x) & 0x7) << 3) // Bits [5:3]: AXI AxSIZE (0=1B, 1=2B, 2=4B, 3=8B) +#define CTRL_BURST_LEN(x) (((x) & 0xFF) << 6) // Bits [13:6]: AXI AxLEN (0=1 beat, 15=16 beats) + +// STATUS 寄存器位定义 +#define STATUS_BUSY_BIT (1 << 0) +#define STATUS_DONE_BIT (1 << 1) + +void dma_start_transfer(int ch_id, uint32_t src, uint32_t dst, uint32_t bytes, uint32_t tag); +void dma_wait_polling(int ch_id); \ No newline at end of file diff --git a/sdk/software/examples/fft_dma/fft.c b/sdk/software/examples/fft_dma/fft.c new file mode 100644 index 0000000..4476886 --- /dev/null +++ b/sdk/software/examples/fft_dma/fft.c @@ -0,0 +1,14 @@ +#include "fft.h" +#include "common_func.h" + +void fft_start() { + RegWrite(FFT_CSR_REG, FFT_CTRL_START); +} + +void fft_wait() { + while ((RegRead(FFT_CSR_REG) & FFT_STAT_DONE) == 0) {} +} + +unsigned int fft_get_csr() { + return RegRead(FFT_CSR_REG); +} \ No newline at end of file diff --git a/sdk/software/examples/fft_dma/fft.h b/sdk/software/examples/fft_dma/fft.h new file mode 100644 index 0000000..dca7dec --- /dev/null +++ b/sdk/software/examples/fft_dma/fft.h @@ -0,0 +1,16 @@ +#pragma once + +#define FFT_BASE 0xbf400000 +#define FFT_IN_RE_BASE (FFT_BASE + 0x1000) +#define FFT_IN_IM_BASE (FFT_BASE + 0x2000) +#define FFT_OUT_RE_BASE (FFT_BASE + 0x3000) +#define FFT_OUT_IM_BASE (FFT_BASE + 0x4000) +#define FFT_CSR_REG (FFT_BASE + 0xF000) +#define FFT_CTRL_START (1 << 4) +#define FFT_STAT_DONE (1 << 1) +#define FFT_STAT_BUSY (1 << 0) +#define FFT_POINT_NUM 1024 + +void fft_start(); +void fft_wait(); +unsigned int fft_get_csr(); \ No newline at end of file diff --git a/sdk/user-sample.bin b/sdk/user-sample.bin index c54743b6d4666675fbb943f6d66057a47226e125..42cd779b97f6e9052a24e3defa72314b18e33a9c 100755 GIT binary patch delta 2746 zcma)7eNa@_6~FJi<-@q>ZeUk}>w=mr@1cRkWE>-mMPnw8nkr!{Aa(+xG}9u8c7)V~ zy$dU7S$7u>3L%cd2$~X*h1XV7OcsJoGYt`GI+L_?CNi06`iIkmnn`f9ZqIwm4#dB@ zGiUBOzw`CG_nvq6A0NQ@4e3hXGQ7>}&UQCYoTvHA!A0g5Q4XmLn zD9wg~5UKluXku!;M2ceuor4-no+olde$N>y`Y&+#yBH1+N?C!9iZVMjr9z2Ru)V~< zqQ-(!>~57{J(Q`1)R=KGOi&k&eUq9#{bf+n(?&iaLgPPX1w;;xi}mmYm{_PZly`_~ z>ZxX5rh%OpovZ0wShQxYXh3w72e>p&g+jqlUL5VX-^j&2A;LOTq^A=gTh_>M(Q(kv zrD!^(2+eWJt2YfKr?Dn>mBf`P8p00B6Z2}9x?Dm>J=m3?jG&=WAR zgLW<-w6ipC*H(6VbSvvQnZu&Y2G+xfz% zctDZo?l!@{X}vkvg2xT#A~iGua!{cv;$zcT*?Ca>V|vi&gArz9tC2dL}C zUnFe@<8Sb4(iRZj#`~((g+a@Dd}DbH#CPLFauOOXeUSMUp@T6~)Z%#jd8}UX9X!*4 zmDZm_eLGHB{{u>^GLgJTguF&fUEKkzPbg!n*9$Pi@&1!nKxoHzo+<;^8H~3bqgZUR zrGwCl!!|2DRXAnqg+U)Srfz{xeagqF4*`T;{5Z`Eqn%i^=17`w2^wgY8jW0H*YX_W zM8h-LGmm|{GmLfh;P-1*L1qswUt0@R!?-KMqy*M}LPw^cGu;X<1uvv;1RTPt^dry} zpa3g8AHd2C8jkFEc2tgV$wn{9yM#Sg?^Px;(*+niiJ^71Fx{v)pIIk> zv0hQ0jgAImFAi_4gDrLVqbxH_x-dV>3Y%S6os|Y%94}_AhshvLk+m|2G1)e7y{}|s z|5FFk&C0UPf7gMlO}YDmS$NssBDqKEwJ*a%U&(3e-9Pwi=q8RllO6DqeRHx|@@_D) zrFJ8mc$$@a2=k2kr8ql>)9PbG4~P08Xt6VXEP63%V~Jn#aQa5nP=R#+oIc|t+$HNn zAybdt#5Dg(!aC>t%|0A>anqhaBe*HmZSYD=FYMOBatR|=r6WP8PN9Ds`UKl3=KIIb zKwB&;V7eHG7T49F#ohV91s)Z@6CK7g8}RvU>(eLOA&#k=d=H{&!%+qvZe>SMOR5_R zefBV4JBaBPyu2;lDzvEklscbc`?S=m>)O7xZZl_q^r;n+QV#itB@8mKK-7q1$L=>TtM6wlclid1gSl=sUB>nfMs9u;pP{yFgd5j~31Qo+Y1S z&cBn^eRKK^TF3tniS&46b!yEE^x;Ma7BfpbiE2mWkpzpL{1NP5=6PMk&Mgbu8xrU7 z?ge@zZ+>-#0~ZoF_XvRmvQ^A6*EoA_eVv-$At|P&5uZxHK&O$tplR$A;T|e(f8>{< z{H`NQbbkKoY{*?U8{$8k4c(qwI|+-}s!tUaQ~lp8kZXj!dX%IpEC*=)<($|FkJzfN z;;Jo?9+7QFXO+tH0z~Tyn58=(k9D3;%ih5(fyZJkefn6-=h3m2gxzG*YI%uSt`mNJ QC$s!@I~~go+|*_LA8wgkj{pDw delta 2476 zcma)6eNa@_6~FI1z7z=ikOjmQfid_N5q34DHqvB4lBi&7fFX!>R=`T9!3ZQ1skH7} z*u^9~K9;k95sPe*66JG!_|d9e$aLCHwOV3lOxw(Ktev(q+D6h$B@^rRyazi_{_2}K zbI3=qzD38{$UfyH@fO*rAc0IaKI=2Kk?sDo-&#%jHkC8!n97ZD zlCj`3zg0a;#aox)4+pu}@pypY>HG&Sx zEY~r{EE@k0^CF*4iHuwmgmI1V)tCI%Xu1&{uV;}@d>~K{=86kY2p9MW%ArnA$jsZr86)tj2sv*7^b~{%Q&!lDAxP~K=yXy)zEJ6xRs)? zXbzGml&Te7{Hl23;s^R+ERr46{HA`4ifnwQsZWFEqKK~S!!wb!p)n+N7Y-#f>ud|l{+Rc<9b`cN<=U&c4% zDqzbcyc_osxGvyud`GDbO)5inEx|r7n8(V`;os6zVDohOX=~9?49EoXgmr`8*U|!W)@&P(De5MBpdUYD$IVUOZvS0Q)JtY^ng^eOzNs z1n)`QW_}x7W2l%@Ag3Gentu%C!)V(an|99y4ywvYRn<>P#w%1+ywV9QD7*N`lq9Co zH}Mm~zP7zn@omoFph?D0w;Tsgi*n?-%^b`$D+6B%34xhW9NyLl(2SYcvEXvzE7^&_ zIk74`4ayye*;(Lf!W$IbYsAOdsgTpCto!<3gTT|Jgy#Ms2y%Lr`!C0Gg?qY1$5fLx zoia^oE9D-oZG*E^qhw|W+bF)}>Jr|7cZ-oG30mm~5k%jxI^CMq z>&E;Y3C}0HMOl)JnsgdPxnsfik}uhf5q`gZ&_rLIdeps6QSM*hUqw8#gLd4f*dreNDRvPdE1L%t)N>Qu`G9pJn^C zt+m&*zO`)LQ_B6Fzu+L}1P`IO=>iREC{jd7)I;O)er(p2C&@pfq$ zcsg+7-ZDsT#}j*L99!|ry$LWYV_aDVm}PvWj0Ug;tIASAXujMHx5{!a?CU4wv5oVMJ-D zfJpG1S8PX8!a?vU1IL>6@ajd}*pUb`lbGL;nqr<5W%{F2wzSA33C;=vQ?ojz@>qnL z*{dkn(Y3-Ru3!dT!n|cK@m1{OuthG9xPuG)ep;&+{NK^~$^T)29LrXlmi#;6^NHSC z$qXNmsd2!TZ7>*!4`6fpMPJ26V&~%>af|rm5