arty: improve xy_pmod_io genericity (allow selecting the PMOD) and enable SDCard.
This commit is contained in:
parent
04fc98f834
commit
760b8ff93a
|
@ -145,57 +145,6 @@ _io = [
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
_usb_uart_pmod_io = [
|
|
||||||
# USB-UART PMOD on JA:
|
|
||||||
# - https://store.digilentinc.com/pmod-usbuart-usb-to-uart-interface/
|
|
||||||
("usb_uart", 0,
|
|
||||||
Subsignal("tx", Pins("pmoda:1")),
|
|
||||||
Subsignal("rx", Pins("pmoda:2")),
|
|
||||||
IOStandard("LVCMOS33")
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
_i2s_pmod_io = [
|
|
||||||
# I2S PMOD on JD:
|
|
||||||
# - https://store.digilentinc.com/pmod-i2s2-stereo-audio-input-and-output/
|
|
||||||
("i2s_rx_mclk", 0, Pins("pmodd:4"), IOStandard("LVCMOS33")),
|
|
||||||
("i2s_rx", 0,
|
|
||||||
Subsignal("clk", Pins("pmodd:6")),
|
|
||||||
Subsignal("sync", Pins("pmodd:5")),
|
|
||||||
Subsignal("rx", Pins("pmodd:7")),
|
|
||||||
IOStandard("LVCMOS33"),
|
|
||||||
),
|
|
||||||
("i2s_tx_mclk", 0, Pins("pmodd:0"), IOStandard("LVCMOS33")),
|
|
||||||
("i2s_tx", 0,
|
|
||||||
Subsignal("clk",Pins("pmodd:2")),
|
|
||||||
Subsignal("sync", Pins("pmodd:1")),
|
|
||||||
Subsignal("tx", Pins("pmodd:3")),
|
|
||||||
IOStandard("LVCMOS33"),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
_sdcard_pmod_io = [
|
|
||||||
# SDCard PMOD on JD:
|
|
||||||
# - https://store.digilentinc.com/pmod-microsd-microsd-card-slot/
|
|
||||||
# - https://github.com/antmicro/arty-expansion-board
|
|
||||||
("spisdcard", 0,
|
|
||||||
Subsignal("clk", Pins("pmodd:3")),
|
|
||||||
Subsignal("mosi", Pins("pmodd:1"), Misc("PULLUP True")),
|
|
||||||
Subsignal("cs_n", Pins("pmodd:0"), Misc("PULLUP True")),
|
|
||||||
Subsignal("miso", Pins("pmodd:2"), Misc("PULLUP True")),
|
|
||||||
Misc("SLEW=FAST"),
|
|
||||||
IOStandard("LVCMOS33"),
|
|
||||||
),
|
|
||||||
("sdcard", 0,
|
|
||||||
Subsignal("data", Pins("pmodd:2 pmodd:4 pmodd:5 pmodd:0"), Misc("PULLUP True")),
|
|
||||||
Subsignal("cmd", Pins("pmodd:1"), Misc("PULLUP True")),
|
|
||||||
Subsignal("clk", Pins("pmodd:3")),
|
|
||||||
Subsignal("cd", Pins("pmodd:6")),
|
|
||||||
Misc("SLEW=FAST"),
|
|
||||||
IOStandard("LVCMOS33"),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
# Connectors ---------------------------------------------------------------------------------------
|
# Connectors ---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
_connectors = [
|
_connectors = [
|
||||||
|
@ -289,6 +238,64 @@ _connectors = [
|
||||||
} ),
|
} ),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# PMODS --------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def usb_pmod_io(pmod):
|
||||||
|
return [
|
||||||
|
# USB-UART PMOD: https://store.digilentinc.com/pmod-usbuart-usb-to-uart-interface/
|
||||||
|
("usb_uart", 0,
|
||||||
|
Subsignal("tx", Pins(f"{pmod}:1")),
|
||||||
|
Subsignal("rx", Pins(f"{pmod}:2")),
|
||||||
|
IOStandard("LVCMOS33")
|
||||||
|
),
|
||||||
|
]
|
||||||
|
_usb_uart_pmod_io = usb_pmod_io("pmoda") # USB-UART PMOD on JA.
|
||||||
|
|
||||||
|
|
||||||
|
def i2s_pmod_io(pmod):
|
||||||
|
return [
|
||||||
|
# I2S PMOD: https://store.digilentinc.com/pmod-i2s2-stereo-audio-input-and-output/
|
||||||
|
("i2s_rx_mclk", 0, Pins(f"{pmod}:4"), IOStandard("LVCMOS33")),
|
||||||
|
("i2s_rx", 0,
|
||||||
|
Subsignal("clk", Pins(f"{pmod}:6")),
|
||||||
|
Subsignal("sync", Pins(f"{pmod}:5")),
|
||||||
|
Subsignal("rx", Pins(f"{pmod}:7")),
|
||||||
|
IOStandard("LVCMOS33"),
|
||||||
|
),
|
||||||
|
("i2s_tx_mclk", 0, Pins(f"{pmod}:0"), IOStandard("LVCMOS33")),
|
||||||
|
("i2s_tx", 0,
|
||||||
|
Subsignal("clk",Pins(f"{pmod}:2")),
|
||||||
|
Subsignal("sync", Pins(f"{pmod}:1")),
|
||||||
|
Subsignal("tx", Pins(f"{pmod}:3")),
|
||||||
|
IOStandard("LVCMOS33"),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
_i2s_pmod_io = i2s_pmod_io("pmodd") # I2S PMOD on JD.
|
||||||
|
|
||||||
|
def sdcard_pmod_io(pmod):
|
||||||
|
return [
|
||||||
|
# SDCard PMOD:
|
||||||
|
# - https://store.digilentinc.com/pmod-microsd-microsd-card-slot/
|
||||||
|
# - https://github.com/antmicro/arty-expansion-board
|
||||||
|
("spisdcard", 0,
|
||||||
|
Subsignal("clk", Pins(f"{pmod}:3")),
|
||||||
|
Subsignal("mosi", Pins(f"{pmod}:1"), Misc("PULLUP True")),
|
||||||
|
Subsignal("cs_n", Pins(f"{pmod}:0"), Misc("PULLUP True")),
|
||||||
|
Subsignal("miso", Pins(f"{pmod}:2"), Misc("PULLUP True")),
|
||||||
|
Misc("SLEW=FAST"),
|
||||||
|
IOStandard("LVCMOS33"),
|
||||||
|
),
|
||||||
|
("sdcard", 0,
|
||||||
|
Subsignal("data", Pins(f"{pmod}:2 {pmod}:4 {pmod}:5 {pmod}:0"), Misc("PULLUP True")),
|
||||||
|
Subsignal("cmd", Pins(f"{pmod}:1"), Misc("PULLUP True")),
|
||||||
|
Subsignal("clk", Pins(f"{pmod}:3")),
|
||||||
|
Subsignal("cd", Pins(f"{pmod}:6")),
|
||||||
|
Misc("SLEW=FAST"),
|
||||||
|
IOStandard("LVCMOS33"),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
_sdcard_pmod_io = sdcard_pmod_io("pmodd") # SDCARD PMOD on JD.
|
||||||
|
|
||||||
# Platform -----------------------------------------------------------------------------------------
|
# Platform -----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
class Platform(XilinxPlatform):
|
class Platform(XilinxPlatform):
|
||||||
|
|
|
@ -107,11 +107,19 @@ def main():
|
||||||
vivado_build_args(parser)
|
vivado_build_args(parser)
|
||||||
parser.add_argument("--with-ethernet", action="store_true", help="Enable Ethernet support")
|
parser.add_argument("--with-ethernet", action="store_true", help="Enable Ethernet support")
|
||||||
parser.add_argument("--with-etherbone", action="store_true", help="Enable Etherbone support")
|
parser.add_argument("--with-etherbone", action="store_true", help="Enable Etherbone support")
|
||||||
|
parser.add_argument("--with-spi-sdcard", action="store_true", help="Enable SPI-mode SDCard support")
|
||||||
|
parser.add_argument("--with-sdcard", action="store_true", help="Enable SDCard support")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
assert not (args.with_ethernet and args.with_etherbone)
|
assert not (args.with_ethernet and args.with_etherbone)
|
||||||
soc = BaseSoC(with_ethernet=args.with_ethernet, with_etherbone=args.with_etherbone,
|
soc = BaseSoC(with_ethernet=args.with_ethernet, with_etherbone=args.with_etherbone,
|
||||||
**soc_sdram_argdict(args))
|
**soc_sdram_argdict(args))
|
||||||
|
assert not (args.with_spi_sdcard and args.with_sdcard)
|
||||||
|
soc.platform.add_extension(arty._sdcard_pmod_io)
|
||||||
|
if args.with_spi_sdcard:
|
||||||
|
soc.add_spi_sdcard()
|
||||||
|
if args.with_sdcard:
|
||||||
|
soc.add_sdcard()
|
||||||
builder = Builder(soc, **builder_argdict(args))
|
builder = Builder(soc, **builder_argdict(args))
|
||||||
builder.build(**vivado_build_argdict(args), run=args.build)
|
builder.build(**vivado_build_argdict(args), run=args.build)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue