FPGA中的时钟网络

来源:互联网 发布:网络流媒体地址你懂的 编辑:程序博客网 时间:2024/04/25 18:25

注:(本文主要针对Cyclone IV E系列器件)

Cyclone IV E中共有15个专用时钟管脚(图中黄色显示的管脚),用来驱动20个全局时钟(Global Clock)。

Cyclone IV系列的管脚连接详情:http://www.altera.com/literature/dp/cyclone-iv/PCG-01008.pdf

时钟网络

GCLK 驱动整个器件,并对器件各象限提供时钟。 器件中的所有资源 (I/O 单元、逻辑阵列模块 (LAB)、专用乘法器模块以及 M9K 存储器模块 ) 都能够将 GCLK 用作时钟资源。 这些全局网络资源可用于控制信号,例如:由外部管脚驱动的时钟使能及清零信号。另外,内部逻辑也能够驱动 GCLK,以用于内部生成的 GCLK 和异步清零、时钟使能,或者其它具有高扇出的控制信号。


时钟控制

时钟控制模块用于驱动 GCLK,它们位于器件的每一侧上,并与专用时钟输入管脚相邻。GCLK 被优化以实现最小时钟偏移及延迟。
表 5-4 列出了用于驱动时钟控制模块的源,反过来驱动 GCLK。

图5-1为时钟控制模块

图5-1注释:

1.clockswitch通过配置文件设置,或者使用手动切换PLL功能时动态设置。多路复用器的输出是PLL的时钟输入(fIN)

2.clkselect[1:0]信号由内部逻辑驱动,当器件在用户模式下时,可用于动态选择GCLK的时钟源。

3.静态时钟选择信号(Static Clock Select)是在配置文件中设置的,因此不可动态设置

4.通过内部逻辑,在用户模式使能或禁用GCLK

5.4个中的两个PLL时钟输出是从相邻的PLL中选择的用于驱动时钟控制模块


下图即为时钟网络与时钟控制模块的位置

上图注释 :
(1) 器件的每一侧均有五个时钟控制模块。
(2) 每个角中,一次只能有一个 CDPCLK 管脚用于驱动时钟控制模块。您可以将其它的 CDPCLK 管脚用作通用 I/O (GPIO) 管脚。
(3) 专用时钟管脚能够连接到这一 PLL。然而,这些路径没有被完全补偿。
(4) PLL_3 与 PLL_4 在 EP4CE6 和 EP4CE10 器件中不可用。


必须从下列时钟源中选择 Cyclone IV E 器件每侧上的五个时钟控制模块的输入:
■ 根据指定的器件选择三个或四个时钟输入管脚
■ 五个 PLL 计数器输出
■ 左侧及右侧上的两个DPCLK管脚和两个CDPCLK管脚,顶端及底部中的四个DPCLK管脚
■ 内部逻辑的五个信号

在以上列出的时钟源中,只有两个时钟输入管脚、两个 PLL 时钟输出 , 一个 DPCLK 或者 CDPCLK 管脚和一个内部逻辑源能够驱动任何给定的时钟控制模块,如上图所示下图5-6为时钟控制模块的简化版本。


GCLK网络控制

可以通过使用Quartus中提供的IP核ALTCLKCTRL进行控制。(详情请移步:http://www.altera.com/literature/ug/ug_altclock.pdf)

可以选择控制外部时钟或者全局时钟,然后对于全局时钟可以选择有多少个时钟输入,同时可以选择是否通过'ena'使能时钟网络被这个控制模块所驱动。这使得能够将时钟断开,即便在使用 PLL 的时候。重新使能输出时钟后,PLL 不需要重新同步或重新锁定周期,因为电路在时钟网路级上会断开时钟。另外,由于与回路相关的计数器不会受到影响,因此 PLL 能够独立于 clkena 信号,并保持在锁定状态。

将时钟源切换到 PLL 或者 GCLK 时,Altera 建议使用 ena 信号。推荐的顺序是:
1. 通过置低 clkena 信号,禁用主输出时钟。
2. 通过使用时钟控制模块的动态选择信号,切换到辅助时钟。
3. 重置位 clkena 信号前,需要经过辅助时钟的一些时钟周期。对辅助时钟进行使能
前,必须等待的确切时钟数还要取决于设计。通过建立定制的逻辑,在不同时钟源
之间进行切换时可以确保无毛刺跳变。


Cyclone IV E中的PLL

(细节可参考http://www.altera.com/literature/ug/ug_altpll.pdf)


下图即为Cyclone IV E中的PLL的特性


图 5-10 注释:
(1) 每一个时钟源均可来自位于器件同一侧作为 PLL 的四个中的任何时钟管脚。
(2) 这是 VCO 后缩放计数器 K。
(3) 该输入端口由一个管脚驱动专用 GCLK 来驱动,或者通过时钟控制模块驱动 ( 如果时钟控制模块由另一个 PLL 的输出或者一个管脚驱动专用 GCLK 来驱动 )。内部生成的全局信号不能驱动 PLL。

PLL外部时钟输出

Cyclone IV 器件的每个 PLL 均支持一个单端时钟输出或者一个差分时钟输出。只有 C0输出计数器才能驱动专用的外部时钟输出,而无需遍历 GCLK, 如图 图 5-11 所示。 其它输出计数器可以通过 GCLK 来驱动其它 I/O 管脚。

图 5-11 注释:
(1) 这些外部时钟使能信号仅在使用 ALTCLKCTRL 宏功能的时候有效。
(2) PLL#_CLKOUTp 与 PLL#_CLKOUTn 管脚是两用 I/O 管脚,可用作一个单端时钟输出或者一个差分时钟输出。 当将这两个管脚都用作单端 I/O 时 , 其中一个可用作时钟输出,而另一个可配置为普通用户 I/O。

后缩放计数器的级联

Cyclone IV 器件的 PLL 支持后缩放计数器的级联,以生成大于 512 的计数器。 这是通过将一个 C 计数器的输出送至下一个 C 计数器的输入来实现的,如图 5-16 所示。

当通过级联计数器来实现高频 VCO 时钟的更大分频时,级联的计数器作为单个计数器运行,并具有单个计数器设置的乘积。例如,如果 C0 = 4 和 C1 = 2, 则级联的值是 C0 × C1 = 8。计数器的级联是在PLL配置文件中自动配置的。

可编程占空比

可编程占空比功能使 PLL 能够生成具有可变占空比的时钟输出,PLL 后缩放计数器支持这一功能。通过后缩放计数器的高 / 低时间计数设置来实现占空比设置。Quartus II软件使用输入频率和目的倍频 / 分频比率来确定占空比的选择。后缩放计数器的值决定了占空周期的精度,该精度定义为 50% 除以后缩放计数器的值。例如,如果 C0 计数器的值为 10, 则 5% 的步长可用于 5% 到 90% 之间的占空比的选择。可编程占空比与可编程相移的结合可以实现精确的非重叠时钟的生成。

PLL 控制信号

可以通过使用 pfdena, areset 和 locked 信号来观测和控制 PLL 的操作以及重同步。

areset:重置所有计数器至初值,包括GATE_LOCK_COUNTER

pfdena:使能相位频率检测器(the phase frequency detector)当相位频率检测器禁用时,PLL会持续不顾后果地运行。因为PLL输出时钟频率在一定时间内不会变化,就可以使用pfdena端口作为关闭或清理功能当一个可靠的时钟不再被获得。
locked:这个输出端口作为一个指标,当PLL输出达到相位稳定时,locked保持为高。当PLL失锁后,为低。

时钟切换

时钟切换功能实现了 PLL 在两个参考输入时钟之间进行切换。这一功能可用于时钟冗余或双时钟域的应用,例如:在之前的时钟停止运行时,一个用于开启冗余时钟的系统。当时钟不再触发,或者不再基于用户控制信号 clkswitch 时,您的设计可以自动执行时钟切换。

当前参考时钟不存在时,时钟检测模块会自动切换到 PLL 参考的备用时钟。另外,时钟切换电路也会发出 PLL 的三个状态信号 —clkbad0、 clkbad1 和 activeclock— 以实现定制切换电路。通过将备用时钟连接至您设计中 PLL 的inclk1 端口,您可以在备用时钟上对时钟源进行选择。
图 5-17 显示了集成在 PLL 中的切换电路结构图。


0 0
原创粉丝点击