Altera可重配置PLL使用手册 - 图文
更新时间:2024-03-31 00:31: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使用手册
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使用手册
图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使用手册
的使用进行介绍,有关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使用手册
一开始所提到的若干可用于锁相环实时配置的计数器与扫描链中的计数器的具体对应关系如下(用于增强型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使用手册
表3-1 PLL在输入时钟频率在85MHz和54MHz时的不同参数 PLL输入时钟频率 电荷泵电流计数器 环路滤波器电阻计数器 M计数器(m nominal count) C1计数器高脉冲计数 C1计数器低脉冲计数 C1计数器奇数划分位 C0计数器高脉冲计数 C0计数器低脉冲计数 85MHz 11 1 10 3 2 1 5 5 54MHz 3 3 8 2 2 0 4 4 3.2 PLL重配置模块的初始化
在使用PLL重配置模块前,需要对其进行初始化,这一般由硬件完成,另外,要注意: 1. 首先,要注意的是,在第一次使用前,最好对PLL重配置模块进行复位,否则将无法保证状态的合法性。如图2-2所示,PLL重配置模块提供了一个异步复位输入信号reset,用于整个模块的复位。
2. 其次,要注意的是PLL重配置模块的初始化参数的设定。在用Altera的Quartus II开发工具的“MegaWizard Plug-In Manager工具”生成PLL重配置模块时,所指定的PLL类型要与该模块相连接的PLL类型一致,例如,设计所用的是增强型PLL(Enhanced PLL),那么该重配置模块就要选择是用于EPLL的,如图3-3所示(选择Enhanced选项)。
图3-3 PLL重配置模块要跟与其连接的PLL类型一致
第 11 页 共 52 页
Altera可重配置PLL使用手册
3. 然后,还要特别注意PLL重配置模块的扫描链的初始化。PLL重配置模块自身带了一个存储结构来存储扫描链的值,扫描链的值可以由用户逐个逐个的计数器来设定,也可以在用MegaWizard Plug-In Manager工具生成PLL重配置模块时,由用户指定一个用于初始化扫描链的有效文件(比如,在使用MegaWizard Plug-In Manager工具生成PLL时所生成的.mif(或.hex)文件,例如图2-3中的pll54.mif),如图3-4所示。
图3-4 PLL重配置模块的初始化扫描链
如果没有对PLL重配置模块的扫描链进行初始化,那么,在使用该重配置模块进行PLL的第一次重配置时,因为扫描链为空,鉴于174位的扫描链值(对于EPLL来说)都将被读入PLL来进行PLL的重配置,那些没有指定的计数器值将引起错误的配置。
比如,对于一个输入频率为54MHz的输入时钟,当其频率变成100MHz时,PLL将失去锁定,需要进行重新配置。如果,已经将初始值设为有文件pll54.mif获取(如图3-4所示),那么,仅需要修改一下电荷泵电流计数器的值(由值11调整为12),然后,启动一个时钟周期的reconfig信号,就可以完成重配置,并锁定新的输入时钟频率。否则,若为对重配置模块的扫描链进行初始化,那么此时将需要修改所有相关的计数器值(M、N计数器,post-scale计数器等等)后并启动reconfig信号完成重配置后,才能锁定新的时钟。 4. 另外,要注意的是,使用PLL重配置模块时,使用read_param控制信号来读取扫描链中的对应信息时,实际读取的是从当前“PLL重配置模块”保存的扫描链的内容,而不是从PLL中读出的内容。如果PLL重配置模块的扫描链没有进行初始化(例如,如图3-4所示选择了“No, leave it blank”选项),那么用使用read_param控制信号读出的内容将不确定,通过时序仿真来看,读出值是全零(在之前没有用write_param信号写入新的信息时)。
第 12 页 共 52 页
Altera可重配置PLL使用手册
异步复位输入信号reset不会对PLL重配置模块中保存的扫描链信息产生影响,即使复位也不会使PLL重配置模块保存的扫描链信息回到初始设定值,而是不改变扫描链的任何信息。即最后修改的PLL重配置模块扫描链信息(通过write_param控制信号实现的修改),会一直保持到下次使用write_param控制信号实现修改为止。
3.3 PLL重配置操作的实现过程
3.3.1 用于重配置的寄存器
为了让软件人员能够对PLL进行重配置,FPGA应该提供以下可操作的寄存器:
可写寄存器:reconfig、read_param、write_param、data_in、counter_type、counter_param
和reset;
只读寄存器:busy、data_out、locked;
这些寄存器(除了locked)的含义与PLL重配置模块提供的端口是一一对应的,本文档在表2-2和表2-3已经做了说明,为了方便起见,下面再次说明一下。
表3-2 用于重配置的寄存器说明
寄存器名 reconfig 有效位数 1Bit 描述 被设为值‘1’时,表明将启动PLL进行重新配置 FPGA应在检测到该寄存器有效时,等到busy信号无效时启动一个时钟周期的reconfig信号,然后清零该寄存器。 reconfig被检测到有效时,busy信号会紧跟着变为有效。 Altera推荐将计数器和相位偏移设置好后,再启动reconfig信号,这样仅写入扫描链一次。 重配置模块要求reconfig信号只能有1个时钟周期的宽度,所以需由FPGA在reconfig产生后1个时钟周期时对其清零。 此参数有效时,由counter_type[3:0]和counter_param[2:0]所指定位置的参数,将从扫描链(scanchain)中读出并放置到data_out[]总线上。 FPGA应在检测到该寄存器有效时,等到busy信号无效时启动一个时钟周期的read _param信号,然后清零该寄存器。 busy信号将随着read_param的有效而变为有效,只有当busy信号变为无效时,data_out[]总线上的值才是有效的;而且,只有当busy信号变为无效时,才可以加载下一个参数。 重配置模块要求write_param信号只能有1个时钟周期的宽度,所以需由FPGA在write_param产生后1个时钟周期时对其清零。 该参数有效时,data_in[]总线上的数据将被写入由counter_type[3:0]和counter_param[2:0] 所指定的在扫描链中的位置。 FPGA应在检测到该寄存器有效时,等到busy信号无效时第 13 页 共 52 页
read_param 1Bit write_param 1Bit Altera可重配置PLL使用手册
启动一个时钟周期的write_param信号,然后清零该寄存器。 busy信号将随着write _param的有效而变为有效,只有当busy信号有效时,data_in[]总线上的数据将被忽略。只有当busy信号变为无效时,才可以开始写入下一个参数。 重配置模块要求write_param信号只能有1个时钟周期的宽度,所以需由FPGA在write_param产生后1个时钟周期时对其清零。 data_in 9Bit 在write_param信号有效时,其上的数据作为输入。有的参数并没有用到全部的9位,此时,只有从bit0开始的若干有效数据被使用。当该端口未连接时,其默认值为0。 用于选择哪一类的计数器将被更新,具体参见表3-3。 对counter_type给定的计数器,用于选择具体哪个参数将被更新,具体参见表3-4。 重配置模块的异步复位寄存器,用于初始化状态机使之处于合法状态。在第一次使用前,状态机必须被复位,否则将无法保证状态的合法性。 还用于PLL的复位,用于清零PLL内的计数器和初始化锁定过程,主要跟输出时钟的相位有关,复位后,会使得PLL的输出时钟间的相位关系回复到初始值(即FPGA的配置文件.sof或.pof所确定的最初值) 此信号有效表明状态机处于忙状态,此时,状态机可能在从扫描链中读一个参数,或向扫描链中写入一个参数,或是在重配置PLL。此信号有效时,状态机将忽略它的输入,并且直到此信号变为无效,状态机才能改变。 用于用户读取扫描链数据。在将read_param值设为有效,并指定counter_type[]和counter_param[]值时,参数将从扫描链中读出,当busy信号变为无效时,读出的值将被保存到该寄存器中。 表明PLL的锁定状态,值为‘1’时表明已锁定,否则,为丢失锁定。 counter_type counter_param reset 4Bit 3Bit 1Bit busy 1Bit data_out 9Bit locked 1Bit 其中,有关counter_type和counter_param具体所指定的计数器,在表3-3和表3-4中做了说明。
第 14 页 共 52 页
Altera可重配置PLL使用手册
表3-3 counter_type[3..0]的设置
表3-4 counter_param[2..0]的设置
3.3.2 软件对PLL重配置过程的实现
下面,仍通过上面提到的输入时钟频率在85MHz与54MHz两者间切换的例子,来具体说明重配置过程是怎样实现的。
若当前的输入时钟的频率是由54MHz变为85MHz,那么当前应该是按照85MHz的扫描链信息进行PLL的重配置。表3-5列出了可以具体配置的计数器,以及相关的PLL重配
第 15 页 共 52 页
Altera可重配置PLL使用手册
置模块的端口:
表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使用手册
输入时钟频率改变,或检测到时钟失去锁定时向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使用手册
为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使用手册
图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使用手册
配置模块的复位与初始化;若不是,则转到步骤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使用手册
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使用手册
这些是与频带宽度(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使用手册
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使用手册
其中,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使用手册
图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使用手册
表3-7 电荷泵电流计数器取值范围
表3-8 环路滤波器电容计数器取值范围
第 26 页 共 52 页
Altera可重配置PLL使用手册
表3-9 环路滤波器电阻计数器取值范围
注:环路滤波器的电阻计数器的可设定值是一组不连续的数,这组数的范围为(16进制):0x0~0xF、0x18~0x1F、0x28~0x2F和0x38。
3.4 输出时钟的相位调整
表3-10 Stratix II PLL相位控制位的定义
每个锁相环对应的输出端(C0-C5)都对应着2bits的相位调整位,这2bits所表示的含义表3-10所示,有2个可调整值,其中,值1(二进制的“01”)表示将相位向后调整一个
第 27 页 共 52 页
Altera可重配置PLL使用手册
phase step,每个phase step是VCO周期的八分之一,即将相位向后调整VCO的45度;值3(二进制的“11”)表示将相位向前调整VCO的一个phase step。
相位调整的具体操作可参照下表进行: write_param 保持一个clock周期 保持一个clock周期 保持一个clock周期 保持一个clock周期 counter_type[3:0] 4 4 5 5 counter_param[2:0] 2 2 2 2 data_in[8:0] 1 3 1 3 描述 C0的相位向后调整VCO的45度 C0的相位向前调整VCO的45度 C1的相位向后调整VCO的45度 C1的相位向前调整VCO的45度 要注意的是,将PLL复位(对reset寄存器的值设为1),会导致PLL相位的调整作废;因为,PLL复位时,会将相位关系恢复到由FPGA的编程文件(.sof或.pof文件)所决定的初值[1]。
在实际的相位调整中,可以先将PLL复位,然后,再按照上表进行相位的调整。因为VCO的频率较高(在300MHz~1040MHz之间,跟M、N值和PLL的时钟输入端频率相关),每次相位的调整量较小,比如,VCO频率为800MHz时,其周期为1.25ns,其八分之一就是0.15625ns,要将输入时钟C0的相位向后调整约1ns时,需要调整7次(1/0.15625=6.4)。事实上,在朝一个固定方向进行相位调整时(一直向前调整或一直向后调整),只在第一次需要往counter_type、counter_param和data_in这些寄存器中写入值1或3(对应相位向前或相位向后调整),之后,只要启动若干次reconfig就可以达到调整需要的相位偏移量的要求,不需要重复在写上面这些寄存器(因为之后每次这些寄存器的值都与第一次的一样)。
因为对于每个PLL的输入,其对应的VCO的频率不尽相同,所以,对PLL的输出,其相位的调整步长(phase step)都不尽相同,具体数据可参见附录中的表格“各分辨率下PLL的相位调整步长(phase step)”。
3.5 输出时钟的占空比调整
可编程占空比功能允许你设置PLL时钟输出的占空比。占空比是时钟输出高/低脉冲和整个时钟周期时间的比率,表示为处于高脉冲的时间的比例。Quartus II软件使用输入频率和目的倍增/倍减比率来选择后缩放计数器。占空周期精度由PLL时钟输出选用的后缩放计数器值决定,定义为50%除以后缩放计数器值。例如,如果后缩放计数器的值为3,允许的占空比为50%除以3等于16.67%。因为altpll宏功能不接受非整数值的占空比值,所以,允许的占空比为17%、33%、50%和67%。
由于硬件的限制,你不能实现84%的占空比,因为对于给定的计数器值你不能实现最接近100%的值。然而,你可以选择17%的占空比,反转PLL时钟输出,从而实现84%的占
第 28 页 共 52 页
Altera可重配置PLL使用手册
空比。例如,如果G0计数器为10,占空比增量是5%,范围从5%到90%。
在调整占空比时,一般地,建议通过调整“后缩放计数器的值”(post-scale counter value)来实现的。
“后缩放计数器的值”可以通过以下的关系式得到:
后缩放计数器值 = (M / N)/ 倍频率 或者
后缩放计数器值 = 时钟输出高脉冲计数值 + 时钟输出低脉冲计数值 而
占空比 = 时钟输出高脉冲计数 ÷ (时钟输出高脉冲计数值 + 时钟输出低脉冲计数值 + 后缩放计数器的奇数划分位) × 100%
如果已经对PLL进行过重配置(即有将reconfig寄存器的值置为1),并且之后没有再修改过对应的计数器值,那么当前PLL所对应的M、N的值和时钟输出高/低脉冲计数器的值可以通过设置read_param等寄存器读取出来(如图3-8所示)。
以调整C0和C1的占空比为例,
首先,可以先通过read_param等信号读出以下计数器的值:
C0计数器高脉冲计数(C0 Counter High cycles Count)
C0计数器低脉冲计数(C0 Counter Low cycles Count) C0计数器奇数划分位(Counter odd division bit)
C1计数器高脉冲计数(C0 Counter High cycles Count) C1计数器低脉冲计数(C0 Counter Low cycles Count) C1计数器奇数划分位(Counter odd division bit)
读出这几个计数器的值的具体操作为: read_param 保持一个clock周期 保持一个clock周期 保持一个clock周期 保持一个clock周期 保持一个clock周期 保持一个clock周期 counter_type[3:0] 4 4 4 5 5 5 counter_param[2:0] 0 1 5 0 1 5 对应计数器 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 data_out[8:0] 5 5 0 3 2 1 其中,data_out[8:0]是从PLL的扫描链内读出来的值,对于每个具体的PLL,其设置值不尽相同。
第 29 页 共 52 页
Altera可重配置PLL使用手册
从上表可看出,对C0来说,其计数器的高脉冲计数、低脉冲计数和奇数划分位依次为5、5、0;由此可以推导出:
C0的post-scale count值 = 5 + 5 = 10; C0的占空周期精度 = 50% ÷ 10 = 5% ; C0的当前的占空比 = 5 / (5 + 5 + 0) = 50 % ;
同理,可算出C1的post-scale counte值为5,占空周期精度为10%,当前的占空比为: 3 / (3 + 2 +1) = 50%。
然后,就可以对C0或C1的占空比进行调整了。比如,要将C0的占空比调整为20%,则可以修改其高脉冲计数、低脉冲计数依次为2和8(保持其和等于10,2 + 8 = 10),具体操作为: write_param counter_type[3:0] 保持一个clock周期 保持一个clock周期 4 4 counter_param[2:0] 0 1 data_in[8:0] 2 8 含义 C0计数器的高脉冲计数改为2 C0计数器的低脉冲计数改为8 最后,启动重配置信号reconfig有效,就可以完成占空比的修改。
3.6 输出时钟的倍频调整
由上文中有关后缩放计数器的介绍可知:
倍频率 = fout/ fIN = M/(N×G)
因此,实现时钟的倍增和倍减可以通过对M、N或“后缩放计数器(G)”的值的调整来实现。一般来说,优先调整“后缩放计数器”的值,因为,M、N的值调整可能会引起PLL失去锁定。例如,在文献[1]中提到了这样一个例子:
输入时钟为350MHz,要求输出频率为700MHz,Quartus II软件能选择多个途径来达到这个频率。比如,Quartus II软件可以选择M=2,N=1,这时VCO频率为700MHz。如果重配置的时候,将M、N的值调整为M=4,N=2(仍为合法值,且保持原来的倍率),重配置后将发现,PLL会失去锁定。
如果单独调整“后缩放计数器”仍不能满足要求,则需要调整相应的M、N值来实现目的,下面通过一个实例来说明。
比如,当前的PLL的输入时钟频率为31.50MHz,M的值为22,N设为旁路,C0的高/低脉冲计数为11(即C0的后缩放计数值=11+11=22)时,此时,C0的倍频应为1(22/22=1)。若要调整C0的倍频为4倍频,因为,此时M/N值不能被4整除,所以需要调整M的值。先要计算M的可调整范围,按章节3.3.3.1的方法,可求得M应在整数区间[10,33]内,这里,选择M的值为24,则C0的后缩放计数=24/4=6,则C0的高/低脉冲计数应设置为值3,C0的奇数划分位设置为值0。同时,为了让C1的输出不改变,应对C1对应的后缩放计数做调整。C1为2倍频,则当前的后缩放计数=24/2=12,则C1高/低脉冲计数应改为值6,C1的奇数划分位的值改为0。
第 30 页 共 52 页
Altera可重配置PLL使用手册
附录
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使用手册
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使用手册
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使用手册
表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使用手册
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 页
Altera可重配置PLL使用手册
分辨率1152×864 时 PLL重配置参数(单像素)
标准: 分辨率: 1152×864 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 60 53.74 40.812 data_in 70 62.65 47.61 data_in 75 67.13 51.02 data_in 80 71.60 54.42 data_in 85 76.10 57.82 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 13 0 1 4 4 0 8 8 0 16 11 0 3 4 3 1 7 7 0 14 13 0 3 4 3 1 7 7 0 14 0 0 0 1 1 1 1 0 0 1 1 1 11 0 3 3 3 0 6 6 0 12 13 0 3 3 3 0 6 6 0 12
第 41 页 共 52 页
Altera可重配置PLL使用手册
WXGA 分辨率1280×768 时 PLL重配置参数(单像素)
标准:WXGA 分辨率: 1280×768 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 60 47.9 39.84 data_in 70 55.9 46.48 data_in 75 59.9 49.80 data_in 80 63.8 53.11 data_in 85 67.8 56.43 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 13 0 1 4 4 0 8 8 0 16 11 0 3 4 3 1 7 7 0 14 13 0 3 4 3 1 7 7 0 14 0 0 0 1 1 1 1 0 0 1 1 1 11 0 3 3 3 0 6 6 0 12 12 0 3 3 3 0 6 6 0 12
第 42 页 共 52 页
Altera可重配置PLL使用手册
VGA 分辨率 640×480 时 PLL重配置参数(双像素)
标准:VGA 分辨率: 640×480 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 60 31.5 12.5875 data_in 72 37.7 15.750 data_in 75 37.5 18.75 data_in 85 43.3 18.00 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 5 2 3 12 12 0 24 24 0 48 5 2 3 10 9 1 19 19 0 38 0 0 0 1 1 1 1 0 0 1 1 1 8 1 1 9 9 0 18 18 0 36 8 1 1 10 9 1 19 19 0 38 第 43 页 共 52 页
Altera可重配置PLL使用手册
SVGA 分辨率 800×600时 PLL重配置参数(双像素)
标准:SVGA 分辨率: 800×600 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 56 35.1 18.000 60 37.9 20.000 data_in 72 48.1 25.000 data_in 75 46.9 24.750 data_in 85 53.7 28.125 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param data_in 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 8 1 1 10 9 1 19 19 0 38 8 1 1 9 8 1 17 17 0 34 8 1 1 7 6 1 13 13 0 26 0 0 0 1 1 1 1 0 0 1 1 1 9 1 1 7 7 0 14 14 0 28 13 0 1 6 6 0 12 12 0 24 第 44 页 共 52 页
Altera可重配置PLL使用手册
XGA 分辨率1024×768时 PLL重配置参数(双像素)
标准:XGA 分辨率: 1024×768 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 60 48.5 32.500 data_in 70 56.5 37.500 data_in 75 60.0 39.375 data_in 80 64.0 42.750 data_in 85 68.3 47.250 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 13 0 1 5 5 0 10 10 0 20 13 0 1 5 4 1 9 9 0 18 14 0 1 5 4 1 9 9 0 18 0 0 0 1 1 1 1 0 0 1 1 1 13 0 1 4 4 0 8 8 0 16 11 0 3 4 3 1 7 7 0 14 第 45 页 共 52 页
Altera可重配置PLL使用手册
SXGA 分辨率1280×1024时 PLL重配置参数(双像素)
标准:SXGA 分辨率: 1280×1024 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 60 64.0 54.000 75 80.0 67.500 data_in 85 91.1 78.750 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param data_in 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 11 0 3 3 3 0 6 6 0 12 12 0 3 3 2 1 5 5 0 10 0 0 0 1 1 1 1 0 0 1 1 1 11 0 3 2 2 0 4 4 0 8
第 46 页 共 52 页
Altera可重配置PLL使用手册
UXGA 分辨率1600×1200 时 PLL重配置参数(双像素)
标准:UXGA 分辨率: 1600×1200 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 60 75.0 81.000 data_in 65 81.3 87.750 data_in 70 87.5 94.500 data_in 75 93.8 101.250 data_in 85 106.3 114.750 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 11 0 3 2 2 0 4 4 0 8 13 0 3 2 2 0 4 4 0 8 10 0 3 2 1 1 3 3 0 6 0 0 0 1 1 1 1 0 0 1 1 1 11 0 3 2 1 1 3 3 0 6 第 47 页 共 52 页
Altera可重配置PLL使用手册
分辨率 1152× 864 时 PLL重配置参数(双像素)
分辨率: 1152×864 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 60 53.74 20.406 data_in 70 62.65 23.805 data_in 75 67.13 25.510 data_in 80 71.60 27.210 data_in 85 76.10 28.910 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 7 1 3 8 8 0 16 16 0 32 7 1 3 7 6 1 13 13 0 26 8 1 1 7 6 1 13 13 0 26 0 0 0 1 1 1 1 0 0 1 1 1 12 0 1 6 6 0 12 12 0 24 12 0 1 6 5 1 11 11 0 22
第 48 页 共 52 页
Altera可重配置PLL使用手册
WXGA 分辨率1280×768 时 PLL重配置参数(双像素)
标准:WXGA 分辨率: 1280×768 刷新频率(Hz): 行频(kHz): Pixel Rate(MHz): 60 47.9 19.92 data_in 70 55.9 23.24 data_in 75 59.9 24.90 data_in 80 63.8 26.555 data_in 85 67.8 28.215 data_in 计数器 电荷泵电流 环路滤波器电阻 环路滤波器电容 C1高脉冲计数 C1低脉冲计数 C1奇数划分位 C0高脉冲计数 C0低脉冲计数 C0奇数划分位 M计数器 M相位 C1相位 C0相位 C5旁路位 C4旁路位 C3旁路位 C2旁路位 C1旁路位 C0旁路位 M spread counter 旁路 N spread counter 旁路 N旁路 counter_type counter_param 2 2 2 5 5 5 4 4 4 1 1 5 4 9 8 7 6 5 4 1 0 0 0 1 2 0 1 5 0 1 5 0 2 2 2 4 4 4 4 4 4 5 5 4 7 1 3 8 8 0 16 16 0 32 7 1 3 7 7 0 14 14 0 28 8 1 1 7 6 1 13 13 0 26 0 0 0 1 1 1 1 0 0 1 1 1 12 0 1 6 6 0 12 12 0 24 11 0 3 6 5 1 11 11 0 22
第 49 页 共 52 页
Altera可重配置PLL使用手册
其他的可配置计数器
下表列出了其他的可配置计数器与其对应的counter_type[3:0]和counter_param[2:0]。这些计数器因为其对应的旁路位已被设为有效,故在PLL的实际工作中将不会用到这些计数器,可以不对这些计数器的值再进行配置。
计数器 C5相位 C4相位 C3相位 C2相位 C5高脉冲计数 C5低脉冲计数 C5奇数划分位 C4高脉冲计数 C4低脉冲计数 C4奇数划分位 C3高脉冲计数 C3低脉冲计数 C3奇数划分位 C2高脉冲计数 C2低脉冲计数 C2奇数划分位 N计数器值 counter_type[3:0] counter_param[2:0] 9 8 7 6 9 9 9 8 8 8 7 7 7 6 6 6 0 2 2 2 2 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 0 0 0 0 第 50 页 共 52 页
正在阅读:
高校四进四信团日活动总结2篇04-09
六下趣味数学校本课程12-06
开展2011年技术比武通知03-03
我的家乡平顶山作文03-31
2016-2017学年度最新苏教版小升初全真模拟题3套及答案精品03-19
我的世界指令大全05-14
历史人文02-18
《现代制造技术》说课稿05-31
2015年河南选调生面试礼仪精讲:男生版03-09
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 配置
- 手册
- 图文
- 使用
- Altera
- PLL