[Cryptech-Commits] [user/js/fpga_mkm] branch master updated: Starting to add control registers and control FSM needed for the key handling and tamper response.

git at cryptech.is git at cryptech.is
Tue Feb 12 12:28:21 UTC 2019


This is an automated email from the git hooks/post-receive script.

joachim at secworks.se pushed a commit to branch master
in repository user/js/fpga_mkm.

The following commit(s) were added to refs/heads/master by this push:
     new c00b7ab  Starting to add control registers and control FSM needed for the key handling and tamper response.
c00b7ab is described below

commit c00b7ab976c5e558ffa043e48d1363d7ae573b0a
Author: Joachim Strömbergson <joachim at assured.se>
AuthorDate: Tue Feb 12 13:28:10 2019 +0100

    Starting to add control registers and control FSM needed for the key handling and tamper response.
---
 src/rtl/fpga_mkm.v | 90 ++++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 80 insertions(+), 10 deletions(-)

diff --git a/src/rtl/fpga_mkm.v b/src/rtl/fpga_mkm.v
index 6725ed9..6dee64a 100644
--- a/src/rtl/fpga_mkm.v
+++ b/src/rtl/fpga_mkm.v
@@ -44,34 +44,59 @@ module fpga_mkm(
                 input wire mosi,
                 output wire miso,
 
-                // Tamper and alarm
+                // Tamper and alarm.
                 input wire tamper,
                 output wire alarm,
 
+                // We will use red LEDs to indicate tamper event.
                 output wire rled1,
                 output wire rled2,
                 output wire rled3,
                 output wire rled4,
+
+                // We will use the green LED to indicate loaded key.
                 output wire gled5
                );
 
+  //----------------------------------------------------------------
+  // Internal constant and parameter definitions.
+  //----------------------------------------------------------------
+  localparam CTRL_IDLE  = 0;
+  localparam CTRL_ALARM = 1;
+  localparam CTRL_DONE  = 3;
+
+
   //----------------------------------------------------------------
   // Registers including update variables and write enable.
   //----------------------------------------------------------------
-  reg [31 : 0] counter_reg = 32'b0;
+  reg [21 : 0] alarm_counter_reg = 22'h0;
+
+  reg alarm_reg = 1'h0;
+  reg alarm_new;
+  reg alarm_we;
+
+  reg key_loaded_reg = 1'h0;
+  reg key_loaded_new;
+  reg key_loaded_we;
+
+  reg miso_reg = 1'h0;
+
+  reg [1 : 0] fpga_mkm_ctrl_reg = CTRL_IDLE;
+  reg [1 : 0] fpga_mkm_ctrl_new;
+  reg         fpga_mkm_ctrl_we;
 
 
   //----------------------------------------------------------------
   // Concurrent connectivity for ports etc.
   //----------------------------------------------------------------
-  assign rled1 = counter_reg[21];
-  assign rled2 = counter_reg[22];
-  assign rled3 = counter_reg[23];
-  assign rled4 = counter_reg[24];
-  assign gled5 = counter_reg[25];
+  assign rled1 = alarm_counter_reg[21];
+  assign rled2 = alarm_counter_reg[21];
+  assign rled3 = alarm_counter_reg[21];
+  assign rled4 = alarm_counter_reg[21];
+  assign gled5 = key_loaded_reg;
 
-  assign miso  = 1'h0;
-  assign alarm = counter_reg[25];
+  assign miso  = miso_reg;
+  assign alarm = alarm_reg;
 
 
   //----------------------------------------------------------------
@@ -79,7 +104,52 @@ module fpga_mkm(
   //----------------------------------------------------------------
   always @ (posedge clk)
     begin : reg_update
-      counter_reg <= counter_reg + 1;
+      alarm_counter_reg <= alarm_counter_reg + 1;
+
+      if (alarm_we)
+        alarm_reg <= alarm_new;
+
+      if (key_loaded_we)
+        key_loaded_reg <= key_loaded_new;
+
+      if (fpga_mkm_ctrl_we)
+        fpga_mkm_ctrl_reg <= fpga_mkm_ctrl_new;
+    end
+
+
+  //----------------------------------------------------------------
+  // fpga_mkm_ctrl_fsm
+  //----------------------------------------------------------------
+  always @*
+    begin : fpga_mkm_ctrl_fsm
+      alarm_new         = 1'h0;
+      alarm_we          = 1'h0;
+      key_loaded_new    = 1'h0;
+      key_loaded_we     = 1'h0;
+      fpga_mkm_ctrl_new = CTRL_IDLE;
+      fpga_mkm_ctrl_we  = 1'h0;
+
+      case (fpga_mkm_ctrl_reg)
+
+        CTRL_IDLE:
+          begin
+            if (tamper)
+              begin
+                fpga_mkm_ctrl_new = CTRL_ALARM;
+                fpga_mkm_ctrl_we  = 1'h1;
+              end
+          end
+
+
+        CTRL_ALARM:
+          begin
+
+          end
+
+        default:
+          begin
+          end
+      endcase // case (fpga_mkm_ctrl_reg)
     end
 
 endmodule // fpga_mkm

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Commits mailing list