0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vivado下PLL实验 ALINX

电子设计 来源:电子设计 作者:电子设计 2022-02-08 15:13 次阅读

作者: ALINX

适用于板卡型号:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

实验Vivado工程为“pll_test”。

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

1.实验原理

PLL(phase-locked loop),即锁相环。是FPGA中的重要资源。由于一个复杂的FPGA系统往往需要多个不同频率,相位的时钟信号。所以,一个FPGA芯片中PLL的数量是衡量FPGA芯片能力的重要指标。FPGA的设计中,时钟系统的FPGA高速的设计极其重要,一个低抖动, 低延迟的系统时钟会增加FPGA设计的成功率。

本实验将通过使用PLL, 输出一个方波到开发板上的扩展口,来给大家演示在Vivado软件里使用PLL的方法。

Ultrascale+系列的FPGA使用了专用的全局(Global)和区域(Regional)IO和时钟资源来管理设计中各种的时钟需求。Clock Management Tiles(CMT)提供了时钟合成(Clock frequency synthesis),倾斜矫正(deskew),过滤抖动(jitter filtering)功能。

每个CMTs包含一个MMCM(mixed-mode clock manager)和一个PLL。如下图所示,CMT的输入可以是BUFR,IBUFG,BUFG,GT,BUFH,本地布线(不推荐使用),输出需要接到BUFG或者BUFH后再使用

混合模式时钟管理器(MMCM)

MMCM用于在与给定输入时钟有设定的相位和频率关系的情况下,生成不同的时钟信号。MMCM提供了广泛而强大的时钟管理功能,

MMCM内部的功能框图如下图所示:

pIYBAGAJuYKAEpu5AABruO8SEPk399.png

数字锁相环(PLL)

锁相环(PLL)主要用于频率综合。使用一个PLL可以从一个输入时钟信号生成多个时钟信号。与MMCM相比,不能进行时钟的deskew,不具备高级相位调整,倍频器和分频器可调范围较小等。

PLL功能框图如下图所示:

pIYBAGAJucCAZ4I1AABRmATKN6M495.png

想了解更多的时钟资源, 建议大家看看Xilinx提供的文档“7 Series FPGAs Clocking Resources User Guide”。

2. 创建Vivado工程

本实验中为大家演示如果调用Xilinx提供的PLL IP核来产生不同频率的时钟, 并把其中的一个时钟输出到FPGA外部IO上, 下面为程序设计的详细步骤。在创建PLL IP之前,有一点需要提下,在原理图中可以看到PL_REF_CLK,也就是25MHz参考时钟,在BANK44中,而且属于HDGC

pIYBAGAJugGATm_gAANXs9nwnwI981.png

在ug572文档中提到HDGC引脚不能直接连接到MMCMs/PLLs,需要经过BUFG,再连接到MMCMs/PLLs,这个地方是需要注意的。

新建一个pll_test的工程,点击Project Manager界面下的IP Catalog。

pIYBAGAJuoSAEbqDAALQKR1QqCI319.png

2.1 再在IP Catalog界面里选择FPGA Features and Design/Clocking下面的Clocking Wizard,双击打开配置界面。

pIYBAGAJusOAeOdfAACUEwDVM5I687.png

2.2 默认这个Clocking Wizard的名字为clk_wiz_0, 这里我们不做修改。在第一个界面Clocking Options里,输入的时钟频率为25Mhz,并选择No buffer,也就是在PLL之前要接个BUFG。

pIYBAGAJuwKAZKf_AAERTfgn9_E251.png

2.3 在Output Clocks界面里选择clk_out1~clk_out4四个时钟的输出,频率分别为200Mhz, 100Mhz, 50Mhz, 25Mhz。这里还可以设置时钟输出的相位,我们不做设置,保留默认相位,点击 OK完成,

o4YBAGAJu0GAPAcSAAF-bXFLixs408.png

2.4 在弹出的对话框中点击Generate按钮生成PLL IP的设计文件。

pIYBAGAJu3-ARpejAABu7OMP4Yw472.png

2.5 这时一个 clk_wiz_0.xci的IP会自动添加到我们的pll_test项目中, 用户可以双击它来修改这个IP的配置。

pIYBAGAJu_KAFuJ9AADwkDZuE68657.png

选择IP Sources这页,然后双击打开clk_wiz_0.veo文件,这个文件里提供了这个IP的实例化模板。我们只需要把框框的中内容拷贝到我们verilog程序中,对IP进行实例化。

o4YBAGAJvFKADErLAALT3FQdQrU698.png

2.6 我们再来编写一个顶层设计文件来实例化这个PLL IP, 编写pll_test.v代码如下。注意PLL的复位是高电平有效,也就是高电平时一直在复位状态,PLL不会工作,这一点很多新手会忽略掉。这里我们将rst_n绑定到一个按键上,而按键是低电平复位,因此需要反向连接到PLL的复位。在程序中插入一个BUFG原语,连接到PLL。

`timescale1ns/1ps

module pll_test(

input sys_clk,//system clock 25Mhz on board

input rst_n,//reset ,low active

output clk_out //pll clock output

);

wire locked;

wire sys_clkbuf ;

BUFG BUFG_inst (

.O(sys_clkbuf),// 1-bit output: Clock output.

.I(sys_clk)// 1-bit input: Clock input.

);

/////////////////////PLL IP call////////////////////////////

clk_wiz_0 clk_wiz_0_inst

(// Clock in ports

.clk_in1(sys_clkbuf),// IN 25Mhz

// Clock out ports

.clk_out1(),// OUT 200Mhz

.clk_out2(),// OUT 100Mhz

.clk_out3(),// OUT 50Mhz

.clk_out4(clk_out),// OUT 25Mhz

// Status and control signals

.reset(~rst_n),// pll reset, high-active

.locked(locked));// OUT

endmodule

程序中先用实例化clk_wiz_0, 把25Mhz时钟信号输入到clk_wiz_0的clk_in1_p和clk_in1_n,把clk_out4的输出赋给clk_out。

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

o4YBAGAJvJCAdWfWAABoHqy2wMg988.png

2.7 保存工程后,pll_test自动成为了top文件,clk_wiz_0成为Pll_test文件的子模块。

o4YBAGAJvM-Af_ezAADodWSWbQY293.png

2.8 再为工程添加xdc管脚约束文件pll.xdc,添加方法参考”PL的”Hello World”LED实验”,也可以直接复制以下内容。并编译生成bitstream。

############## clock and reset define##################set_property PACKAGE_PIN AB11 [get_ports sys_clk]

set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]

create_clock -period 40.000 -name sys_clk -waveform {0.000 20.000} [get_ports sys_clk]

set_property IOSTANDARD LVCMOS33 [get_ports {rst_n}]

set_property PACKAGE_PIN AA13 [get_ports {rst_n}]

############## pll output define J11 PIN3##################

set_property IOSTANDARD LVCMOS33 [get_ports clk_out]

set_property PACKAGE_PIN A11 [get_ports clk_out]

3.板上验证

编译工程并生成pll_test.bit文件,再把bit文件下载到FPGA中,接下去我们就可以用示波器来测量输出时钟波形了。

用示波器探头的地线连接到开发板上的地(开发板J15的PIN1脚),信号端连接开发板J15的PIN3脚(测量的时候需要注意,避免示波器表头碰到其它管脚而导致电源和地短路)。

这时我们可以在示波器里看到25Mhz的时钟波形,波形的幅度为3.3V, 占空比为1:1,波形显示如下图所示:

如果您想输出其它频率的波形,可以修改时钟的输出为clk_wiz_0的clk_out2或clk_out3或clk_out4。也可以修改clk_wiz_0的clk_out4为您想要的频率,这里也需要注意一下,因为时钟的输出是通过PLL对输入时钟信号的倍频和分频系数来得到的,所以并不是所有的时钟频率都可以用PLL能够精确产生的,不过PLL也会自动为您计算实际输出接近的时钟频率。

另外需要注意的是,有些用户的示波器的带宽和采样率太低,会导致测量高频时钟信号的时候,高频部分衰减太大,测量波形的幅度会变低。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21665

    浏览量

    601804
收藏 人收藏

    评论

    相关推荐

    一文详解 ALINX NVMe IP 特性

    - ALINX NVMe IP - 在当下数据驱动的时代,企业对高性能存储解决方案的需求不断增加。NVMe AXI IP 凭借其支持大数据量、高速传输、低延迟等存储性能优势,成为众多开发者和企业
    的头像 发表于 11-14 13:59 144次阅读
    一文详解 <b class='flag-5'>ALINX</b> NVMe IP 特性

    基于ALINX开发板Z19-P实现WIFI无线通信功能

    本教程基于 ALINX 开发板 Z19-P , 实现 WIFI 无线通信的功能,WIFI 模块使用 USB WIFIrtl8188cu。
    的头像 发表于 11-11 10:44 118次阅读
    基于<b class='flag-5'>ALINX</b>开发板Z19-P实现WIFI无线通信功能

    Vivado使用小技巧

    有时我们对时序约束进行了一些调整,希望能够快速看到对应的时序报告,而又不希望重新布局布线。这时,我们可以打开布线后的dcp,直接在Vivado Tcl Console里输入更新后的时序约束。如果调整
    的头像 发表于 10-24 15:08 211次阅读
    <b class='flag-5'>Vivado</b>使用小技巧

    ALINX FPGA+GPU异架构视频图像处理开发平台介绍

    Alinx 最新发布的新品 Z19-M 是一款创新的 FPGA+GPU 异构架构视频图像处理开发平台,它结合了 AMD Zynq UltraScale+ MPSoC(FPGA)与 NVIDIA Jetson Orin NX(GPU)的强大功能,能够应用于对图像精准度和实时性有着严苛要求的行业领域。
    的头像 发表于 08-29 14:43 979次阅读

    PLL1705/PLL1706双通道PLL多时钟发生器数据表

    电子发烧友网站提供《PLL1705/PLL1706双通道PLL多时钟发生器数据表.pdf》资料免费下载
    发表于 08-22 11:32 0次下载
    <b class='flag-5'>PLL</b>1705/<b class='flag-5'>PLL</b>1706双通道<b class='flag-5'>PLL</b>多时钟发生器数据表

    PLL是什么意思

    PLL是Phase Locked Loop的缩写,中文译作锁相环。它是一种用于控制频率和相位的电路,通过检测和跟踪输入信号的频率和相位,并将其转换为一个稳定的输出信号,从而实现频率和相位的同步与控制。以下是对PLL的详细解析,包括其定义、分类、工作原理、作用以及在现代电子
    的头像 发表于 08-16 17:03 2792次阅读

    ALINX VERSAL SOM产品介绍

    近日,2024 AMD Adaptive Computing Summit(AMD ACS)在深圳举行,芯驿电子应邀出席作主题分享:《ALINX 基于 Versal 系列硬件解决方案》,阐述了 ALINX 模块化产品设计理念,展示基于 Versal 系列芯片开发的新品及后
    的头像 发表于 08-05 10:33 601次阅读

    在不重新安装Vivado的情况,是否能够安装线缆驱动器?

    如果 Xilinx USB/Digilent 线缆驱动器在安装 Vivado 设计套件时还没有安装,或者 Xilinx USB/Digilent 线缆驱动器被禁用,在不全面重新安装 Vivado 的情况,是否能够重新安装该驱动
    的头像 发表于 05-16 11:21 590次阅读

    ALINX联合紫光同创发布首款国产Kosmo-2可编程系统平台开发套件

    近日,ALINX 联合国内 FPGA 芯片龙头企业紫光同创发布了首款国产Kosmo-2 可编程系统平台开发套件 AXK400。
    的头像 发表于 05-15 11:05 583次阅读
    <b class='flag-5'>ALINX</b>联合紫光同创发布首款国产Kosmo-2可编程系统平台开发套件

    ALINX 技术分享】AMD Versal AI Edge 自适应计算加速平台之 Versal 介绍(2)

    ALINX 技术分享】AMD Versal AI Edge 自适应计算加速平台之 Versal 介绍,以及Versal 芯片开发流程的简介。
    的头像 发表于 03-07 16:03 969次阅读
    【<b class='flag-5'>ALINX</b> 技术分享】AMD Versal AI Edge 自适应计算加速平台之 Versal 介绍(2)

    如何禁止vivado自动生成 bufg

    Vivado中禁止自动生成BUFG(Buffered Clock Gate)可以通过以下步骤实现。 首先,让我们简要了解一什么是BUFG。BUFG是一个时钟缓冲器,用于缓冲输入时钟信号,使其更稳
    的头像 发表于 01-05 14:31 1959次阅读

    Vivado时序问题分析

    有些时候在写完代码之后呢,Vivado时序报红,Timing一栏有很多时序问题。
    的头像 发表于 01-05 10:18 1911次阅读

    VIVADO安装问题解决

    vivado出现安装问题刚开始还以为是安装路径包含中文空格了,重装的注意了一,发现还是这个问题。。。。后来又一顿操作猛如虎,终于发现了问题。出这个问题的原因是vivado压缩包解压的路径包含中文了把解压文件放到不含中文的地方,
    发表于 12-22 10:56 0次下载

    VIVADO软件使用问题总结

    【关键问题!!!!重要!!!】VIVADO会在MESSAGE窗口出提示很多错误和警告信息!
    的头像 发表于 12-15 10:11 1782次阅读
    <b class='flag-5'>VIVADO</b>软件使用问题总结

    锁相环PLL是什么?它是如何工作的?

    今天想来聊一芯片设计中的一个重要macro——PLL,全称Phase lock loop,锁相环。我主要就介绍一它是什么以及它是如何工作的。
    的头像 发表于 12-06 15:21 1647次阅读