DRTIO port - gateware
#140
Merged
sb10q
merged 13 commits from mwojcik/artiq-zynq:drtio_gateware
into master
2 years ago
Loading…
Reference in New Issue
There is no content yet.
Delete Branch 'mwojcik/artiq-zynq:drtio_gateware'
Deleting a branch is permanent. It CANNOT be undone. Continue?
This is a part of few pull requests for DRTIO functionality. They have been broken up to allow easier code review overall. They're identical in contents to drtio_port branch.
This PR includes changes in gateware to accomodate DRTIO features, as well as AXI specific DRTIO aux controller.
This PR can be merged anytime as it doesn't have external dependencies.
Any feedback and suggestions are welcome.
@ -0,0 +1,85 @@
"""Auxiliary controller, common to satellite and master"""
I would rename the file to
drtio_aux_controller.py
.@ -67,0 +98,4 @@
Instance("BUFG", i_I=rtiox4_clk, o_O=self.cd_rtiox4.clk),
MultiReg(pll_locked, self.pll_locked.status)
]
Share with Kasli-SoC?
...or even put it in
artiq.gateware
and share with the other boards.It's the same thing for artiq kasli, kc705 and sayma_rtm boards. I could separate it and save few lines everywhere, but where to put it, so it fits nicely? I'm thinking
artiq.gateware.rtio.clock_multiplier
? or maybe justartiq.gateware.clock_multiplier
?Maybe
artiq.gateware.rtio.xilinx_clocking
, along with the SERDES rules?@ -67,0 +109,4 @@
"-of [get_cells -filter {{REF_NAME == OSERDESE2}}]] "
"-to [get_pins -filter {{REF_PIN_NAME == D}} "
"-of [get_cells -filter {{REF_NAME == ISERDESE2}}]]"
)
ditto
@ -73,3 +148,1 @@
platform.toolchain.bitstream_commands.extend([
"set_property BITSTREAM.GENERAL.COMPRESS True [current_design]",
])
platform = prepare_zc706_platform(platform)
No need to return
platform
and reassign it. The object is mutated in-place.@ -128,0 +383,4 @@
self.submodules.drtiosat = core
self.csr_devices.append("drtiosat")
# Repeaters - there would be for i != 0 - however zc706 only has one SFP
# and no other means to connect to
There's the link on the MGT SMAs but I doubt anyone needs this. @dhslichter ?
@ -128,0 +265,4 @@
self.rustc_cfg["RTIO_FREQUENCY"] = str(self.drtio_transceiver.rtio_clk_freq/1e6)
if use_si5324_33:
You can use assume it is true at all times and simplify the code accordingly. Only NIST backplanes are supported on ZC706 and they need the 3.3V signals.
So there won't be "simple" master/satellite? What about the board I've been testing it on, is it with a backplane?
"Simple" targets were just for testing, on the same hardware that has the backplane installed (even if they don't use the backplane).
Also fine to remove these targets, they were only there for the initial development.
Okay, makes sense, I was somewhat worried about mismatched voltages for si5324. Although I don't think this is the place to be removing the simple targets, that should be done in another PR (not only unrelated functionally to drtio, it also touches gateware, nix scripts and readme).
Changing the IOSTANDARD here does not actually change the voltage produced by the FPGA I/O, and will not damage the Si5324. In fact it even works correctly in practice when the voltage in the CMOS/TTL IOSTANDARD is wrong.
@ -178,0 +198,4 @@
platform.add_platform_command("set_input_jitter clk_fpga_0 0.24")
# kasli_soc has no SATA, but it has 4x SFP
# not sure yet why sfp0 is omitted in MasterMode
It's omitted on Kasli because it's used for Ethernet.
Kasli-SoC has a dedicated RJ45 port.
ab0c205dd2
into master 2 years agoab0c205dd2
.Step 1:
From your project repository, check out a new branch and test the changes.Step 2:
Merge the changes and update on Gitea.