Sp6 PLL and PLL_DRP使用技巧小结
第一部分:SP6PLL资源与常见的使用方法
(1)SP6 PLL资源
1.Sp6包含了多个CMT模块,XC6SLX45T系列芯片包含有4个CM模块,每个时钟管理模块CMT包含了两个DCM和一个PLL;
2. PLL的主要目的是
l 用于消除时钟网络偏移
l 频率合成器
l 抖动过滤器(针对内部或者外部与CMT的DCMs相连时钟信号)
3.PLL模块的输入参考时钟和反馈时钟信号可以是:IBUFG、BUFG、IBUF、PLL输出、DCM输出;
4.PLL原语有两种:PLL_BASE和PLL_ADV
l PLL_BASE:提供了单个PLL最常用的功能时钟偏移消除、频率合成、相位转移、占空比设计。在绝大多数场合下,使用PLL_BASE就可以了;
l PLL_ADV:除了PLL_BASE提供的功能外,还支持动态重新配置PLL的功能。
5.常见的配置方式:跟PLL模块反馈时钟信号有关
l CLK_FEEDBACK=CLKFBOUT:压控振荡器的工作频率F = Fin *M/D
l CLK_FEEDBACK=CLKOUT0:压控振荡器的工作频率F = Fin *M*O0/D
Fout = F/O
5.使用的约束条件
l 压控振荡器工作频率范围有限,这一点在sp6数据手册里有限定。
l 输入频率有最大值和最小值。
l 时钟信号占空比只有是离散的才可以编程控制
l 相位调整,最小单元是45度。
(2)配置方法
1.用于消除时钟网络偏移的情形
反馈回路:与参考时钟CLKIN频率相匹配的输出时钟(通常是CLKFBOUT或者CLKOUT),与BUFG相连并反馈给PLL的输入反馈管脚CLKFBIN;
输入线路:为进一步消除输入线路的时钟偏移,必须使用BUFIO2FB缓存器。
Ø 在这种情况下,所有的输出时钟与输入时钟有明确的相位关系。
2.PLL仅用作频率合成器的情形:
此时,PLL不能用于消除时钟网络偏移(skew),而是用来给其他的模块提供时钟频率。
PLL反馈路径设定为INTERNAL
下面程序来自于aurora 8B10B核产生的时钟模块程序
moduleaurora_8b10b_v5_3_simplex_CLOCK_MODULE #
(
parameter MULT = 8,
parameter DIVIDE = 1,
parameter CLK_PERIOD = 16.0,
parameter OUT0_DIVIDE = 8,
parameter OUT1_DIVIDE = 2,
parameter OUT2_DIVIDE = 8,
parameter OUT3_DIVIDE = 2
)
(
GT_CLK,
GT_CLK_LOCKED,
USER_CLK,
SYNC_CLK,
PLL_NOT_LOCKED
);
`define DLY #1
//*************************PortDeclarations*******************************
input GT_CLK;
input GT_CLK_LOCKED;
output USER_CLK;
output SYNC_CLK;
output PLL_NOT_LOCKED;
//************************Wire Declarations********************
wire clkfb_w;
wire clkout0_o;
wire clkout1_o;
wire clkout2_o;
wire clkout3_o;
wire locked_w;
//**********************Main Body of Code******************************
// Instantiate aPLL module to divide the reference clock.
PLL_ADV # //parameters
(
.CLKFBO