aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rtl/montprod.v62
1 files changed, 27 insertions, 35 deletions
diff --git a/src/rtl/montprod.v b/src/rtl/montprod.v
index 00227d0..6d3d865 100644
--- a/src/rtl/montprod.v
+++ b/src/rtl/montprod.v
@@ -291,34 +291,25 @@ module montprod(
//----------------------------------------------------------------
always @*
begin : prodcalc
- opb_addr_reg = b_word_index;
- opm_addr_reg = word_index_reg;
+ opa_addr_reg = word_index_reg;
+ opb_addr_reg = b_word_index;
+ opm_addr_reg = word_index_reg;
+ s_mem_addr = word_index_reg;
+ tmp_result_we = 1'b0;
+
result_addr_reg = word_index_prev_reg;
result_data_reg = s_mem_read_data;
- case (montprod_ctrl_reg)
- CTRL_LOOP_ITER:
- //q = (s[length-1] ^ A[length-1]) & 1;
- opa_addr_reg = length_m1;
- default:
- opa_addr_reg = word_index_reg;
- endcase
+ if (montprod_ctrl_reg == CTRL_LOOP_ITER)
+ opa_addr_reg = length_m1;
- case (montprod_ctrl_reg)
- CTRL_LOOP_ITER:
+ if (montprod_ctrl_reg == CTRL_LOOP_ITER)
s_mem_addr = length_m1;
- default:
- s_mem_addr = word_index_reg;
- endcase
- case (montprod_ctrl_reg)
- CTRL_EMIT_S:
- tmp_result_we = 1'b1;
- default:
- tmp_result_we = 1'b0;
- endcase
+ if (montprod_ctrl_reg == CTRL_EMIT_S)
+ tmp_result_we = 1'b1;
if (reset_word_index_lsw == 1'b1)
@@ -336,14 +327,18 @@ module montprod(
//----------------------------------------------------------------
- // s_select_write
+ // s_logic
//----------------------------------------------------------------
always @*
- begin : s_select_write
+ begin : s_logic
shr_carry_in_new = 1'b0;
muxed_s_mem_read_data = 32'h0;
- s_mem_we_new = 1'b0;
sa_adder_data_in = 32'h0;
+ add_carry_in_sa_new = 1'b0;
+ add_carry_in_sm_new = 1'b0;
+ s_mem_new = 32'h0;
+ s_mem_we_new = 1'b0;
+
case (montprod_ctrl_reg)
CTRL_INIT_S:
@@ -368,9 +363,6 @@ module montprod(
end
endcase
- s_mem_new = 32'h0;
- add_carry_in_sa_new = 1'b0;
- add_carry_in_sm_new = 1'b0;
case (s_mux_reg)
SMUX_0:
@@ -412,7 +404,7 @@ module montprod(
begin
end
endcase
- end // block: s_writer
+ end // s_logic
//----------------------------------------------------------------
@@ -483,11 +475,11 @@ module montprod(
begin
if (calculate)
begin
- ready_new = 1'b0;
- ready_we = 1'b1;
+ ready_new = 1'b0;
+ ready_we = 1'b1;
+ first_iteration_new = 1'b0;
+ first_iteration_we = 1'b1;
reset_word_index_lsw = 1'b1;
-// first_iteration_new = 1'b1;
-// first_iteration_we = 1'b1;
montprod_ctrl_new = CTRL_INIT_S;
montprod_ctrl_we = 1'b1;
end
@@ -499,7 +491,6 @@ module montprod(
if (word_index_reg == 8'h0)
begin
- loop_ctr_set = 1'b1;
montprod_ctrl_new = CTRL_WAIT;
montprod_ctrl_we = 1'b1;
end
@@ -507,6 +498,7 @@ module montprod(
CTRL_WAIT:
begin
+ loop_ctr_set = 1'b1;
montprod_ctrl_new = CTRL_LOOP_ITER;
montprod_ctrl_we = 1'b1;
end
@@ -531,7 +523,7 @@ module montprod(
CTRL_L_CALC_SA:
begin
- s_mux_new = SMUX_ADD_SA;
+ s_mux_new = SMUX_ADD_SA;
if (word_index_reg == 8'h0)
begin
@@ -543,8 +535,8 @@ module montprod(
CTRL_L_STALLPIPE_SA:
begin
-// first_iteration_new = 1'b0;
-// first_iteration_we = 1'b1;
+ first_iteration_new = 1'b0;
+ first_iteration_we = 1'b1;
montprod_ctrl_new = CTRL_L_CALC_SDIV2;
montprod_ctrl_we = 1'b1;
reset_word_index_msw = 1'b1;