PLL(锁相环)是FPGA中常见的 IP CORE ,使用之初认为IP核进行配置后无法进行重配置,但在了解了 IOPLL Reconofig IP CORE 过后了解到原来 PLL IP CORE 也是能够进行动态重配置的
在了解 IOPLL Reconfig IP CORE 之前首先要了解 PLL 的工作原理
上图分别是 fPLL (小数分频)和 IOPLL(整数分频) 的内部结构图,M、N、C,分别代表的是 乘法单元、前分频器、输出分频,个人理解为 OUT_CLK[x] = IN_CLK * M / N / Cx;
描述完PLL的一个内部结构,下面就介绍一下 IOPLL Reconofig IP CORE 的使用
首先,需要调用 IOPLL IP CORE ,具体调用不做过多介绍,主要需要注意的地方如下:
两种使能分别为 使能锁相环动态重配置 、允许访问动态移相端口 ,具体区别在哪里下文会进行介绍
调用完 IOPLL IP CORE 后继续调用 IOPLL Reconofig IP CORE ,并以如下这种方式进行连接
接下来是对 PLL 重配置的详细介绍:
首先有两种动态配置方法:
1.通过初始化mif文件进行流式重配置
2.重新配置PLL设置:M、N、C重配置
配置具体操作如下:
1.写地址和数据,发送重配置命令
2.最多重复8次(内部FIFO存储会满)
3.设置初始地址9'd0,并写入任意数据
4.等待waitrequest拉低
写入配置包括:
1.计数器重配置
2.带宽重配置
3.动态相位移动配置
MIF配置操作如下
1.写地址9'b000010000,并写入用于配置PLL的mif文件的基地址,并启动IP的流操作
2.等待waitrequest拉低
另外读操作如下:
1.IP配置启动读功能,读地址
2.等待waitrequest拉低,有效数据读出
3.只可读计数器和带宽重设置,重新读至少需要间隔三拍
注:不论写还是读,在写或者读期间,未使用的地址总线和数据总线都必须为0
在进行计数器配置时,总线意义如下:
在进行相位偏移配置时,总线意义如下:
在进行带宽配置时,用以配置环路滤波设置和电荷泵设置:
具体对应的高、中、低 带宽如下:
至于高、中、低带宽代表着什么,相信在配置 PLL IP CORE 时一定见到过改配置:
其实各类带宽分别代表着抖动的不同:
低带宽:锁相环具有更好的抖动抑制,但锁定时间较慢。
高带宽:锁相环具有更快的锁定时间,但跟踪更多的抖动。
中带宽:锁相环提供锁定时间和抖动抑制之间的平衡。
此外还可以通过IOPLL的动态相依特性修改PLL输出时钟的相位,以VCO(电压振荡器)周期的1/8位增量来调整。
同样有两种相位配置方法:
1.直接访问IOPLL IP核中的动态相位转移端口(支持上行、下行,一次操作中支持7次相移)此处注意
2.通过PLL Reconfig IP核(可通过mif文件或重新配置PLL进行设置,只支持写)上述重配置基包含此类相位配置方法
方法一就是在配置PLL时选择允许访问动态移相端口,此时生成的 PLL IP CORE 如下:
各端口含义如下:
1.Phase_en:启动相位切换时钟
2.Updn:0(下行),1(上行)
3.Cntsel[4:0]:选择输出通道
4.Num_phase_shift[2:0]:偏移次数,最多7次,每次偏移1/8
5.Phase_done:操作完成
另附使用的小建议:
每次配置结束过后应当复位,复位不会修改已经配置的计数器和过滤器,但会撤销任何已执行的移相操作。目的是保持输入输出时钟稳定的相位关系。
以上即为 PLL IP CORE 重配置的操作方法。