2023-08-16 12:57:14 +00:00
|
|
|
.. _spi_engine execution:
|
|
|
|
|
|
|
|
SPI Engine Execution Module
|
|
|
|
================================================================================
|
|
|
|
|
2023-12-04 22:57:35 +00:00
|
|
|
.. hdl-component-diagram::
|
2023-08-16 12:57:14 +00:00
|
|
|
|
|
|
|
The SPI Engine Execution peripheral forms the heart of the SPI Engine framework.
|
|
|
|
It is responsible for handling a SPI Engine control stream and translates it
|
|
|
|
into low-level SPI bus transactions.
|
|
|
|
|
|
|
|
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_execution/spi_engine_execution.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_execution/spi_engine_execution_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::
|
|
|
|
|
|
|
|
* - NUM_OF_CS
|
|
|
|
- Number of chip-select signals for the SPI bus (min: 1, max: 8).
|
|
|
|
* - DEFAULT_SPI_CFG
|
|
|
|
- Reset configuration value for the
|
|
|
|
:ref:`spi_engine spi-configuration-register`
|
|
|
|
* - DEFAULT_CLK_DIV
|
|
|
|
- Reset configuration value for the
|
|
|
|
:ref:`spi_engine prescaler-configuration-register`
|
|
|
|
* - DATA_WIDTH
|
|
|
|
- Data width of the parallel data stream. Will define the transaction's
|
|
|
|
granularity. Supported values: 8/16/24/32
|
|
|
|
* - NUM_OF_SDI
|
|
|
|
- Number of multiple SDI lines, (min: 1, max: 8)
|
|
|
|
|
|
|
|
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
|
|
|
- All other signals are synchronous to this clock.
|
2023-08-01 20:39:09 +00:00
|
|
|
* - resetn
|
2023-08-16 12:57:14 +00:00
|
|
|
- Resets the internal state machine of the core.
|
2023-08-01 20:39:09 +00:00
|
|
|
* - active
|
2023-08-16 12:57:14 +00:00
|
|
|
- Indicates whether the peripheral is currently active and processing
|
|
|
|
commands.
|
2023-08-01 20:39:09 +00:00
|
|
|
* - ctrl
|
|
|
|
- :ref:`spi_engine control-interface` slave.
|
|
|
|
SPI Engine Control stream that contains commands and data for the
|
2023-08-16 12:57:14 +00:00
|
|
|
execution module.
|
2023-08-01 20:39:09 +00:00
|
|
|
* - spi
|
|
|
|
- :ref:`spi_engine spi-bus-interface` master.
|
|
|
|
Low-level SPI bus interface that is controlled by peripheral.
|
2023-08-16 12:57:14 +00:00
|
|
|
|
|
|
|
Theory of Operation
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
The SPI Engine Execution module implements the physical access to the SPI bus.
|
|
|
|
It implements a small but powerful programmable state machine that translates a
|
|
|
|
SPI Engine command stream into low-level SPI bus access.
|
|
|
|
|
|
|
|
Communication with a command stream generator happens via the ``ctrl``
|
|
|
|
interface and the low-level SPI access is handled on the ``spi`` interface.
|
|
|
|
The ``active`` signal is asserted as long as the peripheral is busy executing
|
|
|
|
incoming commands.
|
|
|
|
|
|
|
|
Internally the SPI Engine execution module consists of an instruction encoder
|
|
|
|
that translates the incoming commands into an internal control signal, a
|
|
|
|
multi-function counter and compares unit that is responsible for handling the
|
|
|
|
timing and a shift register which holds the received and transmitted SPI data.
|
|
|
|
|
|
|
|
The module has an optional programmable pre-scaler register that can be used to
|
|
|
|
divide the external clock to the counter and compare unit.
|
|
|
|
|
|
|
|
.. image:: spi_engine.svg
|