aboutsummaryrefslogtreecommitdiff
path: root/src/rtl/fpga_mkm.v
diff options
context:
space:
mode:
authorJoachim StroĢˆmbergson <joachim@assured.se>2019-03-26 14:49:45 +0100
committerJoachim StroĢˆmbergson <joachim@assured.se>2019-03-26 14:49:45 +0100
commit6f167e358cd681722eea2b482e2e8d429ea673ad (patch)
tree252076418109ded708366d6155664c5c655b61d6 /src/rtl/fpga_mkm.v
parent47945186ff63e134ff393e4b433d4b7162a4bbda (diff)
Completed first RTL for the SPI slave. Simplified the design to simply be two shift registers and a somple FSM that detects clock flanks and SS.
Diffstat (limited to 'src/rtl/fpga_mkm.v')
-rw-r--r--src/rtl/fpga_mkm.v32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/rtl/fpga_mkm.v b/src/rtl/fpga_mkm.v
index eb6172d..e0dc14a 100644
--- a/src/rtl/fpga_mkm.v
+++ b/src/rtl/fpga_mkm.v
@@ -40,6 +40,8 @@
module fpga_mkm(
input wire clk,
+ // SPI slave interface ports.
+ input wire ss,
input wire sclk,
input wire mosi,
output wire miso,
@@ -66,9 +68,14 @@ module fpga_mkm(
localparam CTRL_DONE = 3;
+ localparam MEM_WORDS = 16;
+
+
//----------------------------------------------------------------
// Registers including update variables and write enable.
//----------------------------------------------------------------
+ reg [31 : 0] key_mem [0 : (MEM_WORDS - 1)];
+
reg [21 : 0] alarm_counter_reg = 22'h0;
reg alarm_reg = 1'h0;
@@ -95,8 +102,23 @@ module fpga_mkm(
assign rled4 = alarm_counter_reg[21];
assign gled5 = key_loaded_reg;
- assign miso = miso_reg;
- assign alarm = alarm_reg;
+
+
+ //----------------------------------------------------------------
+ // Module instantiations.
+ //----------------------------------------------------------------
+ fpga_mkm_spi_slave spi_slave(
+ .clk(clk),
+ .ss(ss),
+ .sclk(sclk),
+ .mosi(mosi),
+ .miso(miso),
+ .spi_active(),
+ .rx_byte_available(),
+ .rx_byte(),
+ .tx_byte_load(),
+ .tx_byte()
+ );
//----------------------------------------------------------------
@@ -104,10 +126,12 @@ module fpga_mkm(
//----------------------------------------------------------------
always @ (posedge clk or negedge tamper)
begin : reg_update
+ integer i;
+
if (!tamper)
begin
- // Zeroise the key material!
-
+ for (i = 0 ; i < MEM_WORDS ; i = i + 1)
+ key_mem[i] <= 32'h0;
end
else
begin