| 1 |
63 |
zero_gravi |
# Test Setups
|
| 2 |
|
|
|
| 3 |
|
|
This folder contains very simple test setups that are intended for project beginners
|
| 4 |
|
|
to setup a minimal NEORV32 SoC. These setups are used in the :books:
|
| 5 |
|
|
[NEORV32 User Guide](https://stnolting.github.io/neorv32/ug/).
|
| 6 |
|
|
|
| 7 |
|
|
:information_source: Note that these setups provides a minimalistic configuration to keep
|
| 8 |
|
|
things at a simple level at first. Additional CPU ISA extensions, performance options and
|
| 9 |
|
|
optional peripheral modules can be enabled by specifying the according :book:
|
| 10 |
|
|
[configuration generics](https://stnolting.github.io/neorv32/#_processor_top_entity_generics).
|
| 11 |
|
|
|
| 12 |
|
|
|
| 13 |
|
|
### Setup's Top Entity
|
| 14 |
|
|
|
| 15 |
|
|
#### Clocking and Reset
|
| 16 |
|
|
|
| 17 |
|
|
All test setups require an external clock (via `clk_i` signal) and an external
|
| 18 |
|
|
low-active reset (via `rstn_i` signal).
|
| 19 |
|
|
|
| 20 |
|
|
#### Configuration Generics
|
| 21 |
|
|
|
| 22 |
|
|
Each setup provides three elementary generics that can/should be adapted to fit
|
| 23 |
|
|
your FPGA/board.
|
| 24 |
|
|
|
| 25 |
|
|
* The clock speed in Hz **has to be specified** via the `CLOCK_SPEED` generic to fit your clock source.
|
| 26 |
|
|
* The processor-internal instruction memory (IMEM) size _can be modified_ via the `MEM_INT_IMEM_SIZE` generic.
|
| 27 |
|
|
* The processor-internal data memory (DMEM) size _can be modified_ via the `MEM_INT_DMEM_SIZE` generic.
|
| 28 |
|
|
Note that this might require adaption of the NEORV32 linker script.
|
| 29 |
|
|
|
| 30 |
|
|
|
| 31 |
|
|
### [`neorv32_test_setup_approm.vhd`](https://github.com/stnolting/neorv32/blob/master/rtl/test_setups/neorv32_test_setup_approm.vhd)
|
| 32 |
|
|
|
| 33 |
|
|
This setup configures a `rv32imc_Zicsr` CPU with 16kB IMEM (as pre-initialized ROM),
|
| 34 |
|
|
8kB DMEM and includes the GPIO module to drive 8 external signals (`gpio_o`)
|
| 35 |
|
|
and the MTIME module for generating timer interrupts.
|
| 36 |
|
|
The setup uses the [indidrect boot](https://stnolting.github.io/neorv32/#_indirect_boot)
|
| 37 |
|
|
configuration, so software applications are "installed" directly into the
|
| 38 |
|
|
processor-internal IMEM during synthesis.
|
| 39 |
|
|
|
| 40 |
|
|
:books: See User Guide section [_Installing an Executable Directly Into Memory_](https://stnolting.github.io/neorv32/ug/#_installing_an_executable_directly_into_memory).
|
| 41 |
|
|
|
| 42 |
|
|
|
| 43 |
|
|
### [`neorv32_test_setup_bootloader.vhd`](https://github.com/stnolting/neorv32/blob/master/rtl/test_setups/neorv32_test_setup_bootloader.vhd)
|
| 44 |
|
|
|
| 45 |
|
|
This setup configures a `rv32imc_Zicsr` CPU with 16kB IMEM (as RAM), 8kB DMEM
|
| 46 |
|
|
and includes the GPIO module to drive 8 external signals (`gpio_o`), the MTIME
|
| 47 |
|
|
module for generating timer interrupts and UART0 to interface with the bootloader
|
| 48 |
|
|
(via `uart0_txd_o` and `uart0_rxd_i`) via a serial terminal.
|
| 49 |
|
|
The setup uses the [direct boot](https://stnolting.github.io/neorv32/#_direct_boot)
|
| 50 |
|
|
configuration, so software applications can be uploaded and run at any timer via a serial terminal.
|
| 51 |
|
|
|
| 52 |
|
|
:books: See User Guide section
|
| 53 |
|
|
[_Uploading and Starting of a Binary Executable Image via UART_](https://stnolting.github.io/neorv32/ug/#_uploading_and_starting_of_a_binary_executable_image_via_uart).
|