OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [docs/] [datasheet/] [soc.adoc] - Diff between revs 67 and 68

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 67 Rev 68
Line 1319... Line 1319...
store it to external _data_ memory and transfers CPU control to that.
store it to external _data_ memory and transfers CPU control to that.
 
 
:sectnums!:
:sectnums!:
===== Indirect Boot
===== Indirect Boot
 
 
The _indirect_ boot scenarios **1a** and **1b** use the processor-internal <<_bootloader>>. This general setup is enabled
The _indirect_ boot scenarios **1a** and **1b** use the processor-internal <<_bootloader>>. This boot setup is enabled
by setting the <<_int_bootloader_en>> generic to true, which will implement the processor-internal <<_bootloader_rom_bootrom>>.
by setting the <<_int_bootloader_en>> generic to _true_, which will implement the processor-internal <<_bootloader_rom_bootrom>>.
This read-only memory is pre-initialized during synthesis with the default bootloader firmware.
This read-only memory is pre-initialized during synthesis with the default bootloader firmware.
 
The bootloader provides several options to upload an executable (via UART or from external SPI flash) and copies it to
 
the beginning of the _instruction address space_ so the CPU can execute it.
 
 
The bootloader provides several options to upload an executable (via UART or from external SPI flash) and store it to
Boot scenario **1a** uses the processor-internal IMEM
the _instruction address space_ so the CPU can execute it. Boot scenario **1a** uses the processor-internal IMEM
 
(<<_mem_int_imem_en>> = _true_). This scenario implements the internal <<_instruction_memory_imem>> as non-initialized
(<<_mem_int_imem_en>> = _true_). This scenario implements the internal <<_instruction_memory_imem>> as non-initialized
RAM so the bootloader can write the actual executable to it.
RAM so the bootloader can copy the actual executable to it.
 
 
Boot scenario **1b** uses a processor-external IMEM (<<_mem_int_imem_en>> = _false_) that is connected via the processor's
Boot scenario **1b** uses a processor-external IMEM (<<_mem_int_imem_en>> = _false_) that is connected via the processor's
bus interface. In this scenario the internal <<_instruction_memory_imem>> is not implemented at all and the bootloader will
bus interface. In this scenario the internal <<_instruction_memory_imem>> is not implemented at all and the bootloader will
write the executable to the processor-external memory.
copy the executable to the processor-external memory. Hence, the external memory has to be implemented as RAM.
 
 
:sectnums!:
:sectnums!:
===== Direct Boot
===== Direct Boot
 
 
The _direct_ boot scenarios **2a** and **2b** do not use the processor-internal bootloader. Hence, the <<_int_bootloader_en>>
The _direct_ boot scenarios **2a** and **2b** do not use the processor-internal bootloader since the <<_int_bootloader_en>>
generic is set _false_. In this configuration the <<_bootloader_rom_bootrom>> is not implemented at all and the CPU will
generic is set _false_. In this configuration the <<_bootloader_rom_bootrom>> is not implemented at all and the CPU will
directly begin executing code from the instruction address space after reset. A "pre-initialization mechanism is required
directly begin executing code from the beginning of the instruction address space after reset. An application-specific
in order to provide an executable _in_ memory.
"pre-initialization" mechanism is required in order to provide an executable _in_ memory.
 
 
Boot scenario **2a** uses the processor-internal IMEM (<<_mem_int_imem_en>> = _true_) that is implemented as _read-only memory_
Boot scenario **2a** uses the processor-internal IMEM (<<_mem_int_imem_en>> = _true_) that is implemented as _read-only memory_
in this scenario. It is pre-initialized (by the bitstream) with the actual application executable.
in this scenario. It is pre-initialized (by the bitstream) with the actual application executable during synthesis.
 
 
In contrast, boot scenario **2b** uses a processor-external IMEM (<<_mem_int_imem_en>> = _false_). In this scenario the
In contrast, boot scenario **2b** uses a processor-external IMEM (<<_mem_int_imem_en>> = _false_). In this scenario the
system designer is responsible for providing a initialized external memory that contains the actual application to be executed.
system designer is responsible for providing an initialized external memory that contains the actual application to be executed.
 
If the external is not already initialized after reset, a simple ROM containing a "polling loop" can be implemented that is
 
exited as soon as the application logic has finished initializing the memory with the acutal application code.
 
 
 
 
 
 
 
 
// ####################################################################################################################
// ####################################################################################################################

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.