Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
R
rkx7-litex-boards
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Reform
rkx7-litex-boards
Commits
1fdaf5db
Unverified
Commit
1fdaf5db
authored
5 years ago
by
enjoy-digital
Committed by
GitHub
5 years ago
Browse files
Options
Downloads
Plain Diff
Merge pull request #7 from daveshah1/trellisboard
community: Add TrellisBoard
parents
7ba91154
a07e88d7
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
litex_boards/community/platforms/trellisboard.py
+216
-0
216 additions, 0 deletions
litex_boards/community/platforms/trellisboard.py
litex_boards/community/targets/trellisboard.py
+146
-0
146 additions, 0 deletions
litex_boards/community/targets/trellisboard.py
with
362 additions
and
0 deletions
litex_boards/community/platforms/trellisboard.py
0 → 100644
+
216
−
0
View file @
1fdaf5db
# This file is Copyright (c) 2019 David Shah <dave@ds0.me>
# License: BSD
from
litex.build.generic_platform
import
*
from
litex.build.lattice
import
LatticePlatform
from
litex.build.lattice.programmer
import
LatticeProgrammer
# IOs ----------------------------------------------------------------------------------------------
_io
=
[
(
"
clk100
"
,
0
,
Pins
(
"
B29
"
),
IOStandard
(
"
LVDS
"
)),
# [broken on rev1.0 (non diff pair)]
(
"
clk12
"
,
0
,
Pins
(
"
B3
"
),
IOStandard
(
"
LVCMOS33
"
)),
(
"
clkref
"
,
0
,
Pins
(
"
E17
"
),
IOStandard
(
"
LVCMOS33
"
)),
(
"
user_btn
"
,
0
,
Pins
(
"
Y32
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_btn
"
,
1
,
Pins
(
"
W31
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_btn
"
,
2
,
Pins
(
"
AD30
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_btn
"
,
3
,
Pins
(
"
AD29
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_dip
"
,
0
,
Pins
(
"
AE31
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_dip
"
,
1
,
Pins
(
"
AE32
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_dip
"
,
2
,
Pins
(
"
AD32
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_dip
"
,
3
,
Pins
(
"
AC32
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_dip
"
,
4
,
Pins
(
"
AB32
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_dip
"
,
5
,
Pins
(
"
AB31
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_dip
"
,
6
,
Pins
(
"
AC31
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_dip
"
,
7
,
Pins
(
"
AC30
"
),
IOStandard
(
"
SSTL135_I
"
)),
(
"
user_led
"
,
0
,
Pins
(
"
C26
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
1
,
Pins
(
"
D26
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
2
,
Pins
(
"
A28
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
3
,
Pins
(
"
A29
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
4
,
Pins
(
"
A30
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
5
,
Pins
(
"
AK29
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
6
,
Pins
(
"
AH32
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
7
,
Pins
(
"
AH30
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
8
,
Pins
(
"
AH28
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
9
,
Pins
(
"
AG30
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
10
,
Pins
(
"
AG29
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
user_led
"
,
11
,
Pins
(
"
AK30
"
),
IOStandard
(
"
LVCMOS33
"
),
Misc
(
"
PULLMODE=NONE
"
)),
(
"
serial
"
,
0
,
Subsignal
(
"
rx
"
,
Pins
(
"
AM28
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
tx
"
,
Pins
(
"
AL28
"
),
IOStandard
(
"
LVCMOS33
"
)),
),
(
"
ftdi
"
,
0
,
Subsignal
(
"
dq
"
,
Pins
(
"
AM28 AL28 AM29 AK28 AK32 AM30 AJ32 AL30
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
txe_n
"
,
Pins
(
"
AM31
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
rxf_n
"
,
Pins
(
"
AJ31
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
rd_n
"
,
Pins
(
"
AL32
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
wr_n
"
,
Pins
(
"
AG28
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
siwu_n
"
,
Pins
(
"
AJ28
"
),
IOStandard
(
"
LVCMOS33
"
)),
),
(
"
ddram
"
,
0
,
Subsignal
(
"
a
"
,
Pins
(
"
E30 F28 C32 E29 F32 D30 E32 D29
"
,
"
D32 C31 H32 F31 F29 B32 D31
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
ba
"
,
Pins
(
"
H31 H30 J30
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
ras_n
"
,
Pins
(
"
K31
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
cas_n
"
,
Pins
(
"
K30
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
we_n
"
,
Pins
(
"
J32
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
cs_n
"
,
Pins
(
"
K29
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
dm
"
,
Pins
(
"
R26 L27 Y27 U31
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
dq
"
,
Pins
(
"
V26 R27 V27 T26 U28 T27 T29 U26
"
,
"
P27 K28 P26 L26 K27 N26 L29 K26
"
,
"
AC27 W28 AC26 Y26 AB26 W29 AD26 Y28
"
,
"
T32 U32 P31 V32 P32 W32 N32 U30
"
),
IOStandard
(
"
SSTL135_I
"
),
Misc
(
"
TERMINATION=75
"
)),
Subsignal
(
"
dqs_p
"
,
Pins
(
"
R29 N30 AB28 R32
"
),
IOStandard
(
"
SSTL135D_I
"
),
Misc
(
"
TERMINATION=OFF
"
),
Misc
(
"
DIFFRESISTOR=100
"
)),
Subsignal
(
"
clk_p
"
,
Pins
(
"
L31
"
),
IOStandard
(
"
SSTL135D_I
"
)),
Subsignal
(
"
cke
"
,
Pins
(
"
K32
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
odt
"
,
Pins
(
"
J29
"
),
IOStandard
(
"
SSTL135_I
"
)),
Subsignal
(
"
reset_n
"
,
Pins
(
"
L32
"
),
IOStandard
(
"
SSTL135_I
"
)),
Misc
(
"
SLEWRATE=FAST
"
),
),
(
"
dram_vtt_en
"
,
0
,
Pins
(
"
E25
"
),
IOStandard
(
"
LVCMOS33
"
)),
(
"
eth_clocks
"
,
0
,
Subsignal
(
"
tx
"
,
Pins
(
"
A15
"
)),
Subsignal
(
"
rx
"
,
Pins
(
"
C17
"
)),
Subsignal
(
"
ref
"
,
Pins
(
"
A17
"
)),
IOStandard
(
"
LVCMOS33
"
)
),
(
"
eth
"
,
0
,
Subsignal
(
"
rst_n
"
,
Pins
(
"
D16
"
)),
Subsignal
(
"
int_n
"
,
Pins
(
"
E16
"
)),
Subsignal
(
"
mdio
"
,
Pins
(
"
F17
"
)),
Subsignal
(
"
mdc
"
,
Pins
(
"
B17
"
)),
Subsignal
(
"
rx_ctl
"
,
Pins
(
"
A16
"
)),
Subsignal
(
"
rx_data
"
,
Pins
(
"
C16 B16 B14 F16
"
)),
Subsignal
(
"
tx_ctl
"
,
Pins
(
"
D15
"
)),
Subsignal
(
"
tx_data
"
,
Pins
(
"
A14 F15 C15 C14
"
)),
IOStandard
(
"
LVCMOS33
"
)
),
(
"
clkgen
"
,
0
,
Subsignal
(
"
sda
"
,
Pins
(
"
C22
"
)),
Subsignal
(
"
scl
"
,
Pins
(
"
A22
"
)),
Subsignal
(
"
sd_oe
"
,
Pins
(
"
A2
"
)),
IOStandard
(
"
LVCMOS33
"
)
),
(
"
pcie_x2
"
,
0
,
Subsignal
(
"
clk_p
"
,
Pins
(
"
AM14
"
)),
Subsignal
(
"
clk_n
"
,
Pins
(
"
AM15
"
)),
Subsignal
(
"
rx_p
"
,
Pins
(
"
AM8 AK12
"
)),
Subsignal
(
"
rx_n
"
,
Pins
(
"
AM9 AK13
"
)),
Subsignal
(
"
tx_p
"
,
Pins
(
"
AK9 AM11
"
)),
Subsignal
(
"
tx_n
"
,
Pins
(
"
AK10 AM12
"
)),
Subsignal
(
"
perst
"
,
Pins
(
"
D22
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
wake_n
"
,
Pins
(
"
A23
"
),
IOStandard
(
"
LVCMOS33
"
)),
),
(
"
m2
"
,
0
,
Subsignal
(
"
clk_p
"
,
Pins
(
"
AM23
"
)),
Subsignal
(
"
clk_n
"
,
Pins
(
"
AM24
"
)),
Subsignal
(
"
rx_p
"
,
Pins
(
"
AM17 AK21
"
)),
Subsignal
(
"
rx_n
"
,
Pins
(
"
AM18 AK22
"
)),
Subsignal
(
"
tx_p
"
,
Pins
(
"
AK18 AM20
"
)),
Subsignal
(
"
tx_n
"
,
Pins
(
"
AK19 AM21
"
)),
Subsignal
(
"
clksel
"
,
Pins
(
"
N3
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
sdio_clk
"
,
Pins
(
"
L4
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
sdio_cmd
"
,
Pins
(
"
K4
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
sdio_dq
"
,
Pins
(
"
L7 N4 L6 N6
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
uart_tx
"
,
Pins
(
"
P6
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
uart_rx
"
,
Pins
(
"
K5
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
uart_rts_n
"
,
Pins
(
"
N7
"
),
IOStandard
(
"
LVCMOS33
"
)),
Subsignal
(
"
uart_cts_n
"
,
Pins
(
"
P7
"
),
IOStandard
(
"
LVCMOS33
"
))
),
(
"
sdcard
"
,
0
,
Subsignal
(
"
data
"
,
Pins
(
"
AG1 AJ1 AH1 AK1
"
)),
Subsignal
(
"
clk
"
,
Pins
(
"
AK3
"
)),
Subsignal
(
"
cmd
"
,
Pins
(
"
AH3
"
)),
IOStandard
(
"
LVCMOS33
"
)
),
(
"
spiflash4x
"
,
0
,
Subsignal
(
"
clk
"
,
Pins
(
"
AM3
"
)),
Subsignal
(
"
cs_n
"
,
Pins
(
"
AJ3
"
)),
Subsignal
(
"
dq
"
,
Pins
(
"
AK2 AJ2 AM2 AL1
"
)),
IOStandard
(
"
LVCMOS33
"
)
),
(
"
spiflash
"
,
0
,
Subsignal
(
"
clk
"
,
Pins
(
"
AM3
"
)),
Subsignal
(
"
cs_n
"
,
Pins
(
"
AJ3
"
)),
Subsignal
(
"
mosi
"
,
Pins
(
"
AK2
"
)),
Subsignal
(
"
miso
"
,
Pins
(
"
AJ2
"
)),
Subsignal
(
"
wp
"
,
Pins
(
"
AM2
"
)),
Subsignal
(
"
hold
"
,
Pins
(
"
AL1
"
)),
IOStandard
(
"
LVCMOS33
"
)
),
(
"
ulpi
"
,
0
,
Subsignal
(
"
clk
"
,
Pins
(
"
A18
"
)),
Subsignal
(
"
stp
"
,
Pins
(
"
D18
"
)),
Subsignal
(
"
dir
"
,
Pins
(
"
C18
"
)),
Subsignal
(
"
nxt
"
,
Pins
(
"
F18
"
)),
Subsignal
(
"
reset
"
,
Pins
(
"
D17
"
)),
Subsignal
(
"
data
"
,
Pins
(
"
C20 C19 E19 D20 A20 B19 D19 A19
"
)),
IOStandard
(
"
LVCMOS33
"
)
),
(
"
hdmi
"
,
0
,
Subsignal
(
"
d
"
,
Pins
(
"
C11 A11 B11 A10 B10 C10 A8 B7
"
,
"
B8 A7 C8 C9 F11 E11 E10 D10
"
,
"
F10 F9 D9 D8 C7 F8 E8 D11
"
)),
Subsignal
(
"
de
"
,
Pins
(
"
F14
"
)),
Subsignal
(
"
clk
"
,
Pins
(
"
A9
"
)),
Subsignal
(
"
vsync
"
,
Pins
(
"
E14
"
)),
Subsignal
(
"
hsync
"
,
Pins
(
"
F13
"
)),
Subsignal
(
"
sda
"
,
Pins
(
"
D13
"
)),
Subsignal
(
"
scl
"
,
Pins
(
"
C13
"
)),
IOStandard
(
"
LVCMOS33
"
)
),
]
_connectors
=
[
(
"
pmoda
"
,
"
F19 F20 B22 C23 D14 A13 E22 D23
"
),
(
"
pmodb
"
,
"
C25 A26 F23 F25 B25 D25 F22 F24
"
),
(
"
pmodx
"
,
"
A24 C24 D24 B23 D23 A25
"
),
(
"
ext0
"
,
"
T1 U1 AE5 AE4 AB5 AB6 Y5 W5 W2 Y1 AB7 AC6 AB3 AB4 AD3 AE3 AB1 AC1 AD1 AE1 AD6 AE6 AC7 AD7
"
),
(
"
ext1
"
,
"
P5 P4 R7 T7 R6 T6 U6 U7 R4 T5 T4 U5 U4 V4 V6 V7 P2 P3 R3 T3 N1 P1 U2 U3
"
),
(
"
ext2
"
,
"
K6 K7 J7 J6 H6 H5 F4 F5 F3 E3 C4 C3 C5 D5 D3 D2 H2 H3 J3 K3 B1 C2 F1 H1
"
)
]
# Platform -----------------------------------------------------------------------------------------
class
Platform
(
LatticePlatform
):
default_clk_name
=
"
clk12
"
default_clk_period
=
83
def
__init__
(
self
,
**
kwargs
):
LatticePlatform
.
__init__
(
self
,
"
LFE5UM5G-85F-8BG756C
"
,
_io
,
_connectors
,
**
kwargs
)
def
do_finalize
(
self
,
fragment
):
try
:
self
.
add_period_constraint
(
self
.
lookup_request
(
"
eth_clocks
"
,
0
).
rx
,
1e9
/
125e6
)
except
ConstraintError
:
pass
This diff is collapsed.
Click to expand it.
litex_boards/community/targets/trellisboard.py
0 → 100644
+
146
−
0
View file @
1fdaf5db
#!/usr/bin/env python3
import
argparse
from
migen
import
*
from
migen.genlib.resetsync
import
AsyncResetSynchronizer
from
litex_boards.community.platforms
import
trellisboard
from
litex.soc.cores.clock
import
*
from
litex.soc.integration.soc_core
import
mem_decoder
from
litex.soc.integration.soc_sdram
import
*
from
litex.soc.integration.builder
import
*
from
litedram.modules
import
MT41J256M16
from
litedram.phy
import
ECP5DDRPHY
from
liteeth.phy.ecp5rgmii
import
LiteEthPHYRGMII
from
liteeth.core.mac
import
LiteEthMAC
# CRG ----------------------------------------------------------------------------------------------
class
_CRG
(
Module
):
def
__init__
(
self
,
platform
,
sys_clk_freq
):
self
.
clock_domains
.
cd_init
=
ClockDomain
()
self
.
clock_domains
.
cd_por
=
ClockDomain
(
reset_less
=
True
)
self
.
clock_domains
.
cd_sys
=
ClockDomain
()
self
.
clock_domains
.
cd_sys2x
=
ClockDomain
()
self
.
clock_domains
.
cd_sys2x_i
=
ClockDomain
(
reset_less
=
True
)
# # #
self
.
cd_init
.
clk
.
attr
.
add
(
"
keep
"
)
self
.
cd_por
.
clk
.
attr
.
add
(
"
keep
"
)
self
.
cd_sys
.
clk
.
attr
.
add
(
"
keep
"
)
self
.
cd_sys2x
.
clk
.
attr
.
add
(
"
keep
"
)
self
.
cd_sys2x_i
.
clk
.
attr
.
add
(
"
keep
"
)
self
.
stop
=
Signal
()
# clk / rst
clk12
=
platform
.
request
(
"
clk12
"
)
rst
=
platform
.
request
(
"
user_btn
"
,
0
)
platform
.
add_period_constraint
(
clk12
,
1e9
/
12e6
)
# power on reset
por_count
=
Signal
(
16
,
reset
=
2
**
16
-
1
)
por_done
=
Signal
()
self
.
comb
+=
self
.
cd_por
.
clk
.
eq
(
ClockSignal
())
self
.
comb
+=
por_done
.
eq
(
por_count
==
0
)
self
.
sync
.
por
+=
If
(
~
por_done
,
por_count
.
eq
(
por_count
-
1
))
# pll
self
.
submodules
.
pll
=
pll
=
ECP5PLL
()
pll
.
register_clkin
(
clk12
,
12e6
)
pll
.
create_clkout
(
self
.
cd_sys2x_i
,
2
*
sys_clk_freq
)
pll
.
create_clkout
(
self
.
cd_init
,
25e6
)
self
.
specials
+=
[
Instance
(
"
ECLKSYNCB
"
,
i_ECLKI
=
self
.
cd_sys2x_i
.
clk
,
i_STOP
=
self
.
stop
,
o_ECLKO
=
self
.
cd_sys2x
.
clk
),
Instance
(
"
CLKDIVF
"
,
p_DIV
=
"
2.0
"
,
i_ALIGNWD
=
0
,
i_CLKI
=
self
.
cd_sys2x
.
clk
,
i_RST
=
self
.
cd_sys2x
.
rst
,
o_CDIVX
=
self
.
cd_sys
.
clk
),
AsyncResetSynchronizer
(
self
.
cd_init
,
~
por_done
|
~
pll
.
locked
|
rst
),
AsyncResetSynchronizer
(
self
.
cd_sys
,
~
por_done
|
~
pll
.
locked
|
rst
)
]
vtt_en
=
platform
.
request
(
"
dram_vtt_en
"
)
self
.
comb
+=
vtt_en
.
eq
(
1
)
# BaseSoC ------------------------------------------------------------------------------------------
class
BaseSoC
(
SoCSDRAM
):
def
__init__
(
self
,
sys_clk_freq
=
int
(
75e6
),
toolchain
=
"
diamond
"
,
**
kwargs
):
platform
=
trellisboard
.
Platform
(
toolchain
=
toolchain
)
SoCSDRAM
.
__init__
(
self
,
platform
,
clk_freq
=
sys_clk_freq
,
integrated_rom_size
=
0x8000
,
**
kwargs
)
# crg
crg
=
_CRG
(
platform
,
sys_clk_freq
)
self
.
submodules
.
crg
=
crg
# sdram
self
.
submodules
.
ddrphy
=
ECP5DDRPHY
(
platform
.
request
(
"
ddram
"
),
sys_clk_freq
=
sys_clk_freq
)
self
.
add_csr
(
"
ddrphy
"
)
self
.
add_constant
(
"
ECP5DDRPHY
"
,
None
)
self
.
comb
+=
crg
.
stop
.
eq
(
self
.
ddrphy
.
init
.
stop
)
sdram_module
=
MT41J256M16
(
sys_clk_freq
,
"
1:2
"
)
self
.
register_sdram
(
self
.
ddrphy
,
sdram_module
.
geom_settings
,
sdram_module
.
timing_settings
)
class
EthernetSoC
(
BaseSoC
):
mem_map
=
{
"
ethmac
"
:
0x30000000
,
# (shadow @0xb0000000)
}
mem_map
.
update
(
BaseSoC
.
mem_map
)
def
__init__
(
self
,
toolchain
=
"
diamond
"
,
**
kwargs
):
BaseSoC
.
__init__
(
self
,
toolchain
=
toolchain
,
**
kwargs
)
self
.
submodules
.
ethphy
=
LiteEthPHYRGMII
(
self
.
platform
.
request
(
"
eth_clocks
"
),
self
.
platform
.
request
(
"
eth
"
))
self
.
add_csr
(
"
ethphy
"
)
self
.
submodules
.
ethmac
=
LiteEthMAC
(
phy
=
self
.
ethphy
,
dw
=
32
,
interface
=
"
wishbone
"
,
endianness
=
self
.
cpu
.
endianness
)
self
.
add_wb_slave
(
self
.
mem_map
[
"
ethmac
"
],
self
.
ethmac
.
bus
,
0x2000
)
self
.
add_memory_region
(
"
ethmac
"
,
self
.
mem_map
[
"
ethmac
"
]
|
self
.
shadow_base
,
0x2000
)
self
.
add_csr
(
"
ethmac
"
)
self
.
add_interrupt
(
"
ethmac
"
)
self
.
ethphy
.
crg
.
cd_eth_rx
.
clk
.
attr
.
add
(
"
keep
"
)
self
.
ethphy
.
crg
.
cd_eth_tx
.
clk
.
attr
.
add
(
"
keep
"
)
self
.
platform
.
add_period_constraint
(
self
.
ethphy
.
crg
.
cd_eth_rx
.
clk
,
1e9
/
125e6
)
self
.
platform
.
add_period_constraint
(
self
.
ethphy
.
crg
.
cd_eth_tx
.
clk
,
1e9
/
125e6
)
# Build --------------------------------------------------------------------------------------------
def
main
():
parser
=
argparse
.
ArgumentParser
(
description
=
"
LiteX SoC on Versa ECP5
"
)
parser
.
add_argument
(
"
--gateware-toolchain
"
,
dest
=
"
toolchain
"
,
default
=
"
diamond
"
,
help
=
'
gateware toolchain to use, diamond (default) or trellis
'
)
builder_args
(
parser
)
soc_sdram_args
(
parser
)
parser
.
add_argument
(
"
--sys-clk-freq
"
,
default
=
75e6
,
help
=
"
system clock frequency (default=75MHz)
"
)
parser
.
add_argument
(
"
--with-ethernet
"
,
action
=
"
store_true
"
,
help
=
"
enable Ethernet support
"
)
args
=
parser
.
parse_args
()
cls
=
EthernetSoC
if
args
.
with_ethernet
else
BaseSoC
soc
=
cls
(
toolchain
=
args
.
toolchain
,
sys_clk_freq
=
int
(
float
(
args
.
sys_clk_freq
)),
**
soc_sdram_argdict
(
args
))
builder
=
Builder
(
soc
,
**
builder_argdict
(
args
))
builder
.
build
()
if
__name__
==
"
__main__
"
:
main
()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment