IP Cores

Four SPI cores in synthesizable VHDL, for any FPGA family.

Comparison

CoreRoleSPI modesWord / frameSCLKInput handlingHost side
SPI MainMain0–3; CPOL/CPHA at runtime8, 16 or 32 bits (generic), MSB first; multi-word frames under one CSfclk/(2·(div+1)), 16-bit div
write ≤ fclk/2
read-back ≤ fclk/6
MISO double-registered—
SPI Main FrameMain0–3; CPOL/CPHA at runtimeOne trigger sends N words under a single CSas SPI Mainas SPI MainValid/request stream handshake; frame-wide busy and done
SPI SubSubordinate0–3Continuous multi-byte frames under one CS; next-word staging at word boundaries≤ fclk/10Asynchronous SCLK, CS, MOSI synchronised to fclkMISO output-enable for shared buses
SPI TunnelMain over a tunnel link, e.g. a SerDes SPI bridge0 (fixed by the link)1–15-byte commands—Bridge handshake; stale-buffer drainSubordinate-select commands; timeout with safe release; debug state output
SCLK limits are ratios to the system clock fclk, verified in simulation.

Common to all cores

HDLSynthesizable VHDL
Clock domains1
ResetSynchronous, active-high
Port typesstd_logic only
Vendor primitivesNone
VerificationSelf-checking testbenches, shipped with the core

Resource utilisation

LUT, FF and Fmax figures are published per device after synthesis. Until then, ask sales for your target.

Not sure which core?

Use SPI Main for single words or short transfers, SPI Main Frame when a FIFO feeds whole frames, SPI Sub when the FPGA is the subordinate. For anything else, see custom cores.

Evaluation netlists are built for one named device and toolchain. Licensing & evaluation