[enh] taking advantage of pins directly connected
This commit is contained in:
parent
1202c387bf
commit
874532871f
|
@ -2,10 +2,14 @@
|
||||||
# This file is part of LiteX-Boards.
|
# This file is part of LiteX-Boards.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2020 Florent Kermarrec <florent@enjoy-digital.fr>
|
# Copyright (c) 2020 Florent Kermarrec <florent@enjoy-digital.fr>
|
||||||
|
# Copyright (c) 2023 Charles-Henri Mousset <ch.mousset@gmail.com>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
|
||||||
# The Colorlight 5A-75B PCB and IOs have been documented by @miek and @smunaut:
|
# The Colorlight 5A-75B PCB and IOs have been documented by @miek and @smunaut:
|
||||||
# https://github.com/q3k/chubby75/tree/master/5a-75b
|
# https://github.com/q3k/chubby75/tree/master/5a-75b
|
||||||
|
# The Colorlight 5A-907 PCB, which is heavily based on the 5A-75B has been documented by @chmouss:
|
||||||
|
# https://github.com/chmousset/colorlight_reverse
|
||||||
|
|
||||||
|
|
||||||
from litex.build.generic_platform import *
|
from litex.build.generic_platform import *
|
||||||
from litex.build.lattice import LatticeECP5Platform
|
from litex.build.lattice import LatticeECP5Platform
|
||||||
|
@ -13,7 +17,7 @@ from litex.build.lattice.programmer import OpenOCDJTAGProgrammer
|
||||||
|
|
||||||
# IOs ----------------------------------------------------------------------------------------------
|
# IOs ----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
_io_v7_0 = [ # Documented by @miek
|
_io_v7_0 = [ # Documented by @miek and @chmouss
|
||||||
# Clk
|
# Clk
|
||||||
("clk25", 0, Pins("P6"), IOStandard("LVCMOS33")),
|
("clk25", 0, Pins("P6"), IOStandard("LVCMOS33")),
|
||||||
|
|
||||||
|
@ -25,8 +29,14 @@ _io_v7_0 = [ # Documented by @miek
|
||||||
|
|
||||||
# Serial
|
# Serial
|
||||||
("serial", 0,
|
("serial", 0,
|
||||||
Subsignal("tx", Pins("P11")), # led (J19 DATA_LED-)
|
Subsignal("tx", Pins("P15")), # FAN pin 1
|
||||||
Subsignal("rx", Pins("M13")), # btn (J19 KEY+)
|
Subsignal("rx", Pins("L14")), # FAN pin 2
|
||||||
|
IOStandard("LVCMOS33")
|
||||||
|
),
|
||||||
|
|
||||||
|
("uartbone", 0,
|
||||||
|
Subsignal("tx", Pins("F15")), # EXT_VOL pin 1
|
||||||
|
Subsignal("rx", Pins("E16")), # EXT_VOL pin 2
|
||||||
IOStandard("LVCMOS33")
|
IOStandard("LVCMOS33")
|
||||||
),
|
),
|
||||||
|
|
||||||
|
@ -95,20 +105,29 @@ _io_v7_0 = [ # Documented by @miek
|
||||||
),
|
),
|
||||||
|
|
||||||
# USB
|
# USB
|
||||||
|
# To use the USB:
|
||||||
|
# shunt R124 and R134
|
||||||
|
# remove R107
|
||||||
|
# connect on R107's pad towards FPGA to R124 shunt through a 1.5k resistor
|
||||||
("usb", 0,
|
("usb", 0,
|
||||||
Subsignal("d_p", Pins("M8")),
|
Subsignal("d_p", Pins("F15")), # EXT_VOL pin 1
|
||||||
Subsignal("d_n", Pins("R2")),
|
Subsignal("d_n", Pins("E16")), # EXT_VOL pin 2
|
||||||
Subsignal("pullup", Pins("P4")),
|
Subsignal("pullup", Pins("A12")), # R107's pad towards FPGA
|
||||||
IOStandard("LVCMOS33")
|
IOStandard("LVCMOS33")
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
# From https://github.com/q3k/chubby75/blob/master/5a-75b/hardware_V7.0.md
|
# Documented by @chmouss
|
||||||
_connectors_v7_0 = [
|
_connectors_v7_0 = [
|
||||||
("j1", "- "),
|
("door", "- - P16"),
|
||||||
("j2", "- "),
|
("smoke", "- - M14 -"),
|
||||||
("j3", "- "),
|
("fan", "- P15 L14"),
|
||||||
("j4", "- "),
|
("ext_vol", "- F15 E16"),
|
||||||
|
# pinout: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
||||||
|
("j1", "- L2 K1 F12 J14 B16 - J5 K2 F3 F1 T4 G3 - G2 H3 R5 H5 J4 K3 - R8 G1 K4 C2 P8 E3"),
|
||||||
|
("j2", "- L2 K1 F12 J14 B16 - J2 J1 H4 K5 R7 P1 - R1 L5 P7 F2 P4 R2 - N7 M8 M9 T6 M7 R6"),
|
||||||
|
("j3", "- L2 K1 F12 J14 B16 - G4 G5 M11 N11 L13 P12 - K15 N12 G13 L16 K16 J15 - G12 J16 J12 H15 F13 G16"),
|
||||||
|
("j4", "- L2 K1 F12 J14 B16 - F5 F4 H13 J13 E15 H12 - G14 H14 D16 G15 A15 F16 - F14 A14 E13 B14 E14 A13"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -138,6 +138,8 @@ class BaseSoC(SoCCore):
|
||||||
|
|
||||||
# CRG --------------------------------------------------------------------------------------
|
# CRG --------------------------------------------------------------------------------------
|
||||||
with_rst = kwargs["uart_name"] not in ["serial", "crossover"] # serial_rx shared with user_btn_n.
|
with_rst = kwargs["uart_name"] not in ["serial", "crossover"] # serial_rx shared with user_btn_n.
|
||||||
|
if board == "i5a-907":
|
||||||
|
with_rst = True
|
||||||
with_usb_pll = kwargs.get("uart_name", None) == "usb_acm"
|
with_usb_pll = kwargs.get("uart_name", None) == "usb_acm"
|
||||||
self.crg = _CRG(platform, sys_clk_freq,
|
self.crg = _CRG(platform, sys_clk_freq,
|
||||||
use_internal_osc = use_internal_osc,
|
use_internal_osc = use_internal_osc,
|
||||||
|
@ -178,17 +180,19 @@ class BaseSoC(SoCCore):
|
||||||
|
|
||||||
# Leds -------------------------------------------------------------------------------------
|
# Leds -------------------------------------------------------------------------------------
|
||||||
# Disable leds when serial is used.
|
# Disable leds when serial is used.
|
||||||
if platform.lookup_request("serial", loose=True) is None and with_led_chaser:
|
if platform.lookup_request("serial", loose=True) is None and with_led_chaser or board == "i5a-907":
|
||||||
self.leds = LedChaser(
|
self.leds = LedChaser(
|
||||||
pads = platform.request_all("user_led_n"),
|
pads = platform.request_all("user_led_n"),
|
||||||
sys_clk_freq = sys_clk_freq)
|
sys_clk_freq = sys_clk_freq)
|
||||||
|
|
||||||
|
self.add_uartbone(name="uartbone")
|
||||||
|
|
||||||
# Build --------------------------------------------------------------------------------------------
|
# Build --------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
from litex.build.parser import LiteXArgumentParser
|
from litex.build.parser import LiteXArgumentParser
|
||||||
parser = LiteXArgumentParser(platform=colorlight_5a_75b.Platform, description="LiteX SoC on Colorlight 5A-75X.")
|
parser = LiteXArgumentParser(platform=colorlight_5a_75b.Platform, description="LiteX SoC on Colorlight 5A-75X.")
|
||||||
parser.add_target_argument("--board", default="5a-75b", help="Board type (5a-75b or 5a-75e).")
|
parser.add_target_argument("--board", default="5a-75b", help="Board type (5a-75b, 5a-75e or i5a-907).")
|
||||||
parser.add_target_argument("--revision", default="7.0", help="Board revision (6.0, 6.1, 7.0 or 8.0).")
|
parser.add_target_argument("--revision", default="7.0", help="Board revision (6.0, 6.1, 7.0 or 8.0).")
|
||||||
parser.add_target_argument("--sys-clk-freq", default=60e6, type=float, help="System clock frequency.")
|
parser.add_target_argument("--sys-clk-freq", default=60e6, type=float, help="System clock frequency.")
|
||||||
ethopts = parser.target_group.add_mutually_exclusive_group()
|
ethopts = parser.target_group.add_mutually_exclusive_group()
|
||||||
|
|
Loading…
Reference in New Issue