From 43e2a299dbe53e40f443af853ddd93c2fd4b20eb Mon Sep 17 00:00:00 2001 From: Johannes Wirth Date: Thu, 10 Mar 2022 14:17:52 +0100 Subject: [PATCH] fpga_spn: add check if input-/ref-data fits into memory --- fpga_spn/raven_spn | Bin 271712 -> 271928 bytes fpga_spn/src/raven_spn.cpp | 39 ++++++++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/fpga_spn/raven_spn b/fpga_spn/raven_spn index 25dcaf1272b8d5e6282def7cc7906afd1dc4bc01..1f1f998cb83a50221684fef8c7a645a1ae7916c7 100755 GIT binary patch delta 12850 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 delta 12539 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 YO!jfC_yvUI=TR5w*wy?)N@#!o4<&={B>(^b diff --git a/fpga_spn/src/raven_spn.cpp b/fpga_spn/src/raven_spn.cpp index 2fc58a7..a3756da 100644 --- a/fpga_spn/src/raven_spn.cpp +++ b/fpga_spn/src/raven_spn.cpp @@ -68,6 +68,17 @@ int main() { + uint32_t step = 100000; + uint32_t iterations = 10; + + + + int in_addr = 0x30000000; // place input samples in the SPI memory + int out_addr = 0x3C000000; + int out_addr2 = 0x3E000000; + + + spn::mode_reg() = 1; spn::start_reg() = 1; wait_for_spn_interrupt(); @@ -91,29 +102,39 @@ int main() { printf("Result Bytes: %d\n", result_bytes); - uint32_t step = 50000; - uint32_t iterations = 2; + uint32_t in_bytes = step * sample_bytes; + uint32_t out_bytes = step * result_bytes; + + uint32_t total_in = in_bytes * iterations; + + if (total_in > (out_addr - in_addr)) { + printf("ERROR: input data requires %d bytes, only %d bytes available\n", total_in, out_addr - in_addr); + return 1; + } + if (out_bytes > (out_addr2 - out_addr)) { + printf("ERROR: output data requires %d bytes, only %d bytes available\n", out_bytes, out_addr2 - out_addr); + return 1; + } - uint32_t in_beats = (step * sample_bytes) / axi_bytes; + uint32_t in_beats = in_bytes / axi_bytes; if (in_beats * axi_bytes < step * sample_bytes) in_beats++; - uint32_t out_beats = (step * result_bytes) / axi_bytes; + uint32_t out_beats = out_bytes / axi_bytes; if (out_beats * axi_bytes < step * result_bytes) out_beats++; - int in_addr = 0x20010000; // place input samples in the SPI memory - int out_addr = 0x20210000; + uint32_t current_in_addr = in_addr; int fpga_address_in = fpga_alloc(step * sample_bytes + 64); int fpga_address_out = fpga_alloc(step * result_bytes + 64); // inject SPN input data - spn_checker::input_addr_reg() = in_addr; + spn_checker::input_addr_reg() = current_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_addr; //run_xspn(in_addr, out_addr); for (int k = 0; k < iterations*step; k+=step) { - fpga_dma(1, fpga_address_in, in_addr, step * sample_bytes); + fpga_dma(1, fpga_address_in, current_in_addr, step * sample_bytes); run_xspn(fpga_address_in, fpga_address_out, step, in_beats, out_beats); wait_for_spn_interrupt(); spn::interrupt_reg() = 1; @@ -123,7 +144,7 @@ int main() { spn_checker::length_reg() = step; spn_checker::start_result_check_reg() = 1; - in_addr += step * sample_bytes; // 5 bytes in each sample + current_in_addr += step * sample_bytes; // 5 bytes in each sample } fpga_free(fpga_address_in);