diff options
author | Clifford Wolf <clifford@clifford.at> | 2015-06-06 14:01:37 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2015-06-06 14:14:32 +0200 |
commit | 77ba5a18973bd02b461ab96047acfcc3fb62cf7b (patch) | |
tree | 573afedb6a3a14c91224e16724fa21ba3a939de2 /README.md | |
download | picorv32-77ba5a18973bd02b461ab96047acfcc3fb62cf7b.tar.gz picorv32-77ba5a18973bd02b461ab96047acfcc3fb62cf7b.zip |
Initial import
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..36f1ef0 --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ + +PicoRV32 - A Size-Optimized RISC-V CPU +====================================== + +PicoRV32 is a CPU core that implements the [RISC-V RV32I Instruction Set](http://riscv.org/). + +Tools (gcc, binutils, etc..) can be obtained via the [RISC-V Website](http://riscv.org/download.html#tab_tools). + + +Features and Typical Applications: +---------------------------------- + +- Small (about 1000 LUTs in a 7-Series Xilinx FGPA) +- High fMAX (>250 MHz on 7-Series Xilinx FGPAs) +- Selectable native memory interface or AXI4-Lite master + +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 +clock domains. When operated on a lower frequency, it will have a lot of timing +slack and thus can be added to a design without compromising timing closure. + +For even smaller size it is possible disable support for registers `x16`..`x31` as +well as `RDCYCLE[H]`, `RDTIME[H]`, and `RDINSTRET[H]` instructions, turning the +processor into an RV32E core. + +*Note: In architectures that implement the register file in dedicated memory +resources, such as many FPGAs, disabling the 16 upper registers may not further +reduce the core size.* + +The core exists in two variations: `picorv32` and `picorv32_axi`. The former +provides a simple native memory interface, that is easy to use in simple +environments, and the latter provides an AXI-4 Lite Master interface that can +easily be integrated with existing systems that are already using the AXI +standard. + +A separate core `picorv32_axi_adapter` is provided to bridge between the native +memory interface and AXI4. This core can be used to create custom cores that +include one or more PicoRV32 cores together with local RAM, ROM, and +memory-mapped peripherals, communicating with each other using the native +interface, and communicating with the outside world via AXI4. + + +Performance: +------------ + +The average Cycles per Instruction (CPI) is 6 to 8, depending on the +application code. (Most instructions, including unconditional branches and +not-taken conditional branches execute in 5 cycles. Memory load/store, taken +conditional branches, JALR, and shift operations may take more than 5 cycles.) + +Dhrystone benchmark results: 0.124 DMIPS/MHz (219 Dhrystones/Second/MHz) + +*This numbers apply for setups with memory that can accomodate requests within +one clock cycle. Slower memory will degrade the performance of the processor.* + + +Todos: +------ + +- Optional IRQ support +- Optional write-through cache +- Optional support for compressed ISA + |