aboutsummaryrefslogtreecommitdiff
path: root/src/rtl
diff options
context:
space:
mode:
authorJoachim StroĢˆmbergson <joachim@secworks.se>2015-04-30 13:03:52 +0200
committerJoachim StroĢˆmbergson <joachim@secworks.se>2015-04-30 13:03:52 +0200
commit549b75a635817ce263c368c9b8b5b0b07f90ec21 (patch)
treed7566e34a911b2e386d9942c4080050bc898ed18 /src/rtl
parent5786690490aa94f76309f6b101883c13fdc96896 (diff)
(1) Added api addresses and constants for core name and version. (2) Changed addresses for control, status and config to match the ct standard. (3) Updated the testbench to use the changed addresses.
Diffstat (limited to 'src/rtl')
-rw-r--r--src/rtl/chacha.v128
1 files changed, 68 insertions, 60 deletions
diff --git a/src/rtl/chacha.v b/src/rtl/chacha.v
index 72792aa..497f51d 100644
--- a/src/rtl/chacha.v
+++ b/src/rtl/chacha.v
@@ -56,66 +56,74 @@ module chacha(
//----------------------------------------------------------------
// Internal constant and parameter definitions.
//----------------------------------------------------------------
- parameter ADDR_CTRL = 8'h00;
- parameter CTRL_INIT_BIT = 0;
- parameter CTRL_NEXT_BIT = 1;
-
- parameter ADDR_STATUS = 8'h01;
- parameter STATUS_READY_BIT = 0;
-
- parameter ADDR_KEYLEN = 8'h08;
- parameter KEYLEN_BIT = 0;
- parameter ADDR_ROUNDS = 8'h09;
- parameter ROUNDS_HIGH_BIT = 4;
- parameter ROUNDS_LOW_BIT = 0;
-
- parameter ADDR_KEY0 = 8'h10;
- parameter ADDR_KEY1 = 8'h11;
- parameter ADDR_KEY2 = 8'h12;
- parameter ADDR_KEY3 = 8'h13;
- parameter ADDR_KEY4 = 8'h14;
- parameter ADDR_KEY5 = 8'h15;
- parameter ADDR_KEY6 = 8'h16;
- parameter ADDR_KEY7 = 8'h17;
-
- parameter ADDR_IV0 = 8'h20;
- parameter ADDR_IV1 = 8'h21;
-
- parameter ADDR_DATA_IN0 = 8'h40;
- parameter ADDR_DATA_IN1 = 8'h41;
- parameter ADDR_DATA_IN2 = 8'h42;
- parameter ADDR_DATA_IN3 = 8'h43;
- parameter ADDR_DATA_IN4 = 8'h44;
- parameter ADDR_DATA_IN5 = 8'h45;
- parameter ADDR_DATA_IN6 = 8'h46;
- parameter ADDR_DATA_IN7 = 8'h47;
- parameter ADDR_DATA_IN8 = 8'h48;
- parameter ADDR_DATA_IN9 = 8'h49;
- parameter ADDR_DATA_IN10 = 8'h4a;
- parameter ADDR_DATA_IN11 = 8'h4b;
- parameter ADDR_DATA_IN12 = 8'h4c;
- parameter ADDR_DATA_IN13 = 8'h4d;
- parameter ADDR_DATA_IN14 = 8'h4e;
- parameter ADDR_DATA_IN15 = 8'h4f;
-
- parameter ADDR_DATA_OUT0 = 8'h80;
- parameter ADDR_DATA_OUT1 = 8'h81;
- parameter ADDR_DATA_OUT2 = 8'h82;
- parameter ADDR_DATA_OUT3 = 8'h83;
- parameter ADDR_DATA_OUT4 = 8'h84;
- parameter ADDR_DATA_OUT5 = 8'h85;
- parameter ADDR_DATA_OUT6 = 8'h86;
- parameter ADDR_DATA_OUT7 = 8'h87;
- parameter ADDR_DATA_OUT8 = 8'h88;
- parameter ADDR_DATA_OUT9 = 8'h89;
- parameter ADDR_DATA_OUT10 = 8'h8a;
- parameter ADDR_DATA_OUT11 = 8'h8b;
- parameter ADDR_DATA_OUT12 = 8'h8c;
- parameter ADDR_DATA_OUT13 = 8'h8d;
- parameter ADDR_DATA_OUT14 = 8'h8e;
- parameter ADDR_DATA_OUT15 = 8'h8f;
-
- parameter DEFAULT_CTR_INIT = 64'h0000000000000000;
+ localparam ADDR_NAME0 = 8'h00;
+ localparam ADDR_NAME1 = 8'h01;
+ localparam ADDR_VERSION = 8'h02;
+
+ localparam ADDR_CTRL = 8'h08;
+ localparam CTRL_INIT_BIT = 0;
+ localparam CTRL_NEXT_BIT = 1;
+
+ localparam ADDR_STATUS = 8'h09;
+ localparam STATUS_READY_BIT = 0;
+
+ localparam ADDR_KEYLEN = 8'h0a;
+ localparam KEYLEN_BIT = 0;
+ localparam ADDR_ROUNDS = 8'h0b;
+ localparam ROUNDS_HIGH_BIT = 4;
+ localparam ROUNDS_LOW_BIT = 0;
+
+ localparam ADDR_KEY0 = 8'h10;
+ localparam ADDR_KEY1 = 8'h11;
+ localparam ADDR_KEY2 = 8'h12;
+ localparam ADDR_KEY3 = 8'h13;
+ localparam ADDR_KEY4 = 8'h14;
+ localparam ADDR_KEY5 = 8'h15;
+ localparam ADDR_KEY6 = 8'h16;
+ localparam ADDR_KEY7 = 8'h17;
+
+ localparam ADDR_IV0 = 8'h20;
+ localparam ADDR_IV1 = 8'h21;
+
+ localparam ADDR_DATA_IN0 = 8'h40;
+ localparam ADDR_DATA_IN1 = 8'h41;
+ localparam ADDR_DATA_IN2 = 8'h42;
+ localparam ADDR_DATA_IN3 = 8'h43;
+ localparam ADDR_DATA_IN4 = 8'h44;
+ localparam ADDR_DATA_IN5 = 8'h45;
+ localparam ADDR_DATA_IN6 = 8'h46;
+ localparam ADDR_DATA_IN7 = 8'h47;
+ localparam ADDR_DATA_IN8 = 8'h48;
+ localparam ADDR_DATA_IN9 = 8'h49;
+ localparam ADDR_DATA_IN10 = 8'h4a;
+ localparam ADDR_DATA_IN11 = 8'h4b;
+ localparam ADDR_DATA_IN12 = 8'h4c;
+ localparam ADDR_DATA_IN13 = 8'h4d;
+ localparam ADDR_DATA_IN14 = 8'h4e;
+ localparam ADDR_DATA_IN15 = 8'h4f;
+
+ localparam ADDR_DATA_OUT0 = 8'h80;
+ localparam ADDR_DATA_OUT1 = 8'h81;
+ localparam ADDR_DATA_OUT2 = 8'h82;
+ localparam ADDR_DATA_OUT3 = 8'h83;
+ localparam ADDR_DATA_OUT4 = 8'h84;
+ localparam ADDR_DATA_OUT5 = 8'h85;
+ localparam ADDR_DATA_OUT6 = 8'h86;
+ localparam ADDR_DATA_OUT7 = 8'h87;
+ localparam ADDR_DATA_OUT8 = 8'h88;
+ localparam ADDR_DATA_OUT9 = 8'h89;
+ localparam ADDR_DATA_OUT10 = 8'h8a;
+ localparam ADDR_DATA_OUT11 = 8'h8b;
+ localparam ADDR_DATA_OUT12 = 8'h8c;
+ localparam ADDR_DATA_OUT13 = 8'h8d;
+ localparam ADDR_DATA_OUT14 = 8'h8e;
+ localparam ADDR_DATA_OUT15 = 8'h8f;
+
+ localparam DEFAULT_CTR_INIT = 64'h0000000000000000;
+
+ localparam CORE_NAME0 = 32'h63686163; // "chac"
+ localparam CORE_NAME1 = 32'h68612020; // "ha "
+ localparam CORE_VERSION = 32'h302e3830; // "0.80"
//----------------------------------------------------------------