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.mzph.cn/news/880187.shtml

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

相关文章

考研数据结构——C语言实现小顶堆

数组初始化: 首先,我们有一个整数数组arr,里面包含了一系列需要排序的数字。数组的长度n是通过对数组arr的总字节大小除以单个元素的字节大小得到的。 小顶堆调整函数: adjustHeapMin函数的作用是将数组中的元素从某个节点向下调整…

[001-02-001].第2节:java开发环境搭建

4.1.书籍推荐: 4.2.人机交互方式 1.图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作2.命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令&#xff0c…

[数据结构]无头单向非循环链表的实现与应用

文章目录 一、引言二、线性表的基本概念1、线性表是什么2、链表与顺序表的区别3、无头单向非循环链表 三、无头单向非循环链表的实现1、结构体定义2、初始化3、销毁4、显示5、增删查改 四、分析无头单向非循环链表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引…

Frontiers出版社系列SCISSCI合集

【SciencePub学术】本期,小编根据WOS数据库,整理了一下Frontiers出版社系列的SCI&SSCI合集,以供各位学者投稿参考! 来源:WOS数据库 Frontiers系列期刊中,Frontiers in Immunology以其5.7分的影响因子位…

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目,包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题,可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …

每日一练:二叉树的层序遍历

102. 二叉树的层序遍历 - 力扣(LeetCode) 一、题目要求 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,n…

合宙LuatOS应用,与时间相关那些事

合宙嵌入式操作系统LuatOS——在蜂窝物联网模组上推出开源二次开发框架,功能齐全性能稳定,可大幅度降低用户的研发成本和研发周期。 在LuatOS中,获取时间函数用得最多的就是os.time()函数了。接下来,我会讲一些与这个函数以及其他…

c++924

2 #include <iostream> #include <cstring>using namespace std;class MyString { private:char *str; // 记录C风格的字符串int size; // 记录字符串的实际长度public:// 定义无参构造MyString() : size(0) {str new char[1];str[0] \0;cou…

中秋节特别游戏:给玉兔投喂月饼

&#x1f5bc;️ 效果展示 &#x1f4dc; 游戏背景 在中秋这个充满诗意的节日里&#xff0c;玉兔因为贪玩被赶下人间。在这个温柔的夜晚&#xff0c;我们希望通过一个小游戏&#xff0c;让玉兔感受到人间的温暖和关怀。&#x1f430;&#x1f319; &#x1f3ae; 游戏设计 人…

5、论文阅读:深水下的图像增强

深水下的图像增强 前言介绍贡献UWCNN介绍网络架构残差Residuals块 Blocks网络层密集串联网络深度减少边界伪影网络损失Loss后处理前言 水下场景中,与波长相关的光吸收和散射会降低图像的可见度,导致对比度低和色偏失真。为了解决这个问题,我们提出了一种基于卷积神经网络的…

伊犁云计算22-1 apache 安装rhel8

1 局域网网络必须通 2 yum 必须搭建成功 3 apache 必须安装 开干 要用su 用户来访问 一看httpd 组件安装完毕 到这里就是测试成功了 如何修改主页的目录 网站目录默认保存在/var/WWW/HTML 我希望改变/home/www 122 127 167 行要改

打造灵活DateTimePicker日期时间选择器组件:轻松实现时间的独立清除功能

element ui中日期和时间选择器&#xff08;DateTimePicker&#xff09;是一个常见且重要的组件。它允许用户轻松地选择日期和时间&#xff0c;极大地提升了用户体验。然而&#xff0c;在某些场景下&#xff0c;用户可能需要更细粒度的控制&#xff0c;例如单独清除已选择的时间…

Swagger 概念和使用以及遇到的问题

前言 接口文档对于前后端开发人员都十分重要。尤其近几年流行前后端分离后接口文档又变 成重中之重。接口文档固然重要,但是由于项目周期等原因后端人员经常出现无法及时更新&#xff0c; 导致前端人员抱怨接口文档和实际情况不一致。 很多人员会抱怨别人写的接口文档不…

Cassandra 5.0 Spring Boot 3.3 CRUD

概览 因AI要使用到向量存储&#xff0c;JanusGraph也使用到Cassandra 卸载先前版本 docker stop cassandra && docker remove cassandra && rm -rf cassandra/运行Cassandra容器 docker run \--name cassandra \--hostname cassandra \-p 9042:9042 \--pri…

【HarmonyOS】深入理解@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化

【HarmonyOS】深入理解Observed装饰器和ObjectLink装饰器&#xff1a;嵌套类对象属性变化 前言 之前就Observed和ObjectLink写过一篇讲解博客【HarmonyOS】 多层嵌套对象通过ObjectLink和Observed实现渲染更新处理&#xff01; 其中就Observe监听类的使用&#xff0c;Object…

ZXing.Net:一个开源条码生成和识别器,支持二维码、条形码等

推荐一个跨平台的非常流行的条码库&#xff0c;方便我们在.Net项目集成条码扫描和生成功能。 01 项目简介 ZXing.Net是ZXing的.Net版本的开源库。支持跨多个平台工作&#xff0c;包括 Windows、Linux 和 macOS&#xff0c;以及在 .NET Core 和 .NET Framework 上运行。 解码…

硬件看门狗导致MCU启动时间慢

最近&#xff0c;在项目交付过程中&#xff0c;我们遇到了一个有趣的问题&#xff0c;与大家分享一下。 客户的需求是&#xff1a;在KL15电压上电后&#xff0c;MCU需要在200ms内发送出第一包CAN报文数据。然而&#xff0c;实际测试结果显示&#xff0c;软件需要360ms才能发送…

【通俗易懂介绍OAuth2.0协议以及4种授权模式】

文章目录 一.OAuth2.0协议介绍二.设计来源于生活三.关于令牌与密码的区别四.应用场景五.接下来分别简单介绍下四种授权模式吧1.客户端模式1.1 介绍1.2 适用场景1.3 时序图 2.密码模式2.1 介绍2.2 适用场景2.3时序图 3.授权码模式3.1 介绍3.2 适用场景3.3 时序图 4.简化模式4.1 …

MES系统如何提升制造企业的运营效率和灵活性

参考拓展&#xff1a;苏州稳联-西门子MES系统-赋能智能制造的核心引擎 制造执行系统(MES)在提升制造企业运营效率和灵活性方面发挥着关键作用。 一、MES系统的基本概念和功能 MES系统是连接企业管理层与生产现场的重要桥梁。它主要负责生产调度、资源管理、质量控制等多个方…

安全热点问题

安全热点问题 1.DDOS2.补丁管理3.堡垒机管理4.加密机管理 1.DDOS 分布式拒绝服务攻击&#xff0c;是指黑客通过控制由多个肉鸡或服务器组成的僵尸网络&#xff0c;向目标发送大量看似合法的请求&#xff0c;从而占用大量网络资源使网络瘫痪&#xff0c;阻止用户对网络资源的正…