mirror of
https://github.com/im-tomu/fomu-workshop.git
synced 2024-09-20 03:10:12 +00:00
142 lines
4.4 KiB
Python
142 lines
4.4 KiB
Python
""" Fomu board definitions (mapping of I/O pins, clock, etc.) """
|
|
|
|
from migen import *
|
|
from migen.build.generic_platform import *
|
|
from migen.build.lattice import LatticePlatform
|
|
|
|
|
|
class FomuPvtPlatform(LatticePlatform):
|
|
""" Based on
|
|
https://github.com/litex-hub/litex-boards/blob/master/litex_boards/partner/platforms/fomu_pvt.py """
|
|
|
|
_io = [
|
|
('clk48', 0, Pins('F4'), IOStandard('LVCMOS33')),
|
|
|
|
('user_led_n', 0, Pins('A5'), IOStandard('LVCMOS33')),
|
|
('rgb_led', 0,
|
|
Subsignal('r', Pins('C5')),
|
|
Subsignal('g', Pins('B5')),
|
|
Subsignal('b', Pins('A5')),
|
|
IOStandard('LVCMOS33')),
|
|
|
|
('user_touch_n', 0, Pins('E4'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 1, Pins('D5'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 2, Pins('E5'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 3, Pins('F5'), IOStandard('LVCMOS33')),
|
|
|
|
('usb', 0,
|
|
Subsignal('d_p', Pins('A1')),
|
|
Subsignal('d_n', Pins('A2')),
|
|
Subsignal('pullup', Pins('A4')),
|
|
IOStandard('LVCMOS33'))
|
|
]
|
|
|
|
_connectors = [
|
|
('touch_pins', 'E4 D5 E5 F5')
|
|
]
|
|
|
|
default_clk_name = 'clk48'
|
|
default_clk_period = 1e9 / 48e6
|
|
|
|
def __init__(self):
|
|
LatticePlatform.__init__(self,
|
|
'ice40-up5k-uwg30',
|
|
self._io,
|
|
self._connectors,
|
|
toolchain='icestorm')
|
|
|
|
def create_programmer(self):
|
|
return IceStormProgrammer()
|
|
|
|
|
|
class FomuHackerPlatform(LatticePlatform):
|
|
""" Based on
|
|
https://github.com/litex-hub/litex-boards/blob/master/litex_boards/partner/platforms/fomu_hacker.py """
|
|
|
|
_io = [
|
|
('clk48', 0, Pins('F5'), IOStandard('LVCMOS33')),
|
|
|
|
('user_led_n', 0, Pins('A5'), IOStandard('LVCMOS33')),
|
|
('rgb_led', 0,
|
|
Subsignal('r', Pins('C5')),
|
|
Subsignal('g', Pins('B5')),
|
|
Subsignal('b', Pins('A5')),
|
|
IOStandard('LVCMOS33')),
|
|
|
|
('user_touch_n', 0, Pins('F4'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 1, Pins('E5'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 2, Pins('E4'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 3, Pins('F2'), IOStandard('LVCMOS33')),
|
|
|
|
('usb', 0,
|
|
Subsignal('d_p', Pins('A4')),
|
|
Subsignal('d_n', Pins('A2')),
|
|
Subsignal('pullup', Pins('D5')),
|
|
IOStandard('LVCMOS33'))
|
|
]
|
|
|
|
_connectors = [
|
|
('touch_pins', 'F4 E5 E4 F2')
|
|
]
|
|
|
|
default_clk_name = 'clk48'
|
|
default_clk_period = 1e9 / 48e6
|
|
|
|
def __init__(self):
|
|
LatticePlatform.__init__(self,
|
|
'ice40-up5k-uwg30',
|
|
self._io,
|
|
self._connectors,
|
|
toolchain='icestorm')
|
|
|
|
def create_programmer(self):
|
|
return IceStormProgrammer()
|
|
|
|
|
|
class FomuEvt2Platform(LatticePlatform):
|
|
""" Based on
|
|
https://github.com/litex-hub/litex-boards/blob/master/litex_boards/partner/platforms/fomu_evt.py """
|
|
|
|
_io = [
|
|
('clk48', 0, Pins('44'), IOStandard('LVCMOS33')),
|
|
|
|
('user_led_n', 0, Pins('41'), IOStandard('LVCMOS33')),
|
|
('rgb_led', 0,
|
|
Subsignal('r', Pins('40')),
|
|
Subsignal('g', Pins('39')),
|
|
Subsignal('b', Pins('41')),
|
|
IOStandard('LVCMOS33')),
|
|
|
|
('user_touch_n', 0, Pins('48'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 1, Pins('47'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 2, Pins('46'), IOStandard('LVCMOS33')),
|
|
('user_touch_n', 3, Pins('45'), IOStandard('LVCMOS33')),
|
|
|
|
('usb', 0,
|
|
Subsignal('d_p', Pins('34')),
|
|
Subsignal('d_n', Pins('37')),
|
|
Subsignal('pullup', Pins('35')),
|
|
Subsignal('pulldown', Pins('36')),
|
|
IOStandard('LVCMOS33'))
|
|
]
|
|
|
|
_connectors = [
|
|
('touch_pins', '48 47 46 45')
|
|
]
|
|
|
|
default_clk_name = 'clk48'
|
|
default_clk_period = 1e9 / 48e6
|
|
|
|
def __init__(self):
|
|
LatticePlatform.__init__(self,
|
|
'ice40-up5k-sg48',
|
|
self._io,
|
|
self._connectors,
|
|
toolchain='icestorm')
|
|
|
|
def create_programmer(self):
|
|
return IceStormProgrammer()
|
|
|
|
|
|
FomuEvt3Platform = FomuEvt2Platform
|