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