Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SPI Engine: simplify interconnect #1502

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft

Conversation

LBFFilho
Copy link
Contributor

PR Description

Simplifies the interconnect logic, which is now just a set of muxes controlled by a signal from the offload module.
This makes the SYNC instructions optional, and reduces the trigger to first instruction latency.

Since it acts as a substitute for the offload module, axi_ad5766 had to be updated as well in order for it to provide the same interconnect control signal.
(This PR should be merged after #1501)

PR Type

  • Bug fix (change that fixes an issue)
  • New feature (change that adds new functionality)
  • Breaking change (has dependencies in other repos or will cause CI to fail)

PR Checklist

  • I have followed the code style guidelines
  • I have performed a self-review of changes
  • I have compiled all hdl projects and libraries affected by this PR
  • I have tested in hardware affected projects, at least on relevant boards
  • I have commented my code, at least hard-to-understand parts
  • I have signed off all commits from this PR
  • I have updated the documentation (wiki pages, ReadMe files, Copyright etc)
  • I have not introduced new Warnings/Critical Warnings on compilation
  • I have added new hdl testbenches or updated existing ones

Split up the different counters for better readability. Might synthesize down to slightly larger logic.

Signed-off-by: Laez Barbosa <[email protected]>
Moved shift register logic to separate module

Signed-off-by: Laez Barbosa <[email protected]>
@LBFFilho LBFFilho force-pushed the spi_simple_interconnect branch 4 times, most recently from 555ec30 to 828c295 Compare November 1, 2024 18:49
Split path between sdo data input and sdo shift register, which includes a barrel shifter.

Signed-off-by: Laez Barbosa <[email protected]>
Signed-off-by: Laez Barbosa <[email protected]>
Switched SDO source control to software (memory-mapped register).

SDO data can now be clocked in independently from the offload trigger.
This allows lower latencies for executing transfers, since the data can be
obtained from the DMA before the trigger. It also better separates the command
path from the data path

Signed-off-by: Laez Barbosa <[email protected]>
Make the interconnect use an external signal for switching between
sources, so it becomes just a collection of muxes, reducing latency.
This signal is generated based on the software-controlled offload
enable, but is sourced from the offload module to avoid unnecessary
CDCs.

This commit makes the use of SYNC optional.

Signed-off-by: Laez Barbosa <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant