diff --git a/litex/soc/cores/spi_flash.py b/litex/soc/cores/spi_flash.py index 0ed073dea..906ffb136 100644 --- a/litex/soc/cores/spi_flash.py +++ b/litex/soc/cores/spi_flash.py @@ -365,3 +365,24 @@ class S7SPIFlash(Module, AutoCSR): pads.mosi.eq(spi.pads.mosi), spi.pads.miso.eq(pads.miso) ] + + +# Lattice ECP5 FPGAs SPI Flash (non-memory-mapped) ------------------------------------------------- + +class ECP5SPIFlash(Module, AutoCSR): + def __init__(self, pads, sys_clk_freq, spi_clk_freq=25e6): + self.submodules.spi = spi = SPIMaster(None, 40, sys_clk_freq, spi_clk_freq) + self.specials += Instance("USRMCLK", + i_USRMCLKI = spi.pads.clk, + i_USRMCLKTS = 0 + ) + if hasattr(pads, "vpp"): + pads.vpp.reset = 1 + if hasattr(pads, "hold"): + pads.hold.reset = 1 + if hasattr(pads, "cs_n"): + self.comb += pads.cs_n.eq(spi.pads.cs_n) + self.comb += [ + pads.mosi.eq(spi.pads.mosi), + spi.pads.miso.eq(pads.miso) + ]