ZYNQ7020 PL使用PS端时钟

创建工程

1)新建一个项目,芯片型号选择
XA7Z020 (直接选择xc7z020CLG400-1,因为系统识别到的是xc7z020-1)
在这里插入图片描述
2) 创建一个BLOCK设计
在这里插入图片描述
2)在右侧的窗口里 ,点击加号,在选择框里搜索ZYNQ,并找到ZYNQ7 PROCESSING SYSTEM ,双击并打开
在这里插入图片描述
3)软件自动生成了一个 zynq的block 如下图所示,接下来要做一些相应的设置,双击下图中的ZYNQ核
在这里插入图片描述
4) 在ZYNQ中设置时钟功能 :

找到 设置项目中的 Clock Configuration 选项, 在PL Fabric Clocks 设置自己需要的时钟频率,这里一共有4种频率可以设置 类似于我们的PLL功能。这里我们设置100M时钟
在这里插入图片描述

5) 在zynq中设置DDR功能 :

依次在弹窗里找到DDR Configuration→DDR Controller Configuration→DDR3,在Memory Part下拉菜单中根据自己板子上的DDR来选择相应的DDR3,本实验所用到型号:MT41K256M16RE-125,数据位宽选择16bit 最后点击“OK”,如下图所示。
在这里插入图片描述
在这里插入图片描述

4)完成上述操作后, 点击“Run Block Automation”如下图所示
在这里插入图片描述
在弹出的选项中保持默认,点击“OK”,即可完成对ZYNQ7 Processing System的配置,得到如下所示
在这里插入图片描述
5)右键 FCLK_CLK0右边的线 ,然后点击Make External 将PS的时钟拉出,如下图所示
在这里插入图片描述
引出后 如下图所示
在这里插入图片描述
7)在FCLK_CLK0与 M_AXI_GP0_ACLK之间连接一根线,来为PS提供时钟(不连接会报错,也可以在ZYNQ设置界面禁用AXI接口,就不用连接了)

最终得到下图所示
在这里插入图片描述
上面已经完成了ZYNQ PS部分的设置,接下来设计自己的PL模块代码和与ZYNQ PS部分连接

此时可以检查 block design 是否有设计错误 ,如果没有报错 正面设计是正确的
在这里插入图片描述
7)创建硬件描述,source→Design Source ,右键我们创建的BLOCK工程,点击create HDL wrapper如下图所示(这一步的作用相当于将图纸转换成对应的硬件描述语言的功能)
在这里插入图片描述
在弹出的对话框里保持默认

生成的wrapper文件会自动被设置为顶层
8)现在我们拥有了 时钟(ZYNQ 的PS模块),也拥有了 FPGA的.v模块,接下来要将两个模块结合起来,这里我们可以创建一个顶层TOP.V 模块然后在该顶层模块中例化ZYNQ

design_1_wrapper u_2(
    .FCLK_CLK0_0(clk)
);
  1. 约束文件
    PS时钟不需要约束
    11)完成后点击Generate Bitstream(布线并生成二进制文件) 的操作(会提醒是否保存约束文件,点确认就好)

以上操作后,硬件PL以及PS的设置和布局已经完成,但是因为时钟是由PS端产生的,PS端的ARM运行时才能给PL提供时钟信号。直接将bit流文件下载到ZYNQ中,PS端并不会工作,也不会输出时钟给PL

想要让PS端工作,就需要在SDK创建一个工程,哪怕是个空工程也可以

以下是创建一个PS空工程的过程,详细的图文教程可以参考项目6
1)vivado中 选File→Export→Export hardware…,在弹出的对话框中勾选“include bitstream”,点击“OK”确认
在这里插入图片描述
在这里插入图片描述

2)File→Lauch SDK,在弹出的对话框中,保存默认,点击“OK”, 系统将打开SDK工程
在这里插入图片描述
3)新建一个工程 file→new→Application Project,来新建一个“Application Project”,在新建工程中输入自己的工程名,并选择Empty Application(空应用)
在这里插入图片描述
在这里插入图片描述

并且在空应用中创建一个main.c文件
在这里插入图片描述
在这里插入图片描述

并在里面复制以下代码(相当于创建了个空程序)

#include "xparameters.h"
#include "xplatform_info.h"

int main(void){
  return 0;
}

然后点保存。

4)用之前生成的二进制文件对FPGA进行编程,Xilinx Tools -> Program FPGA 然后点击 “Program” (此时 DONE 灯被点亮,代表FPGA被配置完成)
在这里插入图片描述
在这里插入图片描述

5)当FPGA编程成功后,我们需要初始化zynq中的处理器,右键点击刚才创建的空工程,选择Run As -> Launch on Hardware (System Debugger) 或者 Launch on Hardware (GDB).
在这里插入图片描述

经过以上操作,可以看到ps输出到PL的locked信号正常锁定
在这里插入图片描述

### Zynq-7020 时钟 IP 核 配置 使用教程 Zynq-7020Xilinx 的一款 SoC 器件,其内部集成了 ARM Cortex-A9 处理器以及 FPGA 可编程逻辑资源。为了满足不同应用需求,Zynq 提供了灵活的时钟管理功能,主要通过 MMCM 和 PLL 来实现。 #### 1. Zynq-7020 中的时钟架构概述 Zynq-7020时钟管理系统基于 Clock Management Tile (CMT),其中包含了两个核心组件:Mixed Mode Clock Manager (MMCM) 和 Phase-Locked Loop (PLL)[^1]。这些模块可以用于生成多个频率不同的时钟信号,并支持相位调整等功能。 #### 2. SRCC 和 MRCC 的区别 在 Zynq-7020 的设计中,SRCC(Single Region Clock Controller)仅限于控制本地时钟区域内的时钟分配;而 MRCC(Multi-Region Clock Controller)则能够跨越相邻的时钟区域进行时钟分发。这种分区机制有助于减少全局布线延迟并提高性能。 #### 3. 配置方法与工具 Xilinx Vivado Design Suite 是官方推荐的设计环境,在此环境中可以通过以下方式完成时钟 IP 核配置: ##### a. 创建项目并导入硬件描述文件 启动 Vivado 后新建工程,选择目标器件为 XC7Z020(即 Zynq-7020),随后加载相应的 Block Design 或 RTL 文件作为基础框架。 ##### b. 添加 Clocking Wizard IP Core 利用 Vivado 自带的 **Clocking Wizard** 工具来简化复杂时钟树的设计过程。具体操作如下: - 打开 “IP Catalog”,搜索 `clk_wiz` 并双击打开。 - 设置输入时钟参数(如频率范围、抖动容忍度等)。 - 定义所需的输出时钟数量及其各自的目标频率和其他特性(例如占空比、相移角度等)。对于某些特定应用场景可能还需要启用额外选项比如动态重配置口或者锁定检测电路。 ##### c. 实现约束条件设置 编写必要的 XDC 文件以指定物理位置信息以及其他综合阶段需要用到的各种属性声明。例如定义 IOB 上使用的差分对管脚连接关系等等。 以下是简单的 Tcl 脚本片段展示如何调用 Clk Wiz 组件实例化命令行模式下自动化流程的一部分: ```tcl create_ip -name clk_wiz -vendor xilinx.com -library ip -module_name my_clk_gen set_property CONFIG.PRIM_IN_FREQ.VALUE_SRC USER [get_ips my_clk_gen] set_property CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {100} [get_ips my_clk_gen] generate_target all [get_files $proj_dir/my_clk_gen.xci] ``` 上述代码创建了一个名为 `my_clk_gen` 的 clock wizard IP core, 将初级输入源频率设为默认值并通过修改属性将其第一个输出设定为目标频率 100 MHz. #### 4. 关键文档参考资料 建议查阅以下几份重要技术手册获取更深入理解及时实践指导: - UG470: *7 Series FPGAs Clocking Resources* - PG085: *Zynq-7000 AP SoC TRM* (Technical Reference Manual) - DS186: *Product Overview and Pinout Information* 以上资料均可从 Xilinx 官方网站下载获得最新版本号对应的具体章节阅读学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值