Entity: spid_status
- File: spid_status.sv
Diagram
Description
Copyright lowRISC contributors. Licensed under the Apache License, Version 2.0, see LICENSE for details. SPDX-License-Identifier: Apache-2.0
SPI Flash Read Status handler
Generics
| Generic name | Type | Value | Description |
|---|---|---|---|
| StatusCmdIdx | int unsigned | undefined | Read Status module recognizes the command by the cmd_info_idx from the cmdparse logic as the Opcode of the command could vary. Use the index and determines the return order of the status register. |
| CmdInfoIdxW | int unsigned | spi_device_pkg::CmdInfoIdxW |
Ports
| Port name | Direction | Type | Description |
|---|---|---|---|
| clk_i | input | ||
| rst_ni | input | ||
| clk_out_i | input | Output clock (inverted SCK) | |
| sys_clk_i | input | Handling STATUS CSR (ext type) | |
| sys_rst_ni | input | ||
| csb_i | input | CSb as a signal (not as a reset) | |
| sys_status_we_i | input | status register from CSR: sys_clk domain bit [ 0]: RW0C by SW / W1S by HW bit [23:1]: RW | |
| sys_status_i | input | [23:0] | |
| sys_status_o | output | [23:0] | sys_clk domain |
| sel_dp_i | input | sel_datapath_e | from cmdparse |
| cmd_info_i | input | cmd_info_t | |
| cmd_info_idx_i | input | [CmdInfoIdxW-1:0] | |
| outclk_p2s_valid_o | output | ||
| outclk_p2s_byte_o | output | spi_byte_t | |
| outclk_p2s_sent_i | input | ||
| io_mode_o | output | io_mode_e | |
| inclk_busy_set_i | input | SCK domain | |
| inclk_busy_broadcast_o | output | SCK domain |
Signals
| Name | Type | Description |
|---|---|---|
| unused_cmd_info | logic | ///////////// Temporary // ///////////// |
| unused_p2s_sent | logic | |
| st_q | st_e | |
| st_d | st_e | |
| status_sck | logic [23:0] | ////////// Signal // ////////// |
| unused_status_sck | logic | |
| p2s_valid_inclk | logic | |
| p2s_byte_inclk | spi_byte_t | |
| reg_en | logic | If 1, register in bus clock domain can be updated by SW |
| reg_update | logic | indicator of HW update (when CSb is de-asserted) |
| status | logic [23:0] | Register interface update in bus clock domain |
| csb_sync_d | logic | CSb pulse |
| csb_sync_q | logic | CSb pulse |
| csb_asserted_pulse | logic | CSb pulse |
| reg_en_q | logic | CSb de-asserted pulse is used as reg_update. TODO: merge this to the top then receive the signal through the module port? |
| byte_sel_d | logic [1:0] | cmd_idx to data selector |
| byte_sel_q | logic [1:0] | cmd_idx to data selector |
| byte_sel_update | logic | |
| byte_sel_inc | logic |
Types
| Name | Type | Description |
|---|---|---|
| st_e | enum logic { StIdle, StActive } |
Processes
- unnamed: ( @(posedge sys_clk_i or negedge sys_rst_ni) )
Type: always_ff
Description
BUSY
- unnamed: ( @(posedge sys_clk_i or negedge sys_rst_ni) )
Type: always_ff
Description
rest of STATUS
- unnamed: ( @(posedge clk_i or negedge rst_ni) )
Type: always_ff
- unnamed: ( @(posedge sys_clk_i or negedge sys_rst_ni) )
Type: always_ff
- unnamed: ( @(posedge clk_i or negedge sys_rst_ni) )
Type: always_ff
Description
Status in SCK
- unnamed: ( @(posedge clk_out_i or negedge rst_ni) )
Type: always_ff
Description
/////////////// Data Return // /////////////// Latch in clk_out
- unnamed: ( @(posedge clk_i or negedge rst_ni) )
Type: always_ff
- byte_sel_input: ( )
Type: always_comb
- unnamed: ( @(posedge clk_i or negedge rst_ni) )
Type: always_ff
Description
State Machine
- unnamed: ( )
Type: always_comb