2023-08-16 12:57:14 +00:00
|
|
|
.. _spi_engine interconnect:
|
|
|
|
|
|
|
|
SPI Engine Interconnect Module
|
|
|
|
================================================================================
|
|
|
|
|
2023-12-04 22:57:35 +00:00
|
|
|
.. hdl-component-diagram::
|
2023-08-16 12:57:14 +00:00
|
|
|
|
|
|
|
The SPI Engine Interconnect module allows connecting multiple
|
|
|
|
:ref:`spi_engine control-interface` masters to a single
|
|
|
|
:ref:`spi_engine control-interface` slave.
|
|
|
|
This enables multiple command stream generators to connect to a single
|
|
|
|
:ref:`spi_engine execution` and consequential give them access to the same SPI bus.
|
|
|
|
The interconnect modules take care of properly arbitrating between the different
|
|
|
|
command streams.
|
|
|
|
|
|
|
|
Combining multiple command stream generators in a design and connecting them to
|
|
|
|
a single execution module allows for the creation of flexible and efficient
|
|
|
|
designs using standard components.
|
|
|
|
|
|
|
|
Files
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
.. list-table::
|
|
|
|
:widths: 25 75
|
|
|
|
:header-rows: 1
|
|
|
|
|
|
|
|
* - Name
|
|
|
|
- Description
|
docs: links, drop part, fixups, codeowners
Drop part role, use generic adi instead for root adi domain links.
For future reference, the snipped used was:
find ./docs/projects -type f -exec sed -i 's/:part:/:adi:/g' {} \;
Drop Containerfile.
Add option to validate links status (e.g. 200, 404), intended mostly for CI
use to check if a page has disappeared from the internet.
Validate links uses coroutines to launch multiple tasks concurrently,
but do it in bundles to avoid being rate limited.
Fixup regmap styling.
Add imoldovan, jmarques, spop, lbarbosa as docs codeowners.
Remove branch field for links to the hdl repo.
Change git role to display full path.
Fixup ZedBoard link label, remove IP List, add SYSID_ROM dokuwiki link
in ad716_sdz project.
Signed-off-by: Jorge Marques <jorge.marques@analog.com>
2023-11-13 15:42:46 +00:00
|
|
|
* - :git-hdl:`library/spi_engine/spi_engine_interconnect/spi_engine_interconnect.v`
|
2023-08-16 12:57:14 +00:00
|
|
|
- Verilog source for the peripheral.
|
docs: links, drop part, fixups, codeowners
Drop part role, use generic adi instead for root adi domain links.
For future reference, the snipped used was:
find ./docs/projects -type f -exec sed -i 's/:part:/:adi:/g' {} \;
Drop Containerfile.
Add option to validate links status (e.g. 200, 404), intended mostly for CI
use to check if a page has disappeared from the internet.
Validate links uses coroutines to launch multiple tasks concurrently,
but do it in bundles to avoid being rate limited.
Fixup regmap styling.
Add imoldovan, jmarques, spop, lbarbosa as docs codeowners.
Remove branch field for links to the hdl repo.
Change git role to display full path.
Fixup ZedBoard link label, remove IP List, add SYSID_ROM dokuwiki link
in ad716_sdz project.
Signed-off-by: Jorge Marques <jorge.marques@analog.com>
2023-11-13 15:42:46 +00:00
|
|
|
* - :git-hdl:`library/spi_engine/spi_engine_interconnect/spi_engine_interconnect_ip.tcl`
|
2023-08-16 12:57:14 +00:00
|
|
|
- TCL script to generate the Vivado IP-integrator project for the
|
|
|
|
peripheral.
|
|
|
|
|
|
|
|
|
|
|
|
Configuration Parameters
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
.. hdl-parameters::
|
|
|
|
|
|
|
|
* - DATA_WIDTH
|
|
|
|
- Data width of the parallel SDI/SDO data interfaces.
|
|
|
|
* - NUM_OF_SDI
|
|
|
|
- Number of SDI lines on the physical SPI interface.
|
|
|
|
|
|
|
|
|
|
|
|
Signal and Interface Pins
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
2023-08-01 20:39:09 +00:00
|
|
|
.. hdl-interfaces::
|
2023-08-16 12:57:14 +00:00
|
|
|
|
2023-08-01 20:39:09 +00:00
|
|
|
* - clk
|
2023-08-16 12:57:14 +00:00
|
|
|
- A signals of the module are synchronous to this clock.
|
2023-08-01 20:39:09 +00:00
|
|
|
* - resetn
|
|
|
|
- Synchronous active-low reset.
|
|
|
|
Resets the internal state of the module.
|
2024-03-27 12:33:20 +00:00
|
|
|
* - s*_ctrl
|
2023-08-01 20:39:09 +00:00
|
|
|
- :ref:`spi_engine control-interface` slave.
|
2024-03-27 12:33:20 +00:00
|
|
|
| ``s0_ctrl`` connects to the first control interface master.
|
|
|
|
| ``s1_ctrl`` connects to the second control interface master.
|
2023-08-01 20:39:09 +00:00
|
|
|
* - m_ctrl
|
2024-03-27 12:33:20 +00:00
|
|
|
- | :ref:`spi_engine control-interface` master.
|
|
|
|
| Connects to the control interface slave.
|
2023-08-16 12:57:14 +00:00
|
|
|
|
|
|
|
Theory of Operation
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
The SPI Engine Interconnect module has multiple
|
|
|
|
:ref:`spi_engine control-interface` slave ports and a single
|
|
|
|
:ref:`spi_engine control-interface` master port.
|
|
|
|
It can be used to connect multiple command stream generators to a single command
|
|
|
|
execution engine. Arbitration between the streams is done on a priority
|
|
|
|
basis, streams with a lower index have higher priority. This means if commands
|
|
|
|
are present on two streams arbitration will be granted to the one with the lower
|
|
|
|
index. Once arbitration has been granted the port it was granted to stays in
|
|
|
|
control until it sends a SYNC command. When the interconnect module sees a SYNC
|
|
|
|
command arbitration will be re-evaluated after the SYNC command has been
|
|
|
|
completed. This makes sure that once a SPI transaction consisting of multiple
|
|
|
|
commands has been started it is able to complete without being interrupted by a
|
|
|
|
higher priority stream.
|