diff options
Diffstat (limited to 'src/rtl/fpga_mkm.v')
-rw-r--r-- | src/rtl/fpga_mkm.v | 32 |
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 |