| 1 | 2 | skordal | # The Potato Processor
 | 
      
         | 2 |  |  |  
 | 
      
         | 3 |  |  | Potato is a simple processor for use in FPGAs, implementing the RV32I subset of the RISC-V ISA specification.
 | 
      
         | 4 |  |  |  
 | 
      
         | 5 |  |  | ## Features
 | 
      
         | 6 |  |  |  
 | 
      
         | 7 |  |  | * Supports the full RV32I (RISC-V 32-bit integer subset) ISA.
 | 
      
         | 8 |  |  | * Additionally supports the csrr\* and sret instructions from the (previous) supervisor extension (draft).
 | 
      
         | 9 |  |  | * Includes an interface for the HTIF (Host/Target interface) registers, TOHOST and FROMHOST.
 | 
      
         | 10 |  |  | * Wishbone interface.
 | 
      
         | 11 |  |  |  
 | 
      
         | 12 |  |  | ## Wishbone details
 | 
      
         | 13 |  |  |  
 | 
      
         | 14 |  |  | The wishbone interface for the processor is provided by the pp_wb_adapter module. Its details are as follows:
 | 
      
         | 15 |  |  |  
 | 
      
         | 16 | 5 | skordal | |-----------------------|---------------|
 | 
      
         | 17 | 2 | skordal | | Name                  | Value         |
 | 
      
         | 18 |  |  | | --------------------- | ------------- |
 | 
      
         | 19 |  |  | | Wishbone revision     | B4            |
 | 
      
         | 20 |  |  | | Interface type        | Master        |
 | 
      
         | 21 |  |  | | Address port width    | 32 bits       |
 | 
      
         | 22 |  |  | | Data port width       | 32 bits       |
 | 
      
         | 23 |  |  | | Data port granularity | 8 bits        |
 | 
      
         | 24 |  |  | | Maximum operand size  | 32 bits       |
 | 
      
         | 25 |  |  | | Endianess             | Little endian |
 | 
      
         | 26 |  |  | | Sequence of data xfer | Undefined     |
 | 
      
         | 27 | 5 | skordal | |---------------------------------------|
 | 
      
         | 28 | 2 | skordal |  
 | 
      
         | 29 |  |  | For all Wishbone interfaces included in this project, the Wishbone signals are prefixed with `wb` and suffixed by the
 | 
      
         | 30 |  |  | signal direction.
 | 
      
         | 31 |  |  |  
 | 
      
         | 32 |  |  | ## Potato Processor Quick Start
 | 
      
         | 33 |  |  |  
 | 
      
         | 34 |  |  | To instantiate the processor, add the source files from the `src/` folder to your project. Use the `pp_potato` core to
 | 
      
         | 35 |  |  | instantiate a processor core with a Wishbone interface. Additional peripherals for use in Wishbone-based Potato systems
 | 
      
         | 36 |  |  | can be found in the `soc/` folder.
 | 
      
         | 37 |  |  |  
 | 
      
         | 38 |  |  | Use the `pp_core` module to instantiate a processor core with a more generic interface, for instance for use with block
 | 
      
         | 39 |  |  | memories. In this instance, connect the data and instruction memory ports directly to the block RAM modules/interfaces
 | 
      
         | 40 |  |  | and set the acknowledge inputs to `'1'`.
 | 
      
         | 41 |  |  |  
 | 
      
         | 42 |  |  | Interrupts are triggered when an IRQ signal is high and the corresponding mask bit is set in the control/status register.
 | 
      
         | 43 |  |  |  
 |