Shuttler: Add Support on Kasli-Soc Platform #268
No reviewers
Labels
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/artiq-zynq#268
Loading…
Reference in New Issue
No description provided.
Delete Branch "linuswck/artiq-zynq:shuttler_kasli_soc_port"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ARTIQ-ZYNQ Pull Request
This PR adds support for shuttler on Artiq-Zynq platform. Code is ported from artiq repo.
Description of Changes
Gateware:
zynq_clocking.rs:
kasli_soc.py
Firmware:
drtio_eem.rs:
init
fn, as kasli-soc can be operated without a SD Card. Error related to the absence of SD Card should not halt the core.rtio_clocking.rs & main.rs:
Test
Gateware, Firmware and the corresponding frontend scripts are tested on the latest commit.
artiq-zynq:
a28a819b18
artiq: 96941d7c04969aed295381e8bee3ca093f84cde8
Generating device_db.py
kasli-soc-master.json:
As kasli-soc has 4 drtio channels, drtio_destination needs to be manually specified to 5.
On kasli-soc, can only be specified on port 0, 1, 8, 9 (LVDS_25 capable).
Running the example code
The whole system functions as expected in normal dma mode.
There is bug with distributed ddma mode.
In the following case,
For some reasons,
delay(1*s)
may be skipped andself.core_dma.playback_handle(example_waveform_handle)
is dispatched without delay is being waited. The same code running in normal dma mode functions.Type of Changes
I think this could be automated?
@ -121,0 +143,4 @@
o_CLKFBOUT=mmcm_fb_clk,
# 500MHz. Must be more than 400MHz as per DDR3 specs.
Irrelevant here since the DDR3 is on the PS.
@ -121,0 +136,4 @@
p_CLKIN2_PERIOD=period, i_CLKIN2=bootstrap_clk,
i_CLKINSEL=self.clk_sw_fsm.o_clk_sw,
# VCO @ 1.25GHz with MULT=10
Remove "with MULT=10"
@ -121,0 +106,4 @@
p_CLKFBOUT_MULT=8, p_DIVCLK_DIVIDE=1,
# 200MHz for IDELAYCTRL
p_CLKOUT0_DIVIDE=5, p_CLKOUT0_PHASE=0.0, o_CLKOUT0=pll_clk200,
As per DS187, the tolerance on the IDELAYCTRL clock is +/- 10MHz, and using a different clock frequency seems to simply result in different calibrated tap delays that won't really affect us anyway.
Just generate it from the MMCM below with a divide-by-6 (208MHz), and remove that PLL, and remove the enable_sys5x option since it won't really save resources anymore.
(Note that a motivation to have enable_sys5x in misoc was to keep the same clocking structure on release-7 to prevent regressions, but this is not relevant here).
Yes that should be automated. That should be a new PR on artiq repo.
a7cc4aa280
toa4d1be00c0