当前位置: 首页 > article >正文

ZYNQ-PL实践课堂(三)IP核之MMCM/PLL

ZYNQ-PL实践课堂(三)IP核之MMCM/PLL)

  • 1 概述
  • 2 约束
  • 3 添加、配置PLL IP核
  • 4 生成输出项
  • 5 编辑verilog 代码
  • 6 编辑仿真文件
  • 7 编译下载
  • 总结

1 概述

PLL (锁相环)控制时钟网络的时钟管理和偏移控制, 包括:分频、倍频、相位偏移和调节占空比的功能。MMCM 主要用于驱动器件逻辑(CLB、 DSP、 RAM 等)的时钟。 PLL 主要用于内存接口所需时钟信号。

Xilinx 7系列中的时钟资源包含了CMT (时钟管理单元),提个CMT包含一个MMCM和一个PLL组成。
本文主要介绍MMCM/PLL核的使用,xc7z020 芯片内部有 4 个 CMT。时钟管理单元的总体框图如下:
在这里插入图片描述
时钟输入类别如下:

IBUFG(CC): 具有时钟能力的IO 输入
BUFR     : 区域时钟
BUFR	 : 全局时钟
GT 		 : 收发器输出时钟
BUFH	 : 行时钟

本文介绍MMCM/PLL 的参考时钟输入来自 IBUFG(CC)。MMCM总体框图如下,
在这里插入图片描述
PLL总体框图如下,
在这里插入图片描述
PLL 组成:

前置分频计数器(D 计数器)
相位-频率检测器(PFD,Phase-Frequency Detector)电路
电荷泵(Charge Pump)
环路滤波器(Loop Filter)
压控振荡器(VCO, Voltage Controlled Oscillator)
反馈乘法器计数器(M 计数器) 和后置分频计数器(O1-O6 计数器) 

方程描述:
FREF= FIN / D,
VCO 输出频率为 FVCO = FIN * M / D,
PLL 输出频率为 FOUT =(FIN * M) /(N * O)

将 Clocking Wizard IP 核产生的 4 个时钟

100MHz
100MHz_180deg 
50MHz
25MHz

2 约束

对应的 XDC 约束语句如下,

set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]
set_property -dict {PACKAGE_PIN B19 IOSTANDARD LVCMOS33} [get_ports clk_100m]
set_property -dict {PACKAGE_PIN C20 IOSTANDARD LVCMOS33} [get_ports clk_100m_180deg]
set_property -dict {PACKAGE_PIN P19 IOSTANDARD LVCMOS33} [get_ports clk_50m]
set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports clk_25m]

3 添加、配置PLL IP核

创建一个工程,添加PLL IP核如下,
在这里插入图片描述
设置IP核名称,
在这里插入图片描述
Primitive选择使用 MMCM 还是 PLL 来输出时钟,保持默认。
在这里插入图片描述

输入频率未板上晶振频率 50MHz如下,
在这里插入图片描述
设置输出频率,
在这里插入图片描述

控制信号重命名保持默认,
在这里插入图片描述
MMCM Settings保持默认,
在这里插入图片描述
Summary点击ok,
在这里插入图片描述

4 生成输出项

弹出Generate Output Products,
在这里插入图片描述

5 编辑verilog 代码

创建 ip_clk_wiz.v文件,

module  ip_clk_wiz(
    input               sys_clk        ,  //系统时钟
    input               sys_rst_n      ,  //系统复位,低电平有效
    //输出时钟
    output              clk_100m       ,  //100Mhz时钟频率
    output              clk_100m_180deg,  //100Mhz时钟频率,相位偏移180度
    output              clk_50m        ,  //50Mhz时钟频率
    output              clk_25m           //25Mhz时钟频率
    );

//wire define
wire        locked;

//MMCM/PLL IP核的例化
clk_wiz_0  clk_wiz_0
(
	// Clock out ports
	.clk_out1_100m     (clk_100m),         // output clk_out1_100m
	.clk_out2_100m_180 (clk_100m_180deg),  // output clk_out2_100m_180
	.clk_out3_50m      (clk_50m),          // output clk_out3_50m
	.clk_out4_25m      (clk_25m),          // output clk_out4_25m
	// Status and control signals
	.reset             (~sys_rst_n),       // input reset
	.locked            (locked),           // output locked
	// Clock in ports
	.clk_in1           (sys_clk)           // input clk_in1
);      

endmodule

6 编辑仿真文件

仿真输出的 4 个时钟信号直接连接到顶层端口的四个时钟输出信号,仿真 TestBench 代码如下,
在这里插入图片描述

`timescale 1ns / 1ps

module tb_ip_clk_wiz();

reg     sys_clk;
reg     sys_rst_n;

wire    clk_100m;      
wire    clk_100m_180deg;
wire    clk_50m;     
wire    clk_25m;        

always #10 sys_clk = ~sys_clk;

initial begin
    sys_clk = 1'b0;
    sys_rst_n = 1'b0;
    #200
    sys_rst_n = 1'b1;
end

ip_clk_wiz u_ip_clk_wiz(
    .sys_clk          (sys_clk        ),
    .sys_rst_n        (sys_rst_n      ),

    .clk_100m         (clk_100m       ),
    .clk_100m_180deg  (clk_100m_180deg),
    .clk_50m          (clk_50m        ),
    .clk_25m          (clk_25m        )  
    );

endmodule

7 编译下载

编译、下载仿真验证略。

总结

对MMCM/PLL时钟IP核的应用,后续补充PLL的详细介绍。。。

感谢阅读,祝君成功!
-by aiziyou


http://www.kler.cn/a/568362.html

相关文章:

  • 想学大模型,但分不清longchain,huggingface,ollama各种工具之间区别?
  • 机器学习的三个基本要素
  • 每天一个Flutter开发小项目 (9) : Flutter状态管理进阶 - Provider构建你的简易购物车应用
  • go如何排查某个依赖是哪里引入的
  • openssl下aes128算法CFB模式加解密运算实例
  • 【C】初阶数据结构8 -- 链式二叉树
  • javaEE初阶————多线程初阶(5)
  • ​Java 实体类中的常见问题:@Data 注解与 is 前缀字段的陷阱​
  • Linux find 命令
  • 高频 SQL 50 题(基础版)_2356. 每位教师所教授的科目种类的数量
  • 《Java加密与解密的艺术》第3章java加密利器
  • 17、什么是智能指针,C++有哪几种智能指针【高频】
  • 考研408数据结构线性表核心知识点与易错点详解(附真题示例与避坑指南)
  • 游戏引擎学习第127天
  • Java数据结构第十六期:走进二叉树的奇妙世界(五)
  • 【QT线程】子线程阻塞主线程的一次网络api请求案例
  • 自然语言处理算法工程师的技术图谱和学习路径
  • 代码随想录算法训练day66---图论系列10《Bellman_ford 队列优化算法负权回路单源有限最短路》
  • 26、IO流(只是小入门)
  • IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程