Xilinx UltraScale+DDR4项目开发(二)——DDR4 MIG的时钟网络

文摘   2024-10-31 17:11   江苏  
一、DDR4 MIG的时钟框架

二、DDR4 MIG的时钟频率计算

三、DDR4 MIG的IP中时钟设置

四、往期文章链接

一、DDR4 MIG的时钟框架

DDR4控制器中,包括一个MMCM和两个bufg,并且每个I/O Bank需要配置一个TXPLL。

Differential GCIO的输入时钟,差分转单端后,再通过BUFG输入到MMCM4_ADV原语中。经过MMCM的两路时钟输出,一路用于TXPLL和用户侧的时钟(300M),另一路生成2分频的时钟(150M)。

二、DDR4 MIG的时钟频率计算

从代码底层来看,ddr4_phy_v2_2_0_pll和ddr4_v2_2_17_infrastructure这两个模块实现了DDR4控制的所有时钟的产生,下面的仿真中表示的div_clk表示CLKOUT0,riu_clk表示CLKOUT6。

ddr4_v2_2_17_infrastructure模块中包含了一个MMCM4_ADV,将输入的100M的时钟,通过倍频分频从而产生所需要的时钟,计算公式如下:

对应原语中的数值一一对应进行计算,以CLKOUT0为标准来计算,CLKIN_PERIOD_NS_MMCM数值表示的是输入时钟的周期,单位NS,9996ps,这个是通过DDR4的IP的用户界面设置的,也就是100M的差分时钟输入,外部硬件需要提供100M的差分时钟。M数值,也就是CLKFBOUT_MULT_MMCM的数值为15。D数值,也就是DIVCLK_DIVIDE_MMCM的数值为5。O数值,也就是CLKOUT0_DIVIDE_MMCM的数值为5。那么计算出CLKOUT0的频率为10015/(51)=300M。这个适用于MMCM的原语,FPGA开发者可以自己去计算验证下,后期可以直接调用原语进行例化。

TXPLL中进行计算pll_clk的数值, CLKOUTPHY_MODE为"VCO_2X",表示输出时钟频率为VCO频率的2倍。

VCO的计算公式,输入时钟频率CLKFBOUT_MULT_PLL/DIVCLK_DIVIDE_PLL=300M4=1200M,PHY芯片时钟双边沿采样,故DDR4的运行频率为2400MHz。对于TXPLL的输出PHY时钟,还需要有90°的相位调整。


三、DDR4 MIG的IP中时钟设置

DDR4 MIG的IP中关于时钟的设置有四处,一是tck,也就是833ps,1200M,输入给TXPLL的时钟为300M,也就是1200M/4=300M;二是输入参考时钟频率选择,9996ps,100M;三是输入差分或者No buffer;四是用户侧时钟的生成,与100M输入差分是同源的,支持自定义输出指定的时钟频率。

四、往期文章链接

Xilinx UltraScale+DDR4项目开发(一)——DDR4 MIG的ip接口信号


小灰灰的FPGA
努力成为一名FPGA全栈工程师,分享FPGA、嵌入式、硬件及软件知识,扩充自己的知识面,比如图像处理,通信协议以及数据处理等方向。
 最新文章