Cyclone器件中的PLL使用介绍
摘要:Cyclone? FPGA具有锁相环(PLL)和全局时钟网络,提供完整的时钟管理方案。Cyclone PLL
具有时钟倍频和分频、相位偏移、可编程占空比和外部时钟输出,进行系统级的时钟管理和偏移控制。Altera? Quartus? II软件无需任何外部器件,就可以启用Cyclone PLL和相关功能。本文将介绍如何设计和使用Cyclone PLL功能。PLL常用于同步内部器件时钟和外部时钟,使内部工作的时钟频率比外部时钟更高,时钟延迟和时钟偏移最小,减小或调整时钟到输出(TCO)和建立(TSU)时间。
关键字:Cyclone? FPGA 锁相环 PLL
1. 硬件结构
每个Cyclone FPGA包括具有多达两个PLL。表1为几种型号Cyclone FPGA内可用的PLL数量。
表1注释:
(1) 位于器件的左侧中部 (2) 位于器件的右侧中部
表2:Cyclone PLL功能 功能 时钟倍频和分频 相位偏移 可编程占空比 内部时钟输出数量 外部时钟输出数量(4) 锁定端口可以输入逻辑阵列 PLL时钟输出可以输入逻辑阵列 说明 M/(N×后scale计数器)(1) 小至156皮秒(ps)的增量幅度(2),(3) 每个PLL两个输出 每个PLL一个输出 表2注释: (1)M,N和后scale计数器的值从1至32;
(2)最小的相位偏移量为压控振荡器(VCO)周期除以8;
(3)对于角度调整,Cyclone FPGA的偏移输出频率的增量至少为45o。更小的角度增量可能取决于PLL时钟输出的倍频/分频系数; (4) 100脚的扁平四方封装(TQFP)的EP1C3器件不支持PLL LVDS输出或外部时钟输出,144脚TQFP封装的EP1C6 PLL2不支持
外部时钟输出。
Cyclone PLL区块
PLL主要作用就是把内部/外部时钟的相位和频率同步于输入参考时钟。PLL由许多部分组成,共同完成相位调整。Cyclone PLL采用一个相位频率检测器(PFD)把参考输入时钟的上升沿和反馈时钟对齐。根据占空比规定确定下降沿。PFD产生一个上升或下降信号,决定VCO是否需要以更高或更低的频率工作。PFD输出施加在电荷泵和环路滤波器,产生控制电压设置VCO的频率。如果PFD产生上升信号,然后VCO就会增加。反之,下降信号会降低VCO的频率。PFD输出这些上升和下降信号给电荷泵。如果电荷泵收到上升信号,电流注入环路滤波器。反之,如果收到下降信号,电流
就会流出环路滤波器。环路滤波器把这些上升和下降信号转换为电压,作为VCO的偏置电压。环路滤波器还消除了电荷泵的干扰,防止电压过冲,这样就会最小化VCO的抖动。环路滤波器的电压决定了VCO操作的速度。VCO是用四级差分环路滤波器实现的。反馈环路中的分频计数器增加输入参考频率以上的VCO频率,使得VCO频率(fVCO)等于输入参考时钟(fREF)的M倍。PFD的输入参考时钟(fREF)等于输入时钟(fIN)除以欲scale计数器(N)。因此,PFD某个输入的反馈时钟(fFB)锁定于PFD的另一个输入的参考时钟(fREF)。VCO的输出输入三个后scale计数器(G0、G1和E)。这些后scale计数器可以在PLL中产生许多谐振频率。另外,PLL有内部延迟单元补偿全局时钟网络的走线和外部时钟输出管脚的I/O缓冲器延迟。这些内部延迟是固定的,用户无法控制。
2.软件简述
Quartus II软件中用altpll宏功能调用Cyclone PLL。图2是Cyclone PLL的端口(用Quartus II altpll宏功能内的名称)以及来源和目的。要注意altpll的c[1..0]和e0时钟输出端口是由后scale计数器G0、G1和E驱动的。G0和G1计数器驱动c0和c1 PLL输出的内部全局时钟网络,E计数器驱动到e0 PLL输出连接的PLL外部时钟输出管脚。
图2 Cyclone PLL的端口
图2的注释:
(1) 你可以把这些信号分配给单端I/O标准或LVDS; (2) Inclk0必须由专用时钟输入管脚驱动; (3) e0驱动两用PLL[2..1]_OUT管脚。
表3:PLL输入信号 端口 说明 inclk0 PLL的时钟输入 来源 目的 专用时钟输/n计数器 入管脚(1) pllena(2) pllena是高有效信号,是PLL的启动和复位信号。逻辑阵列(3) PLL控制信号 它可以启动一个或两个PLL。当该信号为低时,PLL时钟输出端口输出为GND,PLL失锁。一旦该信号再次变高,锁定过程开始,PLL重新和输入参考时钟同步。可以由内部逻辑或任意的通用I/O管脚驱动pllena。 areset areset是高有效信号,复位所有的PLL计数器为初逻辑阵列(3) PFD 始值。当该信号为高时,PLL复位该计数器,失锁。一旦该信号再次变低时,锁定过程开始,PLL重新和输入参考时钟同步。可以由内部逻辑或任意通用I/O管脚驱动areset。 pfdena pfdena是高有效信号,启动PFD的升降输出信号。逻辑阵列(3) PFD 当pdfena为低时,PFD无效,而VCO继续工作。PLL不管输入时钟是否有效,时钟输出继续触发,但是会有一些长期偏移。因为输出时钟频率一段时间内不会改变,在输入时钟无效时,pfdena端口可以作为关机或清除信号。可以由内部逻辑或任意通用I/O管脚驱动pfdena端口。 表3注释: (1)PLL的inclk0端口必须由专用时钟管脚驱动。
(2) 所有的PLL没有专门的pllena管脚,这样你可以为两个PLL选用其中一个pllena或每个PLL都有各自的pllena管脚。
(3)逻辑阵列来源意味着你可以从内部逻辑或任意通用I/O管脚驱动这个端口。
表4:PLL输出信号 端口 说明 c[1..0] PLL时钟输出驱动内部全局时钟网络 e0(2) PLL时钟输出驱动单端或LVDS外部时钟输出管脚。 locked PLL锁定状态。当PLL锁定时,该端口为高。当PLL失锁时,该端口为低。在PLL锁定过程中,锁定端口输出为脉冲高和低。 来源 PLL后scale计数器G0或G1 PLL后scale计数器E PLL锁定检测 目的 全局时钟网络(1) PLL[2..1]_OUT管脚(3) 逻辑阵列(4) 表4注释: (1) C[1..0]可以通过全局时钟网络驱动任何通用I/O管脚;
(2) 100脚TQFP封装的EP1C3器件和144脚TQFP封装的EP1C6 PLL2不支持外部时钟输出PLL[2..1]_OUT; (3) PLL[2..1]_OUT管脚是两用管脚。如果不需要这些管脚,它们可以作为通用I/O管脚; (4) 逻辑阵列目的意味着你可以把该端口输出到内部逻辑或任意通用I/O管脚。
在Quartus II软件中,你定义哪些从PLL(c0或c1)输出的内部时钟应该补偿。这些PLL时钟输出参照PLL输入时钟进行相位校正。例如,如果c0指定为正常模式下的补偿时钟,那么根据c0在全局时钟网络上的走线来补偿。
3.管脚和时钟网络连接
必须用专用时钟输入管脚CLK[3..0]驱动Cyclone PLL。反转时钟和内部产生时钟无法驱动PLL。表5说明哪些专用时钟管脚驱动哪些PLL输入时钟端口。单个时钟输入管脚不能驱动所有的PLL,但是单个时钟输入管脚可以输入逻辑阵列的两个缓存器以及PLL inclk端口。 表5:PLL输入时钟来源 时钟输入管脚(1) PLL1 PLL2(2) CLK0 √ CLK1 √ CLK2 √ CLK3 √ 表5注释: (1) 如果你使用LVDS标准,那么两个驱动PLL的管脚的CLK都要使用; (2) EP1C3只支持PLL1。
Altpll的c[1..0]和e0时钟输出管脚由PLL后scale计数器G0、G1和E驱动(和顺序无关)。G0和G1计数器馈入c0和c1 PLL输出的内部全局时钟网络上。E计数器馈入e0 PLL输出的PLL外部时钟输出管脚上。表6说明PLL后scale计数器输出能够驱动哪些全局时钟网络。 表6:PLL输出时钟对应的全局时钟网络 PLL 计数器输出 GCLK0 GCLK1 GCLK2 GCLK3 GCLK4 GCLK5 GCLK6 GCLK7 PLL1 G0 √ √ G1 √ √ PLL2 G0 √ √ G1 √ √ 图3为PLL输入和输出时钟连接关系,归纳了表5和表6的内容。
图3.Cyclone PLL时钟连接
图3注释:
(1) PLL1通过CLK0和CLK1管脚支持一个单端或LVDS输入。 (2) PLL2通过CLK2和CLK3管脚支持一个单端或LVDS输入。
(3) PLL1_OUT和PLL2_OUT支持单端或LVDS输出。如果不使用外部时钟输出,这些管脚可以作为通用I/O管脚。
4.硬件功能
可以在逻辑阵列区块(LAB)和输入/输出单元(IOE)级反转PLL的时钟输出。Cyclone PLL有许多高级功能,包括时钟倍频和分频、相位偏移、可编程占空比、外部时钟输出和控制信号。
时钟倍频和分频
Cyclone PLL采用M/(N×后scale)scale系数为PLL输出端口提供时钟合成输出。每个PLL有一个预scale系数(N)和一个乘法系数(M),范围从1到32。输入时钟(fIN)经由预scale计数器(N)分频后产生PFD的输入参考时钟(fREF)。然后fREF乘以M反馈系数。控制环路驱动VCO频率匹配fIN×(M/N)。见下面等式。
fREF=fIN/N
fVCO=fREF×M=fIN×(M/N)
每个输出端口有一个唯一的后scale计数器降低高频VCO。有三个后scale计数器(G0、G1和E),范围从1至32。见下面等式:
fC0=fVCO/G0=fIN×(M/(N×G0)) fC1=fVCO/G0=fIN×(M/(N×G1)) fC0=fVCO/E=fIN×(M/(N×E))
c0和c1可以使用两个后scale计数器之一,G0或G1。
对应有不同频率的多个PLL输出,VCO可以设置为满足VCO频率规定输出频率的最小倍数。然后,后scale计数器降低每个PLL时钟输出端口的输出频率。例如,如果时钟输出频率需要从33到66MHz,VCO可以设置为330MHz(VCO范围内的最小倍数)。
相位偏移
Cyclone PLL有高级的时钟偏移能力,提供可编程的相位偏移。你可以在altpll MegaWizard?外挂插件管理器中设置所需的相位偏移,Quartus II软件会自动设置和显示最近的有效相位偏移。你可以为每个PLL时钟输出端口输入角度、单位时间的相位偏移。所有三个PLL后scale计数器G0、G1和E以及所有的时钟反馈模式都支持这种功能。
相位偏移是根据补偿的PLL时钟输出进行的。例如,你需要100MHz输出时钟,在c0上具有a×1倍频和+90°相位偏移,在c1上具有a×1倍频和+45°相位偏移。如果你选择补偿c0时钟输出,PLL使用零相位偏移c0时钟作为参考点在c0上生成+90°的相位偏移。既然c0是补偿时钟,那么它相对输入时钟的相位偏移 +90°。c1时钟也使用零相位偏移c0参考在c1上生成+45°的相位偏移。
对于精细的相位调整,每个PLL时钟输出计数器可以从多达8个相位移位中选择不同的VCO相位,进行精细的相位调整。另外,每个时钟输出计数器使用唯一的初始化计数设置独立实现相位粗调,步长为一个VCO周期。Quartus II软件可以使用时钟输出计数器和后scale计数器的初始化设置,实现整个输出时钟周期的相位偏移。你可以把PLL时钟输出的相位偏移到±180°。Quartus II软件会根据相位偏移需求自动设置相位移位和计数器设置。
相位细调精度取决于输入频率和倍频/分频系数(也就是VCO周期的函数),最精细的步长等于VCO周期的八分之一。最小的相位偏移是1/(8×fVCO)或N/(8×M×fIN)。在Cyclone FPGA中,VCO范围从300到800MHz。因此,相位偏移可以按照1/(8×800MHz)到1/(8×300MHz)范围的精度进行调整,时间单位是156到417ps。
因为有八个VCO相位位移,最大步长为45°。更小的步长取决于输出时钟端口所需的倍频和分频比率。决定相位偏移度数的精度是45°除以后scale计数器值。例如,如果输入时钟为×1的125MHz,那么后scale计数器G0是3。因此,最小的相位步长是(45°/3=15°),可能的相位偏移值是15°的倍数。
因为这类的相位偏移对制程、电压和温度变化很不敏感,因此具有最大精度。
可编程占空比
可编程占空比功能允许你设置PLL时钟输出的占空比。占空比是时钟输出高/低时间和整个时钟周期时间的比率,表示为处于高的时间的比例。Quartus II软件使用输入频率和目的倍频/分频比率来选择后scale计数器。占空周期精度由PLL时钟输出选用的后scale计数器值决定,定义为50%除以后scale计数器值。例如,如果后scale计数器的值为3,允许的占空比为50%除以3等于16.67%。因为altpll宏功能不接受非整数值的占空比值,允许的占空比为17%、33%、50%和67%。
由于硬件的限制,你不能实现84%的占空比,因为对于给定的计数器值你不能实现最接近100%的值。然而,你可以选择17%的占空比,反转PLL时钟输出,从而实现84%的占空比。例如,如果G0计数器为10,占空比增量是5%,范围从5%到90%。
外部时钟输出
每个PLL支持通用外部时钟或来源同步发送器一个单端或LVDS外部时钟输出。E计数器输出驱动PLL外部时钟输出(e0),它只能馈入PLL[2..1]_OUT管脚而不是内部逻辑。所有三种时钟反馈模式都可以使用PLL[2..1]_OUT。
100脚封装的EP1C3器件和144脚的EP1C6 PLL2封装不支持外部时钟输出。
PLL[2..1]_OUT管脚是两用管脚,如果PLL不使用该管脚,那么它们可以作为I/O管脚。PLL[2..1]_OUT管脚支持的I/O标准见表7。 表7:Cyclone PLL管脚支持的I/O标准 I/O标准 inclk PLL[2..1]_OUT(1) LVTTL √ √ LVCMOS √ √ 2.5-V √ √ 1.8-V √ √ 1.5-V √ √ 3.3-V PCI √ √ LVDS(2) √ √ SSTL-2 Class I √ √ SSTL-2 Class II √ √ SSTL-3 Class I √ √ SSTL-3 Class II √ √ 表7注释: (1) 100脚TQFP封装的EP1C3和144脚TQFP封装的EP1C6 PLL2不支持外部时钟输出; (2) 100脚TQFP封装的EP1C3不支持LVDS输出。
既然pllena和locked信号可以由通用I/O管脚驱动或驱动通用I/O管脚,那么它们也支持所有的Cyclone I/O标准。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Cyclone器件中PLL的使用在线全文阅读。
相关推荐: