ZYNQ IP核之MMCM/PLL

news2024/9/29 15:31:19

锁相环(Phase Locked Loop,PLL),一种反馈控制电路,对时钟网络进行系统级的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比的功能。

Xilinx 7系列器件中的时钟资源包含了时钟管理单元CMT,每个CMT由一个MMCM和一个PLL组成。xc7z010芯片内部有两个CMT,为设备提供系统时钟管理和高速I/O通信。

参考时钟输入:

(1)IBUFG(CC):具有时钟能力的 IO 输入

(2)BUFR:区域时钟

(3)BUFG:全局时钟

(4)GT:收发器输出时钟

(5)BUFH:行时钟

(6)Local Routing:本地布线(不推荐使用本地布线来驱动时钟资源)

MMCM包含PLL的功能,主要用于驱动器件逻辑(CLB、DSP、RAM等)的时钟;PLL主要用于为内存接口生成所需的时钟信号。 

D:前置分频计数器

PFD:相位频率检测器

CP:电荷泵

LF:环路滤波器

VCO:压控振荡器

M:反馈乘法器计数器

O1-O6:后置分频计数器

Fout = Fin*M / (D*O)

Xilinx提供了用于实现时钟功能的IP核Clocking Wizard,该IP核能够根据用户的时钟需求自动配置器件内部的CMT及时钟资源。

使用Zynq开发板输出四个不同时钟频率或相位的时钟,并在Vivado中进行仿真以验证结果,最后生成bite流文件并将下载到开发板上。

 

 

 

在弹出的“Genarate Output Products”窗口中直接点击“Generate”即可。

在下图的文件clk_wiz.veo是由IP核自动生成的只读的verilog例化模板文件。在例化时钟IP核模块的时钟时可以直接从此处复制。

 编写代码利用时钟IP核输出的时钟点亮LED,使其同步周期点亮和熄灭。

top.v

module top(
	input clk_50m,
	input rst_n,
	
	output clk_led1,
	output clk_led2,
	output clk_led3,
	output clk_led4
);
	wire clk_out1;
	wire clk_out2;
	wire clk_out3;
	wire clk_out4;
	wire locked;

clk_wiz_0 ins_clk_wiz
(
    // Clock out ports
    .clk_out1(clk_out1),     // output clk_out1		100MHz			
    .clk_out2(clk_out2),     // output clk_out2		100MHz		180deg
    .clk_out3(clk_out3),     // output clk_out3		50MHz
    .clk_out4(clk_out4),     // output clk_out4		25MHz
    // Status and control signals
    .reset(~rst_n), // input reset
    .locked(locked),       // output locked
   // Clock in ports
    .clk_in1(clk_50m)
); 
    
divid_clk 
#(
	.N(32'd500) //32'd50000000
)	
ins_divid_clk_1
(
	.clk_init(clk_out1),
	.rst_n(rst_n),
	.valid(locked),
	
	.clk_out(clk_led1)
);
    
divid_clk
#(
	.N(32'd500) //32'd50000000
)
ins_divid_clk_2
(
	.clk_init(clk_out2),
	.rst_n(rst_n),
	.valid(locked),
	
	.clk_out(clk_led2)
);
    
divid_clk
#(
	.N(32'd250)
)
ins_divid_clk_3
(
	.clk_init(clk_out3),
	.rst_n(rst_n),
	.valid(locked),
	
	.clk_out(clk_led3)
);

divid_clk
#(
	.N(32'd125)
)
ins_divid_clk_4
(
	.clk_init(clk_out4),
	.rst_n(rst_n),
	.valid(locked),
	
	.clk_out(clk_led4)
);
    

endmodule

divid_clk.v

module divid_clk(
	input clk_init,
	input rst_n,
	input valid,
	
	output reg clk_out
    );
    
    parameter N = 32'd25000000;
    reg [31:0] counter;
    
    always@(posedge clk_init or negedge rst_n or negedge valid) begin
    	if(!rst_n) begin
    		counter <= 32'd1;
    	end
    	else if(!valid) begin
    		counter <= 32'd1;
    	end
    	else begin
    		if(counter == N) begin
    			counter <= 32'd1;
    		end
    		else begin
    			counter <= counter + 32'd1;
    		end
    	end
    end
    
    always@(posedge clk_init or negedge rst_n or negedge valid) begin
    	if(!rst_n) begin
    		clk_out <= 1'b0;
    	end
    	else if(!valid) begin
    		clk_out <= 1'b0;
    	end
    	else begin
    		if(counter == N) begin
    			clk_out <= ~clk_out;
    		end
    	end
    end
endmodule

 top_tb.v

`timescale 1ns / 1ps

module top_tb();

reg clk_50m;
reg rst_n;
wire clk_led1;
wire clk_led2;
wire clk_led3;
wire clk_led4;

top ins_top(
	.clk_50m(clk_50m),
	.rst_n(rst_n),
	.clk_led1(clk_led1),
	.clk_led2(clk_led2),
	.clk_led3(clk_led3),
	.clk_led4(clk_led4)
);

initial begin
	rst_n = 0;
	clk_50m = 1;
	#15 rst_n = 1;
end

always #10 clk_50m = ~clk_50m;

endmodule

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAPIEN PrimalSQL 2023.1[x64] Crack

SAPIEN PrimalSQL 2023.1 使数据库查询开发和测试变得轻而易举&#xff0c;无论您的数据库类型或供应商如何。 通过单个工具支持多个数据库提供程序。 Access、SQL Server、SQL Server Compact、MySQL、Oracle、ODBC、OLEDB、Sybase 等。 使用Visual Query Builder构建复杂的…

maven基础

一、Maven基础 为什么要学习Maven&#xff1f; Maven作为依赖管理工具&#xff0c;能够管理大规模的jarjarjar包&#xff0c;使用MavenMavenMaven后&#xff0c;依赖对应的JarJarJar包&#xff0c;能够自动下载、方便、快捷切规范。Maven作为构建管理工具&#xff0c;当我们使…

HTTP实用指南

HTTP实用指南 01.初始HTTP 当我们在浏览器地址栏输入一个网址或者关键字&#xff0c;它会给我们跳转到对应的网页&#xff0c;在这一过程中&#xff0c;内部到底是怎么运作的&#xff1f; 总结上述图片过程&#xff0c;用流程图来表示&#xff0c;如下&#xff1a; 处理输入信…

【论文翻译】Semantic Graph Convolutional Networks for 3D Human Pose Regression

【iccv论文】https://openaccess.thecvf.com/content_CVPR_2019/papers/Zhao_Semantic_Graph_Convolutional_Networks_for_3D_Human_Pose_Regression_CVPR_2019_paper.pdf 【github】https://github.com/garyzhao/SemGCN 摘要 在本文中&#xff0c;我们研究了用于回归的图卷积网…

ANR触发机制分析

ANR是一套监控Android应用程序响应是否及时的机制&#xff0c;可以把发生ANR比作是引爆炸弹&#xff0c;那么整个流程包含三部分组成&#xff1a; 埋定时炸弹&#xff1a;system_server进程启动倒计时&#xff0c;在规定时间内如果目标应用进程没有干完所有的活&#xff0c;则…

QEMU之一调试uboot(vexpress-a9)

u-boot版本&#xff1a;u-boot-2017.05开发板&#xff1a;vexpress-a9&#xff08;没办法&#xff0c;目前看到的都是这个开发板&#xff0c;想QEMU调试tiny210,一直没看到怎么修改qemu&#xff09;编译u-boot&#xff1a;make ARCHarm CROSS_COMPILEarm-linux-gnueabi- vexpre…

Avast 发布免费的 BianLian 勒索软件解密器

安全软件公司 Avast 发布了 BianLian 勒索软件的免费解密器&#xff0c;以帮助恶意软件的受害者在不向黑客支付费用的情况下恢复锁定的文件。 在 2022 年夏天 BianLian 勒索软件的活动增加后大约半年&#xff0c;该威胁组织入侵了多个知名组织&#xff0c;解密器的可用性就出现…

swagger(前言技术)

目录 一、swagger简介 1.前后端分离的特点 2.在没有swagger之前 3.swagger的作用 4.swagger的优点 二、swagger入门 1.新建springboot项目 2.集成swagger 3.开发一个controller用于测试 5.启动服务&#xff0c;验证集成效果 三、swagger常用注解 四、swagger使用综…

2022年PTA行业研究报告

第一章 行业概况 PTA是精对苯二甲酸&#xff08;Pure Terephthalic Acid&#xff09;的英文简称&#xff0c;在常温下是白色粉状晶体, 无毒、易燃&#xff0c;若与空气混合&#xff0c;在一定限度内遇火即燃烧。 PTA是重要的大宗有机原料之一&#xff0c;广泛用于化学纤维、轻…

【数据结构入门】-线性表之顺序表(1)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【数据结构】 从今天开始&#xff0c;就正式进入数据结构的大门了&#xff0c;把握机会&#xff0c;好好学习&#xff0c;加油。 本文目录…

Arduino环境下对NodeMCU ESP8266将文件直接传入flash的三种方式

flash存储简答介绍 参考&#xff1a;https://www.elecfans.com/consume/572040.html flash存储器又称闪存&#xff08;快闪存储器&#xff09;&#xff0c;就其本质而言&#xff0c;flash存储器属于EEPROM&#xff08;电擦除可编程只读存储器&#xff09;类型。是一种长寿命的…

Java多线程案例之单例模式

目录 一、饿汉模式 二、懒汉模式 前言&#xff1a;单例模式是校招中最常见的设计模式之一。下面我们来谈谈其中的两个模式&#xff1a;懒汉&#xff0c;饿汉。 何为设计模式&#xff1f; 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多…

【涂鸦蓝牙SDK】基于涂鸦蓝牙SDK数据传输与函数接口解析

基于涂鸦蓝牙SDK数据传输与函数接口解析1.【数据初始化部分】2.【蓝牙状态机控制】3.【数据广播过程】4.【涂鸦平台申请设备以及SDK】5.【涂鸦SDK模组源码思路解析】---- 重要&#xff1a;5.1 数据收发5.【移植涂鸦评估】2023.1.21 本文是基于涂鸦SDK的低功耗蓝牙BLE协议的数据…

Linux创建解压后的应用程序的桌面快捷方式

下面用一个例子演示&#xff0c;其他应用也差不多 下载好的安装文件为.tar.xz格式&#xff0c;通常默认在系统的下载文件夹下&#xff08;按你实际路径&#xff09;。右键点击文件&#xff0c;在下拉框中点击提取到此处&#xff08;意思就是解压&#xff09;。 解压后&#xff…

DocArray 0.21.0版本发布!新增OpenSearch后端存储,支持Redis后端存储的多语言文本搜索!...

github.com/docarray/docarrayDocArray 是一个用于处理、传输和存储多模态数据的 Python 工具包。DocArray 提供便捷的多模态数据处理功能&#xff0c;具备基于 Protobuf 提供高性能的网络传输性能&#xff0c;同时也为多种向量存储方案提供统一的 API 接口。&#x1f4a1; Doc…

三十三、Kubernetes中Service详解、实例第三篇

1、概述 在kubernetes中&#xff0c;pod是应用程序的载体&#xff0c;我们可以通过pod的ip来访问应用程序&#xff0c;但是pod的ip地址不是固定的&#xff0c;这也就意味着不方便直接采用pod的ip对服务进行访问。 为了解决这个问题&#xff0c;kubernetes提供了Service资源&…

06.动态内存管理

1. 存在动态内存分配的原因我们已经掌握的内存开辟方式有&#xff1a;int val 20;//在栈空间上开辟四个字节 char arr[10] { 0 };//在栈空间上开辟10个字节的连续空间//写死了 //变长数组&#xff0c;int arr[n]&#xff0c;变量的方式可以指定大小&#xff0c;并非意味着数组…

0th HPC Game小结

PART 1 - 基础知识 一、文件读取 二进制文件 mmap https://hpcgame.pku.edu.cn/demo/scow/api/proxy/relative/192.168.100.61/35515/ fread fwrite //readFILE* fi;if(fi fopen("input.bin", "rb")){fread(&p, sizeof(int), 1, fi);fread(&n,…

RabbitMQ之消息转换器

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;曾经在某央企公司实习&#xff0c;目前在某税务公司。本篇文章将记录和分享RabbitMQ消息转换器的知识点。 本篇文章记录的基础知识&#xff0c;适合在学Java的小白&#xff0c;也适合复习中&…

深入理解机器学习——关联规则挖掘:基础知识

分类目录&#xff1a;《深入理解机器学习》总目录 许多商业企业在日复一日的运营中积聚了大量的数据。例如&#xff0c;食品商店的收银台每天都收集大量的顾客购物数据。下图给出一个这种数据的例子&#xff0c;通常称作购物篮事务&#xff08;Market Basket Transaction&#…