From 4c32ceb2f2df74de8996b9a76667643feb18f4e6 Mon Sep 17 00:00:00 2001 From: Paul Selkirk Date: Wed, 2 Jun 2021 16:11:17 -0400 Subject: Change reads from clocked to unclocked to match read timing of other cores. --- src/rtl/sha3_wrapper.v | 58 ++++++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 32 deletions(-) (limited to 'src/rtl/sha3_wrapper.v') diff --git a/src/rtl/sha3_wrapper.v b/src/rtl/sha3_wrapper.v index c19f64f..f3dc554 100644 --- a/src/rtl/sha3_wrapper.v +++ b/src/rtl/sha3_wrapper.v @@ -149,46 +149,40 @@ module sha3_wrapper // reg_control <= 2'b00; // - end else if (cs && (addr_msb == ADDR_MSB_REGS)) begin + end else if (cs && we && (addr_msb == ADDR_MSB_REGS)) begin // - if (we) begin - // - // Write Handler - // - case (addr_lsb) - // - ADDR_CONTROL: reg_control <= write_data[CONTROL_NEXT_BIT:CONTROL_INIT_BIT]; - // - endcase - // - end else begin - // - // Read Handler - // - case (address) - // - ADDR_NAME0: tmp_read_data <= CORE_NAME0; - ADDR_NAME1: tmp_read_data <= CORE_NAME1; - ADDR_VERSION: tmp_read_data <= CORE_VERSION; - ADDR_CONTROL: tmp_read_data <= {{30{1'b0}}, reg_control}; - ADDR_STATUS: tmp_read_data <= {{30{1'b0}}, reg_status_valid, 1'b1}; - // - default: tmp_read_data <= 32'h00000000; - // - endcase - // - end + // Write Handler + // + case (addr_lsb) + // + ADDR_CONTROL: reg_control <= write_data[CONTROL_NEXT_BIT:CONTROL_INIT_BIT]; + // + endcase // end + always @* + if (cs && !we && (addr_msb == ADDR_MSB_REGS)) + // + // Read Handler + // + case (address) + // + ADDR_NAME0: tmp_read_data = CORE_NAME0; + ADDR_NAME1: tmp_read_data = CORE_NAME1; + ADDR_VERSION: tmp_read_data = CORE_VERSION; + ADDR_CONTROL: tmp_read_data = {{30{1'b0}}, reg_control}; + ADDR_STATUS: tmp_read_data = {{30{1'b0}}, reg_status_valid, 1'b1}; + // + default: tmp_read_data = 32'h00000000; + // + endcase + // // Register / Core Memory Selector // - reg addr_msb_last; - always @(posedge clk) addr_msb_last <= addr_msb; - - assign read_data = (addr_msb_last == ADDR_MSB_REGS) ? tmp_read_data : read_data_core; + assign read_data = (addr_msb == ADDR_MSB_REGS) ? tmp_read_data : read_data_core; endmodule -- cgit v1.2.3