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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [docs/] [datasheet/] [soc_wishbone.adoc] - Diff between revs 60 and 61

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

Rev 60 Rev 61
Line 21... Line 21...
|                          | `fence_o`   | an executed `fence` instruction
|                          | `fence_o`   | an executed `fence` instruction
|                          | `fencei_o`  | an executed `fence.i` instruction
|                          | `fencei_o`  | an executed `fence.i` instruction
| Configuration generics:  | _MEM_EXT_EN_ | enable external memory interface when _true_
| Configuration generics:  | _MEM_EXT_EN_ | enable external memory interface when _true_
|                          | _MEM_EXT_TIMEOUT_ | number of clock cycles after which an unacknowledged external bus access will auto-terminate (0 = disabled)
|                          | _MEM_EXT_TIMEOUT_ | number of clock cycles after which an unacknowledged external bus access will auto-terminate (0 = disabled)
| Configuration constants in VHDL package file `neorv32_package.vhd`: | `wb_pipe_mode_c` | when _false_ (default): classic/standard Wishbone protocol; when _true_: pipelined Wishbone protocol
| Configuration constants in VHDL package file `neorv32_package.vhd`: | `wb_pipe_mode_c` | when _false_ (default): classic/standard Wishbone protocol; when _true_: pipelined Wishbone protocol
|                                                                     | `xbus_big_endian_c` | byte-order (Endianness) of external memory interface; true=BIG, false=little (default)
|                                                                     | `wb_big_endian_c` | byte-order (Endianness) of external memory interface; true=BIG, false=little (default)
 
|                                                                     | `wb_rx_buffer_c` | enable register buffer for RX path (default)
| CPU interrupts:          | none             |
| CPU interrupts:          | none             |
|=======================
|=======================
 
 
The external memory interface uses the Wishbone interface protocol. The external interface port is available
The external memory interface uses the Wishbone interface protocol. The external interface port is available
when the _MEM_EXT_EN_ generic is _true_. This interface can be used to attach external memories, custom
when the _MEM_EXT_EN_ generic is _true_. This interface can be used to attach external memories, custom
Line 47... Line 48...
**pipelined** Wishbone transactions. The transaction protocol is configured via the wb_pipe_mode_c constant
**pipelined** Wishbone transactions. The transaction protocol is configured via the wb_pipe_mode_c constant
in the in the main VHDL package file (`rtl/neorv32_package.vhd`):
in the in the main VHDL package file (`rtl/neorv32_package.vhd`):
 
 
[source,vhdl]
[source,vhdl]
----
----
-- (external) bus interface --
-- external bus interface --
constant wb_pipe_mode_c : boolean := false;
constant wb_pipe_mode_c : boolean := false;
----
----
 
 
When `wb_pipe_mode_c` is disabled, all bus control signals including _STB_ are active (and stable) until the
When `wb_pipe_mode_c` is disabled, all bus control signals including _STB_ are active (and stable) until the
transfer is acknowledged/terminated. If `wb_pipe_mode_c` is enabled, all bus control except _STB_ are active
transfer is acknowledged/terminated. If `wb_pipe_mode_c` is enabled, all bus control except _STB_ are active
Line 74... Line 75...
Architecture for Portable IP Cores". A copy of this document can be found in the docs folder of this
Architecture for Portable IP Cores". A copy of this document can be found in the docs folder of this
project.
project.
 
 
**Interface Latency**
**Interface Latency**
 
 
The Wishbone gateway introduces two additional latency cycles: Processor-outgoing and -incoming signals
By default, the Wishbone gateway introduces two additional latency cycles: processor-outgoing ("TX") and
are fully registered. Thus, any access from the CPU to a processor-external devices requires +2 clock cycles.
processor-incoming ("RX") signals are fully registered. Thus, any access from the CPU to a processor-external devices
 
via Wishbone requires 2 additional clock cycles (at least; depending on device's latency).
 
 
 
If the attached Wishbone network / peripheral already provides output registers or if the Wishbone network is not relevant
 
for timing closure, the default buffering of incoming ("RX") data within the gateway can be disabled.
 
The configuration is done via the `wb_rx_buffer_c` constant in the in the main VHDL package file (`rtl/neorv32_package.vhd`):
 
 
 
[source,vhdl]
 
----
 
-- external bus interface --
 
constant wb_rx_buffer_c : boolean := false; -- false to implement "async" RX (non-default)
 
----
 
 
**Bus Access Timeout**
**Bus Access Timeout**
 
 
The Wishbone bus interface provides an option to configure a bus access timeout counter. The _MEM_EXT_TIMEOUT_
The Wishbone bus interface provides an option to configure a bus access timeout counter. The _MEM_EXT_TIMEOUT_
top generic is used to specify the _maximum_ time (in clock cycles) a bus access can be pending before it is automatically
top generic is used to specify the _maximum_ time (in clock cycles) a bus access can be pending before it is automatically
Line 123... Line 135...
 
 
**Endianness**
**Endianness**
 
 
The NEORV32 CPU and the Processor setup are *little-endian* architectures. To allow direct connection
The NEORV32 CPU and the Processor setup are *little-endian* architectures. To allow direct connection
to a big-endian memory system the external bus interface provides an _Endianness configuration_. The
to a big-endian memory system the external bus interface provides an _Endianness configuration_. The
Endianness (of the external memory interface) can be configured via the global `xbus_big_endian_c`
Endianness (of the external memory interface) can be configured via the global `wb_big_endian_c`
constant in the main VHDL package file (`rtl/neorv32_package.vhd`). By default, the external memory
constant in the main VHDL package file (`rtl/neorv32_package.vhd`). By default, the external memory
interface uses little-endian byte-order.
interface uses little-endian byte-order.
 
 
[source,vhdl]
[source,vhdl]
----
----
-- (external) bus interface --
-- external bus interface --
constant xbus_big_endian_c : boolean := true;
constant wb_big_endian_c : boolean := true;
----
----
 
 
Application software can check the Endianness configuration of the external bus interface via the
Application software can check the Endianness configuration of the external bus interface via the
_SYSINFO_FEATURES_MEM_EXT_ENDIAN_ flag in the processor's SYSINFO module (see section
_SYSINFO_FEATURES_MEM_EXT_ENDIAN_ flag in the processor's SYSINFO module (see section
<<_system_configuration_information_memory_sysinfo>> for more information).
<<_system_configuration_information_memory_sysinfo>> for more information).
 
 
**AXI4-Lite Connectivity**
**AXI4-Lite Connectivity**
 
 
The AXI4-Lite wrapper (`rtl/top_templates/neorv32_top_axi4lite.vhd`) provides a Wishbone-to-
The AXI4-Lite wrapper (`rtl/templates/system/neorv32_SystemTop_axi4lite.vhd`) provides a Wishbone-to-
AXI4-Lite bridge, compatible with Xilinx Vivado (IP packager and block design editor). All entity signals of
AXI4-Lite bridge, compatible with Xilinx Vivado (IP packager and block design editor). All entity signals of
this wrapper are of type _std_logic_ or _std_logic_vector_, respectively.
this wrapper are of type _std_logic_ or _std_logic_vector_, respectively.
 
 
The AXI Interface has been verified using Xilinx Vivado IP Packager and Block Designer. The AXI
The AXI Interface has been verified using Xilinx Vivado IP Packager and Block Designer. The AXI
interface port signals are automatically detected when packaging the core.
interface port signals are automatically detected when packaging the core.
Line 151... Line 163...
.Example AXI SoC using Xilinx Vivado
.Example AXI SoC using Xilinx Vivado
image::neorv32_axi_soc.png[]
image::neorv32_axi_soc.png[]
 
 
[WARNING]
[WARNING]
Using the auto-termination timeout feature (_MEM_EXT_TIMEOUT_ greater than zero) is **not AXI4 compliant** as the AXI protocol does not support canceling of
Using the auto-termination timeout feature (_MEM_EXT_TIMEOUT_ greater than zero) is **not AXI4 compliant** as the AXI protocol does not support canceling of
bus transactions. Therefore, the NEORV32 top wrapper with AXI4-Lite interface (`rtl/top_templates/neorv32_top_axi4lite`) configures _MEM_EXT_TIMEOUT_ = 0 by default.
bus transactions. Therefore, the NEORV32 top wrapper with AXI4-Lite interface (`rtl/templates/system/neorv32_SystemTop_axi4lite`) configures _MEM_EXT_TIMEOUT_ = 0 by default.
 
 
 
 
bus transactions. Therefore, the NEORV32 top wrapper with AXI4-Lite interface (`rtl/templates/system/neorv32_SystemTop_axi4lite`) configures _MEM_EXT_TIMEOUT_ = 0 by default.
 

powered by: WebSVN 2.1.0

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