FPGA时钟倍频,分频

1、 实验环境
Windows 10 64 位  Quartus (Quartus Prime 17.1) Lite Edition
黑金 FPGA 开发板(AX301 开发板、AX4010 开发板、AX1006 开发板、AX1006 开发板、
AX1025 开发板)
示波器

2、 实验原理
PLL 技术非常复杂,主要实现的功能就是倍频分频,实现的原理这里丌做讲解,FPGA 内的PLL 都是一个硬件模块(硬核),是 FPGA 中非常重要的资源。
Cyclone IV 和 Cyclone 10 LP 最多能提供了 4 个 PLL(EP4CE6 和 EP4CE10 只有 2 个 PLL)为设备提供强大的时钟管理和外部系统时钟管理及高速的 IO 通信, 通过时钟输入, 产生丌同频率和丌同相位的时钟信号供系统使用

PLL 的时钟输入可以是 PLL 所在的 Bank 的时钟输入管脚 戒者其他 PLL 的输出,FPGA 内部产生的信号丌能驱动 PLL。Cyclone IV PLL 产生的时钟可以为单端时钟信号戒差分时钟信号, 可以通过GCLK 网络直接驱动 FPGA 外部的 IO 口。在这里插入图片描述
(1)创建PLL工程
(2)添加 PLL IP,如图所示,“IP Catalog”可以通过工具栏点击出来,然后搜索“pll”,双击“ALTPLL”
在这里插入图片描述
(3)在弹出框添加 IP 路径和顶层文件名,选择文件类型为 Verilog,注意文件名的扩展名,完成以后点击“OK”按钮。在这里插入图片描述
(4)在弹出 PLL 参数配置界面中配置输入时钟频率为 50Mhz,这个要和实际输入时钟频率一致,界面中我们可以看到有个 PLL 框图,标出了输入输出信号,左边为输入,右边为输出,其中“inclk0"是时钟输入源,"areset"是异步复位输入,"c0"是第一个时钟输出,“locked”是 PLL 锁定信号,表示已经稳定输出了。在这里插入图片描述
在这里插入图片描述
(5)在“Output Clocks”选项卡中配置时钟输出,使能“clk c0”,设置输出为 25Mhz在这里插入图片描述
(6)使能“clk c1”,设置输出为 50Mh在这里插入图片描述
(7)使能“clk c2”,设置输出为 75Mhz
在这里插入图片描述
(8)使能“clk c3”,设置输出为 100Mhz在这里插入图片描述
(9)点击“Finish”后弹出一个窗口,提示是否将 IP 添加的工程中,这里点“Yes”在这里插入图片描述
输出引脚选择
在设计中,经常遇到需要将PLL的输出时钟通过FPGA的管脚输出到外部供外部器件使用,例如SDRAM的同步时钟脚,千兆以太网的GTXCLK时钟。在大多数的情况下,我们随便选择一个脚将该时钟引出,不会有任何问题,但是,在全编译的时候,会报一个15064的警告,例如在千兆以太网系统中,输出到千兆PHY的GMII接口发送时钟的PLL1的C0就会报出如下警告.(看不清可以点击图片,查看高清大图哦)在这里插入图片描述
先给这句话翻译一下吧:
警告(15064): “pll:pll|altpll:altpll_component|pll_altpll:auto_generated|pll1” (这是一个PLL的名字)的输出端口clk[0] 驱动"GMII_GTXC~output"脚是通过非非专用的布线路径,其抖动程度(时钟抖动概念可以某度)取决于其他设计单元的翻转速度,使用专用的PLL时钟输出脚来保证抖动的程度(尽量小)
那么好,现在的问题来了,怎样知道哪个引脚才是哪个PLL的对应的专用输出IO呢?挺简单的。
在Quartus II软件中引脚分配时候的时候,找以L标识的引脚,然后把鼠标光标移到该引脚上,就会弹出该引脚信息,在弹出的信息框中,就会标明该引脚是属于哪个PLL的CLKOUTn或者CLKOUTp,如例如,在EP4CE30中,AA3脚就是标识为L的脚,其引脚信息显示,其为PLL1的CLKOUTp管脚(PLL1_CLKOUTp),同样的,AB3引脚的标识符也为L,如果把光标移动到AB3引脚上,可以看到该引脚信息为(PLL1_CLKOUTn)。如果是使用单端时钟输出,那么就应该将PLL的这个输出分配到CLKOUTp引脚上。如果是差分时钟输出,那么就应该将PLL的时钟以差分模式分别分配到CLKOUTp和CLKOUTn上在这里插入图片描述
例如上述千兆网例子中,将GMII_GTXC信号分配到AA3管脚后,报错信息就消失了。(当然,由于硬件板卡上以太网PHY芯片的GMII_GTX中信号并没有连接到该引脚,这样改,警告是没了,但是功能怕也是没咯)。要两者都能保证,只能改硬件板卡了耶。不过根据Intel官网上一些工程师的说法,这个警告其实一般可以不用太在意。

    还有一个纠结的事情就是,一个PLL虽然最多可以产生5路输出,但是每个PLL却只对应有一个专用时钟输出管脚,意思也就是,如果你用一个PLL产生多个输出,还都需要通过IO输出到外部器件,那么总会只有一时钟能享受该专用输出脚,其他的几个时钟信号还是只能走通用IO。
上述所述的情况其实非常的常见,典型的如图像采集显示系统—— CMOS摄像头采集图像存储到SDRAM中,然后再由VGA接口输出。
    该系统中,需要使用PLL产生3个时钟输出到外部器件,一个CMOS_XCLK用以给CMOS摄像头提供基本参考时钟,一个SDRAM_CLK用来作为SDRAM器件的同步时钟,一个VGA_CLK用来驱动VGA数模转换器。
    所以,针对这个警告,我们也就只能佛系对待了,本身影响不是十分大,要解决的代价却还比较大,因此,阿弥陀佛。

5 测量 PLL 输出波形
这里需要使用示波器来测量,如果没有示波器,再其他例程中会有 PLL 使用的例程,也能体现出 PLL 的作用。使用示波器测量 FPGA 的 IO 输出时要特别小心,如果有高电压碰到 FPGA 的 IO管脚,会损坏 FPGA 芯片。我们再在 Programmer 里用 JTAG 工具把 SOF 文件下载到 FPGA 中,接下去我们就可以用示波器来 J2 接口上 Pin3, Pin4, Pin5, Pin6 的输出时钟波形了。用示波器探头的地线连接到开发板上的地(J2 的 Pin1),示波器探头点中 J2 的 Pin3,示波器测量到的波形为 25Mhz 的方波:在这里插入图片描述
在这里插入图片描述
再用示波器探头点中 J2 的 Pin5,示波器测量到的波形为 75Mhz 的方波(因为示波器的带宽原
因,波形有一定程度的失真):在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

位沁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值