mirror of https://github.com/YosysHQ/picorv32.git
Various README updates
This commit is contained in:
parent
034e1a6af7
commit
df6b95fb87
29
README.md
29
README.md
|
@ -16,6 +16,8 @@ Features and Typical Applications:
|
||||||
- Small (~1000 LUTs in a 7-Series Xilinx FGPA)
|
- Small (~1000 LUTs in a 7-Series Xilinx FGPA)
|
||||||
- High fMAX (~250 MHz on 7-Series Xilinx FGPAs)
|
- High fMAX (~250 MHz on 7-Series Xilinx FGPAs)
|
||||||
- Selectable native memory interface or AXI4-Lite master
|
- Selectable native memory interface or AXI4-Lite master
|
||||||
|
- Optional IRQ support (using a simple custom ISA)
|
||||||
|
- Optional Co-Processor Interface
|
||||||
|
|
||||||
This CPU is meant to be used as auxiliary processor in FPGA designs and ASICs. Due
|
This CPU is meant to be used as auxiliary processor in FPGA designs and ASICs. Due
|
||||||
to its high fMAX it can be integrated in most existing designs without crossing
|
to its high fMAX it can be integrated in most existing designs without crossing
|
||||||
|
@ -46,6 +48,14 @@ include one or more PicoRV32 cores together with local RAM, ROM, and
|
||||||
memory-mapped peripherals, communicating with each other using the native
|
memory-mapped peripherals, communicating with each other using the native
|
||||||
interface, and communicating with the outside world via AXI4.
|
interface, and communicating with the outside world via AXI4.
|
||||||
|
|
||||||
|
The optional IRQ feature can be used to react to events from the outside, implemnt
|
||||||
|
fault handlers, or catch instructions from a larger ISA and emulate them in
|
||||||
|
software.
|
||||||
|
|
||||||
|
The optional Pico Co-Prosessor Interface (PCPI) can be used to implement
|
||||||
|
non-branching instructions in an external coprocessor. An implementation
|
||||||
|
of a core that implements the `MUL[H[SU|U]]` instructions is provided.
|
||||||
|
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
-----------
|
-----------
|
||||||
|
@ -83,10 +93,20 @@ transaction. In the default configuration the PicoRV32 core only expects the
|
||||||
`mem_rdata` input to be valid in the cycle with `mem_valid && mem_ready` and
|
`mem_rdata` input to be valid in the cycle with `mem_valid && mem_ready` and
|
||||||
latches the value internally.
|
latches the value internally.
|
||||||
|
|
||||||
|
This parameter is only available for the `picorv32` core. In the
|
||||||
|
`picorv32_axi` core this is implicitly set to 0.
|
||||||
|
|
||||||
#### ENABLE_PCPI (default = 0)
|
#### ENABLE_PCPI (default = 0)
|
||||||
|
|
||||||
Set this to 1 to enable the Pico Co-Processor Interface (PCPI).
|
Set this to 1 to enable the Pico Co-Processor Interface (PCPI).
|
||||||
|
|
||||||
|
#### ENABLE_MUL (default = 0)
|
||||||
|
|
||||||
|
This parameter is only available on the `picorv32_axi` core. It internally
|
||||||
|
enables PCPI and instantiates the `picorv32_pcpi_mul` core that implements
|
||||||
|
Mthe `MUL[H[SU|U]]` instructions. The external CPCI interface only becomes
|
||||||
|
functional when ENABLE_PCPI is set as well.
|
||||||
|
|
||||||
#### ENABLE_IRQ (default = 0)
|
#### ENABLE_IRQ (default = 0)
|
||||||
|
|
||||||
Set this to 1 to enable IRQs.
|
Set this to 1 to enable IRQs.
|
||||||
|
@ -158,7 +178,7 @@ overhead.*
|
||||||
The following custom instructions are only supported when IRQs are enabled
|
The following custom instructions are only supported when IRQs are enabled
|
||||||
via the `ENABLE_IRQ` parameter (see above).
|
via the `ENABLE_IRQ` parameter (see above).
|
||||||
|
|
||||||
The PicoRV32 core has a built-in interrupt controller with 32 interrupts. An
|
The PicoRV32 core has a built-in interrupt controller with 32 interrupt inputs. An
|
||||||
interrupt can be triggered by asserting the corresponding bit in the `irq`
|
interrupt can be triggered by asserting the corresponding bit in the `irq`
|
||||||
input of the core.
|
input of the core.
|
||||||
|
|
||||||
|
@ -174,9 +194,12 @@ The IRQs 0-2 can be triggered internally by the following built-in interrupt sou
|
||||||
| 1 | SBREAK or Illegal Instruction |
|
| 1 | SBREAK or Illegal Instruction |
|
||||||
| 2 | BUS Error (Unalign Memory Access) |
|
| 2 | BUS Error (Unalign Memory Access) |
|
||||||
|
|
||||||
|
This interrupts can also be triggered by external sources, such as co-processors
|
||||||
|
connected via PCPI.
|
||||||
|
|
||||||
The core has 4 additional 32-bit registers `q0 .. q3` that are used for IRQ
|
The core has 4 additional 32-bit registers `q0 .. q3` that are used for IRQ
|
||||||
handling. When an IRQ triggers, the register `q0` contains the return address
|
handling. When the IRQ handler is called, the register `q0` contains the return address
|
||||||
and `q1` contains a bitmask of all active IRQs. This means one call to the interrupt
|
and `q1` contains a bitmask of all IRQs to be handled. This means one call to the interrupt
|
||||||
handler might need to service more than one IRQ when more than one bit is set
|
handler might need to service more than one IRQ when more than one bit is set
|
||||||
in `q1`.
|
in `q1`.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue