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

可信网站logo哈尔滨百度网站快速优化

可信网站logo,哈尔滨百度网站快速优化,专业企专业企业网站设计,软件公司是做什么的目录 1. 简介 2. PS 时钟计算 2.1 计算框架 2.2 KV260 的参考时钟 2.3 PL_CLK 设置 3. 测试 3.1 Block design 3.2 引脚绑定 3.3 使用 AD2 测量 3.4 调整分频 4. PYNQ 时钟驱动 4.1 源码解析 4.2 查看 PL_CLK 4.3 配置 PL_CLK 5. 总结 1. 简介 ZYNQ MPSoC 具有…目录 1. 简介 2. PS 时钟计算 2.1 计算框架 2.2 KV260 的参考时钟 2.3 PL_CLK 设置 3. 测试 3.1 Block design 3.2 引脚绑定 3.3 使用 AD2 测量 3.4 调整分频 4. PYNQ 时钟驱动 4.1 源码解析 4.2 查看 PL_CLK 4.3 配置 PL_CLK 5. 总结 1. 简介 ZYNQ MPSoC 具有比较复杂的时钟系统。 PS 的时钟系统为处理器、外设、互连以及其他系统元素生成时钟。有五个系统 PLL 用于生成高频信号这些信号被用作 LPD 和 FPD 中几十个时钟发生器的时钟源。 LPD 中有两个系统 PLL 时钟单元FPD 电源域中有三个。每个 PLL 单元在其输出上有两个时钟分频器LPD 中一个FPD 中一个。这些时钟分频器可以从一个 PLL 提供两种不同的时钟频率在两个时钟域中。对于跨电源域的时钟最大时钟输出频率稍低。 每个系统 PLL 单元都有推荐用途但各个时钟发生器可以从路由到它的三个 PLL 时钟中选择一个。 系统PLL单元位于LPD和FPD电源域 LPD PLLs I/O PLLIOPLL为所有低速外设和部分互连提供时钟。RPU PLLRPLL为 RPU MP Core 和部分互连提供时钟。FPD PLLs APU PLLAPLL为APU MPCore时钟和部分互连提供时钟。Video PLLVPLL为视频I/O提供时钟。DDR PLLDPLL为DDR控制器和部分互连提供时钟。 PS最近使用 KV260 生成一些时钟发现使用 PS 输出的 pl_clk 时钟和预设的有较大差异因此通过实现验证猜想。 2. PS 时钟计算 2.1 计算框架 非常重要必须理解这五个 PLL 的计算过程方可手动配置分频参数。 1PS 输入参考时钟 在以下窗口输入一般的值为 33.333 MHz。 2PLL 乘数 PS 输入参考时钟 * PLL 乘数 VCO 输出时钟。 3DIV2 分频 该分频为默认的 2 分频可以选择取消。需要勾选 Enable Manual Mode 4Divisors 分频 一个 6-bit 的可编程分频器。 5PLL 输出 2.2 KV260 的参考时钟 在《DS987 - Kria K26 SOM Data Sheet》中可以查看 SOM 系统结构图包含该系统使用的33.33 MHz 晶振。 2.3 PL_CLK 设置 有四个 PS 至 PL 的时钟输出可以设定我们先设定两个分别为 100MHz 和 50MHz。 系统默认使用 IOPLL 作为时钟来源I/O PLL 常用于为所有低速外设和部分互连提供时钟。 系统将自动推断分频值如上图所述。 3. 测试 3.1 Block design 其中counter_flip 模块用于按照指定值对时钟进行分频。目的方便使用 IO 口对时钟信号进行测量。而 clk_wiz_0 对 pl_clk1 进行二倍频。 counter_flip 的分频倍数为 100即 PL_CLK 频率 实测频率 × 100。 Verilog 代码如下 module counter_flip(input clk, // 时钟信号input rst_n, // 复位信号output reg sig_out 0 // 输出信号初始为0 );parameter MAX_COUNT 49; // 目标计数值reg [7:0] count 8d0; // 8位计数器初始值为0always (posedge clk or negedge rst_n) beginif (!rst_n) begincount 8d0; // 复位时计数器清零sig_out 0; // 复位时输出也清零end else beginif (count MAX_COUNT) begincount 8d0; // 当计数达到最大值时计数器清零sig_out ~sig_out; // 并翻转输出end else begincount count 1; // 否则计数器递增endend endendmodule 3.2 引脚绑定 sig_out_0 - H12 - J2.1 - AD2.CH1 sig_out_1 - E10 - J2.3 - AD2.CH3 3.3 使用 AD2 测量 使用 PYNQ 框架加载 bit 文件然后使用 AD2 测量。  1Channel 1vivado IDE 显示输出的频率应为 50 MHz实际测量如下 测量的频率是333.33 kHz。 分频倍频数是100。 那么 pl_clk0 的实际输出是333.33 kHz * 100 33.333 MHz。 2Channel 2vivado IDE 显示输出的频率应为 200 MHz实际测量如下 测量的频率是1.3333 MHz。 分频倍频数是100。 那么 pl_clk1*2 的实际输出是1.3333 MHz * 100 133.33 MHz。  3.4 调整分频 参考 2.1 计算框架 中的参数IOPLL 输出时钟频率是 499.995 MHz理论上 PL0 499.995 MHz / 30 16.6665 MHzPL1 499.995 MHz / 15 33.333 MHz 明显不对。说明 IOPLL 的输出频率并不是 499.995 MHz。 直接放弃在 Vivado IDE 中配置 PL_CLK 时钟通过 PYNQ 框架中的时钟类来调整。 如下 from pynq.ps import ClocksClocks.set_pl_clk(0, 20, 1) Clocks.set_pl_clk(1, 10, 1) 再次通过 AD2 进行测量 1Channel 1vivado IDE 显示输出的频率应为 50 MHz实际测量如下 测量的频率是499.99 kHz。 分频倍频数是100。 那么 pl_clk0 的实际输出是499.99 kHz * 100 49.999 MHz。 2Channel 2vivado IDE 显示输出的频率应为 200 MHz实际测量如下 测量的频率是1.3333 MHz。 分频倍频数是100。 那么 pl_clk1*2 的实际输出是2.0000 MHz * 100 200.00 MHz。  Channel 1 与 Channel 2 的时钟均符合预期。 4. PYNQ 时钟驱动 4.1 源码解析 源码地址 /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/ps.pyorhttps://pynq.readthedocs.io/en/v3.0.0/_modules/pynq/ps.html#Clocks 1 全局变量 ZYNQ_ARCH、ZU_ARCH这些常量用于区分不同的硬件架构。CPU_ARCH_IS_SUPPORTED 和 CPU_ARCH_IS_x86 用于检测当前运行环境的 CPU 架构是否受支持。 2时钟寄存器定义 定义了一系列字典如 ZYNQ_PLL_FIELDS、ZU_CLK_FIELDS 等这些字典包含了不同寄存器的配置信息如位偏移、位宽、描述等。 3寄存器地址映射 定义了不同硬件架构下的寄存器地址映射如 ZYNQ_SLCR_REGISTERS 和 ZU_CRL_REGISTERS。 4_ClocksMeta 元类 这是一个元类用于定义时钟类的一些属性和方法。它定义了一系列属性如 cpu_mhz、fclk0_mhz 等这些属性通过 _instance 属性动态获取其实例的相应方法。 5_ClocksBase 基类 这是一个抽象基类定义了 get_pl_clk 和 set_pl_clk 等方法这些方法用于获取和设置 PL 时钟的频率。_get_src_clk_mhz 和 _get_2_divisors 是辅助方法用于计算时钟频率和分频值。 6特定架构的时钟类 _ClocksUltrascale 和 _ClocksZynq 是两个具体实现类分别适用于 Zynq Ultrascale 和 Zynq 7-Series 硬件架构。这些类实现了基类中定义的抽象方法以及一些特定于硬件的功能如处理PLL的配置。 7Clocks 用户类 Clocks 类是用户接口允许用户获取和设置 CPU 和 PL 时钟。它使用 _ClocksMeta 作为其元类从而继承了一系列动态属性和方法。 4.2 查看 PL_CLK 1查看 clock_dict ol.clock_dict --- {0: {enable: 1, divisor0: 15, divisor1: 1},1: {enable: 1, divisor0: 30, divisor1: 1},2: {enable: 0, divisor0: 4, divisor1: 1},3: {enable: 0, divisor0: 4, divisor1: 1}} 2查看 CPU 时钟频率 from pynq.ps import Clocksprint(fCPU CLK: {Clocks.cpu_mhz})--- CPU CLK: 1333.32 3查看 PL_CLK 时钟 from pynq.ps import Clocksprint(fFCLK0: {Clocks.fclk0_mhz}) print(fFCLK1: {Clocks.fclk1_mhz}) print(fFCLK2: {Clocks.fclk2_mhz}) print(fFCLK3: {Clocks.fclk3_mhz})-- FCLK0: 66.666 FCLK1: 33.333 FCLK2: 99.999 FCLK3: 99.999 4.3 配置 PL_CLK # 直接指定频率PYNQ 自动计算分频系数 Clocks.set_pl_clk(0, None, None, 100) # 指定 PL0 输出 100 MHzprint(fFCLK0: {Clocks.fclk0_mhz}) --- FCLK0: 99.999 Or # 指定分频系数 Clocks.set_pl_clk(0, 15, 1)# 可以先不分频看看该 PLL 当前的输出 Clocks.set_pl_clk(0, 1, 1) print(fFCLK0: {Clocks.fclk0_mhz}) --- FCLK0: 999.99# 再设定分频系数 Clocks.set_pl_clk(0, 10, 1) print(fFCLK0: {Clocks.fclk0_mhz}) --- FCLK0: 99.999 5. 总结 使用 PYNQ 加载 bit 后发现 PL_CLK 的输出值不准确。Vivado IDE 中ZU 时钟输出 DIV2 似乎并未生效。通过 PYNQ Clocks 类可以动态调节 PL_CLK 输出。
http://www.hkea.cn/news/14460164/

相关文章:

  • 洛阳网站制作鄞州区住房和城乡建设局网站
  • 怎么给汽车网站做推广15秒创意广告短片
  • 高端网站价格爬虫 wordpress
  • 宁夏建设厅网站6wordpress 支持php7.1
  • 网站建设公司怎样布局有做盆景的网站
  • 南宁网站建设产品介绍一个网站上线需要什么
  • 坑梓网站建设方案网站面包屑如何做
  • o2o商城上的二级网站建站工具官网
  • 网站开发电话广告联盟怎么加入
  • 成都网站制作龙兵科技聊城wap网站建设
  • 怎么做提货网站多语言网站开发公司
  • 祁东网站设计公司动漫制作专业怎么样
  • 关于门户网站建设经费的报告选择郑州网站建设
  • 网站开发和前端开发义乌城市建设规划网站
  • 亚马逊网站建设进度计划评价模板
  • 温州好的网站推广河南微网站开发
  • 手机网站建设机构建筑行业征信查询平台官网
  • 网站建设开发软件有哪些哈尔滨市招投标信息网
  • 双一流建设专题网站wordpress 做的网站
  • 手机网站html源码下载兰州网站建设公司电话
  • 手机网站开发要多久房屋建模软件
  • 如何注销网站备案号网站索引查询
  • 卖东西怎么做网站dw如何在网站做弹窗
  • 无锡网站制作哪家实惠信息发布型企业网站的特点
  • 网页排版精美的中文网站微信小程序开发商家
  • 网站建设备案策划书无锡哪里有建设网站
  • 网站建设单词wordpress调用post
  • 网站排版工具南阳网站建设制作价格
  • 云南省网站备案虚拟主机有几种类型
  • 网站快捷导航ie怎么做深圳怎么注册公司网站