Initial commit
This commit is contained in:
		
							
								
								
									
										52
									
								
								Libs/RiscV/NEORV32/rtl/test_setups/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Libs/RiscV/NEORV32/rtl/test_setups/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| # 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 :books: | ||||
| [NEORV32 User Guide](https://stnolting.github.io/neorv32/ug/). | ||||
| 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 :book: | ||||
| [configuration generics](https://stnolting.github.io/neorv32/#_processor_top_entity_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`](https://github.com/stnolting/neorv32/blob/master/rtl/test_setups/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"](https://stnolting.github.io/neorv32/#_indirect_boot) | ||||
| configuration, so software applications are "installed" directly into the | ||||
| processor-internal IMEM during synthesis. | ||||
|  | ||||
| :books: See User Guide section [_Installing an Executable Directly Into Memory_](https://stnolting.github.io/neorv32/ug/#_installing_an_executable_directly_into_memory). | ||||
|  | ||||
|  | ||||
| ### [`neorv32_test_setup_bootloader.vhd`](https://github.com/stnolting/neorv32/blob/master/rtl/test_setups/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"](https://stnolting.github.io/neorv32/#_direct_boot) | ||||
| configuration, so software applications can be uploaded and run at any timer via a serial terminal. | ||||
|  | ||||
| :books: See User Guide section | ||||
| [_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). | ||||
		Reference in New Issue
	
	Block a user