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)
+ ]