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

ZYNQ初识2(zynq_7010)基于vivado,从PL端调用PS端的时钟

     由于需要进行一些FPGA的简单开发,但板载PL端没有焊接晶振,所以需要从PS端借用时钟到PL端使用。

首先新建项目,根据自己的板载选择芯片,我的板载芯片是zynq_7010。

一路next,在自己的vivado的工作文档新建文件夹并给自己新建的项目命名,随后进行芯片选型,由于我的板载芯片是zynq_7010,所以做如下选择。确认无误后点击finish即可。

下面是创建好新工程的主界面,点击创建block_design

根据自己需要是否修改设计名字,不改也可。点击OK后进入如下界面,点击“+”,在左上角搜索ZYNQ并选择唯一对应的Precessing System。

随后出现对应Processing System模块,双击进入设置

选择Preihpheral IO PIns,根据板载设置,一般设置好QuadSPI和UART即可简单使用。

随后进入DDR的设置,按如下步骤选择MemoryPart(应是和板载芯片最接近的设置)

随后按如下操作取消勾选,得到最终的PrecessingSystem模块。

右键两个引脚,选择自动接出,如下图

随后点击左上角Sources,选中刚刚创建的bp文件,右击选择生成输出项目

点击Generate即可。

随后继续选中bp文件,右击选择创建顶层文件,点击OK

随后点击创建bit流文件,而后默认点击Yes,跳转后默认点击OK即可,生成文件后,弹出界面选择cancel即可,不需要进行修改。

随后选择File,选择导出,将生成的bit流文件导出到硬件Hardware,默认点击OK即可。但需要勾选中包含流文件(including Stresming file)

随后选择Launch SDK,启动PS端,随后默认点击OK即可。

页面跳转至如下界面:

随后依次点击左上角File,选择New,选择Application Project进行文件创建:

根据自己情况为新创建的文件命名,随后选择提供的空模板,点击Finish即可。

随后单击选择新建好的工程文件夹,找到src文件夹并新建main.c文件

双击打开新建好的main.c文件,发现程序字号显示较小,按下操作调整主界面字号,选择Window->Preference->general->color and font,选择Text Font,点击左侧Edit,根据需要修改即可。

随后将下面的几行代码复制到新建的main.c文件中,保存(运行)。

int main(void){while(1){}
}

 随后选择工程文件,选择Run as->Run Configuration

选中最下面的选项,双击后,勾选右侧界面的Reset entire system和ProgramFPGA,随后点击run

随后切换到PL端,给工程文件添加现有的LED闪烁的代码文件(源文件): 

添加完后在Diagram主界面中右击选择添加model,将刚刚添加到工程文件中的led闪烁文件模块加入到Diagram界面并连线,将复位和led输出两个引脚选中,并点击Make Externalm,最终如下图:

随后点击右侧的Run Synthesis,进行综合分析并进行IO引脚的配置(结合板载的原理图)

引脚配置完成后如下图:

随后将保存的文件自行命名(不需要和工程文件名字统一,但不可以是中文字符),随后点击OK

点击左侧左下角的生成bit流文件,默认点击OK,等待生成即可。

随后选中OpenTarget,选择自动连接  auto connect

随后依次点击Program device  ->Program来将生成后的bit流文件下载烧写至板载中。

随后则可以观察到板载小灯闪烁,上述过程成功。

另外在下面附上FPGA两个小灯交替闪烁的代码:

`timescale 1ns / 1ps
module test_led003(input   sys_clk,input   sys_rst_n,output [1:0] led
);reg [25:0] cnt;
assign led = (cnt<26'd25_000_000) ? 2'b01 : 2'b10;
always @ (posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)cnt <= 26'd0;else if (cnt< 26'd50_000_000)cnt <= cnt + 1'b1;elsecnt <= 26'd0;end
endmodule

另附上修改后的三个小灯连续闪烁的代码:(注意修改对应的管脚分配)

`timescale 1ns / 1ps
module test_006(input   sys_clk,input   sys_rst_n,output [2:0] led // 修改为3位宽,控制三个LED
);
//reg define
reg [25:0] cnt;
wire [2:0] led_state; // 定义一个3位宽的wire,用于存储LED状态// 使用case语句来实现三个LED的交替闪烁
assign led_state = (cnt > 26'd25_000_000) ? 3'b001 : // 当计数器大于25,000,000时,LED1亮(cnt > 26'd12_500_000) ? 3'b010 : // 当计数器大于12,500,000时,LED2亮3'b100; // 否则,LED3亮assign led = led_state; // 将led_state的值赋给led输出always @ (posedge sys_clk or negedge sys_rst_n) beginif (!sys_rst_n)cnt <= 26'd0;else if (cnt < 26'd50_000_000)cnt <= cnt + 1'b1;elsecnt <= 26'd0;
end
endmodule
http://www.lryc.cn/news/506570.html

相关文章:

  • Android详解——ConstraintLayout约束布局
  • docker简单命令
  • 【linux】shell(36)-文件操作
  • c语言——数据结构【链表:单向链表】
  • ​Python 标识符是啥?​
  • 视频及JSON数据的导出并压缩
  • VScode使用教程(菜鸟版)
  • 【漏洞复现】Grafana 安全漏洞(CVE-2024-9264)
  • Android AOSP 源码中批量替换“phone“为“tablet“的命令详解
  • 基于JavaWeb(SSM+MySQL)问卷调查管理系统设计与实现毕业论文
  • 域内用户枚举与密码喷洒与密码爆破
  • DIY 集合求并集(union)运算的代码 ← Python
  • Redis bitmaps 使用
  • vue深层数据响应的问题
  • 解决Nginx + Vue.js (ruoyi-vue) 单页应用(SPA) 404问题的指南
  • 项目计划表如何制作?使用甘特图制作项目计划表的步骤
  • Flutter-底部分享弹窗(showModalBottomSheet)
  • 初学stm32 --- 时钟配置
  • LeetCode:226.翻转二叉树
  • (css)鼠标移入或点击改变背景图片
  • Unbuntu下怎么生成SSL自签证书?
  • OpenGL ES 03 加载3张图片并做混合处理
  • 深度学习-74-大语言模型LLM之基于API与llama.cpp启动的模型进行交互
  • PyTorch 2.0 中设置默认使用 GPU 的方法
  • 如何在 Ubuntu 22.04 服务器上安装 Jenkins
  • 【一篇搞定配置】如何在Ubuntu上配置单机/伪分布式Hadoop
  • 利用Map集合设计程序,存储城市和对应等级相关信息
  • 【自动驾驶】单目摄像头实现自动驾驶3D目标检测
  • 21 go语言(golang) - gin框架安装及使用(二)
  • Intel(R) Iris(R) Xe Graphics安装Anaconda、Pytorch(CPU版本)