From 4a88ba2d46ead22c2a4f99526038de45dfd82d93 Mon Sep 17 00:00:00 2001 From: morgan Date: Mon, 2 Sep 2024 16:07:39 +0800 Subject: [PATCH] cxp upconn fw: add trigger ack test --- src/libboard_artiq/src/cxp_upconn.rs | 43 ++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/src/libboard_artiq/src/cxp_upconn.rs b/src/libboard_artiq/src/cxp_upconn.rs index 63ce128..ca34648 100644 --- a/src/libboard_artiq/src/cxp_upconn.rs +++ b/src/libboard_artiq/src/cxp_upconn.rs @@ -3,6 +3,37 @@ use libboard_zynq::{println, timer::GlobalTimer}; use crate::pl::csr; +pub fn trigger_ack_test(timer: &mut GlobalTimer) { + const LEN: usize = 4 * 8; + let mut pak_arr: [u8; LEN] = [0; LEN]; + + unsafe { + csr::cxp::txtrig_ack_write(1); // send IO ack + + let mut i: usize = 0; + while csr::cxp::txtrig_dout_valid_read() == 1 { + pak_arr[i] = csr::cxp::txtrig_dout_pak_read(); + // println!("received {:#04X}", pak_arr[i]); + csr::cxp::txtrig_inc_write(1); + i += 1; + } + + 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 pipeline_test(timer: &mut GlobalTimer) { let arr = [ // 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 @@ -24,10 +55,13 @@ pub fn pipeline_test(timer: &mut GlobalTimer) { csr::cxp::txcore_din_pak_write(*a); } + // wait for pipelining + timer.delay_us(1); + let mut i: usize = 0; while csr::cxp::txcore_dout_valid_read() == 1 { pak_arr[i] = csr::cxp::txcore_dout_pak_read(); - println!("received {:#04X}", pak_arr[i]); + // println!("received {:#04X}", pak_arr[i]); csr::cxp::txcore_inc_write(1); i += 1; } @@ -35,14 +69,16 @@ pub fn pipeline_test(timer: &mut GlobalTimer) { println!("arr = ["); for i in 0..(LEN / 4) { println!( - " {:#04X} {:#04X} {:#04X} {:#04X},", + "{:#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!("]"); + println!("============================================"); } } @@ -95,6 +131,7 @@ pub fn tx_test(timer: &mut GlobalTimer) { ) } println!("]"); + println!("============================================"); timer.delay_us(2_000_000); } }