use add_constant() to modify network settings in SoC
This commit is contained in:
parent
8b5204978b
commit
0bb27e9b03
|
@ -73,9 +73,14 @@ gateway `192.168.2.1`. Make sure this is not the default route. Make sure
|
||||||
to adjust your firewall to allow traffic on the `192.168.2.0/24` range.
|
to adjust your firewall to allow traffic on the `192.168.2.0/24` range.
|
||||||
|
|
||||||
If your local network already uses the `192.168.2.0/24` range, then you must
|
If your local network already uses the `192.168.2.0/24` range, then you must
|
||||||
modify `upsilon/firmware/soc.py` to use different IPs. You must rebuild the
|
modify `upsilon/gateware/soc.py` to use different IPs. You must rebuild the
|
||||||
SoC after doing this.
|
SoC after doing this.
|
||||||
|
|
||||||
|
The controller boots using TFTP with port `6969`. If you cannot use this
|
||||||
|
port, you can modify `upsilon/gateware/soc.py` to a different value. This value
|
||||||
|
is hardcoded into the SoC and any change to it requires a rebuild of the SoC.
|
||||||
|
You must also change the port in `upsilon/build/Makefile` under `tftp`.
|
||||||
|
|
||||||
## Setup Images
|
## Setup Images
|
||||||
|
|
||||||
Run `make images` to create all docker images.
|
Run `make images` to create all docker images.
|
||||||
|
|
|
@ -14,7 +14,7 @@ rtl_codegen:
|
||||||
cd rtl && make
|
cd rtl && make
|
||||||
|
|
||||||
csr.json build/digilent_arty/digilent_arty.bit: soc.py
|
csr.json build/digilent_arty/digilent_arty.bit: soc.py
|
||||||
TFTP_SERVER_PORT=6969 python3 soc.py
|
python3 soc.py
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf build csr.json arty.dts arty.dtb mmio.py
|
rm -rf build csr.json arty.dts arty.dtb mmio.py
|
||||||
|
|
|
@ -216,11 +216,21 @@ class _CRG(Module):
|
||||||
self.submodules.idelayctrl = S7IDELAYCTRL(self.cd_idelay)
|
self.submodules.idelayctrl = S7IDELAYCTRL(self.cd_idelay)
|
||||||
|
|
||||||
class UpsilonSoC(SoCCore):
|
class UpsilonSoC(SoCCore):
|
||||||
def __init__(self, variant):
|
def add_ip(self, ip_str, ip_name):
|
||||||
|
for seg_num, ip_byte in enumerate(local_ip.split('.'),start=1):
|
||||||
|
self.add_constant(f"{ip_name}{seg_num}", int(ip_byte))
|
||||||
|
|
||||||
|
def __init__(self,
|
||||||
|
variant="a7-100",
|
||||||
|
local_ip="192.168.2.50",
|
||||||
|
remote_ip="192.168.2.100",
|
||||||
|
tftp_port=6969):
|
||||||
|
|
||||||
sys_clk_freq = int(100e6)
|
sys_clk_freq = int(100e6)
|
||||||
platform = board_spec.Platform(variant=variant, toolchain="f4pga")
|
platform = board_spec.Platform(variant=variant, toolchain="f4pga")
|
||||||
rst = platform.request("cpu_reset")
|
rst = platform.request("cpu_reset")
|
||||||
self.submodules.crg = _CRG(platform, sys_clk_freq, True, rst)
|
self.submodules.crg = _CRG(platform, sys_clk_freq, True, rst)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
These source files need to be sorted so that modules
|
These source files need to be sorted so that modules
|
||||||
that rely on another module come later. For instance,
|
that rely on another module come later. For instance,
|
||||||
|
@ -268,8 +278,6 @@ class UpsilonSoC(SoCCore):
|
||||||
csr_address_width=14,
|
csr_address_width=14,
|
||||||
csr_paging=0x800,
|
csr_paging=0x800,
|
||||||
csr_ordering="big",
|
csr_ordering="big",
|
||||||
local_ip='192.168.2.50',
|
|
||||||
remote_ip='192.168.2.100',
|
|
||||||
timer_uptime = True)
|
timer_uptime = True)
|
||||||
# This initializes the connection to the physical DRAM interface.
|
# This initializes the connection to the physical DRAM interface.
|
||||||
self.submodules.ddrphy = s7ddrphy.A7DDRPHY(platform.request("ddram"),
|
self.submodules.ddrphy = s7ddrphy.A7DDRPHY(platform.request("ddram"),
|
||||||
|
@ -284,16 +292,25 @@ class UpsilonSoC(SoCCore):
|
||||||
module = MT41K128M16(sys_clk_freq, "1:4"),
|
module = MT41K128M16(sys_clk_freq, "1:4"),
|
||||||
l2_cache_size = 8192
|
l2_cache_size = 8192
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Initialize Ethernet
|
||||||
self.submodules.ethphy = LiteEthPHYMII(
|
self.submodules.ethphy = LiteEthPHYMII(
|
||||||
clock_pads = platform.request("eth_clocks"),
|
clock_pads = platform.request("eth_clocks"),
|
||||||
pads = platform.request("eth"))
|
pads = platform.request("eth"))
|
||||||
self.add_ethernet(phy=self.ethphy, dynamic_ip=True)
|
self.add_ethernet(phy=self.ethphy, dynamic_ip=True)
|
||||||
|
|
||||||
|
# Initialize network information
|
||||||
|
self.add_ip(local_ip, "LOCALIP")
|
||||||
|
self.add_ip(remote_ip, "REMOTEIP")
|
||||||
|
self.add_constant("TFTP_SERVER_PORT", tftp_port)
|
||||||
|
|
||||||
|
# Add pins
|
||||||
platform.add_extension(io)
|
platform.add_extension(io)
|
||||||
self.submodules.base = Base(ClockSignal(), self.sdram, platform)
|
self.submodules.base = Base(ClockSignal(), self.sdram, platform)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
soc =UpsilonSoC("a7-100")
|
""" Add modifications to SoC variables here """
|
||||||
|
soc =UpsilonSoC()
|
||||||
builder = Builder(soc, csr_json="csr.json", compile_software=True)
|
builder = Builder(soc, csr_json="csr.json", compile_software=True)
|
||||||
builder.build()
|
builder.build()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue