From 76e22798dfa410c655dcec555f73bb3025f521e4 Mon Sep 17 00:00:00 2001 From: "Pavel V. Shatov (Meister)" Date: Tue, 25 Jul 2017 23:54:11 +0300 Subject: Work in progress. --- src/rtl/modexpa7_systolic_multiplier.v | 152 ++++++--- src/rtl/modexpa7_systolic_multiplier_array.v | 452 +++++++++++++++++++++++++++ 2 files changed, 565 insertions(+), 39 deletions(-) create mode 100644 src/rtl/modexpa7_systolic_multiplier_array.v diff --git a/src/rtl/modexpa7_systolic_multiplier.v b/src/rtl/modexpa7_systolic_multiplier.v index a1e141e..9d96f98 100644 --- a/src/rtl/modexpa7_systolic_multiplier.v +++ b/src/rtl/modexpa7_systolic_multiplier.v @@ -143,6 +143,7 @@ module modexpa7_systolic_multiplier # * Parameters Latch */ reg [OPERAND_ADDR_WIDTH-1:0] n_num_words_latch; + reg [OPERAND_ADDR_WIDTH :0] p_num_words_latch; // save number of words in n when new operation starts always @(posedge clk) @@ -200,20 +201,25 @@ module modexpa7_systolic_multiplier # // loader input - reg [SYSTOLIC_CNTR_WIDTH-1:0] loader_addr[0:SYSTOLIC_ARRAY_LENGTH-1]; - reg loader_wren[0:SYSTOLIC_ARRAY_LENGTH-1]; + reg [SYSTOLIC_CNTR_WIDTH-1:0] loader_addr_wr; + wire [SYSTOLIC_CNTR_WIDTH-1:0] loader_addr_rd; + reg loader_wren; reg [ 32-1:0] loader_din [0:SYSTOLIC_ARRAY_LENGTH-1]; // loader output - wire [ 32-1:0] loader_dout[0:SYSTOLIC_ARRAY_LENGTH-1]; + wire [ 32-1:0] loader_dout[0:SYSTOLIC_ARRAY_LENGTH-1]; + + // array_input + wire [32 * SYSTOLIC_ARRAY_LENGTH - 1 : 0] pe_a_wide; + wire [32 * SYSTOLIC_ARRAY_LENGTH - 1 : 0] pe_b_wide; // generate parallelized loader genvar i; generate for (i=0; i