编程实现Z 倍倍频模块,对10X/Y (X 和Y
都是整数)MHz 输出频率再次进行Z 倍倍频,
从而获得10X/Y*Z (Z 的取值范围1~65535)
MHz 输出频率。
2 具体设计
根据图1 的设计方案, 要依据标准的
10MHz 频率获得其它的时钟频率,只要准确
的设置FPGA 内锁相环的倍频数以及设计好后
面的分倍频模块即可。虽然上述方法理论上可
产生任意频率的时钟信号,但在实际应用中,
由于受具体FPGA 芯片特性的限制,所能够输
出的时钟频率会根据不同FPGA 芯片的不同
而有所不同。对于以Altera 公司的FPGA 芯片
EP
时钟频率Fout 被分为两类,一类是Fout 正好
满足10*X/Y,其中X、Y都是整数且(10*X/Y)
运算结果也为整数。另一类是Fout 不能满足
(10*X/Y)运算结果为整数且Fout<10MHz。
2.1 对(10*X/Y)运算结果为整数的处理
对于输出时钟频率满足(10*X/Y)运算
结果为整数的情况,可直接通过FPGA 的锁相
环倍数的设置实现。例如要输出12MHz 时钟
信号,可设置X=6,Y=5 即可。具体步骤如下:
(1) 通过FPGA 设计软件quartus, 在
quartus 中调出PLL 锁相环设置,选择输入时
钟10M,见图2。
(2)选择next, 在时钟输出设置中设置倍
频分频比为6/5, 得到12M 时钟信号的输出,
其他设置保持默认,见图3。
(3)点击finish 生成锁相环:inclk0 为输
入10M 时钟,c0 为输出12M 时钟。
2.2 对(10*X/Y)运算结果不为整数的处理
当输出时钟频率无法通过PFGA 芯片内
的锁相环倍频后再分频获得时,可将PFGA 芯
片的时钟频率分频至一个非常低的时钟频率,
比如1Hz。然后再对该时钟频率进行倍频处理。
Fout=(10*X/Y)*Z; 其中Fout<10MHz,
Z<65536 且为整数;
例如要输出32768Hz 时钟信号, 可
将PFGA 芯片的时钟频率分频至1Hz,令
Z=32768 即可。具体设计如图4。
倍频模块的结构如图4 所示,其中包括
高精度计数器模块、32 位除法器模块、倍频
信号发生器模块、信号分频器模块、计数补偿
模块、倍频数设置等模块。
为了使Fout=Z*Fin,并且能跟踪Fin 的频
率,整个系统必须是一个闭环结构。该闭环结
构由高精度计数器模块、32 位除法器模块、
倍频信号发生器、信号分频器、高精度计数器
模块、计数补偿模块组成。以完成输出信号
Fout 对输入信号Fin 频率的追踪和Z 倍倍频。
根据输入信号Fin 的频率实时调节输出信号
Fout 的频率,即使输入信号Fin 的频率突然发
生很大的改变,输出信号Fout 的频率也能快
速的跟踪,完成频率的同步。
2.3 模块功能
高精度计数器模块用以测量输入信号Fin
和分频信号Fout1 的周期,该模块由上升沿提
取模块和计数模块组成。由于实际应用中输入
信号的上升沿可能不是很标准,有时候甚至出
现抖动,而FPGA 对于信号的上升沿检测十分
敏感,输入信号的上升沿抖动会导致FPGA 检
测成多个上升沿,引起后级模块运行出错。上
升沿提取模块通过延时逻辑运算,防止了上升
沿抖动,提取出有效的上升沿信号。计数模块
由高频时钟作为计数时钟,上升沿提取模块提
图2:选择输入时钟10M
图3:设置倍频分频
图4:倍频结构
电子技术 • Electronic Technology
106 • 电子技术与软件工程 Electronic Technology & Software Engineering