• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

PLL实验设计Verilog代码Quartus AX301开发板

05/08 13:15
1013
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-241111193UBG.docx

共1个文件

名称:PLL实验设计Verilog代码Quartus AX301开发板

软件:Quartus

语言:Verilog

代码功能:

PLL 技术非常复杂,主要实现的功能就是倍频分频,实现的原理这里不做讲解,FPGA 内的PLL 都是一个硬件模块(硬核),是 FPGA 中非常重要的资源。

Cyclone IV 和 Cyclone 10 LP 最多能提供了 4 个 PLL(EP4CE6 和 EP4CE10 只有 2 个 PLL)为设备提供强大的时钟管理和外部系统时钟管理及高速的 IO 通信, 通过时钟输入, 产生不同频率和不同相位的时钟信号供系统使用。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在AX301开发板验证,AX301开发板如下,其他开发板可以修改管脚适配:

AX301开发板.png

设计文档:

1 文档简介

很多初学者看到板上只有一个 50Mhz 时钟输入的时候都产生疑惑,时钟怎么才 50Mhz?如果要工作在 100Mhz、150Mhz 怎么办?在很多 FPGA 芯片内部都集成了 PLL,其他厂商可能不叫 PLL,但是也有类似的功能模块,通过 PLL 可以倍频分频,产生其他很多时钟。本实验通过调用 PLL ipcore 来学习 PLL 的使用、Quartus 的 IP core 使用方法。

2 实验环境

  • Windows 10 64 位
  • Quartus (Quartus Prime 17.1) Lite Edition
  • 黑金 FPGA 开发板(AX301 开发板、AX4010 开发板、AX1006 开发板、AX1006 开发板、AX1025 开发板)
  • 示波器

3 实验原理

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 口。

Cyclone IV 和 Cyclone 10 LP 的单个 PLL 最大能提供 5 路输出,但是这 5 路输出是有一定的关系 的,从 PLL 的结构图可以看出,5 路输出不同频率取决于 C0、C1、C2、C3、C4 的分频比。

本实验将 PLL 输出的不同时钟通过 FPGA 的普通 IO 输出,然后用示波器测量输出频率。

4 建立工程

(1)建立一个“pll_test”工程

(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”

(10)新建一个 pll_test.v 的 Verilog 文件,例化上面的 PLL ip

`timescale 1ns / 1ps

module pll_test(

input clk, input rst_n, output clkout1, output clkout2, output clkout3,

hdlcode.com 8 / 12

hdlcode

output clkout4

);

wire locked;

pll pll_inst

(

// Clock in ports

.inclk0(clk), // IN 50Mhz

// Clock out ports

.c0(clkout1), // OUT 25Mhz

.c1(clkout2), // OUT 50Mhz

.c2(clkout3), // OUT 75Mhz

.c3(clkout4), // OUT 100Mhz

// Status and control signals

.areset(~rst_n), // IN .locked(locked) //The signal of PLL normal operation

); // OUT

endmodule

注意:例化的目的是在上一级模块中调用例化的模块完成代码功能,在Verilog 里例化信号的 格式如下:模块名必须和要例化的模块名一致,包括信号名也必须一致,模块不模块之间的连接 信号不能相互冲突,否则会产生编译错误。

(11) 分配管脚并编译生成 sof 文件(其它开发板的管脚分配参考对应的工程)

AX301、AX4010 管脚分配

5 测量 PLL 输出波形

这里需要使用示波器来测量,如果没有示波器,再其他例程中会有 PLL 使用的例程,也能体现出 PLL 的作用。使用示波器测量 FPGA 的 IO 输出时要特别小心,如果有高电压碰到 FPGA 的 IO管脚,会损坏 FPGA 芯片。

我们再在 Programmer 里用 JTAG 工具把 SOF 文件下载到 FPGA 中,接下去我们就可以用示波器来 J2 接口上 Pin3, Pin4, Pin5, Pin6 的输出时钟波形了。

用示波器探头的地线连接到开发板上的地(J2 的 Pin1),示波器探头点中 J2 的 Pin3,示波器测量到的波形为 25Mhz 的方波:

再用示波器探头点中 J2 的 Pin4,示波器测量到的波形为 50Mhz 的方波:

再用示波器探头点中 J2 的 Pin5,示波器测量到的波形为 75Mhz 的方波(因为示波器的带宽原 因,波形有一定程度的失真):

再用示波器探头点中 J2 的 Pin6,示波器测量到的波形为 100Mhz 的方波(因为示波器的带宽原 因,波形有一定程度的失真):

部分代码展示:

//////////////////////////////////////////////////////////////////////////////////
//                                                                              //
//                                                                              //
//  Author: meisq                                                               //
//          msq@qq.com                                                          //
//          ALINX(shanghai) Technology Co.,Ltd                                  //
//          heijin                                                              //
//     WEB: http://www.alinx.cn/                                                //
//     BBS: http://www.heijin.org/                                              //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////
//                                                                              //
// Copyright (c) 2017,ALINX(shanghai) Technology Co.,Ltd                        //
//                    All rights reserved                                       //
//                                                                              //
// This source file may be used and distributed without restriction provided    //
// that this copyright statement is not removed from the file and that any      //
// derivative work contains the original copyright notice and the associated    //
// disclaimer.                                                                  //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////
//================================================================================
//  Revision History:
//  Date          By            Revision    Change Description
//--------------------------------------------------------------------------------
//  2017/7/19     meisq          1.0         Original
//*******************************************************************************/

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1343

  • 2-241111193UBG.docx
    下载

相关推荐