aboutsummaryrefslogtreecommitdiff
path: root/src/rtl/trng_csprng.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/rtl/trng_csprng.v')
-rw-r--r--src/rtl/trng_csprng.v38
1 files changed, 24 insertions, 14 deletions
diff --git a/src/rtl/trng_csprng.v b/src/rtl/trng_csprng.v
index 1fa6135..eda9eea 100644
--- a/src/rtl/trng_csprng.v
+++ b/src/rtl/trng_csprng.v
@@ -163,8 +163,7 @@ module trng_csprng(
reg [3 : 0] csprng_ctrl_new;
reg csprng_ctrl_we;
- reg [31 : 0] read_data_new;
- reg [31 : 0] read_data_reg;
+ reg [31 : 0] tmp_read_data;
//----------------------------------------------------------------
@@ -194,7 +193,7 @@ module trng_csprng(
//----------------------------------------------------------------
// Concurrent connectivity for ports etc.
//----------------------------------------------------------------
- assign read_data = read_data_reg;
+ assign read_data = tmp_read_data;
assign error = tmp_error;
assign seed_ack = seed_ack_reg;
assign more_seed = more_seed_reg;
@@ -268,7 +267,6 @@ module trng_csprng(
num_rounds_reg <= DEFAULT_NUM_ROUNDS;
num_blocks_low_reg <= DEFAULT_NUM_BLOCKS[31 : 0];
num_blocks_high_reg <= DEFAULT_NUM_BLOCKS[63 : 32];
- read_data_reg <= 32'h00000000;
csprng_ctrl_reg <= CTRL_IDLE;
end
else
@@ -277,9 +275,6 @@ module trng_csprng(
seed_ack_reg <= seed_ack_new;
seed_reg <= seed_new;
- if (cs)
- read_data_reg <= read_data_new;
-
if (enable_we)
enable_reg <= enable_new;
@@ -335,7 +330,7 @@ module trng_csprng(
rnd_ack = 0;
- read_data_new = 32'h00000000;
+ tmp_read_data = 32'h00000000;
tmp_error = 0;
if (cs)
@@ -382,35 +377,50 @@ module trng_csprng(
// Read operations.
case (address)
// Read operations.
+ ADDR_NAME0:
+ begin
+ tmp_read_data = CORE_NAME0;
+ end
+
+ ADDR_NAME1:
+ begin
+ tmp_read_data = CORE_NAME1;
+ end
+
+ ADDR_VERSION:
+ begin
+ tmp_read_data = CORE_VERSION;
+ end
+
ADDR_CTRL:
begin
- read_data_new = {30'h00000000, seed_reg, enable_reg};
+ tmp_read_data = {30'h00000000, seed_reg, enable_reg};
end
ADDR_STATUS:
begin
- read_data_new = {30'h00000000, ready_reg, rnd_syn};
+ tmp_read_data = {30'h00000000, ready_reg, rnd_syn};
end
ADDR_RND_DATA:
begin
- read_data_new = rnd_data;
+ tmp_read_data = rnd_data;
rnd_ack = 1;
end
ADDR_NUM_ROUNDS:
begin
- read_data_new = {27'h0000000, num_rounds_reg};
+ tmp_read_data = {27'h0000000, num_rounds_reg};
end
ADDR_NUM_BLOCKS_LOW:
begin
- read_data_new = num_blocks_low_reg;
+ tmp_read_data = num_blocks_low_reg;
end
ADDR_NUM_BLOCKS_HIGH:
begin
- read_data_new = num_blocks_high_reg;
+ tmp_read_data = num_blocks_high_reg;
end
default: