logo资料库

Altera Cyclone PLL 使用手册.doc

第1页 / 共52页
第2页 / 共52页
第3页 / 共52页
第4页 / 共52页
第5页 / 共52页
第6页 / 共52页
第7页 / 共52页
第8页 / 共52页
资料共52页,剩余部分请下载后查看
1 应用需求
2 PLL原理与可重配置PLL
2.1 PLL结构与原理
2.2 可重配置PLL
2.2.1 PLL的扫描链(Scanchain)
2.2.2 PLL的重配置模块
2.2.3 PLL重配置模块的端口说明
3 PLL的重配置的具体实现
3.1 PLL重配置计数器值的确定
3.2 PLL重配置模块的初始化
3.3 PLL重配置操作的实现过程
3.3.1 用于重配置的寄存器
3.3.2 软件对PLL重配置过程的实现
3.3.3 PLL重配置计数器的调整
3.3.3.1 M、N计数器的调整
3.3.3.2 后缩放计数器(post-scale counters,C0-C5)的调整
3.3.3.3 与频带宽度(bandwidth)有关计数器的调整
3.4 输出时钟的相位调整
3.5 输出时钟的占空比调整
3.6 输出时钟的倍频调整
附录
A 快速锁相环的使用简介
A.1 快速锁相环的扫描链
A.2 快速锁相环的可配置计数器
B 各分辨率下PLL的重配置参数
VGA 分辨率 640×480 时 PLL重配置参数(单像素)
SVGA 分辨率 800×600时 PLL重配置参数(单像素)
XGA 分辨率1024×768时 PLL重配置参数(单像素)
SXGA 分辨率1280×1024时 PLL重配置参数(单像素)
UXGA 分辨率1600×1200 时 PLL重配置参数(单像素)
分辨率1152×864 时 PLL重配置参数(单像素)
WXGA 分辨率1280×768 时 PLL重配置参数(单像素)
VGA 分辨率 640×480 时 PLL重配置参数(双像素)
SVGA 分辨率 800×600时 PLL重配置参数(双像素)
XGA 分辨率1024×768时 PLL重配置参数(双像素)
SXGA 分辨率1280×1024时 PLL重配置参数(双像素)
UXGA 分辨率1600×1200 时 PLL重配置参数(双像素)
分辨率 1152× 864 时 PLL重配置参数(双像素)
WXGA 分辨率1280×768 时 PLL重配置参数(双像素)
其他的可配置计数器
各分辨率下PLL的相位调整步长(phase step)(单像素)
各分辨率下PLL的相位调整步长(phase step)(双像素)
1 应用需求 在实际应用中,FPGA 的工作时钟频率可能在几个时间段内变动,对于与之相关的锁相 环(PLL),若 PLL 的输入时钟在初始设定的时钟频率的基础上变化不太大时,PLL 一般可 以自己调整过来,并重新锁定时钟,获得正确的时钟输出;但是,若 PLL 的输入时钟频率 较之原来设定的时钟频率变化较大时(比如,PLL 输入时钟频率由 50MHz 变为 200MHz), PLL 将无法重新锁定时钟,其输出时钟频率将变为不确定的值。 对于后面这种情况,一般的可有两种处理方法: 方法一,是针对不同的输入时钟使用不同的 PLL 分别进行配置,当输入时钟变化时, 内部逻辑根据不同 PLL 的锁定情况,选择合适的时钟作为工作时钟; 方 法 二 , 是 利 用 FPGA 开 发 厂 商 提 供 的 PLL 可 重 新 配 置 宏 ( 比 如 Altera 的 ALTPLL_RECONFIG 宏模块),通过对其参数进行重新设定,然后,实时地重新配置 PLL, 使其在新的输入时钟下可以正常锁定和工作。 方法一的实现较为直观,但需要更多的 PLL 资源;方法二则通过对原来的 PLL 资源进 行参数的重新配置,使其适应新的工作时钟,其实现较为复杂,但不需要额外的 PLL 资源。 FPGA 内的 PLL 能否实时地实现重新配置,与该 FPGA 是否提供相关的可重新配置机 制有关,具体请参考相应厂商的 FPGA 的使用手册。 本文档主要是以 Altera 公司的 Stratix II 系列的 FPGA 器件为例,介绍了其内嵌的增强 型可重配置 PLL 在不同的输入时钟频率之间的动态适应,其目的是通过提供 PLL 的重配置 功能,使得不需要对 FPGA 进行重新编程就可以通过软件手段完成 PLL 的重新配置,以重 新锁定和正常工作。
Altera 可重配置 PLL 使用手册 XX 电子有限公司 2 PLL 原理与可重配置 PLL 2.1 PLL 结构与原理 锁相环(PLL,Phase Lock Loop)主要作用就是把内部/外部时钟的相位和频率同步于 输入参考时钟。PLL 一般由模拟电路所实现,其结构如图 2-1 所示。 图 2-1 锁相环(PLL)结构 PLL 工作的原理:PLL 采用一个相位频率检测器(PFD)把参考输入时钟的上升沿和 反馈时钟对齐。当 PFD 检测到输入时钟和反馈时钟边沿对其时,锁相环就锁定了。压控振 荡器(VCO)通过自振输出一个时钟,同时反馈给输入端的频率相位检测器(PFD),PFD 根据比较输入时钟和反馈时钟的相位来判断 VCO 输出的快慢,同时输出上升(Pump-up) 或下降(Pump-down)信号,决定 VCO 是否需要以更高或更低的频率工作。PFD 的输出 施加在电荷泵(CP)和环路滤波器(LF),产生控制电压设置 VCO 的频率。如果 PFD 产 生上升信号,然后 VCO 就会增加。反之,下降信号会降低 VCO 的频率。 PFD 输出这些上升和下降信号给电荷泵(CP)。如果电荷泵收到上升信号,电流注入 环路滤波器(ICP 增大)。反之,如果收到下降信号,电流就会流出环路滤波器(ICP 减小)。 环路滤波器把这些上升和下降信号转换为电压,作为 VCO 的偏置电压。环路滤波器还 消除了电荷泵的干扰,防止电压过冲,这样就会最小化 VCO 的抖动。环滤波器的电压决定 了 VCO 操作的速度。 2.2 可重配置 PLL Altera 公司的 Stratix II 等系列的 FPGA 提供了可重配置的 PLL,从而可以实时地对 PLL 进行重新配置,使其适应新的工作要求。通过 Altera 的 Quartus II 软件可以生成一个可重配 置的 PLL,如图 2-2 右边 altpll 模块所示;另外,生成一个重配置模块,如图 2-2 左边所示 的 altpll_reconfig 模块,来对此 PLL 的具体参数进行实时配置。这两个用 Quartus II 工具生 成的模块按照图 2-2 所示的方式进行连接,然后,图 2-2 左边所列的输入端口就可以提供给 软件编程人员,由软件来实时地对进行重配置。比如,这组端口中时钟采用 PCI 接口的时 钟,其他端口可以让 FPGA 以寄存器的方式通过 PCI 接口提供给上层软件编程,从而可以 第 2 页 共 52 页
Altera 可重配置 PLL 使用手册 XX 电子有限公司 图 2-2 错误!未找到引用源。Stratix II 可重配置的 PLL 让软件能实时地对 PLL 进行重配置,以适应不同的 PLL 应用环境。具体地,被设置成可写 寄 存 器 的 端 口 有 reconfig 、 read_param 、 write_param 、 data_in[8:0] 、 counter_type[3:0] 、 counter_param[2:0]和 reset;设置成只读寄存器的端口有:busy 和 data_out[8:0]。 PLL 的可配置信息被组织在一个称为扫描链(scan chain)的结构中,按特定顺序排列。 2.2.1 PLL 的扫描链(Scanchain) Stratix II 系列 FPGA 内的增强型锁相环(EPLL,Enhanced PLLs)和快速锁相环(FPLL, Fast PLLs)提供了若干可用于锁相环实时配置的计数器,包括:  预缩放计数器(n)(Pre-scale counter(n))  反馈计数器(m)(Feedback counter(m))和相应的 VCO 相位间隙选择(VCO phase tap select(Фm))  后缩放计数器(C0-C5)(Post-scale counter(C0-C5))和相应的 VCO 相位间隙选择 (VCO phase tap select, Фc0-c5)  快速地可动态调整电荷泵电流(Icp)和环路滤波器组件(包括环路滤波器电阻 R 和电容 C),以满足 PLL 频带宽度(通带宽度,bandwidth)的要求。 这些可用于配置的计数器按照特定顺序组织在 PLL 的扫描链中。增强型锁相环(EPLL, Enhanced PLL)和快速锁相环(FPLL,Fast PLL)的扫描链长度是不同的。对于 EPLL,其 可配置的计数器总计有 174 位(bit0-bit173),其扫描链与具体的可配置计数器的关系如表 2-1 所示。FPLL 的扫描链只有 75 位,因为 FPLL 的使用与 EPLL 类似,本文着重针对 EPLL 第 3 页 共 52 页
Altera 可重配置 PLL 使用手册 XX 电子有限公司 的使用进行介绍,有关 FPLL 的使用请参照附录。 表 2-1 EPLL 配置扫描链位图 EPLL 扫描链位图 PLL 组件 长度(bits) LSB MSB 4 5 6 7 0 8 1 9 2 10 12 14 16 18 20 22 24 32 41 50 59 68 77 86 95 3 电荷泵设置[3:0] 11 环路滤波器设置[11:4] 13 M 相位移位设置 C0 计数器相位移位设置 15 C1 计数器相位移位设置 17 C2 计数器相位移位设置 19 C3 计数器相位移位设置 21 C4 计数器相位移位设置 23 C5 计数器相位移位设置 25 C5 计数器高脉冲计数 33 C5 计数器旁路位 34 C5 计数器低脉冲计数 42 C5 计数器奇数划分位 43 C4 计数器高脉冲计数 51 C4 计数器旁路位 52 C4 计数器低脉冲计数 60 C4 计数器奇数划分位 61 C3 计数器高脉冲计数 69 C3 计数器旁路位 70 C3 计数器低脉冲计数 78 C3 计数器奇数划分位 79 C2 计数器高脉冲计数 87 C2 计数器旁路位 88 C2 计数器低脉冲计数 96 C2 计数器奇数划分位 97 105 C1 计数器高脉冲计数 106 C1 计数器旁路位 114 C1 计数器低脉冲计数 115 C1 计数器奇数划分位 123 C0 计数器高脉冲计数 124 C0 计数器旁路位 132 C0 计数器低脉冲计数 133 C0 计数器奇数划分位 142 M 计数器 nominal count 143 M 计数器旁路位 152 M 计数器 spread count 153 M spread counter 旁路位 162 N 计数器 nominal count 163 N 计数器旁路位 172 N 计数器 spread count 173 N spread counter 旁路位 扫描链长度 4 8 2 2 2 2 2 2 2 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 9 1 9 1 9 1 9 1 174 28 37 46 55 64 73 82 91 29 38 47 56 65 74 83 92 30 39 48 57 66 75 84 93 31 40 49 58 67 76 85 94 26 35 44 53 62 71 80 89 98 27 36 45 54 63 72 81 90 99 100 101 102 103 104 107 108 109 110 111 112 113 116 117 118 119 120 121 122 125 126 127 128 129 130 131 134 135 136 137 138 139 140 141 144 145 146 147 148 149 150 151 154 155 156 157 158 159 160 161 164 165 166 167 168 169 170 171 第 4 页 共 52 页
Altera 可重配置 PLL 使用手册 XX 电子有限公司 一开始所提到的若干可用于锁相环实时配置的计数器与扫描链中的计数器的具体对应 关系如下(用于增强型 PLL 的):  预缩放计数器(n)(Pre-scale counter(n))具体包括表 2-1 中提到的:n 计数器 nominal count、n 计数器旁路位(n counter odd bit)、n 计数器 spread count 和 n spread counter 旁路位。  反馈计数器(m)(Feedback counter(m))包括表 2-1 中提到的:m 相位移位设置、 m 计数器 nominal count、m 计数器旁路位、m 计数器 spread count 和 m spread counter 旁路位。  后缩放计数器(C0-C5)(Post-scale counter(C0-C5))包括表 2-1 中提到的:C0-C5 计数器相位移位设置、C0-C5 计数器高脉冲计数、C0-C5 计数器旁路位、C0-C5 计 数器低脉冲计数和 C0-C5 计数器奇数划分位。即对应每个 PLL 的时钟输出端 (C0-C5)都有一组可用于调整的计数器。  电荷泵和环路滤波器的用于调整的计数器包括表 2-1 中提到的:电荷泵设置[3:0] 和环路滤波器设置[11:4]。环路滤波器中有 6 位([9:4])是用于环路滤波器的电阻 (Rlf)设置,剩下的 2 位([11:10])用于环路滤波器的电容(Clf)设置。 通常所说的 M、N 计数器指的是 M 计数器 nominal count 和 N 计数器 nominal count,或 直接指整个反馈计数器(m)和预缩放计数器(n)。. 各个计数器的具体用处,将在下文中结合具体的例子进行详细的说明。 在用 Quartus II 工具的 Tools 选项下的“MegaWizard Plug-In Manager”生成可重配置的 PLL 时,会自动生成一个后缀为.mif 文件(或.hex 文件)(如图 2-3 所示的 pll54.mif),此文 件是一个扫描链的位图文件,包含了当前 PLL 配置的扫描链信息。可以根据这些信息,调 整 PLL 的扫描链中相应的计数器,来达到调整 PLL 的目的。 图 2-3 在用 MegaWizard 生成 PLL 时选择生成.mif 文件 第 5 页 共 52 页
Altera 可重配置 PLL 使用手册 XX 电子有限公司 图 2-4 PLL 的重配置时序波形 图 2-4 给出了 EPLL 重配置的时序波形。由图可看出,PLL 重配置的过程主要是将扫描 链信息从最高位(bit173)到最低位(bit0)依次连续地读入可重配置 PLL 的过程。 2.2.2 PLL 的重配置模块 从图 2-4 可以看出,PLL 的配置过程是按位按序连续进行的,因此,直接操作起来比较 不方便。为此,Altera 提供了 PLL 的重配置模块,让配置过程变得简单。它让用户可以按 照自己的需要,对需要修改的计数器单独进行修改,并且修改顺序是随机的,不用遵照扫描 链的固有排列顺序进行。在所有修改完成后,仅需启动一个时钟周期的重配置信号(图 2-4 中的 reconfig),此 PLL 的重配置模块就会按照图 2-4 所示的时序自动地对 PLL 完成重配置。 PLL 的可重配置模块可以通过 Altera 的 Quartus II 开发工具的 MegaWizard plug-in 工具 生成,与 PLL 的生成过程类似,在此不再赘述。 2.2.3 PLL 重配置模块的端口说明 我们可以通过对 altpll_reconfig 模块的输入端口进行适当的驱动,来完成 PLL 的重新配 置。下面,先就该模块的输入/输出端口做一个介绍。 表 2-2 altpll_reconfig 模块的输入端口 端口名 clock data_in[8:0] 是否 必需 是 用于加载单独的参数,还在 PLL 重配置时,用于驱动 PLL。该 描述 端口必须被连接到一个有效时钟,且最高频率为 100MHz。 否 9 位总线,在写参数时,其上的数据作为输入。有的参数并没 有用到全部的 9 位,此时,只有从 bit0 开始的若干有效数据被 使用。当该端口未连接时,其默认值为 0。 counter_type[3:0] counter_param[2:0] 否 3 位总线,对 counter_type 给定的计数器,用于选择具体哪个参 否 4 位总线,用于选择哪一类的计数器将被更新。 read_param 否 此参数有效时,由 counter_type[3:0]和 counter_param[2:0]所指 数将被更新。 第 6 页 共 52 页
Altera 可重配置 PLL 使用手册 XX 电子有限公司 定 位 置 的 参 数 , 将 从 扫 描 链 (scanchain ) 中 读 出 并 放 置 到 data_out[]总线上。此信号在上升沿被采样。需要注意的是,此 信号应该只保持一个时钟周期,以避免参数在相邻时钟周期被 重复读取。 busy 信号将随着 read_param 的有效而变为有效,只有当 busy 信号变为无效时,data_out[]总线上的值才是有效的,而且,只 有当 busy 信号变为无效时,才可以加载下一个参数。 否 该 参 数 有 效 时 , data_in[] 总 线 上 的 数 据 将 被 写 入 由 counter_type[3:0]和 counter_param[2:0] 所指定的在扫描链中的 位置。与 read_param 相似,该信号在上升沿被采样,且只保持 一个时钟周期。 busy 信号将随着 write _param 的有效而变为有效,只有当 busy 信号有效时,data_in[]总线上的数据将被忽略。只有当 busy 信 号变为无效时,才可以开始写入下一个参数。 是 此信号表明 PLL 将开始按照扫描链中的设置进行重新配置。设 备在时钟 clock 的上升沿采样此信号。同样地,该信号应该只 保持一个时钟周期,以避免在重配置完成后 PLL 被重复加载。 reconfig 被 检 测 到 有 效 时 ,busy 信 号 会 紧 跟 着 变 为 有 效 。 pll_scanwrite 信号也会随着变为有效,以开始从扫描链中加载 新的设置到 PLL 中。在 PLL 的重配置期间,busy 信号保持有 效。一旦 busy 信号无效,参数就可有被重新修改。 Altera 推荐将计数器和相位偏移设置好后,再启动 reconfig 信 号,这样仅将 scandata 写入扫描链一次。 是 异步复位输入信号,用于初始化状态机使之处于合法状态。在 第一次使用前,状态机必须被复位,否则将无法保证状态的合 法性。 否 此 输 入 信 号 是 由 altpll 示 例 的 scandataout 端 口 所 驱 动 的 。 scandataout 信号是来自扫描链移位寄存器的直接输出。可以使 用此信号来读出扫描链中已有的内容。 write_param reconfig reset pll_scandataout pll_scandone 否 此输入信号是由 altpll 示例的 scandone 端口所驱动的。此信号 变高时,表示重配置已经完成。 表 2-3 altpll_reconfig 模块的输出端口 端口名 data_out[8:0] busy 描述 是否 必需 否 9 位总线,用于用户读回参数数据。在将 read_param 值设为高 有效,并指定 counter_type[]和 counter_param[]值时,参数将从 扫描链中读出到此总线上,然后,当 busy 信号变为无效时,此 总线上的数据为合法值。 否 此信号有效表明状态机处于忙状态,此时,状态机可能在从扫 描链中读一个参数,或向扫描链中写入一个参数,或是在重配 置 PLL。此信号有效时,状态机将忽略它的输入,并且直到此 信号变为无效,状态机才能改变。 pll_scanclk 是 此信号用于驱动要重配置的 PLL 上的 scanclk 端口 第 7 页 共 52 页
Altera 可重配置 PLL 使用手册 XX 电子有限公司 pll_scanread pll_scanwrite pll_scandata 是 此信号用于驱动要重配置的 PLL 上的 scanread 端口 是 此信号用于驱动要重配置的 PLL 上的 scanwrite 端口 是 此信号用于驱动要重配置的 PLL 上的 scandata 端口 通 过 PLL 重 配 置 模 块 , 可 以 对 各 个 用 于 PLL 配 置 的 计 数 器 进 行 修 改 ( 用 counter_type[3..0]和 counter_param[2..0]来指明要具体操作的计数器,read_param 和 write_param 信号来控制是从计数器中读出还是向计数器中写入;其中,从指定计数器中 读出的值将放到 data_out[8..0]总线上,要写入的数据则放到 data_in[8..0]总线上)。 第 8 页 共 52 页
分享到:
收藏