From 325fc5a4f9ea8dcbaf7a4ec90e8e9cf3460aa378 Mon Sep 17 00:00:00 2001 From: morgan Date: Tue, 3 Sep 2024 11:37:00 +0800 Subject: [PATCH] cxp upconn fw: add trigger packet tester --- src/libboard_artiq/src/cxp_upconn.rs | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/libboard_artiq/src/cxp_upconn.rs b/src/libboard_artiq/src/cxp_upconn.rs index f3bcbe9..21e1bc3 100644 --- a/src/libboard_artiq/src/cxp_upconn.rs +++ b/src/libboard_artiq/src/cxp_upconn.rs @@ -3,6 +3,41 @@ use libboard_zynq::{println, timer::GlobalTimer}; use crate::pl::csr; +pub fn trigger_test(timer: &mut GlobalTimer) { + const LEN: usize = 4 * 8; + let mut pak_arr: [u8; LEN] = [0; LEN]; + + unsafe { + csr::cxp::trig_trig_delay_write(0x05); + csr::cxp::trig_linktrigger_write(0x05); // mode 0 + csr::cxp::trig_stb_write(1); // send trig + timer.delay_us(1); + + let mut i: usize = 0; + while csr::cxp::trig_dout_valid_read() == 1 { + pak_arr[i] = csr::cxp::trig_dout_pak_read(); + // println!("received {:#04X}", pak_arr[i]); + csr::cxp::trig_inc_write(1); + i += 1; + } + + println!("trigger packet"); + println!("arr = ["); + for i in 0..(LEN / 4) { + println!( + "{:#03} {:#04X} {:#04X} {:#04X} {:#04X},", + i + 1, + pak_arr[i * 4], + pak_arr[i * 4 + 1], + pak_arr[i * 4 + 2], + pak_arr[i * 4 + 3] + ) + } + println!("]"); + println!("============================================"); + } +} + pub fn trigger_ack_test(timer: &mut GlobalTimer) { const LEN: usize = 4 * 8; let mut pak_arr: [u8; LEN] = [0; LEN]; @@ -18,6 +53,7 @@ pub fn trigger_ack_test(timer: &mut GlobalTimer) { i += 1; } + println!("trigger ack packet"); println!("arr = ["); for i in 0..(LEN / 4) { println!( @@ -66,6 +102,7 @@ pub fn pipeline_test(timer: &mut GlobalTimer) { i += 1; } + println!("data packet"); println!("arr = ["); for i in 0..(LEN / 4) { println!(