SPI Engine Execution Module
The SPI Engine Execution IP core is 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
Name |
Description |
---|---|
library/spi_engine/spi_engine_execution/spi_engine_execution.v |
Verilog source for the peripheral. |
library/spi_engine/spi_engine_execution/spi_engine_execution_ip.tcl |
TCL script to generate the Vivado IP-integrator project for the peripheral. |
Configuration Parameters
Name |
Description |
Default Value |
Choices/Range |
---|---|---|---|
NUM_OF_CS |
Number of chip-select signals for the SPI bus (min: 1, max: 8). |
1 |
From 1 to 8. |
DEFAULT_SPI_CFG |
Reset configuration value for the SPI Configuration Register |
0 |
0, 1, 2, 3 |
DEFAULT_CLK_DIV |
Reset configuration value for the Prescaler Configuration Register |
0 |
From 0 to 255. |
DATA_WIDTH |
Data width of the parallel data stream. Will define the transaction’s granularity. Supported values: 8/16/24/32 |
8 |
From 8 to 32. |
NUM_OF_SDI |
Number of multiple SDI lines, (min: 1, max: 8) |
1 |
From 1 to 8. |
SDO_DEFAULT |
MOSI default level. |
'b0 |
“0”, “1” |
ECHO_SCLK |
Echoed SCLK. |
False |
|
SDI_DELAY |
Delay MISO latching. |
False |
Signal and Interface Pins
Physical Port |
Logical Port |
Direction |
Dependency |
---|---|---|---|
cmd_ready |
cmd_ready |
out |
|
cmd_valid |
cmd_valid |
in |
|
cmd |
cmd_data |
in [15:0] |
|
sdo_data_ready |
sdo_ready |
out |
|
sdo_data_valid |
sdo_valid |
in |
|
sdo_data |
sdo_data |
in [7:0] |
|
sdi_data_ready |
sdi_ready |
in |
|
sdi_data_valid |
sdi_valid |
out |
|
sdi_data |
sdi_data |
out [7:0] |
|
sync_ready |
sync_ready |
in |
|
sync_valid |
sync_valid |
out |
|
sync |
sync_data |
out [7:0] |
Physical Port |
Logical Port |
Direction |
Dependency |
---|---|---|---|
sclk |
sclk |
out |
|
sdi |
sdi |
in [0:0] |
|
sdo |
sdo |
out |
|
sdo_t |
sdo_t |
out |
|
three_wire |
three_wire |
out |
|
cs |
cs |
out [0:0] |
Physical Port |
Direction |
Dependency |
Description |
---|---|---|---|
clk |
in |
All other signals are synchronous to this clock. Buses |
|
resetn |
in |
Resets the internal state machine of the core. Buses |
|
echo_sclk |
in |
ECHO_SCLK |
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.
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.