基于FPGA PLL锁相环实现及示波器波形失真分析

在看前,建议先看【Cyclone_IV_器件中的时钟网络与 PLL.pdf
PLL具有时钟倍频和分频、相位偏移、可编程占空比、外部时钟输出,进行系统级的时钟管理和偏移控制功能。
PLL常用于同步内部器件时钟和外部时钟,使内部工作的时钟频率比外部时钟频率更高,时钟延迟和时钟偏移最小,减小或调整时钟到输出和建立时间。

时钟控制模块输入

输入 说明
专用时钟输入 专用时钟输入管脚能够驱动时钟或者全局信号,例如:同步与异步清零、预置,或者给定 GCLK 上的时钟使能。
两用时钟(DPCLK与CDPCLK)I/O输入 DPCLK 与 CDPCLK I/O 管脚都是双向双重功能管脚,通过 GCLK 用于高扇出控制信号,例如:协议信号、用于 PCI 的 TRDY IRDY 信号。如果时钟控制模块具有由两用时钟 I/O 管脚驱动的输入端,则该时钟控制模块将不能够驱动 PLL 输入端。
PLL 输出 PLL 计数器输出能够驱动 GCLK。
内部逻辑 通过逻辑阵列布线驱动 GCLK,以使能内部逻辑单元 (LE) 来驱动高扇出,低偏移的信号路径。如果时钟控制模块具有由内部逻辑驱动的输入端,则该时钟控制模块将不能够驱动 PLL 输入端。

在 Cyclone IV 器件中,专用时钟输入管脚、PLL 计数器输出、两用时钟 I/O 输入和内部逻辑都可用于驱动每个 GCLK 的时钟控制模块。反过来,时钟控制模块上的输出也能够驱动相应的 GCLK。如果时钟控制模块输入是另一个 PLL 或者专用时钟输入管脚的输出,那么 GCLK 能够驱动 PLL 输入。

操作过程,直接看黑金教学教程就行,已经很详细了,我只想贴一下我的实验结果。
补充一下实验过程:
基于FPGA PLL锁相环实现及示波器波形失真分析
基于FPGA PLL锁相环实现及示波器波形失真分析
基于FPGA PLL锁相环实现及示波器波形失真分析
基于FPGA PLL锁相环实现及示波器波形失真分析
因为我用的cyclone IV E的时钟是50MHz的,PLL有四种工作模式,在这里选择in normal mode.
基于FPGA PLL锁相环实现及示波器波形失真分析
输入输出信号选择,默认就行。
基于FPGA PLL锁相环实现及示波器波形失真分析
基于FPGA PLL锁相环实现及示波器波形失真分析
基于FPGA PLL锁相环实现及示波器波形失真分析
基于FPGA PLL锁相环实现及示波器波形失真分析
基于FPGA PLL锁相环实现及示波器波形失真分析
同理设置clk c1 c2 c3,分别是50M,75M,100M,不懂可以留言。设置完c3点击finish,然后出现下图,就是PLL创建成功了。
基于FPGA PLL锁相环实现及示波器波形失真分析
在file里可以看到
基于FPGA PLL锁相环实现及示波器波形失真分析

示波器测量到的波形为 25Mhz 的方波(因为示波器原因,已经开始失真了,往下的波形均有失真):
【确定带宽抑制是关闭状态的】
基于FPGA PLL锁相环实现及示波器波形失真分析
示波器测量到的波形为 50Mhz 的方波:
基于FPGA PLL锁相环实现及示波器波形失真分析
示波器测量到的波形为 75Mhz 的方波:
基于FPGA PLL锁相环实现及示波器波形失真分析
示波器测量到的波形为 100Mhz 的方波:
基于FPGA PLL锁相环实现及示波器波形失真分析

分析波形的失真问题: 首先要了解方波的合成,由信号与系统的学习中,我们可以知道,方波其实不是真是存在的,其是有多次谐波叠加而成的,谐波次数越多,那么就越接近方波。所以,在示波器的捕捉频率为100MHz的情况下,25MHz的方波只能捕捉到4个点,50MHz,75MHz,100MHz,分别为2,1,1个点,那么仅由4,2,1,1个点绘出的波形,肯定是严重失真的啦。

基于FPGA PLL锁相环实现及示波器波形失真分析
这是一个傅里叶的传输门

补充一个利用signalTap II logic analyzer检测输出的方波。同时因为采样频率时钟选择CLK4_100M,所以在这里也对相应的输出时钟做了改动。如下图所示:
基于FPGA PLL锁相环实现及示波器波形失真分析

因为刚学PLL,尚且还有很多不懂的地方,有错的,望指正,这只是初步的学习报告,还会又后续补充。