This commit is contained in:
Sebastien Bourdeauducq 2023-10-11 17:56:30 +08:00
parent 136e24f597
commit 812aea33b3
3 changed files with 14 additions and 19 deletions

View File

@ -1,10 +1,11 @@
use crate::pl;
use embedded_hal::prelude::_embedded_hal_blocking_delay_DelayUs; use embedded_hal::prelude::_embedded_hal_blocking_delay_DelayUs;
use libboard_zynq::timer::GlobalTimer; use libboard_zynq::timer::GlobalTimer;
use libconfig::Config; use libconfig::Config;
use libsupport_zynq::alloc::format; use libsupport_zynq::alloc::format;
use log::{debug, error, info}; use log::{debug, error, info};
use crate::pl;
struct SerdesConfig { struct SerdesConfig {
pub delay: [u8; 4], pub delay: [u8; 4],
} }
@ -61,11 +62,7 @@ unsafe fn assign_delay(timer: &mut GlobalTimer) -> SerdesConfig {
if prev_low_rate <= curr_low_rate && curr_low_rate >= 0.5 { if prev_low_rate <= curr_low_rate && curr_low_rate >= 0.5 {
let prev_dev = 0.5 - prev_low_rate; let prev_dev = 0.5 - prev_low_rate;
let curr_dev = curr_low_rate - 0.5; let curr_dev = curr_low_rate - 0.5;
let selected_idx = if prev_dev < curr_dev { let selected_idx = if prev_dev < curr_dev { curr_dly - 1 } else { curr_dly };
curr_dly - 1
} else {
curr_dly
};
// The setup setup/hold calibration timing (even with // The setup setup/hold calibration timing (even with
// tolerance) might be invalid in other lanes due to skew. // tolerance) might be invalid in other lanes due to skew.
@ -110,11 +107,7 @@ unsafe fn assign_delay(timer: &mut GlobalTimer) -> SerdesConfig {
let index = (best_dly as isize + dly_delta) as u8; let index = (best_dly as isize + dly_delta) as u8;
let low_rate = read_align(index, timer); let low_rate = read_align(index, timer);
// abs() from f32 is not available in core library // abs() from f32 is not available in core library
let deviation = if low_rate < 0.5 { let deviation = if low_rate < 0.5 { 0.5 - low_rate } else { low_rate - 0.5 };
0.5 - low_rate
} else {
low_rate - 0.5
};
if deviation < min_deviation { if deviation < min_deviation {
min_deviation = deviation; min_deviation = deviation;
@ -128,9 +121,7 @@ unsafe fn assign_delay(timer: &mut GlobalTimer) -> SerdesConfig {
debug!("setup/hold timing calibration: {:?}", delay_list); debug!("setup/hold timing calibration: {:?}", delay_list);
SerdesConfig { SerdesConfig { delay: delay_list }
delay: delay_list,
}
} }
fn read_align(dly: u8, timer: &mut GlobalTimer) -> f32 { fn read_align(dly: u8, timer: &mut GlobalTimer) -> f32 {
@ -219,7 +210,11 @@ pub fn init(timer: &mut GlobalTimer, cfg: &Config) {
info!("storing calibration timing values into sd card"); info!("storing calibration timing values into sd card");
} }
Err(e) => { Err(e) => {
error!("calibration successful but calibration timing values cannot be stored into sd card. Error:{}", e); error!(
"calibration successful but calibration timing values cannot be stored into sd card. \
Error:{}",
e
);
} }
}; };
} }

View File

@ -29,10 +29,10 @@ pub mod mem;
#[rustfmt::skip] #[rustfmt::skip]
#[path = "../../../build/pl.rs"] #[path = "../../../build/pl.rs"]
pub mod pl; pub mod pl;
#[cfg(has_si5324)]
pub mod si5324;
#[cfg(has_drtio_eem)] #[cfg(has_drtio_eem)]
pub mod drtio_eem; pub mod drtio_eem;
#[cfg(has_si5324)]
pub mod si5324;
use core::{cmp, str}; use core::{cmp, str};

View File

@ -13,11 +13,11 @@ use core::cell::RefCell;
use ksupport; use ksupport;
use libasync::task; use libasync::task;
#[cfg(has_drtio_eem)]
use libboard_artiq::drtio_eem;
#[cfg(feature = "target_kasli_soc")] #[cfg(feature = "target_kasli_soc")]
use libboard_artiq::io_expander; use libboard_artiq::io_expander;
use libboard_artiq::{identifier_read, logger, pl}; use libboard_artiq::{identifier_read, logger, pl};
#[cfg(has_drtio_eem)]
use libboard_artiq::drtio_eem;
use libboard_zynq::{gic, mpcore, timer::GlobalTimer}; use libboard_zynq::{gic, mpcore, timer::GlobalTimer};
use libconfig::Config; use libconfig::Config;
use libcortex_a9::l2c::enable_l2_cache; use libcortex_a9::l2c::enable_l2_cache;