180H_FPGA时钟结构

下面为看手册的摘要

PLL 端口信号解释

信号名含义
PLL_PWDpower down
pll_rst复位PLL
clkin_dsel0:clkin1作为参考时钟;1:clkin2作为参考时钟
clkfb外部反馈时钟输入
dyn_idiv[5:0]动态 input divider(输入分频器) 分频系数 0:64分频;1:63分频;…
dyn_fdiv[5:0]动态feedback divider(反馈分频器) 0:64分频;1:63分频;…
dyn_odiv[5:0]动态clkout_0_divider (输出0分频器) 0:128分频;1:120分频;…8为步进
dyn_odiv2/3/4[5:0]动态clkout_2/3/4_divider(输出2/3/4分频器) 0:128分频;1:126分频;…2为步进
dyn_phase1/2/3/4[3:0]clkout_1/2/3/4动态相位:0:0度;1:22.5度;…22.5度为步进
reset_idiv复位input divider(输入分频器)
reset_odiv复位output divider(输出分频器)
clkout0/1/2/3/4_gategate(门控)对应输出时钟
pll_lock锁定
clkout0/1/2/3/4时钟输出

PLL 的输出频点计算

只看反馈时钟选择内部CLKOUT[1:0]情况。
divider模式 :clkout[0] = clkin x fdiv/idiv
divider模式 :[1] = 只是clkout[0]的移相
divider模式 :clkout[2]=clkin x fdiv /(idiv x odiv2)
divider模式 :clkout[3]= clkin x fdiv /(idiv x odiv3)
frac_divider模式:clkout[3]= 0.5 x clkin x fdiv x odiv0 /(idiv x ( clkout3_div125_m+clkout3_div125_n*0.125 ) );
注:(clkout3_div125_m,clkout3_div125_n) != (1,1)
clkout3 m(1~63) + (07)N.125小数分频;(1.0 (63+7x0.125) )
divider模式 :clkout[4]= clkin x fdiv /(idiv x odiv4)
cnt_divider模式 :clkout[4]= clkin x fdiv / (idiv x odiv4) x(1/2^33) x clkout4_div32bit_k
保证 : 2^33 / clkout4_div32bit_k是整数 那么 clkout4_div32bit_k必须是2的整数幂;clkout0/clkout4 divider<=50

结论:pll能保证clkfb时钟和clkin时钟的相位保持一致。

180H时钟概述

3种时钟类型

GCLK:global clk,基于象限。整个芯片分4象限;每个象限各有14个GCLK网络。
RCLK:regional clk,8个region,每个region各有2个RCLK
IO_CLK:专用于高速接口应用的器件每一侧(左侧除外)各有四个 IO CLK 网络。

2种时钟硬核

PLL:PGT180H 提供了 8 个 PLL,以 满足用户关于频率变化和相位调整的需求。
DLL:PGT180H 片内提供了 8 个DLL 为高速接口应用提供了延 迟锁相功能。

3种时钟IO类型

a)普通时钟输入管脚(共18个)
b)PLL 参考时钟输入管脚
c)PLL 反馈输入时钟管脚
下文的时钟输入管脚(IO_CLK)指三者统称。

时钟输入管脚 既可以作为普通IO使用,又可以作为时钟输入使用。
当作为时钟输入使用的优点:避免普通布线资源带来的干扰。

时钟输入管脚可直接接入到内部所有时钟网络,包括 GLOBAL CLK,REGIONAL CLK 或 IO CLK; 从而减少干扰,提高时钟质量。时钟输入管脚可以是一对差分输入端口,也可以是一个单端输入端口; 选择单端输入时,仅仅 PAD T 可直接接入到内部时钟网络。

时钟输入管脚在哪?

BANK1/4/9/12 没有时钟输入管脚,其它 BANK 各有两个时钟输入管脚;整个芯片共有 18 个时钟输入管脚。

时钟输入管脚是否能调整输入时钟的延时(相位)?

CLKDELAY模块

在这里插入图片描述
每个时钟输入管脚都有有 CLKDELAY模块,可以调整范围255 x 25ps的延时。

GCLK

不但时钟可以进入GCLK,而且fanout 较高的信号(如 CE/RS 信号)也可以用GCLK 来实现。

GCLK 的源有哪些?

在这里插入图片描述
图中可以看到:时钟输入管脚、PLL 输出时钟、IOCLKDIV 输出时钟、HSST的输出时钟和内部逻辑信号都可以作为GCLK的源。
全局时钟输入源之间可能出现冲突。

USCM是什么?

USCM(User Select Clock Mux)为 GLOBAL CLK 提供了 clock gate 和 clock mux 的功能,它支持 CLKBUFG,CLKBUFGCE 以及 CLKBUFGMUX 三种模式。每个 GLOBAL CLK 网络均包含一个 USCM 模块,所以 Titan 系列产品共有 56 个 USCM 模块。

时钟资源在FPGA的位置布局

在这里插入图片描述

RCLK

REGIONAL CLK 基于 Region 分布,每个 Region 有各自独立的 2 个 REGIONAL CLK 网络。除了驱动本地 Region,也可以通过 rhmux(regional horizontal mux)将水平方向相邻的两个 REGIONAL CLK联在一起作为一个大 Region 使用。
与 GLOBAL CLK 相比,REGIONAL CLK 的优点是延迟小,skew 小,但它分布范围有限;

RCLK的源有哪些?

在这里插入图片描述

在这里插入图片描述
只在region内部会多一个 DCC DIV 源。

IO_CLK

在这里插入图片描述
可以看到有3个模块组成。
在这里插入图片描述

ioclkbuf

相当于一个gate

ioclkmux

选择

ioclkdiv

分频比,“2”; “3.5”; “4”; “5”

为什么PLL_CLKOUT[2/3/4]不能连接到IO_CLK?

unknown

DDC(Dedicated DQS Circuit)是每个 IO GROUP 配有一个专用的 DQS 控制电路,主要用于 DDR memory 接口应用。
DCC(Dedicated CDR Circuit),为专用 CDR 电路,可用于高速异步输入接口应用。

PLL

在这里插入图片描述
频率鉴相器(PFD)
CP(Charge Pump)
VCO 频率锁定在 600MHz~1.3GHz 之间。
反馈时钟为CLKOUT[0]时:
在这里插入图片描述
在这里插入图片描述

PLL的源有哪些?

在这里插入图片描述
时钟源切换后需要对 PLL 复位以便它重新锁定。

PLL外部 FB的源有哪些?

在这里插入图片描述

在 VCO 锁定 LOOP 内的时钟不能被 GATE:例如选择 CLKOUT[0]内部反馈时,该时钟输出不应被动态 GATE。
PLL 时钟输出端口 CLKOUT[1]~CLKOUT[4]均支持可选的相位调节功能,相位调整的粒度为 1/8个时钟周期。
PLL 的 CLKOUT[2]支持输出频率的进一步分频,CLKOUT[2]的分频比由 O2DIV 决定,选中时:
CLKOUT[2]的频率 = CLKOUT[0]的频率/O2DIV
CLKOUT[3]支持输出频率的进一步分频,包括 O3DIV 决定的分频和支持基于 0.125 的简
易小数分频。选择 O3DIV 模式时:
CLKOUT[3]的频率 = CLKOUT[0]的频率/O3DIV
选择基于 0.125 的简易小数分频模式时:
CLKOUT[3]的频率 = (VCO 频率/2)/(M+N*0.125)
其中 M=1,2 . . . 64, N=0,1,…7 (注:当 M=1 时 N!=0)
PLL 的 CLKOUT[4]支持输出频率的进一步分频,包括 O4DIV 决定的分频和支持基于 32bit 计数
器的简易小数分频。选择 O4DIV 模式时:
CLKOUT[4]的频率 = CLKOUT[0]的频率/O4DIV
选择基于 32bit 计数器的简易小数分频时:
CLKOUT[4]的频率 = VCO 的频率/(2^33/Delta)
Delta=1~(2^32-1)
如对 VCO 锁定 LOOP 内的
配置作动态修改后,需要对 PLL 复位。如对其它 output divider 配置作动态修改后,建议使用
RESET_ODIV 端口对分频计数器作复位,并在之后复位 PLL 输出驱动的相关逻辑,以避免死锁。

关键原则

PLL 的端口 CLKIN 和 CLKFB 相位对齐

DLL

PGT180H 芯片有 8 个 DLL,芯片左上角、左下角、右上角和右下角各有两个。DLL 的主要功能是动态锁定输入参考时钟的频率,输出该时钟周期的四分之一等效 delay step 数目。这个 Delay step可实时追踪温度和电压的变化

如何计算参数的值?

#include <iostream>
#include<iomanip>
using namespace std;
//输入19.44M,输出77.76M
//计算分频系数
//CLKOUT[3]的频率 = (VCO 频率/2)/(M+N*0.125)
//其中 M=1,2 . . . 64, N=0,1,…7 (注:当 M=1 时 N!=0)
//vco频率 = clkin频率 x (fdiv/idiv) x odiv
//(155.5231104MHz,155.5168896MHz)
int main(int argc, char** argv) {
    float     clkin=19440000  ;//固定HZ
    float     idiv =0  ;//1~64
    float     fdiv =0  ;//1~64  
    float     odiv =0  ;//128~2   step = 8  
    float     m    =0  ;//1~63
    float     n    =0  ;//1~7
    float     vco  =0  ;// 600M~1300
    float     temp    =0  ;
    cout.width(32);     
    for(odiv=2;odiv<=128;odiv=odiv+8){
            for(fdiv=1;fdiv<=64;fdiv++){
                    for(idiv=1;idiv<=64;idiv++){
                         vco = clkin*fdiv*odiv/idiv;
                         if((vco>= 600000000) && (vco<=1300000000) ){//vco检查
                            for(m=1;m<=64;m++){
                                for(n=1;n<=7;n++){
                                    temp= (vco/2)/(m+n*0.125);
                                    if((temp>=77700000)  && (temp<=77800000) ){
                                        cout << fixed << setprecision(6) \
                                             << " temp="    << (temp/1000000) \
                                             << " m   ="    << m    \ 
                                             << " n   ="    << n    \
                                             << " idiv="    << idiv    \
                                             << " fdiv="    << fdiv    \
                                             << " odiv="    << odiv    \        
                                             << " vco= "    << (vco/1000000)    \                                                                                                                                
                                             <<endl;
                                       }
                               }                                
                            }
                        }                    
                    }
            }
    }
    return 0;
}

在这里插入图片描述

[1] PGT180H时钟UG
[2] 简述DLL与PLL的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1615549892

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值