From 26d75608914a7e59fdb2512a9fdd301915ae6b31 Mon Sep 17 00:00:00 2001 From: Stas Kaushanski Date: Tue, 20 Apr 2021 08:30:39 +0200 Subject: [PATCH] add second XSPN partition --- raven_spn/raven_spn | Bin 121576 -> 124304 bytes raven_spn/src/init.h | 27 ++++++++----- raven_spn/src/raven_spn.cpp | 78 ++++++++++++++++++++++++------------ 3 files changed, 69 insertions(+), 36 deletions(-) diff --git a/raven_spn/raven_spn b/raven_spn/raven_spn index 7ab9d18d30030c17520a24f81440ce883330bd00..f5f79e74cfcfd5a00f7fce9794be49c9c35709bf 100755 GIT binary patch delta 21799 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 F{{Z#dUj6_8 delta 18503 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 diff --git a/raven_spn/src/init.h b/raven_spn/src/init.h index 6eeba18..b4ee8df 100644 --- a/raven_spn/src/init.h +++ b/raven_spn/src/init.h @@ -12,7 +12,8 @@ typedef void (*function_ptr_t) (void); //! Instance data for the PLIC. plic_instance_t g_plic; std::array g_ext_interrupt_handlers; -bool hw_interrupt{true}; +bool spn1_hw_interrupt{true}; +bool spn2_hw_interrupt{true}; /*! \brief external interrupt handler @@ -43,19 +44,26 @@ void configure_irq(size_t irq_num, function_ptr_t handler, unsigned char prio=1) PLIC_enable_interrupt(&g_plic, irq_num); } -static void msi_interrupt_handler(){ - hw_interrupt = false; -} - -void wait_for_interrupt() { +void wait_for_spn1_interrupt() { // wait until HW is done - if(hw_interrupt) { + if(spn1_hw_interrupt) { do{ asm("wfi"); asm("nop"); - }while(hw_interrupt); + }while(spn1_hw_interrupt); } - hw_interrupt=true; + spn1_hw_interrupt=true; +} + +void wait_for_spn2_interrupt() { + // wait until HW is done + if(spn2_hw_interrupt) { + do{ + asm("wfi"); + asm("nop"); + }while(spn2_hw_interrupt); + } + spn2_hw_interrupt=true; } /*!\brief initializes platform @@ -77,7 +85,6 @@ void platform_init(){ clear_csr(mie, MIP_MEIP); clear_csr(mie, MIP_MTIP); for (auto& h:g_ext_interrupt_handlers) h=no_interrupt_handler; - configure_irq(2, msi_interrupt_handler); // Enable interrupts in general. set_csr(mstatus, MSTATUS_MIE); // Enable the Machine-External bit in MIE diff --git a/raven_spn/src/raven_spn.cpp b/raven_spn/src/raven_spn.cpp index 12b6cbc..eb93851 100644 --- a/raven_spn/src/raven_spn.cpp +++ b/raven_spn/src/raven_spn.cpp @@ -3,21 +3,41 @@ #include "init.h" #include "spn_checker_regs.h" -using spn = spn_regs<0x90000000>; +using spn_1 = spn_regs<0x90000000>; +using spn_2 = spn_regs<0xC0000000>; using spn_checker = spn_checker_regs<0x10040000>; -void run_xspn(int in_addr, int out_addr, int num_samples, int in_beats, int out_beats) { - spn::mode_reg() = 0; - spn::input_length_reg() = num_samples; // each sample consists of 5 uint8 values - spn::input_addr_reg() = in_addr; - spn::output_addr_reg() = out_addr; - spn::num_of_in_beats_reg() = in_beats; // Number of AXI4 burst beats needed to load all input data - spn::num_of_out_beats_reg() = out_beats; // Number of AXI4 burst beats needed to store all result data - printf("Starting XSPN\n"); - spn::start_reg() = 1; +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; + spn_1::output_addr_reg() = out_addr; + 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; } +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 + spn_2::start_reg() = 1; +} +static void spn1_interrupt_handler(){ + spn1_hw_interrupt = false; + spn_1::interrupt_reg() = 1; +} + +static void spn2_interrupt_handler(){ + spn2_hw_interrupt = false; + spn_2::interrupt_reg() = 1; +} /*! \brief main function * */ @@ -25,13 +45,20 @@ int main() { platform_init(); + configure_irq(2, spn1_interrupt_handler); + configure_irq(22, spn2_interrupt_handler); - spn::mode_reg() = 1; - spn::start_reg() = 1; - wait_for_interrupt(); - spn::interrupt_reg() = 1; - uint32_t readout = spn::readout_reg(); - printf("READOUT HW:0x%x\n", readout); + spn_1::mode_reg() = 1; + spn_1::start_reg() = 1; + wait_for_spn1_interrupt(); + uint32_t readout = spn_1::readout_reg(); + printf("READOUT first HW instance:0x%x\n", readout); + + spn_2::mode_reg() = 1; + spn_2::start_reg() = 1; + wait_for_spn2_interrupt(); + uint32_t readout2 = spn_2::readout_reg(); + printf("READOUT second HW instance:0x%x\n", readout2); uint32_t axi_bytes = readout; axi_bytes = axi_bytes & 0xff; @@ -42,24 +69,23 @@ int main() { uint32_t sample_bytes = readout; sample_bytes = sample_bytes >> 16; sample_bytes = sample_bytes / 8; - printf("Sample Bytes: %d\n", sample_bytes); uint32_t result_bytes = 8; - printf("Result Bytes: %d\n", result_bytes); const uint32_t amount_of_input_samples = 50000; uint32_t step = 50000; - uint32_t iterations = 15; + uint32_t iterations = 5; uint32_t in_beats = (step * sample_bytes) / axi_bytes; if (in_beats * axi_bytes < step * sample_bytes) in_beats++; uint32_t out_beats = (step * result_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 = 0x20510000; + int in_addr = 0x20010000; // place input samples in the SPI memory + int out_addr1 = 0x20510000; + int out_addr2 = 0x20520000; // inject SPN input data spn_checker::input_addr_reg() = in_addr; @@ -67,17 +93,17 @@ int main() { spn_checker::start_data_trans_reg() = 1; - spn_checker::output_addr_reg() = out_addr; + spn_checker::output_addr_reg() = out_addr1; for (int k = 0; k < iterations*step; k+=step) { - run_xspn(in_addr, out_addr, step, in_beats, out_beats); - wait_for_interrupt(); + run_xspn1(in_addr, out_addr1, step, in_beats, out_beats); + run_xspn2(in_addr, out_addr2, step, in_beats, out_beats); + wait_for_spn1_interrupt(); + wait_for_spn2_interrupt(); printf("XSPN finished\n"); spn_checker::offset_reg() = k; spn_checker::length_reg() = step; spn_checker::start_result_check_reg() = 1; - spn::interrupt_reg() = 1; - in_addr += step * sample_bytes; // 5 bytes in each sample if (k == amount_of_input_samples) { in_addr = 0x20010000;