ZYNQ FPGA自学笔记~操作PLL

时钟缓冲器、管理和路由

        垂直时钟中心(clock backbone)将设备分为相邻的左侧和右侧区域,水平中心线将设备分为顶部和底部两侧。clock backbone中的资源镜像到水平相邻区域的两侧,从而将某些时钟资源扩展到水平相邻区域。BUFG不属于任何一个时钟区域,并且可以到达设备上的任何时钟点。

                                                图:7系列FPGA的时钟架构图

       下图是时钟区域内可用的时钟资源及其基本连接性的概述。从下图中左侧的垂直时钟中心(clock backbone)开始看,BUFG可以通过水平时钟行(HROW)驱动到每个区域,即使它们并未物理位于那里。BUFH通过HROW驱动到区域内的每个时钟点。BUFG和BUFH在HROW中共享路由轨迹。I/O缓冲器(BUFIO)和区域时钟缓冲器(BUFR)位于I/O bank内。BUFIO仅驱动I/O时钟资源,而BUFR驱动I/O资源和逻辑资源。BUFMR支持BUFIO和BUFR的多区域链结。时钟功能输入将外部时钟连接到设备上的时钟资源。某些资源可以通过CMT骨干连接到上方和下方的区域。

                                                        图:基本时钟区域的原理图

  时钟管理片CMT

       CMT包括一个混模式时钟管理器(MMCM)和一个相位锁定环(PLL)。从MMCM和PLL的示意图上可以看出,MMCM反馈这里可以分数分频,并且CLKOUT0~CLKOUT3可以反相输出。CMT 的输入可以是 BUFR, IBUFG, BUFG, GT, BUFH,本地布线(不推荐使用)。

                                                                    图:MMCM示意图

                                                                    图:PLL示意图

  控制PLL输出时钟

     调用 Xilinx 提供的 PLL IP 核来产生不同频率的时钟, 并把其中的一个时钟输出到 FPGA 外部 IO 上,配置输入时钟50M,输出时钟为200M,100M,50M,10M。并且driver的类型都是BUFG。

                                                                 图:输入时钟的配置

                                                                  图:输出时钟的配置

pll_test文件:

module pll_test(

input sys_clk, //system clock 50Mhz on board

input rst_n, //reset ,low active

output clk_out //pll clock output J8_Pin3

 );

wire locked;

/PLL IP call

clk_wiz_0 clk_wiz_0_inst

 (// Clock in ports

 .clk_in1(sys_clk), // IN 50Mhz

 // Clock out ports

 .clk_out1(), // OUT 200Mhz

 .clk_out2(), // OUT 100Mhz

 .clk_out3(), // OUT 50Mhz

 .clk_out4(clk_out), // OUT 10Mhz

 // Status and control signals

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

 .locked(locked)); // OUT

endmodule

ip文件:

module clk_wiz_0_clk_wiz

 (// Clock in ports

  // Clock out ports

  output        clk_out1,

  output        clk_out2,

  output        clk_out3,

  output        clk_out4,

  // Status and control signals

  input         reset,

  output        locked,

  input         clk_in1

 );

  // Input buffering

  //------------------------------------

wire clk_in1_clk_wiz_0;

wire clk_in2_clk_wiz_0;

  IBUF clkin1_ibufg

   (.O (clk_in1_clk_wiz_0),

    .I (clk_in1));

  // Clocking PRIMITIVE

  //------------------------------------

  // Instantiation of the MMCM PRIMITIVE

  //    * Unused inputs are tied off

  //    * Unused outputs are labeled unused

  wire        clk_out1_clk_wiz_0;

  wire        clk_out2_clk_wiz_0;

  wire        clk_out3_clk_wiz_0;

  wire        clk_out4_clk_wiz_0;

  wire        clk_out5_clk_wiz_0;

  wire        clk_out6_clk_wiz_0;

  wire        clk_out7_clk_wiz_0;

  wire [15:0] do_unused;

  wire        drdy_unused;

  wire        psdone_unused;

  wire        locked_int;

  wire        clkfbout_clk_wiz_0;

  wire        clkfbout_buf_clk_wiz_0;

  wire        clkfboutb_unused;

   wire clkout4_unused;

  wire        clkout5_unused;

  wire        clkout6_unused;

  wire        clkfbstopped_unused;

  wire        clkinstopped_unused;

  wire        reset_high;

  PLLE2_ADV

  #(.BANDWIDTH            ("OPTIMIZED"),

    .COMPENSATION         ("ZHOLD"),

    .STARTUP_WAIT         ("FALSE"),

    .DIVCLK_DIVIDE        (1),

    .CLKFBOUT_MULT        (20),

    .CLKFBOUT_PHASE       (0.000),

    .CLKOUT0_DIVIDE       (5),

    .CLKOUT0_PHASE        (0.000),

    .CLKOUT0_DUTY_CYCLE   (0.500),

    .CLKOUT1_DIVIDE       (10),

    .CLKOUT1_PHASE        (0.000),

    .CLKOUT1_DUTY_CYCLE   (0.500),

    .CLKOUT2_DIVIDE       (20),

    .CLKOUT2_PHASE        (0.000),

    .CLKOUT2_DUTY_CYCLE   (0.500),

    .CLKOUT3_DIVIDE       (100),

    .CLKOUT3_PHASE        (0.000),

    .CLKOUT3_DUTY_CYCLE   (0.500),

    .CLKIN1_PERIOD        (20.000))

  plle2_adv_inst

    // Output clocks

   (

    .CLKFBOUT            (clkfbout_clk_wiz_0),

    .CLKOUT0             (clk_out1_clk_wiz_0),

    .CLKOUT1             (clk_out2_clk_wiz_0),

    .CLKOUT2             (clk_out3_clk_wiz_0),

    .CLKOUT3             (clk_out4_clk_wiz_0),

    .CLKOUT4             (clkout4_unused),

    .CLKOUT5             (clkout5_unused),

     // Input clock control

    .CLKFBIN             (clkfbout_buf_clk_wiz_0),

    .CLKIN1              (clk_in1_clk_wiz_0),

    .CLKIN2              (1'b0),

     // Tied to always select the primary input clock

    .CLKINSEL            (1'b1),

    // Ports for dynamic reconfiguration

    .DADDR               (7'h0),

    .DCLK                (1'b0),

    .DEN                 (1'b0),

    .DI                  (16'h0),

    .DO                  (do_unused),

    .DRDY                (drdy_unused),

    .DWE                 (1'b0),

    // Other control and status signals

    .LOCKED              (locked_int),

    .PWRDWN              (1'b0),

    .RST                 (reset_high));

  assign reset_high = reset;

  assign locked = locked_int;

// Clock Monitor clock assigning

//--------------------------------------

 // Output buffering

  //-----------------------------------

  BUFG clkf_buf

   (.O (clkfbout_buf_clk_wiz_0),

    .I (clkfbout_clk_wiz_0));

  BUFG clkout1_buf

   (.O   (clk_out1),

    .I   (clk_out1_clk_wiz_0));

  BUFG clkout2_buf

   (.O   (clk_out2),

    .I   (clk_out2_clk_wiz_0));

  BUFG clkout3_buf

   (.O   (clk_out3),

    .I   (clk_out3_clk_wiz_0));

  BUFG clkout4_buf

   (.O   (clk_out4),

    .I   (clk_out4_clk_wiz_0));

endmodule

仿真结果:

从结果看输出的时钟是10M,sys_clk为50M

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下编译MicroRTS-Py

1.microRTS(java) microRTS是java写的跨平台的小型即时战略模拟器。 Farama-Foundation/MicroRTS: A simple and highly efficient RTS-game-inspired environment for reinforcement learning (github.com)https://github.com/Farama-Foundation/Micr…

Kubeadm快速安装 Kubernetes集群

1. Kubernetes简介 Kubernetes(k8s)是谷歌开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它具有以下特点: 开源容器化自动部署扩展高可用 2. Kubernetes架构 Kubernetes遵循主从式架构设计,主要分…

Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码...

原文链接:https://tecdat.cn/?p37724 在当今世界,粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率,但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时,在学术领域,准确评估…

OpenAI GPT o1技术报告阅读(3)-英文阅读及理解

✨继续阅读报告:使用大模型来学习推理(Reason) 原文链接:https://openai.com/index/learning-to-reason-with-llms/ 这次我们继续看一个英文阅读理解的案例。 原问题: The following passage is the draft of an excerpt from a contempora…

基于OpenCV的YOLOv5图片检测

利用OpenCV的DNN模块加载onnx模型文件进行图片检测。 1、使用的yolov5工程代码,调用export.py导出onnx模型。 2、下载opencv版本,https://opencv.org/releases/ 使用opencv版本4.5.3或以上,本文使用的opencv4.6.0 3、使用vc20…

css设置overflow:hiden行内元素会发生偏移的现象

父级元素包含几个行内元素 <div id"box"><p><span>按钮</span><span>测试文字文字文字测试文字文字文字</span><span>看这里</span></p></div>#box p{width: 800px;font-size: 30px;}#box p span{disp…

VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 分析记录

项目场景&#xff1a; VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 问题描述 VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 原因分析&#xff1a; 虚拟机开启后会对部分文件继续加密&#xff0c;关闭时虚拟机会自动对其解密&…

css设置动态数组渲染及中间线平均分开显示

效果图&#xff1a; <template><div class"container"><div v-for"(item, index) in items" :key"index" class"item-container"><span class"item">{{ item }}</span><span v-if"in…

二级C语言2023-9易错题

1 二叉树结点数计算&#xff1a; 一棵二叉树有10个度为1的结点&#xff0c;7个度为2的结点&#xff0c;则该二叉树共有____个结点。 解&#xff1a; 2 指针&#xff1a; 有以下程序 #inctude<stdio.h> #include<stdlib.h> main() { int *a&#xff0c;*b&…

Unity数据持久化4——2进制

概述 基础知识 各类型数据转字节数据 文件操作相关 文件相关 文件流相关 文件夹相关 练习题 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using UnityEngine;public class Exercises1 : MonoBehaviour {/…

6. Python 输出长方形,直角三角形,等腰三角形

使用Python输出长方形&#xff0c;直角三角形&#xff0c;等腰三角形 这里主要使用python语言里的循环知识&#xff0c;具体说是Python语言里的循环嵌套&#xff0c; 注意&#xff0c;在实际使用中&#xff0c;循环嵌套一般最多到达3层&#xff0c;嵌套太多会影响到程序执行。…

详解ChatBI Agent架构:打造高效数据统计系统

随着人工智能技术的迅猛发展&#xff0c;智能对话系统在各行各业中的应用越来越广泛。本文将介绍一种名为ChatBI Agent的架构设计&#xff0c;并以电信运营商系统的经分数据统计Agent为案例&#xff0c;结合具体的代码实现&#xff0c;帮助读者了解这一系统的设计理念和实现方式…

新产品,推出 MLX90372GVS 第三代 Triaxis® 位置传感器 IC,适用于汽车和工业系统(MLX90372GVS-ACE-308)

Triaxis 旋转和线性位置传感器IC&#xff1a; MLX90372GVS-ACE-103 MLX90372GVS-ACE-108 MLX90372GVS-ACE-301 MLX90372GVS-ACE-200 MLX90372GVS-ACE-208 MLX90372GVS-ACE-303 MLX90372GVS-ACE-300 MLX90372GVS-ACE-350 MLX90372GVS-ACE-100 MLX90372GVS-ACE-101 MLX90372GVS-…

6.C_数据结构_查询_哈希表

概述 哈希表的查询是通过计算的方式获取数据的地址&#xff0c;而不是依次比较。在哈希表中&#xff0c;有一个键值key&#xff0c;通过一些函数转换为哈希表的索引值。 其中&#xff1a;这个函数被称为哈希函数、散列函数、杂凑函数&#xff0c;记为&#xff1a;H(key) 哈希…

使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、nvm的安装与基本使用2.1 macOS安装nvm2.1.1 使用 curl 安装2.1.2 使用 Homebrew 安装 2.2 Windows安装nvm2.2.1 下载 nvm-windows2.2.2 安装 nvm-windows 2.3 安装node2.4 切换node版本 三、常见问题及解决方案…

STM32读写内部flash

一.简介 在 STM32 芯片内部有一个 FLASH 存储器&#xff0c;它主要用于存储代码&#xff0c;我们在电脑上编写好应用程序后&#xff0c;使用下载器把编译后的代码文件烧录到该内部 FLASH 中&#xff0c;由于 FLASH 存储器的内容在掉电后不会丢失&#xff0c;芯片重新上电复位后…

【redis-01】redis基本数据类型和使用场景

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325 redis基本数据类型和使用场景 一&#xff0c;redis基本数据类型和使用场景1&#xff0c;String数据类型2&#xff0c;Hash数据类型3&#xff…

Linux top命令详解与重点内容说明

文章目录 重点说明基本信息进程(任务)信息cpu占用信息%Cpu(s)内存信息交换内存信息每列含义说明交互命令多窗口模式颜色配置命令参数 重点说明 top命令非常强大&#xff0c;也非常复杂&#xff0c;很难面面俱到&#xff0c;也没有必要&#xff0c;这篇文章的目的是介绍重点&am…

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

提示&#xff1a;C君认为的难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会…

英集芯IP5912:集成开关充电功能的低功耗8位POWER MCU芯片

英集芯IP5912是一款功能丰富的、集成了降压充电管理功能的8位MCU芯片&#xff0c;它内置了一个5V输入的同步降压充电DC-DC&#xff0c;功率管也是内置的&#xff0c;同时提供最大1.5A的充电电流。封装方式采用SOP16&#xff0c;方案应用时只需要很少的外围器件&#xff0c;就可…