Merge branch 'main' of https://github.com/jaquerinte/caravel_radiation_harden into main
diff --git a/README.md b/README.md index 71721ca..5bf7ad3 100644 --- a/README.md +++ b/README.md
@@ -19,20 +19,21 @@ The module is implemented with 32 bit word size and 8 registers. The counters are 32 bit counters. -## Module ports: -- **Input ports** + +## Module Ports: +- **Input Ports** - clk_i: Clock signal for the module. - rst_i: Reset signal for the module, this signal clears all of the values for the internal register values and all of the counters. - data_to_register_i [31:0]: The 32 bit input value that will be store in the register file. - - register_i [3:0]: Signal to select the register that the operation will be perform. + - register_i [2:0]: Signal to select the register that the operation will be perform. - wregister_i: Signal to indicate that the operation that you want is to write the input data to a register. - rregister_i: Signal to indicate that the operation that you want is to read from the register file. -- **Output ports** +- **Output Ports** - store_data_o [31:0]: The 32 bit value that was store in the register file - operation:result_o [1:0]. This is a two bit output that indicates the sate of the data. @@ -42,15 +43,49 @@ - **11**: Not defined state Also some extra ports can be use in the case to add connection to a [wishbone bus](https://en.wikipedia.org/wiki/Wishbone_(computer_bus)). For the current version the whisbone is only connected to the 32 bit counter that counts the number of 1 bit flip that have happened. -## Module extra ports: -- **Input ports** +## Module Extra Ports: +- **Input Ports** - valid_i: Union of the clk and the strobe values for the whisbone bus - wstrb_i [3:0]: Whisbone Strobe. - wdata_i [31:0]: Whisbone data input. -- **Output ports** +- **Output Ports** - ready_o. Whisbone ack. - rdata_o [31:0]: Whisbone data output. +## Caravel Connections +The module is connected to the [caravel](https://github.com/efabless/caravel) project so in this section we will define how is connected to the processor in order to interact with it. + +Caravel offers multiple way to interact with the user project inside of it. This ways are GPIO ports, logic analyzer probes, and the whisbone interconnection, user maskable interrupt signals. + +### **GPIO Connections** +- GPIO pins [19:0] are not been use. +- GPIO pins [35:20] are connected to store_data_o [15:0]. +- GPIO pins [37:36] are connected to operation:result_o [1:0]. + +### **Logic Analyzer Probes** +- Input probes: + - la_data_in [0] ⟶ rregister_i. + - la_data_in [1] ⟶ wregister_i. + - la_data_in [4:2] ⟶ register_i [2:0]. + - la_data_in [31:5] ⟶ Not connected. + - la_data_in [63:32] ⟶ data_to_register_i [31:0]. + - la_data_in [64] ⟶ clk_i. + - la_data_in [65] ⟶ rst_i. + - la_data_in [127:66] ⟶ Not connected. + +- Output probes: + - la_data_out [92:0] ⟶ Not connected. + - la_data_in [94:93] ⟶ operation:result_o [1:0]. + - la_data_in [127:95] ⟶ store_data_o [31:0]. + +### **Whisbone Connection** + +The whisbone connection is 1 to 1 with the user project wrapper. + +### **User Maskable Interrupt Signals** + +This signals are not connected. + ## **Modules Description** The ecc registers module is compose of a set of multiple sub-modules. The following image is a representation of the modules and how each one of them interconnect.