aboutsummaryrefslogtreecommitdiff
path: root/rtl/modexpng_mmm_dual_fsm.vh
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/modexpng_mmm_dual_fsm.vh')
-rw-r--r--rtl/modexpng_mmm_dual_fsm.vh47
1 files changed, 47 insertions, 0 deletions
diff --git a/rtl/modexpng_mmm_dual_fsm.vh b/rtl/modexpng_mmm_dual_fsm.vh
new file mode 100644
index 0000000..a0e5efc
--- /dev/null
+++ b/rtl/modexpng_mmm_dual_fsm.vh
@@ -0,0 +1,47 @@
+`define MMM_FSM_STATE_W_DEF 6
+
+localparam MMM_FSM_STATE_W = `MMM_FSM_STATE_W_DEF;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_IDLE = `MMM_FSM_STATE_W_DEF'd00;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_LOAD_T1T2_1 = `MMM_FSM_STATE_W_DEF'd01;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_LOAD_T1T2_2 = `MMM_FSM_STATE_W_DEF'd02;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_LOAD_T1T2_3 = `MMM_FSM_STATE_W_DEF'd03;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_LOAD_NN_COEFF_1 = `MMM_FSM_STATE_W_DEF'd04;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_LOAD_NN_COEFF_2 = `MMM_FSM_STATE_W_DEF'd05;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_LOAD_NN_COEFF_3 = `MMM_FSM_STATE_W_DEF'd06;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_SQUARE_COL_0_INIT = `MMM_FSM_STATE_W_DEF'd11;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_SQUARE_COL_0_TRIG = `MMM_FSM_STATE_W_DEF'd12;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_SQUARE_COL_0_BUSY = `MMM_FSM_STATE_W_DEF'd13;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_SQUARE_COL_N_INIT = `MMM_FSM_STATE_W_DEF'd14;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_SQUARE_COL_N_TRIG = `MMM_FSM_STATE_W_DEF'd15;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_SQUARE_COL_N_BUSY = `MMM_FSM_STATE_W_DEF'd16;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_SQUARE_HOLDOFF = `MMM_FSM_STATE_W_DEF'd17;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_TRIANGLE_COL_0_INIT = `MMM_FSM_STATE_W_DEF'd21;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_TRIANGLE_COL_0_TRIG = `MMM_FSM_STATE_W_DEF'd22;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_TRIANGLE_COL_0_BUSY = `MMM_FSM_STATE_W_DEF'd23;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_TRIANGLE_COL_N_INIT = `MMM_FSM_STATE_W_DEF'd24;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_TRIANGLE_COL_N_TRIG = `MMM_FSM_STATE_W_DEF'd25;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_TRIANGLE_COL_N_BUSY = `MMM_FSM_STATE_W_DEF'd26;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_TRIANGLE_HOLDOFF = `MMM_FSM_STATE_W_DEF'd27;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_RECTANGLE_COL_0_INIT = `MMM_FSM_STATE_W_DEF'd31;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_RECTANGLE_COL_0_TRIG = `MMM_FSM_STATE_W_DEF'd32;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_RECTANGLE_COL_0_BUSY = `MMM_FSM_STATE_W_DEF'd33;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_RECTANGLE_COL_N_INIT = `MMM_FSM_STATE_W_DEF'd34;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_RECTANGLE_COL_N_TRIG = `MMM_FSM_STATE_W_DEF'd35;
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_RECTANGLE_COL_N_BUSY = `MMM_FSM_STATE_W_DEF'd36;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_MULT_RECTANGLE_HOLDOFF = `MMM_FSM_STATE_W_DEF'd37;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_WAIT_REDUCTOR = `MMM_FSM_STATE_W_DEF'd41;
+
+localparam [MMM_FSM_STATE_W-1:0] MMM_FSM_STATE_STOP = `MMM_FSM_STATE_W_DEF'd51;