Hi,

We are pleased to announce that the ARTIQ SAWG is now working on the Sayma board. See the attached scope screenshot!

There are still many rough edges but we are getting there.

Steps to reproduce:
0) We assume you have a Linux machine, Linux skills, and the full ARTIQ development environment installed (Vivado, Rust, etc.). We will make conda packages later. See:
https://m-labs.hk/artiq/manual-master/developing.html

1) Since the HMC830 usually malfunctions, bypass it by applying the attached patch to the firmware.

2) Compile everything:
./artiq/gateware/targets/sayma_rtm.py
./artiq/gateware/targets/sayma_amc.py
Be patient: Vivado compilation time is Ultrascaled.

3) Since we bypassed the HMC830, feed a 1.2GHz clock directly into the DAC_CLK_P SMP connector in the RTM. Put a 50R resistor across the DAC_CLK_N SMP connector. Or use a balun if you have one (but the single-ended mode is explicitly supported by the clock chip).

4) Flash the board:
artiq_flash.py -t sayma_amc --srcbuild misoc_standalone_sayma_amc
Do not put the board into a µTCA crate, as it wouldn't get correctly powered due to a work-in-progress problem. Use the ATX connector instead.

5) Since Ethernet doesn't work yet, the kernel will be loaded as an "idle kernel" through the flash. Run:

cd artiq/examples/sayma
artiq_compile repository/demo.py
artiq_mkfs -f idle_kernel repository/demo.elf sawg.config
artiq_flash -t sayma_amc -f sawg.config proxy storage start

(We've made progress on the Ethernet front, and reception of packets now works; transmission appears to be a PHY configuration problem which is being investigated).

6) Look at the boot messages on the serial console (first FTDI non-JTAG channel, 115200bps, you can use flterm from MiSoC). It should block during the initialization of the AMC/RTM bridge.

7) Since automatic RTM FPGA loading is not implemented yet, load the RTM FPGA manually with the attached OpenOCD script and:
openocd -f sayma_new.cfg -c "pld load 0 artiq_sayma_rtm/top.bit; exit"

8) Look at the serial console again. Loading the RTM FPGA should have unlocked the boot process and the board should initialize the HMC7043 and the DACs, run PRBS tests, and finally your kernel.

9) Observe RF with a scope on the two outputs of a BaseMod (Allaki) in AFE Channel 1. By modifying the kernel and then recompiling and flashing it as in step 5, you should be able to use the other channels as well, and generate other waveforms.

diff --git a/artiq/firmware/libboard_artiq/hmc830_7043.rs b/artiq/firmware/libboard_artiq/hmc830_7043.rs
index ee456beb9..ca0a296b7 100644
--- a/artiq/firmware/libboard_artiq/hmc830_7043.rs
+++ b/artiq/firmware/libboard_artiq/hmc830_7043.rs
@@ -22,7 +22,7 @@ mod clock_mux {
             csr::clock_mux::out_write(
                 1*CLK_SRC_EXT_SEL |  // use ext clk from sma
                 1*REF_CLK_SRC_SEL |
-                1*DAC_CLK_SRC_SEL);
+                0*DAC_CLK_SRC_SEL);
         }
     }
 }
@@ -191,6 +191,6 @@ mod hmc7043 {
 
 pub fn init() -> Result<(), &'static str> {
     clock_mux::init();
-    hmc830::init()?;
+    //hmc830::init()?;
     hmc7043::init()
 }
# openocd -f sayma_new.cfg -c "pld load 0 rtm.bit; exit"
# openocd -f sayma_new.cfg -c "pld load 1 amc.bit; exit"

interface ftdi
ftdi_device_desc "Quad RS232-HS"
ftdi_vid_pid 0x0403 0x6011
# if there are multiple Sayma:
#ftdi_location 5:2
ftdi_channel 0
# EN_USB_JTAG on ADBUS7: out, high
# nTRST on ADBUS4: out, high, but R46 is DNP
ftdi_layout_init 0x0098 0x008b
reset_config none

adapter_khz 5000
transport select jtag

source [find cpld/xilinx-xc7.cfg]
set CHIP XCKU040
source [find cpld/xilinx-xcu.cfg]

init
_______________________________________________
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq

Reply via email to