Altera可重配置PLL使用手册 - 图文
更新时间:2023-03-17 22:50:01 阅读量: 综合文库 文档下载
- Altera怎么读推荐度:
- 相关推荐
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所示。
输入时钟反馈时钟相位频率检测器(PDF)电荷泵和环路滤波器(CP&LF)压控振荡器输出时钟(VCO)
图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组件 LSB MSB 0 1 2 3 电荷泵设置[3:0] 4 5 6 7 8 9 10 11 环路滤波器设置[11:4] 12 13 M相位移位设置 26 35 44 53 62 71 80 89 98 27 36 45 54 63 72 81 90 99 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 14 16 18 20 22 24 32 41 50 59 68 77 86 95 15 17 19 21 23 25 33 34 42 43 51 52 60 61 69 70 78 79 87 88 96 97 106 115 124 133 143 153 163 173 长度(bits) 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 100 101 102 103 104 105 112 113 114 107 108 109 110 111 116 117 118 119 120 121 122 123 125 126 127 128 129 130 131 132 134 135 136 137 138 139 140 141 142 144 145 146 147 148 149 150 151 152 154 155 156 157 158 159 160 161 162 164 165 166 167 168 169 170 171 172 C0计数器相位移位设置 C1计数器相位移位设置 C2计数器相位移位设置 C3计数器相位移位设置 C4计数器相位移位设置 C5计数器相位移位设置 C5计数器高脉冲计数 C5计数器旁路位 C5计数器低脉冲计数 C5计数器奇数划分位 C4计数器高脉冲计数 C4计数器旁路位 C4计数器低脉冲计数 C4计数器奇数划分位 C3计数器高脉冲计数 C3计数器旁路位 C3计数器低脉冲计数 C3计数器奇数划分位 C2计数器高脉冲计数 C2计数器旁路位 C2计数器低脉冲计数 C2计数器奇数划分位 C1计数器高脉冲计数 C1计数器旁路位 C1计数器低脉冲计数 C1计数器奇数划分位 C0计数器高脉冲计数 C0计数器旁路位 C0计数器低脉冲计数 C0计数器奇数划分位 M计数器nominal count M计数器旁路位 M计数器spread count M spread counter旁路位 N计数器nominal count N计数器旁路位 N计数器spread count N spread counter旁路位 扫描链长度 第 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。 4位总线,用于选择哪一类的计数器将被更新。 3位总线,对counter_type给定的计数器,用于选择具体哪个参数将被更新。 此参数有效时,由counter_type[3:0]和counter_param[2:0]所指第 6 页 共 52 页
counter_type[3:0] counter_param[2:0] read_param 否 否 否 Altera可重配置PLL使用手册 XX电子有限公司
定位置的参数,将从扫描链(scanchain)中读出并放置到data_out[]总线上。此信号在上升沿被采样。需要注意的是,此信号应该只保持一个时钟周期,以避免参数在相邻时钟周期被重复读取。 busy信号将随着read_param的有效而变为有效,只有当busy信号变为无效时,data_out[]总线上的值才是有效的,而且,只有当busy信号变为无效时,才可以加载下一个参数。 write_param 否 该参数有效时,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信号是来自扫描链移位寄存器的直接输出。可以使用此信号来读出扫描链中已有的内容。 此输入信号是由altpll示例的scandone端口所驱动的。此信号变高时,表示重配置已经完成。 reconfig 是 reset 是 pll_scandataout 否 pll_scandone 否 表2-3 altpll_reconfig模块的输出端口
端口名 data_out[8:0] 是否必需 否 描述 9位总线,用于用户读回参数数据。在将read_param值设为高有效,并指定counter_type[]和counter_param[]值时,参数将从扫描链中读出到此总线上,然后,当busy信号变为无效时,此总线上的数据为合法值。 此信号有效表明状态机处于忙状态,此时,状态机可能在从扫描链中读一个参数,或向扫描链中写入一个参数,或是在重配置PLL。此信号有效时,状态机将忽略它的输入,并且直到此信号变为无效,状态机才能改变。 此信号用于驱动要重配置的PLL上的scanclk端口 第 7 页 共 52 页
busy 否 pll_scanclk 是 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 页
Altera可重配置PLL使用手册 XX电子有限公司
3 PLL的重配置的具体实现
通过对PLL重配置模块的可编程端口(章节2.2.3)进行操作来完成重配置工作。 当前的PLL选用的是增强型锁相环(Enhanced PLL),具体使用到了该PLL的C0、C1这两个时钟输出端口,并且,C0输出的时钟频率与输入频率相同,C1输出的时钟频率要求是输入频率的2倍;输入时钟的频率在85MHz和54MHz这两个频率的一定范围内波动(比如,通过晶振提供输入时钟时,由于晶振本身的误差及其受到环境影响,输入信号的频率会有一定的波动)。
在FPGA设计时,PLL会设定一个初始的输入时钟的锁定频率,以及指定带宽(bandwidth)范围(比如,PLL的起始锁定频率设为85MHz。那么,当输入时钟变为54MHz时,因为PLL初始参数是按照85MHz设定的,所以,可能不能很好地锁定54MHz的输入时钟,此时,就需要按照54MHz的合适参数来重新配置PLL,从而使PLL能重新稳定地锁定输入时钟。这些参数存储在PLL重配置模块相关的计数器中,通过对计数器的修改,并最终设置一个时钟周期的重配置信号,来启动并完成PLL的重配置。
3.1 PLL重配置计数器值的确定
一般可以通过PLL对应的.mif(或.hex)等文件(如图2-3所示)来获得重配置模块的计数器值,这些文件可以在用Altera的Qusrtus II软件的MegaWizard Plug-In Manager工具生成PLL时产生。当无法通过.mif(或.hex)等文件来获取这些计数器值时,有些计数器的值可以通过计算来确定取值范围。本文主要介绍通过.mif文件获得重配置模块的计数器值参数的方法,下面通过一个实际的例子来进行说明。 通过MIF文件获取配置参数示例
在该例中,输入时钟在85MHz和54MHz之间切换,要求PLL能在时钟切换后,能够通过重配置来适应新的输入时钟(即重新锁定输入时钟)。
在用Quartus II工具生成PLL时,可以生成这个PLL的扫描链信息的.mif文件。输入时钟在这85MHz和54MHz这两个频率之间切换时,要调整哪些计数器,可以通过比较这两个频率对应的扫描链位图(.mif文件)获得。
图3-1所示,是85MHz的增强型锁相环(EPLL)和54MHz的EPLL,在C0的输出/输入比率为1:1,C1的输出/输入比率为2:1,且其bandwidth选项设为20MHz时,所对应的.mif文件,这些文件给出了85MHz和54MHz时,PLL的扫描链的设置值。
第 9 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
图3-1 输入时钟为85MHz和54MHz时的PLL的扫描链位图
图3-1给出的.mif文件是通过Quartus II软件打开的,也可以直接用文本编辑工具直接打开.mif文件,如图3-2所示。
.mif文件所给出的各位的所表示的含义由表2-1说明,当然,在用文本方式打开的mif文件中,也有详细的说明,比如,图3-2所示的PLL的输入时钟为54MHz时的.mif文件中,“Charge Pump Current = 3”,说的就是电荷泵电流计数器的值为3。
图3-2用文本编辑工具打开的.mif文件
通过比较这两个由Altera的Quartus II工具生成的.mif文件,可以发现85MHz和54MHz这两个PLL的扫描链中不同的计数器设置有以下这些:
第 10 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
置模块的端口:
表3-5 PLL的扫描链(计数器)的重配置数据
计数器描述 电荷泵电流 环路滤波器电阻 环路滤波器电容 M计数器相位 C5计数器相位 C4计数器相位 C3计数器相位 C2计数器相位 C1计数器相位 C0计数器相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M spread counter 旁路 N spread counter 旁路 N计数器旁路 M计数器值 counter_type 2 2 2 1 9 8 7 6 5 5 9 8 7 6 5 4 5 5 5 4 4 4 1 0 0 1 counter_param 0 1 2 2 2 2 2 2 2 2 4 4 4 4 4 4 0 1 5 0 1 5 5 5 4 0 data_in[8:0] (85MHz时) 11 1 3 0 0 0 0 0 0 0 1 1 1 1 0 0 3 2 1 5 5 0 1 1 1 10 data_in[8:0] (54MHz时) 3 3 3 0 0 0 0 0 0 0 1 1 1 1 0 0 2 2 0 4 4 0 1 1 1 8 注:表中,用灰色标出了那些通常会需要改动的计数器值;而其他计数器值,一般在第一次配置以后,不再需要修改。
表中的数字用十进制数给出,每一行对应着一个可以修改的计数器;最左边是计数器的描述;紧跟着的是与该计数器对应的counter_type和counter_param值;之后,分别是输入时钟在85MHz和54MHz时应该写入data_in寄存器的内容。
整个重配置的操作流程如图3-5所示。
第 16 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
输入时钟频率改变,或检测到时钟失去锁定时向reset寄存器写入值0x1并随后清零(第一次重配置时是必需的)写counter_type寄存器写counter_param寄存器写data_in寄存器向write_param寄存器写入值0x1读busy寄存器Busy=0有下一个寄存器需要写入吗?否是向reconfig寄存器写入值0x1等待busy寄存器值变为0向reset寄存器写入值0x1并随后清零(若之前调整了与相位相关的计数器,则不能将reset寄存器设为有效)对用到PLL输出时钟的逻辑进行复位PLL重配置完成
图3-5 重配置流程图
如图所示,对于重配置过程,软件人员可以通过对相关寄存器的操作完成:
1) 软件要重新调整分辨率且输入时钟改变时,或者检测到时钟失去锁定时(状态位
locked的值为0)需要开始重配置工作。
2) 判断是否是第一次对重配置模块进行操作,若是,则写reset寄存器(写入值1),
来完成对重配置模块的复位与初始化,并在一段时间(10ns以上即可)后将reset寄存器清零;若不是第一次重配置,则该步骤为可选,转到步骤3)。
3) 写counter_type[3:0]和counter_param[2:0]以及data_in[8:0]所对应的寄存器,其写入
顺序可为任意。
4) 写write_param寄存器,将其值设为‘1’, 随后,FPGA硬件会将该寄存器清零(因
第 17 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
为PLL重配置模块要求write_param只能保持一个时钟周期)。
5) 等待busy寄存器变为‘0’(十几个时钟周期以内,一般在1微秒以内),然后重复
过程1)和2),直到上面表3-5所列的计数器值全部写入完成为止。
6) 等待busy寄存器变为‘0’,然后将reconfig寄存器的值设为‘1’,随后,FPGA
硬件会将该寄存器清零(因为PLL重配置模块要求reconfig只能保持一个时钟周期)。然后,等到busy寄存器再次变为‘0’时,重配置模块中的所有参数已经导入到PLL中,基本完成了重配置过程。 7) 写reset寄存器这一步骤是可选的。
a) 即向reset寄存器写入值1,并在一段时间(10ns以上即可)后写入值0。此步骤在要求保障输出时钟之间的相位关系时使用。它会让PLL重配置模块进行复位,复位后,会使得PLL的输出时钟间的相位关系回复到初始值[1](即FPGA的配置文件.sof或.pof所确定的最初值)。
b) 跳过该步骤。在之前已经设置write_param对有关相位的计数器做了调整的话,则不能在此处设置reset寄存器,否则,所做的相位调整无效。
8) 因为PLL进行了重新调整,输出时钟频率会有变化,需要对与PLL的输出相关的
逻辑进行复位。
以表3-5中“电荷泵电流计数器”的参数的修改为例:写入其对应的参数的过程为: a) 向counter_type寄存器中写入值2; b) 向counter_param寄存器中写入值0;
c) 向data_in寄存器中写入值11;(当前输入时钟是85MHz时) d) 向write_param寄存器中写入值1; e) 读busy寄存器,等待其值变为‘0’; f)
可以对下一个计数器的参数进行修改了。
其中,表3-5中所列出来的这些计数器的写入顺序可为任意,没有先后之分。
图3-6给出了对PLL重配置模块进行写操作的时序示意图,图3-7给出的是对PLL重配置模块启动并完成重配置的时序示意图。写入重配置参数时,由counter_type[3:0]和counter_param[2:0]指定对应的计数器,在data_in[8:0]寄存器中放上对应的计数器要设置的值,然后设置write_param寄存器,这将把data_in中的值写入扫描链中由counter_type[3:0]和counter_param[2:0]所指定的计数器。在所有改动完成后,再设置reconfig寄存器,启动一个clock周期的reconfig信号,这将使改动后的配置自动加载到PLL中去。随后,等到busy信号变为‘0’,则表示重配置已完成。若参数配置正确,则PLL应该能够重新锁定。
第 18 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
图3-6写PLL重配置模块端口的时序示意图
图3-7 reconfig的时序示意图
在通过软件第一次做重配置时,最好将上面表3-5所例的计数器都写入一遍;在做过一次重配置后,因为PLL重配置模块已经记录了之前的配置数据,在再次进行重配置时,那些没有发生变化的计数器值可以不必再次写入,只对发生变化的计数器(一般只是表3-5中灰色部分标出来的那些计数器会发生变化,比如表3-1所示)进行修改就可以了。
只读寄存器中,busy和locked的值可以直接读取,而data_out寄存器的读取过程与上面的写寄存器过程类似,图3-8给出了从重配置模块中读取配置参数的操作流程。
是第一次对重配置模块进行操作吗?是否向reset寄存器写入值0x1并随后清零写counter_type寄存器写counter_param寄存器向read_param寄存器写入值0x1读busy寄存器Busy-0读data_out寄存器读PLL配置参数完成
图3-8读配置参数流程图
如图3-8所示,从重配置模块中读取已经配置好的参数的过程如下:
1) 判断是否是第一次对重配置模块进行操作,若是,则写reset寄存器,来完成对重
第 19 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
配置模块的复位与初始化;若不是,则转到步骤2)。
2) 写counter_type[3:0]和counter_param[2:0]所对应的寄存器,其写入顺序可为任意。 3) 写read_param寄存器,将其值设为‘1’,随后,FPGA硬件会将该寄存器清零(因
为PLL重配置模块要求read_param只能保持一个时钟周期)。
4) 等待busy寄存器变为‘0’,此时,data_out寄存器的值变为合法值,可直接读取。 图3-9给出了对PLL重配置模块进行读操作的时序示意图。
图3-9读PLL重配置模块端口的时序示意图
注意:
a) 在第一次重配置前,最好置位一下reset信号,保证重配置模块的状态机回到初始状态。 b) write_param和read_param、reconfig信号是时钟上升沿采样,仅保持一个周期,它们对应的寄存器在由软件人员设置为值‘1’后,随之会被硬件清零。
c) 为了了解写入的值是否正确,可以通过读相应的计数器,看读出值是否与写入值一致。 d) 读/写参数时,要在检测到busy信号为低的时候才能读出/写入。
3.3.3 PLL重配置计数器的调整
上文中有提到,PLL重配置模块提供的可调整的计数器是以一个称为扫描链的结构来组织的,如图3-10所示。
图3-10 PLL重配置计数器的扫描链结构
对于增强型锁相环(Enhanced PLL),这些可调整的计数器可大体分为三类:
第 20 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
1) M、N计数器
包括:M计数器nominal count、M计数器旁路位、M spread counter旁路位、N计数器nominal count、N计数器旁路位、N spread counter旁路位、M相位移位设置(Фm)。
其中,一般只用到了M计数器nominal count和N计数器nominal count,本文中将这两个计数器简称M、N,与PLL中的鉴相器PFD相关,主要涉及倍频。
PLL采用“M/(N×后缩放因子)”这样一个缩放因子为PLL输出端提供时钟合成输出。每个PLL有一个预缩放因子(pre-scale counter ,N)和一个乘法因子(M)。输入时钟(fIN)经由预缩放计数器(N)分频后,产生PFD的输入参考时钟(fREF),VCO的频率(FVCO)等于该参考时钟频率(fREF)的M倍,其关系如下所示:
fREF = fIN /N
FVCO= fREF×M=fIN×(M/N)
压控振荡器VCO的输出再经过降频,作为最终的PLL输出时钟。 2) C5-C0有关的计数器
包括:C5-C0计数器相位移位设置(ФC5-ФC0)、C5-C0计数器旁路位、C5-C0计数器高/低脉冲计数、C5-C0计数器奇数划分位。
其中,C5-C0是PLL的6个时钟输出端,每个输出有一个唯一的后缩放计数器(post-scale counter,G),用于降低高频VCO,产生最终的PLL输出时钟。输出时钟的频率fout与VCO的频率FVCO的关系如下所示:
fout= FVCO /G = fIN× (M/(N×G))
后缩放计数器(本文中用字符G表示)的值由“高脉冲计数和低脉”和“低脉冲计数”两个计数器组成,关系如下:
后缩放计数器值 = 时钟输出高脉冲计数值 + 时钟输出低脉冲计数值 其中,“C5-C0计数器高/低脉冲计数”要根据M、N计数器的值和输入/输出时钟的关系来确定,其连同相应的“奇数划分位”主要与占空比调整有关:
“奇数划分位”的含义是将“时钟输出高脉冲计数值”的0.5个单位补偿到“时钟输出低脉冲计数值”。比如,对应的“后缩放计数器值”为3,要求占空比为50% 时,“时钟输出高脉冲计数值”和“时钟输出低脉冲计数值” 应该依次为2和1,占空比=(2 – 0.5)/3 × 100% = 50%。或者,可以通过下面的式子来计算占空比:
占空比 = 时钟输出高脉冲计数 ÷ (时钟输出高脉冲计数值 + 时钟输出低脉冲计数值 + 后缩放计数器的奇数划分位) × 100% 3) 与频带宽度(width)有关的计数器
包括:电荷泵(CP)设置、环路滤波器(LF)电阻与电容设置。
第 21 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
这些是与频带宽度(bandwidth)相关的计数器。一般地,频带宽度设得较大时,PLL能较快地重新锁定时钟;频带宽度较小时,能够较好地过滤输入时钟的抖动。与频带宽度相关的这些计数器,一般使用Quartus II软件在添加PLL时所自动设定的值,这些具体的设定值可以通过查看对应的.mif文件来获取(如图3-2所示)。
事实上,上面所举的例子中,“表3-5 PLL的扫描链(计数器)的重配置数据”已经例出了这里所提到的大多数计数器,只有“C5-C2计数器高/低脉冲计数”和“C5-C2计数器奇数划分位”这些计数器因为没有用到,而没有例出。其实,C5-C0这六个EPLL的时钟输出端中,每个输出端所对应的计数器是一一对应的,可以类似地进行设定。
对于这些计数器,上面的表3-5中已经给出了其对应的counter_type[3:0]和couter_param[2:0]这两个寄存器的值,而表3-5没有给出的一些值(“C5-C2计数器高/低脉冲计数”和“C5-C2计数器奇数划分位”),如表3-6所示:
表3-6 其他可能需要配置的计数器及其对应的counter_type和counter_param 要写入的计数器 C5计数器高脉冲计数 C5计数器低脉冲计数 C5计数器奇数划分位 C4计数器高脉冲计数 C4计数器低脉冲计数 C4计数器奇数划分位 C3计数器高脉冲计数 C3计数器低脉冲计数 C3计数器奇数划分位 C2计数器高脉冲计数 C2计数器低脉冲计数 C2计数器奇数划分位 N计数器值 counter_type[3:0] 9 9 9 8 8 8 7 7 7 6 6 6 0 counter_param[2:0] 0 1 5 0 1 5 0 1 5 0 1 5 0 data_in[8:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 因为,这些计数器相关的旁路位已被设为有效(如表3-5所示,C5-C2和N的旁路位均被设为1),在实际应用这些计数器不会用到,故其值都可以设为0;当然,也可以不做设定。
3.3.3.1 M、N计数器的调整
可重配置的PLL的计数器的调整范围一方面受限于其用于计数的位数(如表2-1所示),另一方面还受到实际应用环境的影响。
实际应用中,M、N等计数器的取值范围受到PLL内的压控振荡器(VCO,参考章节2.1PLL结构与原理)频率的影响。VCO的输出频率有一个范围,在调整参数时要注意参数所决定的VCO频率在这个范围之内。Stratix II FPGA的VCO的频率可调整范围在
第 22 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
300MHz~1040MHz之间[3]。
VCO的频率范围计算公式为:
fVCO= fIN × (M/N) ;
即VCO的频率跟PLL的输入时钟频率(fIN)、M计数器的值和N计数器的值有关系;若输入时钟的频率变化导致通过上面公式计算的fVCO值超出调整范围时,要适当地调整M和N计数器的值,以使得fVCO能在这个调整范围之内。
对于Enhanced PLL,它的M、N计数器的取值范围为1~511(如表2-1所示,其计数位数为9,则计数范围为(1~29 - 1))。
如果,将N计数器的旁路位设为有效(即设为值1),即不使用预缩放计数器N,这种情况下,在计算时将N 值取成1。
理论上,只要对于给定的输入时钟的频率范围,能存在一组M/N的值使得对这个范围的输入M、N的值都不需要做改变,那么,对于这个输入频率的范围,应该能存在一组较固定的计数器值,使得不需要对这些计数器做任何调整;或只是需要对较少的计数器值做一些调整,就能够让PLL锁定这个范围的所有输入时钟。
这样的一组(M/N)的值可以这样求得:
先通过公式:Min( fIN ) ≤ fIN × (M/N) ≤ Max( fvco ) 求出于每个输入时钟频率
fIN对应的(M/N)的取值范围,这组(M/N)就是不同fIN所公有的(M/N)值。
比如,对40MHz~100MHz这个频率范围的输入时钟,通过上面所列的两个公式有:
300 ≤ 40 × (M/N) ≤ 1040 300 ≤ 100 × (M/N) ≤ 1040
得到40MHz~100MHz这个频率范围适用的(M/N)取值范围为: 7.5 ≤(M/N)≤ 10.4 。 又因为M、N都是整数,且
M/N=整数。如果PLL的输出时钟频率是输入时钟的
倍频率2倍,即倍频率等于2,那么(M/N)的取值应该是2的整数倍。这样,对[40,100]这个频率范围的输入时钟,(M/N)的可以取值为8或10。
3.3.3.2 后缩放计数器(post-scale counters,C0-C5)的调整
M、N计数器的调整会导致其相关的其他计数器值需要调整,比如,调整M值时,要调整对应的后缩放计数器(post-scale counters,G)的值,以保持原来的输出时钟与输入时钟的倍频关系。根据上文提到的内容可知:
fout = fIN× (M/(N×G))
第 23 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
其中,fout为输出时钟的频率,fVCO 为VCO的输出频率,G为后缩放计数器的值,M为反馈计数器值,N为预缩放计数器值。
则有
倍频率 = fout/ fIN = M/(N×G) 因此可以得出
G = (M/N)/ 倍频率
事实上,一个后缩放计数器是由“时钟输出高脉冲计数器”和“时钟输出低脉冲计数值”这两个计数器组成的,其关系如下:
后缩放计数器值 = 时钟输出高脉冲计数值 + 时钟输出低脉冲计数值
例如,对上面所确定的适合40MHz~100MHz频率范围的M/N值,对C0输出/输入时钟频率比率为1:1,C1输出/输入时钟频率比率为2:1的情况下,有
C0的后缩放计数器值 =(M/N)/1 = 10 ; C1的后缩放计数器值 =(M/N)/2 =5 ;
当占空比为50%的情况下,反映到具体的计数器值就是:
C0计数器高脉冲计数(C0 Counter High cycles Count)= 5 ; C0计数器低脉冲计数(C0 Counter Low cycles Count)= 5 ; C0计数器奇数划分位(Counter odd division bit) = 0 ; C1计数器高脉冲计数(C0 Counter High cycles Count)= 3 ; C1计数器低脉冲计数(C0 Counter Low cycles Count)= 2 ; C1计数器奇数划分位(Counter odd division bit) = 1
其中,“奇数划分位”有效时,表示从高脉冲计数补偿0.5个单位到低脉冲计数,比如,上面C1的高脉冲计数为3、低脉冲计数为2、奇数划分位有效(为1),则表示实际的高脉冲计数是2.5(3-0.5),低脉冲计数也是2.5(2+0.5)。
这几个计数器还与占空比有关:
占空比 = 时钟输出高脉冲计数 ÷ (时钟输出高脉冲计数值 + 时钟输出低脉冲计数值 + 后缩放计数器的奇数划分位) × 100% 后文中,将结合一个具体的例子,对占空比的调整进行详细介绍。
3.3.3.3 与频带宽度(bandwidth)有关计数器的调整
涉及PLL频带宽度(bandwidth)的调整的主要的三个计数器是:电荷泵电流计数器、环路滤波器电容和电阻计数器。可以通过调大bandwidth以更快地重新锁定输入时钟,而调小bandwidth来更好地过滤输入时钟的抖动。
Stratix II FPGA的EPLL的bandwidth范围为130kHz~16.9MHz;FPLL的bandwidth范围为1.16MHz~28MHz[3]。
第 24 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
图3-11 环路滤波器可编程组件
环路滤波器可编程组件的结构如图3-11所示。压控振荡器(VCO)通过自振输出一个时钟,同时反馈给输入端的频率相位检测器(PFD),PFD根据比较输入时钟和反馈时钟的相位来判断VCO输出的快慢,同时输出上升(Pump-up)或下降(Pump-down)信号,决定VCO是否需要以更高或更低的频率工作。PFD的输出施加在电荷泵(CP)和环路滤波器(LF),产生控制电压设置VCO的频率。如果PFD产生上升信号,然后VCO就会增加。反之,下降信号会降低VCO的频率。
PFD输出这些上升和下降信号给电荷泵(CP)。如果电荷泵收到上升信号,电流注入环路滤波器(IUP)。反之,如果收到下降信号,电流就会流出环路滤波器(IDN)。
环路滤波器把这些上升和下降信号转换为电压,作为VCO的偏置电压。环路滤波器还消除了电荷泵的干扰,防止电压过冲,这样就会最小化VCO的抖动。环滤波器的电压决定了VCO操作的速度。
如图3-11所示,环路滤波器的输出电压可以通过调整电阻R和电容Ch来进行改变。根据此电路原理图可知,若调大Ch则输出电压增大;若调大电阻R的阻值,则流经R的电流减小,从而流经Ch的电流增大,输出电压增大。
电荷泵电流计数器、环路滤波器电容和电阻计数器,其调整范围如表3-7、表3-8和表3-9所示。
第 25 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
附录
A 快速锁相环的使用简介
正文中,主要针对增强型锁相环的使用(EPLL)做了介绍,快速锁相环(FPLL)的重配置与增强型锁相环的类似,都可以通过在用Quartus II软件建立可重配置PLL时生成的.mif文件,来对要配置的计数器的值进行设定,其重配置过程可以参照EPLL的配置过程进行。下面,仅对FPLL的使用做一个简要介绍。
A.1 快速锁相环的扫描链
快速锁相环(Fast PLL)的扫描链只有75位,其对应的扫描链位图如表A-1所示。FastPLL只有C0-C3这4个时钟输出端。
表A-1 Fast PLL配置扫描链位图
Fast PLL 扫描链位图 LSB MSB 4 5 6 7 0 8 1 9 2 10 12 14 16 18 20 3 11 13 15 17 19 21 25 26 30 31 35 36 40 41 45 46 50 51 55 56 PLL组件 电荷泵设置[3:0] 环路滤波器设置[11:4] M相位移位设置 C3计数器相位移位设置 C2计数器相位移位设置 C1计数器相位移位设置 C0计数器相位移位设置 C0计数器高脉冲计数 C0计数器旁路位 C0计数器低脉冲计数 C0计数器奇数划分位 C1计数器高脉冲计数 C1计数器旁路位 C1计数器低脉冲计数 C1计数器奇数划分位 C2计数器高脉冲计数 C2计数器旁路位 C2计数器低脉冲计数 C2计数器奇数划分位 C3计数器高脉冲计数 C3计数器旁路位 长度(bits) 4 8 2 2 2 2 2 4 1 4 1 4 1 4 1 4 1 4 1 4 1 22 23 24 27 28 29 32 33 34 37 38 39 42 43 44 47 48 49 52 53 54 第 31 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
57 58 59 72 62 63 64 67 68 69 60 61 65 66 70 71 73 74 C3计数器低脉冲计数 C3计数器奇数划分位 m 计数器高脉冲计数 m 计数器旁路 m计数器低脉冲计数 m 计数器奇数划分位 n 计数器 nominal count n计数器旁路位 扫描链长度 4 1 4 1 4 1 2 1 75 由表中可以看出,快速锁相环(FPLL)相应的可重配置的计数器与增强型锁相环(EPLL)的类似,但还有些不同:
1) FPLL的不包含m计数器spread count及相应的旁路位、n计数器spread count及相应的旁路位;
2) FPLL的后缩放计数器只有4组,即C0-C3(EPLL的是6组,C0-C5);
3) FPLL的M 计数器与EPLL的稍有不同,主要由 “M 计数器高脉冲计数”、“M 计数器低脉冲计数”和“m 计数器奇数划分位”这三部分组成,与后缩放计数器类似。FPLL的“M 计数器高脉冲计数”与“M 计数器低脉冲计数”这两个计数器的和,相当于EPLL的一个计数器“M计数器nominal count”;
4) FPLL的后缩放计数器的对应的高/低脉冲计数计数器的位数较EPLL要少,相应地,其对应计数器的调整范围比EPLL的小。
A.2 快速锁相环的可配置计数器
在重配置时,FPLL的各个可配置计数器与相应的counter_type和counter_param寄存器值的对应关系,可以按照表3-3和表3-4来进行选择。为了方便起见,下表列出了所有的FPLL可重配置计数器及其相应的counter_type和counter_param值。
表A-2 FPLL计数器与counter_param和counter_type对应关系
计数器描述 电荷泵电流 环路滤波器电阻 环路滤波器电容 M相位移位设置 C3计数器相位移位设置 C2计数器相位移位设置 C1计数器相位移位设置 C0计数器相位移位设置 C0计数器高脉冲计数 C0计数器旁路位 C0计数器低脉冲计数 counter_type 2 2 2 1 7 6 5 4 4 4 4 counter_param 0 1 2 2 2 2 2 2 0 4 1 第 32 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
C0计数器奇数划分位 C1计数器高脉冲计数 C1计数器旁路位 C1计数器低脉冲计数 C1计数器奇数划分位 C2计数器高脉冲计数 C2计数器旁路位 C2计数器低脉冲计数 C2计数器奇数划分位 C3计数器高脉冲计数 C3计数器旁路位 C3计数器低脉冲计数 C3计数器奇数划分位 m 计数器高脉冲计数 m 计数器旁路 m计数器低脉冲计数 m 计数器奇数划分位 n 计数器 nominal count n计数器旁路位
4 5 5 5 5 6 6 6 6 7 7 7 7 1 1 1 1 0 0 5 0 4 1 5 0 4 1 5 0 4 1 5 0 4 1 5 0 5 FPLL的电荷泵电流及其环路滤波器的电阻和电容取值与EPLL的(参照表3-7、表3-8和表3-9)有些差别,FPLL的这些计数器的取值如表A-3~表A-5所示。
表A-3 FPLL的电荷泵电流计数器取值范围
Control Bits CP3 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 CP2 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 CP1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 CP0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Pumping Current Icp(μA) 12 30 36 52 57 72 77 92 96 110 114 127 131 144 148 注:由表可见FPLL的电荷泵计数器的调整范围为0~15(二进制的0000~1111).
第 33 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
表A-4 FPLL环路滤波器电阻计数器取值范围
Control Bits LF5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 LF4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 LF3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 LF2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 LF1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 LF0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 Resistance (Ω) 1,000 1,500 2,000 2,500 3,000 3,500 4,000 4,500 5,000 5,500 6,000 6,500 7,000 7,500 8,000 8,500 9,000 9,500 10,000 注:由表可见,FPLL环路滤波器电阻计数器的取值范围为:0~15(二进制00_0000~00_1111)、
24~26(二进制01_1000~01_1010)
表A-5 FPLL环路滤波器电容计数器取值范围
Control Bits LF7 1 1 LF6 0 1 Capacitance (pF) 8 2 注:由表可见,FPLL环路滤波器电容计数器的取值范围为2、3(二进制10、11)
第 34 页 共 52 页
Altera可重配置PLL使用手册 XX电子有限公司
B 各分辨率下PLL的重配置参数
下面列举了VGA 640×480、SVGA 800×600、XGA 1024×768、SXGA 1280×1024和UXGA 1600×1200分辨率下的PLL的重配置参数。这些参数主要根据下表[4]中Pixel Rate(MHz)频率设定,具体参数源于对应于该频率的MIF文件。
其中,对于每个PLL的输入,其相应的频带宽度(bandwidth)是在生成PLL时,由Quartus II软件自动进行设定的。而PLL的两个时钟输出端C0和C1的“输出时钟频率:输入时钟频率”的比值,即倍频率,依次设为1:1和2:1。
第 35 页 共 52 页
正在阅读:
2014现代教育技术单选题10-03
正能量读书报告(护士)05-12
2022年挂职干部思想工作情况及建议范文04-03
昆士兰科技大学语言班好申请么01-10
饭店法律实务第六章客人的权利义务06-05
2016年新疆事业单位面试时间02-08
我国地下钱庄的成因及对策分析11-14
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 配置
- 手册
- 图文
- 使用
- Altera
- PLL
- 考拉BP神经网络的matlab实现学习历程一
- 初中地理基础知识竞赛
- DMU检查--简介
- 2017八一建军节主题活动方案
- 信息系统审计工具箱的设计与实现
- 2014年驾驶最新科目一考试试题,第二章 - 图文
- 人教版二年级上册语文词语一单元精简版
- 李鸿忠南水北调移民安置及帮扶动员会上的讲话
- 餐饮服务许可审查规范 - 图文
- 人教版小学语文四年级下册第五单元测试卷
- 重庆大学机械原理课程教案
- 初中英语单词表(浙教版)
- 操作系统样卷试题及答案1
- 农村物流运作平台的国际比较及经验借鉴
- 大学生与父母之间代沟的调查报告
- 网上银行发展现状及对策 文献综述
- 口语技能大赛模式与高职英语口语教学浅论-精品文档
- 及仙愈疡散加减治疗幽门螺杆菌相关性消化性溃疡60例临床观察
- 《德育原理》全书试题
- 事业单位WIN7+OFFICE2010及答案