diff --git a/README.md b/README.md
index 5bf7ad3..5c68989 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # **Space Shuttle**
 
-[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![UPRJ_CI](https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml/badge.svg)](https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml) [![Caravel Build](https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml/badge.svg)](https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml)
+[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Caravel Build](https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml/badge.svg)](https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml)
 
 ## **Authors**
 - Ivan Rodriguez Ferrandez (BSC-UPC)
@@ -11,13 +11,103 @@
 
 One of the first things implemented is a 32 bit register file that has ECC implementation. In this case is implemented 1 bit correction and 2 bit detention.
 
+## **How To Use The Chip**
+This is a full example of how to use the chip in the context of caravel. For this example we will write a value to the register 1 and then we will read that value from the register file. This is also the first test of the chip. 
+
+```C++
+
+void main()
+{
+  /* Set up the housekeeping SPI to be connected internally so	*/
+  /* that external pin changes don't affect it.			*/
+
+  reg_spimaster_config = 0xa002;	// Enable, prescaler = 2,
+                                // connect to housekeeping SPI
+  reg_mprj_io_31 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_30 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_29 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_28 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_27 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_26 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_25 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_24 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_23 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_22 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_21 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_20 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_19 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_18 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_17 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_16 = GPIO_MODE_USER_STD_OUTPUT;
+
+  reg_mprj_io_15 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_14 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_13 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_12 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_11 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_10 = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_9  = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_8  = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_7  = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_5  = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_4  = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_3  = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_2  = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_1  = GPIO_MODE_USER_STD_OUTPUT;
+  reg_mprj_io_0  = GPIO_MODE_USER_STD_OUTPUT;
+
+  reg_mprj_io_6  = GPIO_MODE_MGMT_STD_OUTPUT;
+
+  // Set UART clock to 64 kbaud (enable before I/O configuration)
+  reg_uart_clkdiv = 625;
+  reg_uart_enable = 1;
+
+  /* Apply configuration */
+  reg_mprj_xfer = 1;
+  while (reg_mprj_xfer == 1);
+
+  // Configure LA probes 
+	// outputs from the cpu are inputs for my project denoted for been 0 
+	// inputs to the cpu are outpus for my project denoted for been 1
+	reg_la0_oenb = reg_la0_iena = 0x00000000;    // [31:0] 
+	reg_la1_oenb = reg_la1_iena = 0x00000000;    // [63:32]
+	reg_la2_oenb = reg_la2_iena = 0xFFFFFFFC;    // [95:64]
+	reg_la3_oenb = reg_la3_iena = 0xFFFFFFFF;    // [127:96]
+  // Flag start of the test 
+	reg_mprj_datal = 0xAB400000;
+  // test code
+  // clk and reset
+  reg_la2_data = 0x00000001;
+  reg_la2_data = 0x00000000;
+  // add data to register 1
+  reg_la0_data = (1 << 2| 2 & 0x3); 
+  reg_la1_data = 200;
+  // clk
+  reg_la2_data = 0x00000001;
+  reg_la2_data = 0x00000000;
+  // read value to register 1
+  reg_la0_data = (1 << 2| 1 & 0x3);
+  // clk
+  reg_la2_data = 0x00000001;
+  reg_la2_data = 0x00000000;
+  // value is the GPIO [35:20]
+  reg_mprj_datal = 0xAB410000;
+	print("\n");
+	print("Monitor: Test 1 Passed\n\n");
+	reg_mprj_datal = 0xAB510000;
+}
+``` 
+
+
+
+
 ## **ECC Implementation**
 For the   of the code we use [Hamming code](https://en.wikipedia.org/wiki/Hamming_code#:~:text=In%20computer%20science%20and%20telecommunication,without%20detection%20of%20uncorrected%20errors.) for the implementation or the parity bits and correction.
 In this particularly case is implemented with 6 bits inside of the register (positions 1,2,4,8,16,32) and a extra bit at the last position of the 2 bit error detection.
 ## **Block Description**
 The main code part is in the ecc_registers folder inside of the rtl folder. The user_proj.v contains only the connections to connect the project wrapper with the register file. The module works in a black box manner, the values are inserted to the module and you can ask for a value inside of the memory and the output is the value requested with a status signal that tells if the value is correct without modifications, the value has been corrected or if the value data is invalid. Is important to notice that if more that two bits are flip in the register value the system can not reliable determine if the value is incorrect.
 
-The module is implemented with 32 bit word size and 8 registers. The counters are 32 bit counters.
+The module is implemented with 32 bit word size and 32 registers. The counters are 32 bit counters.
 
 
 ## Module Ports:
@@ -42,20 +132,21 @@
     - **10**: Indicates that the data is incorrect and was two bit flip.
     - **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.
+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 wishbone is only connected to the 32 bit counter that counts the number of 1 bit flip that have happened.
 ## 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. 
+  - valid_i: Union of the clk and the strobe values for the wishbone bus
+  - wstrb_i [3:0]: Wishbone strobe.
+  - wdata_i [31:0]: Wishbone data input.
+  - wbs_adr_i [31:0]: Wishbone address.   
 - **Output Ports**
-  - ready_o. Whisbone ack.
-  - rdata_o [31:0]: Whisbone data output.
+  - ready_o. Wishbone ack.
+  - rdata_o [31:0]: Wishbone 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. 
+Caravel offers multiple way to interact with the user project inside of it. This ways are GPIO ports, logic analyzer probes, and the Wishbone interconnection, user maskable interrupt signals. 
 
 ### **GPIO Connections**
 - GPIO pins [19:0] are not been use.
@@ -66,8 +157,8 @@
 - 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 [6:2]     ⟶ register_i [4:0].
+  - la_data_in [31:7]    ⟶ 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.
@@ -78,9 +169,9 @@
   - la_data_in [94:93]  ⟶ operation:result_o [1:0].
   - la_data_in [127:95] ⟶ store_data_o [31:0].
 
-### **Whisbone Connection**
+### **Wishbone Connection**
 
-The whisbone connection is 1 to 1 with the user project wrapper. 
+The wishbone connection is 1 to 1 with the user project wrapper. 
 
 ### **User Maskable Interrupt Signals**
 
@@ -93,9 +184,146 @@
 ![](readme_data/output-crop.jpg)
 <div align="center"> Block diagram of the implemented verilog. </div>
 
-### **Module list**
+### **Module List**
 - Parity calculator. This module takes the input data and calculate the parity bits that will be store in the registers.
 - Register data. This module contains all of the registers and stores the data with the parity bits.
 - Data verificator. This modules takes the input value form the Register data and the parity bits and verifies and corrects (if needed) the value.
 - decoder_output. This module is a skeleton module that servers only to get the signals to the top module.
 - state counters. This module contains all of the counters that keep track of the number of reads, number of 1 bit flip occurrences and number of 2 bit flip occurrences.
+
+## **Wishbone Description**
+In this chip is implemented the wishbone to access the 32 bit counters and also to access the internal register 32 in order to modify the first 32 bits for testing of the ECC capabilities.
+
+The chip have to modes, operation mode where it performs the register file operations or in wishbone operation. The both modes are independent and can not be operated at the same time.
+
+ ### **Address Space**
+
+Each of the possible accesses of the wishbone has a predefined address to access. Following the design of caravel the first address is the 0x30000000. All of the possible address that are defined are configure to be read from or write to the wishbone interface. Hereinafter is the list of implemented addresses for the chip.
+
+- 0x30000000 : This address access the internal register 32.
+
+- 0x30000004 : This address access the number of reads performance counter.
+
+- 0x30000008 : This address access the performance counter that counts the number of corrected errors during reads.
+
+- 0x3000000C : This address access the performance counter that counts the number of uncorrected errors during reads.
+
+ ### **Software Example**
+
+ This example is base in that this chip is connected to the caravel project. The main idea of the use of the wishbone interface is that you are performing operations and then you stop doing operations and you change the chip to wishbone access. In the following example I will show how to access the performance counter that counts the number of reads.
+
+First we define the address that will be use for the access of counter in this case is the reads so we use the address 0x30000004.
+```C++
+#define reg_wb_counter (*(volatile unint32_t*)0x30000004)
+``` 
+
+Second we operate the chip in a normal condition adding a value toa register and reading for it. 
+```C++
+//##############################################
+//# Caravel GPIO configurations
+//##############################################
+
+//##############################################
+// la probes configurations
+//##############################################
+// clk and reset
+reg_la2_data = 0x00000001;
+reg_la2_data = 0x00000000;
+// add data to register 1
+reg_la0_data = (1 << 2| 2 & 0x3); 
+reg_la1_data = 200;
+// clk
+reg_la2_data = 0x00000001;
+reg_la2_data = 0x00000000;
+// read value to register 1
+reg_la0_data = (1 << 2| 1 & 0x3);
+// clk
+reg_la2_data = 0x00000001;
+reg_la2_data = 0x00000000;
+// value is the GPIO [35:20]
+``` 
+When we want to access the performance counter we start the switching to wishbone mode. First to tell the chip to stop operating this is achieve putting the rregister_i and wregister_i to 0.
+
+```C++
+// clk
+reg_la2_data = 0x00000001;
+reg_la2_data = 0x00000000;
+// clear lines
+reg_la0_data = 0x00000000;
+reg_la1_data = 0x00000000;
+// clk
+reg_la2_data = 0x00000001;
+reg_la2_data = 0x00000000;
+``` 
+
+Then we need to deactivate the manual clock to switch the the wishbone clock. We doing that by deactivating the LA probes that access the clk and reset. 
+```C++
+// deactivate internal clk
+reg_la2_oenb = 0xFFFFFFF;
+``` 
+Now we can check the value accessing to the defined variable.
+
+```C++
+// deactivate internal clk
+ print (reg_wb_counter);
+``` 
+Now is the full example code
+
+```C++
+#define reg_wb_counter (*(volatile unint32_t*)0x30000004)
+
+void main()
+{
+  //##############################################
+  //# Caravel GPIO configurations
+  //##############################################
+
+  //##############################################
+  // la probes configurations
+  //##############################################
+
+  // clk and reset
+  reg_la2_data = 0x00000001;
+  reg_la2_data = 0x00000000;
+  // add data to register 1
+  reg_la0_data = (1 << 2| 2 & 0x3); 
+  reg_la1_data = 200;
+  // clk
+  reg_la2_data = 0x00000001;
+  reg_la2_data = 0x00000000;
+  // read value to register 1
+  reg_la0_data = (1 << 2| 1 & 0x3);
+  // clk
+  reg_la2_data = 0x00000001;
+  reg_la2_data = 0x00000000;
+  // value is the GPIO [35:20]
+
+  // clk
+  reg_la2_data = 0x00000001;
+  reg_la2_data = 0x00000000;
+  // clear lines
+  reg_la0_data = 0x00000000;
+  reg_la1_data = 0x00000000;
+  // clk
+  reg_la2_data = 0x00000001;
+  reg_la2_data = 0x00000000;
+
+  // deactivate internal clk
+  reg_la2_oenb = 0xFFFFFFF;
+
+  print (reg_wb_counter);
+
+}
+``` 
+
+## **Available Tests**
+
+For this project there is a set of test in order to verify the functionality described. The test are the following.
+
+- la_test1: This test is the basic test, write a value to a register and then reads that value from the memory.
+
+- la_test2: This test, writes and reads all of the 32 registers of chip.
+
+- wb_test1: This test uses the wishbone interface to modify one bit of an internal register in order to test the ECC functionality.
+
+- wb_test2: This test uses the wishbone interface to modify one bit of an internal register and also makes some reads in oder to check the performance counters.
\ No newline at end of file
