1
0
SEm-Labos/Libs/RiscV/NEORV32/rtl/test_setups/README.md
github-classroom[bot] d212040c30
Initial commit
2024-02-23 13:01:05 +00:00

2.7 KiB

Test Setups

This folder contains very simple test setups that are intended for project beginners to setup a minimal NEORV32 SoC. These setups are used in the 📚 NEORV32 User Guide. Note that these setups provides a minimalistic configuration to keep things at a simple level at first. Additional CPU ISA extensions, performance options and optional peripheral modules can be enabled by specifying the according 📖 configuration generics.

Setup's Top Entity

Clocking and Reset

All test setups require an external clock (via clk_i signal) and an external low-active reset (via rstn_i signal).

Configuration Generics

Each setup provides three elementary generics that can/should be adapted to fit your FPGA/board.

  • The clock speed in Hz has to be specified via the CLOCK_SPEED generic to fit your clock source.
  • The processor-internal instruction memory (IMEM) size can be modified via the MEM_INT_IMEM_SIZE generic.
  • The processor-internal data memory (DMEM) size can be modified via the MEM_INT_DMEM_SIZE generic. Note that this might require adaption of the NEORV32 linker script.

neorv32_test_setup_approm.vhd

This setup configures a rv32imc_Zicsr CPU with 16kB IMEM (as pre-initialized ROM), 8kB DMEM and includes the GPIO module to drive 8 external signals (gpio_o) and the MTIME module for generating timer interrupts. The setup uses the "indirect boot" configuration, so software applications are "installed" directly into the processor-internal IMEM during synthesis.

📚 See User Guide section Installing an Executable Directly Into Memory.

neorv32_test_setup_bootloader.vhd

This setup configures a rv32imc_Zicsr CPU with 16kB IMEM (as RAM), 8kB DMEM and includes the GPIO module to drive 8 external signals (gpio_o), the MTIME module for generating timer interrupts and UART0 to interface with the bootloader (via uart0_txd_o and uart0_rxd_i) via a serial terminal. The setup uses the "direct boot" configuration, so software applications can be uploaded and run at any timer via a serial terminal.

📚 See User Guide section Uploading and Starting of a Binary Executable Image via UART.