1
0
Fork 0

master wrpll: rename sma_pll to wrpll_refclk

gw& fw: add mmcm prefix to drp csr
This commit is contained in:
morgan 2024-02-29 17:42:57 +08:00
parent 5aade6abb2
commit 963a4822c4
3 changed files with 29 additions and 29 deletions

View File

@ -258,8 +258,8 @@ class GenericMaster(SoCCore):
self.specials += MultiReg(self.sys_crg.clk_sw_fsm.o_clk_sw & self.sys_crg.mmcm_locked, self.gt_drtio.clk_path_ready, odomain="bootstrap") self.specials += MultiReg(self.sys_crg.clk_sw_fsm.o_clk_sw & self.sys_crg.mmcm_locked, self.gt_drtio.clk_path_ready, odomain="bootstrap")
if with_wrpll: if with_wrpll:
self.submodules.sma_pll = wrpll.SMA_PLL(platform.request("sma_clkin")) self.submodules.wrpll_refclk = wrpll.SMAFrequencyMultiplier(platform.request("sma_clkin"))
self.csr_devices.append("sma_pll") self.csr_devices.append("wrpll_refclk")
self.submodules.main_dcxo = si549.Si549(platform.request("ddmtd_main_dcxo_i2c")) self.submodules.main_dcxo = si549.Si549(platform.request("ddmtd_main_dcxo_i2c"))
self.csr_devices.append("main_dcxo") self.csr_devices.append("main_dcxo")

View File

@ -126,7 +126,7 @@ class WRPLL(Module, AutoCSR):
self.submodules.ev = SharedIRQ(self.ref_tag_ev, self.main_tag_ev) self.submodules.ev = SharedIRQ(self.ref_tag_ev, self.main_tag_ev)
class SMA_PLL(Module, AutoCSR): class SMAFrequencyMultiplier(Module, AutoCSR):
def __init__(self, sma_clkin): def __init__(self, sma_clkin):
freq = 125e9 freq = 125e9
period = 1e9/freq # ns period = 1e9/freq # ns
@ -139,13 +139,13 @@ class SMA_PLL(Module, AutoCSR):
self.mmcm_locked = CSRStatus() self.mmcm_locked = CSRStatus()
self.mmcm_reset = CSRStorage() self.mmcm_reset = CSRStorage()
self.drp_addr = CSRStorage(7) self.mmcm_daddr = CSRStorage(7)
self.drp_in = CSRStorage(16) self.mmcm_din = CSRStorage(16)
self.drp_w_en = CSRStorage() self.mmcm_dwen = CSRStorage()
self.drp_en = CSRStorage() self.mmcm_den = CSRStorage()
self.drp_clk = CSRStorage() self.mmcm_dclk = CSRStorage()
self.drp_out = CSRStatus(16) self.mmcm_dout = CSRStatus(16)
self.drp_ready = CSRStatus() self.mmcm_dready = CSRStatus()
# # # # # #
@ -170,13 +170,13 @@ class SMA_PLL(Module, AutoCSR):
p_CLKOUT0_DIVIDE_F=16, p_CLKOUT0_PHASE=0.0, o_CLKOUT0=ref_clk, p_CLKOUT0_DIVIDE_F=16, p_CLKOUT0_PHASE=0.0, o_CLKOUT0=ref_clk,
# Dynamic Reconfiguration Port # Dynamic Reconfiguration Port
i_DADDR = self.drp_addr.storage, i_DADDR = self.mmcm_daddr.storage,
i_DI = self.drp_in.storage, i_DI = self.mmcm_din.storage,
i_DWE = self.drp_w_en.storage, i_DWE = self.mmcm_dwen.storage,
i_DEN = self.drp_en.storage, i_DEN = self.mmcm_den.storage,
i_DCLK = self.drp_clk.storage, i_DCLK = self.mmcm_dclk.storage,
o_DO = self.drp_out.status, o_DO = self.mmcm_dout.status,
o_DRDY = self.drp_ready.status o_DRDY = self.mmcm_dready.status
), ),
Instance("BUFG", i_I=ref_clk, o_O=self.cd_ref.clk), Instance("BUFG", i_I=ref_clk, o_O=self.cd_ref.clk),
AsyncResetSynchronizer(self.cd_ref, ~self.mmcm_locked.status), AsyncResetSynchronizer(self.cd_ref, ~self.mmcm_locked.status),

View File

@ -548,8 +548,8 @@ pub mod wrpll {
} }
} }
#[cfg(has_sma_pll)] #[cfg(has_wrpll_refclk)]
pub mod sma_pll { pub mod wrpll_refclk {
use super::*; use super::*;
pub struct MmcmSetting { pub struct MmcmSetting {
@ -568,45 +568,45 @@ pub mod sma_pll {
fn one_clock_cycle(timer: &mut GlobalTimer) { fn one_clock_cycle(timer: &mut GlobalTimer) {
unsafe { unsafe {
csr::sma_pll::drp_clk_write(1); csr::wrpll_refclk::mmcm_dclk_write(1);
timer.delay_us(1); timer.delay_us(1);
csr::sma_pll::drp_clk_write(0); csr::wrpll_refclk::mmcm_dclk_write(0);
timer.delay_us(1); timer.delay_us(1);
} }
} }
fn set_addr(address: u8) { fn set_addr(address: u8) {
unsafe { unsafe {
csr::sma_pll::drp_addr_write(address); csr::wrpll_refclk::mmcm_daddr_write(address);
} }
} }
fn set_data(value: u16) { fn set_data(value: u16) {
unsafe { unsafe {
csr::sma_pll::drp_in_write(value); csr::wrpll_refclk::mmcm_din_write(value);
} }
} }
fn set_enable(en: bool) { fn set_enable(en: bool) {
unsafe { unsafe {
let val = if en { 1 } else { 0 }; let val = if en { 1 } else { 0 };
csr::sma_pll::drp_en_write(val); csr::wrpll_refclk::mmcm_den_write(val);
} }
} }
fn set_write_enable(en: bool) { fn set_write_enable(en: bool) {
unsafe { unsafe {
let val = if en { 1 } else { 0 }; let val = if en { 1 } else { 0 };
csr::sma_pll::drp_w_en_write(val); csr::wrpll_refclk::mmcm_dwen_write(val);
} }
} }
fn get_data() -> u16 { fn get_data() -> u16 {
unsafe { csr::sma_pll::drp_out_read() } unsafe { csr::wrpll_refclk::mmcm_dout_read() }
} }
fn drp_ready() -> bool { fn drp_ready() -> bool {
unsafe { csr::sma_pll::drp_ready_read() == 1 } unsafe { csr::wrpll_refclk::mmcm_dready_read() == 1 }
} }
fn read(timer: &mut GlobalTimer, address: u8) -> u16 { fn read(timer: &mut GlobalTimer, address: u8) -> u16 {
@ -642,7 +642,7 @@ pub mod sma_pll {
fn reset(rst: bool) { fn reset(rst: bool) {
unsafe { unsafe {
let val = if rst { 1 } else { 0 }; let val = if rst { 1 } else { 0 };
csr::sma_pll::mmcm_reset_write(val) csr::wrpll_refclk::mmcm_reset_write(val)
} }
} }
@ -667,7 +667,7 @@ pub mod sma_pll {
// wait for the mmcm to lock // wait for the mmcm to lock
timer.delay_us(100); timer.delay_us(100);
let locked = unsafe { csr::sma_pll::mmcm_locked_read() == 1 }; let locked = unsafe { csr::wrpll_refclk::mmcm_locked_read() == 1 };
if !locked { if !locked {
return Err("failed to generate 125Mhz ref clock from SMA CLKIN"); return Err("failed to generate 125Mhz ref clock from SMA CLKIN");
} }