|
|
|
@ -8,7 +8,6 @@ using spn_2 = spn_regs<0xC0000000>; |
|
|
|
|
using spn_checker = spn_checker_regs<0x10040000>; |
|
|
|
|
|
|
|
|
|
void run_xspn1(int in_addr, int out_addr, int num_samples, int in_beats, int out_beats) { |
|
|
|
|
printf("Starting first XSPN instance\n"); |
|
|
|
|
spn_1::mode_reg() = 0; |
|
|
|
|
spn_1::input_length_reg() = num_samples; // each sample consists of 5 uint8 values
|
|
|
|
|
spn_1::input_addr_reg() = in_addr; |
|
|
|
@ -16,16 +15,17 @@ void run_xspn1(int in_addr, int out_addr, int num_samples, int in_beats, int out |
|
|
|
|
spn_1::num_of_in_beats_reg() = in_beats; // Number of AXI4 burst beats needed to load all input data
|
|
|
|
|
spn_1::num_of_out_beats_reg() = out_beats; // Number of AXI4 burst beats needed to store all result data
|
|
|
|
|
spn_1::start_reg() = 1; |
|
|
|
|
printf("Starting first XSPN instance\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void run_xspn2(int in_addr, int out_addr, int num_samples, int in_beats, int out_beats) { |
|
|
|
|
printf("Starting second XSPN instance\n"); |
|
|
|
|
spn_2::mode_reg() = 0; |
|
|
|
|
spn_2::input_length_reg() = num_samples; // each sample consists of 5 uint8 values
|
|
|
|
|
spn_2::input_addr_reg() = in_addr; |
|
|
|
|
spn_2::output_addr_reg() = out_addr; |
|
|
|
|
spn_2::num_of_in_beats_reg() = in_beats; // Number of AXI4 burst beats needed to load all input data
|
|
|
|
|
spn_2::num_of_out_beats_reg() = out_beats; // Number of AXI4 burst beats needed to store all result data
|
|
|
|
|
printf("Starting second XSPN instance\n"); |
|
|
|
|
spn_2::start_reg() = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -85,15 +85,15 @@ int main() { |
|
|
|
|
|
|
|
|
|
int in_addr = 0x20010000; // place input samples in the SPI memory
|
|
|
|
|
int out_addr1 = 0x20510000; |
|
|
|
|
int out_addr2 = 0x20520000; |
|
|
|
|
int out_addr2 = 0x205F0000; |
|
|
|
|
|
|
|
|
|
// inject SPN input data
|
|
|
|
|
spn_checker::input_addr_reg() = in_addr; |
|
|
|
|
spn_checker::num_input_samples_reg() = sample_bytes * step * iterations; |
|
|
|
|
spn_checker::start_data_trans_reg() = 1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
spn_checker::output_addr_reg() = out_addr1; |
|
|
|
|
spn_checker::output_addr2_reg() = out_addr2; |
|
|
|
|
for (int k = 0; k < iterations*step; k+=step) { |
|
|
|
|
run_xspn1(in_addr, out_addr1, step, in_beats, out_beats); |
|
|
|
|
run_xspn2(in_addr, out_addr2, step, in_beats, out_beats); |
|
|
|
|