VIVADO时钟IP核的功能验证
作者:互联网
一、ZYBO Z7时钟资源简介
7系列的FPGA使用了专用的全局(global)和区域(Regional)时钟资源来管理和设计不通的时钟需求。全局时钟可以为整片FPGA芯片提供时钟资源,包括I/O资源、RAM资源、逻辑资源。而区域时钟只能为其所在区域提供时钟信号。CMT提供了时钟的合成、倾斜校正和过滤抖动等功能。Clock Region将整个FPGA分割成了多个区域,用于使用不同或相同的时钟信号。Clock Backbone为全时钟线,贯穿整片FPGA,将FPGA分成左右两个部分。行时钟总线HROW将每一个。Clock Region分成上下完全一致的两个部分,BUFG在控制区域始终的时候没有自己的专用通道,而是通过行时钟传送时钟信号。Zynq-Z7020包括了4个CMT,每个CMT各包含一个MMCM和一个PLL,可以产生精确的频率和相位。
ZYBO Z7芯片为PS提供了33.3333MHz的时钟输入,为PS的子系统提供时钟。33.3333MHz的时钟输入允许处理器的时钟时钟频率工作在667MHz,DDR3存储控制器最大频率工作在最大频率667MHz。
芯片的PS部分拥有专用的PLL,最多能够产生4种参考时钟,每种时钟的频率都可以设定,并为PL中的自定义逻辑单元提供时钟信号。除此之外,Zybo Z7还提供了一个外部的125MHz的参考时钟,可以直接通过K17管脚了PL相连。外部输入时钟使得PL部分的时钟信号可以完全独立于PS,这对于不需要运用到处理器的简单应用是非常有用的。
PS部分的任意4种参考时钟或者是外部125MHz的时钟都可以作为PS部分时钟的输入。时钟输入关系如下图所示。
二、MMCM/PLL IP核简介
锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值MMCM的功能比PLL更加灵活,MMCM能够对时钟的相位进行动态调整,而PLL则不具备这个功能。
MMCM/PLL 的参考时钟输入可以是 IBUFG(CC)即具有时钟能力的 IO 输入、区域时钟 BUFR、全局时钟 BUFG、GT 收发器输出时钟、行时钟 BUFH等。在最多的情况下,MMCM/PLL 的参考时钟输入都是来自 IBUFG(CC)即具有时钟能力的 IO 输入。MMCM/PLL 的输出可以驱动全局时钟 BUFG 和行时钟 BUFH 等等。BUFG 能够驱动整个器件内部的PL 侧通用逻辑的所有时序单元的时钟端口。BUFG/BUFH/CMT 在一个时钟区域内的连接框图如下图所示。
三、功能验证
1.验证仅使用PL的时钟IP核
这里使用的VIVADO版本为2018.2
第一步:启动VIVADO,创建一个新的工程,Project Type选择RTL,芯片选择xc7z010clg400-2
第二步:创建IP核
点击画面右侧的IP Catalog,在搜索框输入clock后会出现我们需要的时钟IP核,点击打开
定义一个四输出的基于MMCM的时钟IP核,IP核参数如下,选择MMCM,时钟属性中勾选Frequency Synthesis,用于输出不同频率的时钟,勾选Phase Alignment用来显示输入时钟的相位关系。抖动优化勾选Balanced,不同工程中可以选择不同的选项,不同的选项对应不同的系统性能。将Input Clock的频率改为125MHz,和网口时钟输入频率要匹配,否则看不到波形。
设置4个输入时钟,分别验证频率不变、频率不变而相位反转,频率折半、频率成倍缩小。
并且,为IP核添加复位和锁定,当系统时钟输出达到稳定时,LOCKED信号会输出高电平,本实验中采用按键复位,应将reset type设置为active high.其他参数使用默认,点击OK即生成了IP核。
在Sources中点击添加一个新的design sources,对输入输出以及他们的实例化如下
同样在Sources中点击添加一个新的simulation sources,添加后输入以下测试参数,大家也可以根据自己的需要去编写自己的simulation
第三步:波形仿真
点击 run behavioral simulation后会进入仿真界面,在界面的上方输入你想要仿真的时间,建议设置的时间范围长一些,避免出现波形只出现一部分仿真参数的情形,设置还后点击开始,就能出现仿真后的波形
第四步:上板用示波器看波形
接下来用示波器验证烧写到板子上的是时钟信号波形,约束文件为如下:时钟输出到JE模块,Pmod接口允许FPGA灵活和外设详相接。由于本实验只需要看到时钟输出波形,所以输出接口只需要具备简单的I/O功能即可。JE模块接口管脚号如下,并据此写好约束文件(同样是在sources中新建一个constrains文件):
对系统进行编译综合,并生成下载比特流文件,烧写入芯片。示波器结果如下所示。
2.验证PS经PLL产生的时钟作为PL中IP核的输入时钟
思想是PS通过晶振将时钟信号给到ZYNQ,通过PS中的时钟资源PLL将输出从33.3333MHz倍频到100MHz,然后再经由PL中的IP核二次倍频,输出三种时钟信号。
首先创建一个Block Design,命名为ps_to_pl_clkwiz,并添加一个ZYNQ7处理系统ZYNQ7 Processing System,并对其进行配置。
双击橙色的框后点击Import XPS Settings,导入ZYBO_zynq_def.xml(这个文件可以去github上找一找)文件,并点击Run Block Automation。配置好后的PS如下所示。
再添加PL中的IP核,配置方式和实验一基本相同,但是要把reset信号设置为Active Low这样才能够和PS的reset信号相连,其余参数如下所示。
配置完成后对两个IP核进行连接,并将PL时钟IP核的输出引出。连接好后Diagram如图所示。
点击生成HDL Wrapper,能够从wrapper文件中看到系统的输入端口,方便后面添加管脚约束。从文件中可以看到输出为clk_out1_0, clk_out2_0, clk_out3_0,locked_0,据此添加对应的约束文件。
随后对工程进行综合实现,并生成比特流文件。下载到开发板上后用示波器去探测相应的引脚。结果如下所示
标签:PS,IP,VIVADO,频率,PLL,输入,时钟 来源: https://blog.csdn.net/yxy990824/article/details/122323441