[Cryptech-Commits] [user/js/fpga_mkm] branch master updated: Adding inital tb for the SPI slave. Debugging the SPI slave and the FPGA_MKM.

git at cryptech.is git at cryptech.is
Tue Apr 9 14:11:38 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 3ad18f9  Adding inital tb for the SPI slave. Debugging the SPI slave and the FPGA_MKM.
3ad18f9 is described below

commit 3ad18f9945aa0f6a617fcd399a0a402db9a28027
Author: Joachim Strömbergson <joachim at assured.se>
AuthorDate: Tue Apr 9 16:10:55 2019 +0200

    Adding inital tb for the SPI slave. Debugging the SPI slave and the FPGA_MKM.
---
 src/rtl/fpga_mkm.v                                | 46 ++++++++------
 src/rtl/fpga_mkm_spi_slave.v                      |  5 +-
 src/tb/tb_fpga_mkm.v                              |  6 +-
 src/tb/{tb_fpga_mkm.v => tb_fpga_mkm_spi_slave.v} | 74 +++++++++++------------
 4 files changed, 72 insertions(+), 59 deletions(-)

diff --git a/src/rtl/fpga_mkm.v b/src/rtl/fpga_mkm.v
index 89825ed..38517e6 100644
--- a/src/rtl/fpga_mkm.v
+++ b/src/rtl/fpga_mkm.v
@@ -86,9 +86,9 @@ module fpga_mkm(
 
   reg [21 : 0] alarm_counter_reg = 22'h0;
 
-  reg alarm_reg = 1'h0;
-  reg alarm_new;
-  reg alarm_we;
+  reg tamper_reg = 1'h0;
+  reg tamper_new;
+  reg tamper_we;
 
   reg key_loaded_reg = 1'h0;
   reg key_loaded_new;
@@ -100,6 +100,14 @@ module fpga_mkm(
   reg [1 : 0] fpga_mkm_ctrl_new;
   reg         fpga_mkm_ctrl_we;
 
+  wire         spi_active;
+  wire         rx_byte_available;
+  wire [7 : 0] rx_byte;
+  reg          tx_byte_load;
+  reg  [7 : 0] tx_byte_reg;
+  reg  [7 : 0] tx_byte_new;
+  reg          tx_byte_we;
+
 
   //----------------------------------------------------------------
   // Concurrent connectivity for ports etc.
@@ -111,7 +119,6 @@ module fpga_mkm(
   assign gled5 = key_loaded_reg;
 
 
-
   //----------------------------------------------------------------
   // Module instantiations.
   //----------------------------------------------------------------
@@ -121,11 +128,11 @@ module fpga_mkm(
                                .sclk(sclk),
                                .mosi(mosi),
                                .miso(miso),
-                               .spi_active(),
-                               .rx_byte_available(),
-                               .rx_byte(),
-                               .tx_byte_load(),
-                               .tx_byte()
+                               .spi_active(spi_active),
+                               .rx_byte_available(rx_byte_available),
+                               .rx_byte(rx_byte),
+                               .tx_byte_load(tx_byte),
+                               .tx_byte(tx_byte_reg)
                               );
 
 
@@ -138,15 +145,18 @@ module fpga_mkm(
 
       if (!tamper)
         begin
-          for (i = 0 ; i < MEM_WORDS ; i = i + 1)
-            key_mem[i] <= 32'h0;
+          for (i = 0 ; i < MEM_BYTES ; i = i + 1)
+            key_mem[i] <= 8'h0;
+
+          key_loaded_reg <= 1'h0;
+          tamper_reg     <= 1'h1;
         end
       else
         begin
           alarm_counter_reg <= alarm_counter_reg + 1;
 
-          if (alarm_we)
-            alarm_reg <= alarm_new;
+          if (tamper_we)
+            tamper_reg <= tamper_new;
 
           if (key_loaded_we)
             key_loaded_reg <= key_loaded_new;
@@ -162,8 +172,8 @@ module fpga_mkm(
   //----------------------------------------------------------------
   always @*
     begin : fpga_mkm_ctrl_fsm
-      alarm_new         = 1'h0;
-      alarm_we          = 1'h0;
+      tamper_new        = 1'h0;
+      tamper_we         = 1'h0;
       key_loaded_new    = 1'h0;
       key_loaded_we     = 1'h0;
       fpga_mkm_ctrl_new = CTRL_IDLE;
@@ -173,14 +183,16 @@ module fpga_mkm(
 
         CTRL_IDLE:
           begin
-            if (tamper)
+            if (spi_active)
               begin
-                fpga_mkm_ctrl_new = CTRL_ALARM;
+                fpga_mkm_ctrl_new = CTRL_CMD;
                 fpga_mkm_ctrl_we  = 1'h1;
               end
           end
 
 
+
+
         CTRL_ALARM:
           begin
 
diff --git a/src/rtl/fpga_mkm_spi_slave.v b/src/rtl/fpga_mkm_spi_slave.v
index 1449af2..9a59f9e 100644
--- a/src/rtl/fpga_mkm_spi_slave.v
+++ b/src/rtl/fpga_mkm_spi_slave.v
@@ -59,8 +59,9 @@ module fpga_mkm_spi_slave(
                           output wire         rx_byte_available,
                           output wire [7 : 0] rx_byte,
 
-                          input wire          tx_byte_load,
-                          input wire [7 : 0]  tx_byte
+                          input wire          tx_byte_available,
+                          input wire [7 : 0]  tx_byte,
+                          output wire         tx_byte_ack
                          );
 
 
diff --git a/src/tb/tb_fpga_mkm.v b/src/tb/tb_fpga_mkm.v
index 682a99d..226380c 100644
--- a/src/tb/tb_fpga_mkm.v
+++ b/src/tb/tb_fpga_mkm.v
@@ -37,7 +37,7 @@
 //
 //======================================================================
 
-module tb_fpga_mklm();
+module tb_fpga_mkm();
 
   //----------------------------------------------------------------
   // Parameters.
@@ -96,7 +96,7 @@ module tb_fpga_mklm();
   //----------------------------------------------------------------
   always
     begin : clk_gen
-      #CLK_HALF_PERIOD;
+      #(CLK_HALF_PERIOD);
       tb_clk = !tb_clk;
     end // clk_gen
 
@@ -185,7 +185,7 @@ module tb_fpga_mklm();
       $finish;
     end
 
-endmodule // tb_keywrap_core
+endmodule // tb_fpga_mkm
 
 //======================================================================
 // EOF tb_fpga_mkm.v
diff --git a/src/tb/tb_fpga_mkm.v b/src/tb/tb_fpga_mkm_spi_slave.v
similarity index 77%
copy from src/tb/tb_fpga_mkm.v
copy to src/tb/tb_fpga_mkm_spi_slave.v
index 682a99d..d29aa40 100644
--- a/src/tb/tb_fpga_mkm.v
+++ b/src/tb/tb_fpga_mkm_spi_slave.v
@@ -1,8 +1,9 @@
 //======================================================================
 //
-// tb_fpga_mkm
-// -----------
-// Testbench for the FPGA based Master Key Memory (MKM).
+// tb_fpga_mkm_spi_slave.v
+// -----------------------
+// Testbench for the SPI slave interface for the FPGA based 
+// Master Key Memory (MKM).
 //
 //
 // Author: Joachim Strombergson
@@ -37,7 +38,7 @@
 //
 //======================================================================
 
-module tb_fpga_mklm();
+module tb_fpga_mkm_spi_slave();
 
   //----------------------------------------------------------------
   // Parameters.
@@ -55,38 +56,37 @@ module tb_fpga_mklm();
   integer error_ctr;
   integer tc_ctr;
 
-  reg  tb_clk;
-  reg  tb_sclk;
-  reg  tb_mosi;
-  wire tb_miso;
-  reg  tb_tamper;
-  wire tb_alarm;
-  wire tb_rled1;
-  wire tb_rled2;
-  wire tb_rled3;
-  wire tb_rled4;
-  wire tb_gled5;
+  reg          tb_clk;
+  reg          tb_ss;
+  reg          tb_sclk;
+  reg          tb_mosi;
+  wire         tb_miso;
+  wire         tb_spi_active;
+  wire         tb_rx_byte_available;
+  wire [7 : 0] tb_rx_byte;
+  reg          tb_tx_byte_available;
+  reg [7 : 0]  tb_tx_byte; 
+  wire         tb_tx_byte_ack;
 
 
   //----------------------------------------------------------------
   // Device Under Test.
   //----------------------------------------------------------------
-  fpga_mkm dut(
-               .clk(tb_clk),
+  fpga_mkm_spi_slave dut(
+                         .clk(tb_clk),
+                         .ss(tb_ss),
+                         .sclk(tb_sclk),
+                         .mosi(tb_mosi),
+                         .miso(tb_miso),
 
-               .sclk(tb_sclk),
-               .mosi(tb_mosi),
-               .miso(tb_miso),
+                         .spi_active(tb_spi_active),
+                         .rx_byte_available(tb_rx_byte_available),
+                         .rx_byte(tb_rx_byte),
 
-               .tamper(tb_tamper),
-               .alarm(tb_alarm),
-
-               .rled1(tb_rled1),
-               .rled2(tb_rled2),
-               .rled3(tb_rled3),
-               .rled4(tb_rled4),
-               .gled5(tb_gled5)
-              );
+                         .tx_byte_available(tb_tx_byte_available),
+                         .tx_byte(tb_tx_byte),
+                         .tx_byte_ack(tb_tx_byte_ack)
+                         );
 
 
   //----------------------------------------------------------------
@@ -96,7 +96,7 @@ module tb_fpga_mklm();
   //----------------------------------------------------------------
   always
     begin : clk_gen
-      #CLK_HALF_PERIOD;
+      #(CLK_HALF_PERIOD);
       tb_clk = !tb_clk;
     end // clk_gen
 
@@ -146,9 +146,9 @@ module tb_fpga_mklm();
       tc_ctr    = 0;
 
       tb_clk    = 1'h0;
+      tb_ss     = 1'h1;
       tb_sclk   = 1'h0;
       tb_mosi   = 1'h0;
-      tb_tamper = 1'h0;
     end
   endtask // init_sim
 
@@ -171,8 +171,8 @@ module tb_fpga_mklm();
   //----------------------------------------------------------------
   initial
     begin
-      $display("   -= Testbench for fpga_mkm started =-");
-      $display("    ==================================");
+      $display("   -= Testbench for fpga_mkm_spi_slave started =-");
+      $display("    =============================================");
       $display("");
 
       init_sim();
@@ -180,13 +180,13 @@ module tb_fpga_mklm();
       display_test_results();
 
       $display("");
-      $display("   -= Testbench for fpga_mkm completed =-");
-      $display("    ====================================");
+      $display("   -= Testbench for fpga_mkm_spi_slave completed =-");
+      $display("    ===============================================");
       $finish;
     end
 
-endmodule // tb_keywrap_core
+endmodule // tb_fpga_mkm_spi_slave
 
 //======================================================================
-// EOF tb_fpga_mkm.v
+// EOF tb_fpga_mkm_spi_slave.v
 //======================================================================

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


More information about the Commits mailing list