ZYNQ笔记(2):PS端——Hello World !
PL端使用过后,来到了ZYNQ核心的部分:PS端,现在用Vivado软件对ZYNQ-7000开发板的PS端进行第一个程序设计:Hello World。
一、新建Vivado工程
1.打开Vivado,新建一个工程,Next
2.设置工程名称和工程所在目录,Next
3.选择第一项:RTL Project,Next
4.添加资源,可以直接Next
5.添加约束,可以直接Next
6.芯片型号选择xc7z020clg400-1,Next
7.总结页面,Finish
8.进入Vivado工程页面,左边是导航栏,可以直接点击Generate Bitstream,上面的选项也会按顺序被执行。Open Hardware Manager则是硬件管理,用于下载、调试等。
9.如果连接好了板卡,那么点击Open Hardware Manager --- Open Target则可以看到板卡信息。
二、ZYNQ IP核设置
1.点击导航栏的 IP INTEGRATOR --- Create Block Design,弹出工程名称和工程位置,填写后点OK
2.点击中间的 + 号添加IP,然后在弹出的小窗口中选择ZYNQ,双击该IP核
3.此时看到ZYNQ的接口界面,有几个引脚,我们只需要最简单的系统,双击ZYNQ进行参数设置
4.进入到ZYNQ内部资源区域,此处可以看到内部有哪些资源可以使用。
Zynq Block Design 主页面
PS-PL Configuration PS到PL的相关接口配置信息以及PS部分的一些配置信息
Peripheral I/O Pins 通用外设接口的配置
MIO Configruation 对MIO以及EMIO的分配控制
Clock Configruation PS端时钟资源的配置和管理
DDR Configration DDR控制器的一些参数配置
Interrupts 中断的配置管理
5.点击左侧的PS-PL Configuration, 取消勾选这两项。
6.点击左侧的MIO Configuration,电压设置成LVCMOS 1.8V,用到了SD和UART,因此勾选它们并且设置引脚编号。
7.选择Clock Configuration,本实验没有用到FPGA板卡时钟,因此取消勾选。
8.点击左侧DDR Configuration,勾选Enable DDR,点击展开,对DDR进行一些参数设置,之后点击OK
9.回归到ZYNQ主页面,可以看到比之前更简洁了。上面绿色横条处点击Run Block Automation
10.点击OK
11.ZYNQ变成了如下的结构图。
12.点击 Source 栏的工程,鼠标右键选择 Generae Output Products
13.弹出一个小窗口,第一项为全局模式,更慢但保险,第二项为OOC模式,更快但有逻辑问题时会编译不通过,我们选第一项,下面线程根据自己电脑配置选择最大的即可。
14.设置让Vivado管理我们的文件,点击Sources,右键选择Create HDL Wrapper,弹出的小页面点击OK
15.完成后的界面如图所示
三、使用SDK进行软件开发
1.本次实验只有 PS 部分的管脚,没有 PL 部分的管脚,而且 PS 部分的管脚都是固定的,所以我们不需要添加管脚约束文件。另外因为没有使用 PL 部分的资源,我们也不需要在 Vivado 下编译和生成 bit 文件了。直接将文件导出到SDK开发目录,点击 File --- Export --- Export Hardware
2.未用到bit流文件,不用勾选 Include bitstream ,直接点 OK
3.启动SDK,点击File Launch SDK,弹出的小窗口直接点OK就行
4.直接点 OK
5.如图所示便是SDK软件开发界面了。
6.新建一个软件的APP,用于后面的C语言编程。点击File --- New --- Application Project
7.填写项目名称,点击Next
8.选择Hello World,点击Finish
9.此时软件自动开始编译,也可点击 Build Project手动编译,编译完成后出现Hello World 的程序,如果编译出错,可以点击 Clean Project 重新编译。
10.本实验需要用到Uart串口,我们打开我的电脑 --- 设备管理器 --- 端口,检查是否已经连接好串口
11.回到SDK界面,看到界面下方有一个SDK Terminal,点击该选项,并且点击那个+号,设置其自带的串口工具的参数。
12.点击如下选项
13.如果跳出如下界面,点击No
14.点击右上角的按钮可以进行界面切换
15.点击如下图标可以进行FPGA配置,点击Program将程序烧录进板卡,这时跳出小窗口就要选择yes了。
16.当然,你也可以点击这个选项进行FPGA配置,这时跳出小窗口就要选择yes了。
17.页面出现如下的文件目录,表示成功。
18.界面上方有几个调试选项:
Resume:运行到断点为止
Step into:进到函数内部
Step over:单步调试
Step return:跳出函数内部
这里选择单步调试即可,可以看到界面下方的SDK Terminal中显示出:Hello World
19.当然,也可以使用电脑里的窗口助手软件进行接收,先在SDK Terminal界面中点击X关闭该功能,然后打开电脑里的串口助手,助手需要打开处于可以工作状态,接收设置成ASCII模式。重新回到SDK界面运行程序,可以看到串口助手同样显示出:Hello World
四、补充:C语言界面设置
默认的C语言界面没有行号,而且字体非常小,下面说下怎么调整。
1.点击顶层导航栏的Window---Preferences,点击General---Editors---Text Editors,将下面的Show line numbers勾选上即可显示行号了。
2.然后点击右侧的蓝字'Colors and Fonts',右侧页面变换后选择C/C++---Editor---C/C++ Editor Text Font,点击右侧Edit...即可调整字体和字号,建议字号为14。
参考资料:
[1]V3学院FPGA教程
[2]何宾, 张艳辉. Xilinx Zynq-7000嵌入式系统设计与实现[M]. 电子工业出版社, 2016.
ZYNQ笔记(2):PS端——Hello World !的更多相关文章
- 利用ZYNQ SOC快速打开算法验证通路(3)——PS端DMA缓存数据到PS端DDR
上篇该系列博文中讲述W5500接收到上位机传输的数据,此后需要将数据缓存起来.当数据量较大或者其他数据带宽较高的情况下,片上缓存(OCM)已无法满足需求,这时需要将大量数据保存在外挂的DDR SDRA ...
- ZYNQ 中PS端GPIO EMIO使用
ZYNQ 中PS端GPIO EMIO使用 在使用ZYNQ进行开发设计时,往往需要对一些GPIO引脚进行配置,传统的配置方法通常在PL端进行管脚约束之后在Verilog代码中对相应引脚进行配置.这样如果 ...
- ZYNQ笔记(3):GPIO的使用(MIO、EMIO)——led灯
一.GPIO原理 1.GPIO介绍 程序员通过软件代码可以独立和动态地对每个 GPIO 进行控制,使其作为输入.输出或中断. (1)通过一个加载指令,软件可以读取一个 GPIO 组内所有 GPIO 的 ...
- 使用axi_datamover完成ZYNQ片内PS与PL间的数据传输
分享下PS与PL之间数据传输比较另类的实现方式,实现目标是: 1.传输时数据不能滞留在一端,无论是1个字节还是1K字节都能立即发送: 2.PL端接口为FIFO接口: PS到PL的数据传输流程: PS到 ...
- 【转载】linux内核笔记之高端内存映射
原文:linux内核笔记之高端内存映射 在32位的系统上,内核使用第3GB~第4GB的线性地址空间,共1GB大小.内核将其中的前896MB与物理内存的0~896MB进行直接映射,即线性映射,将剩余的1 ...
- ZYNQ笔记(7):AXI从口自定义IP封装
使用 AXI_Lite 从口实现寄存器列表的读写,并且自己封装为一个自定义 IP,以便以后使用.本次记录的是 M_AXI_GP0 接口,此接口是 ARM 作为主机,FPGA 作为从机,配置 FPGA ...
- ZYNQ PS端IIC接口使用-笔记
ZYNQ7000系列FPGA的PS自带两个IIC接口,接口PIN IO可扩展为EMIO形式即将IO约束到PL端符合电平标准的IO(BANK12.BANK13.BANK34.BANK35): SDK中需 ...
- ZYNQ笔记(1):PL端——led灯
ZYNQ分为PS和PL,此博客实际上是FPGA中一个完整的FPGA工程的创建. PS:处理系统 (Processing System) 即ARM的Soc部分 PL:可编程逻辑(Programable ...
- ZYNQ笔记(4):PL触发中断
一.ZYNQ中断框图 PL到PS部分的中断经过ICD控制器分发器后同时进入CPU1 和CPU0.从下面的表格中可以看到中断向量的具体值.PL到PS部分一共有20个中断可以使用.其中4个是快速中断.剩余 ...
随机推荐
- PHP MySQLi 参考手册
PHP MySQLi函数 PHP MySQLi是MySQL的增强版本,PHP7 已经废弃了MySQL扩展,全面推荐使用MySQLi或者PDO. MySQLi安装>>>>> ...
- vue如何导入外部js文件(es6)
也许大家都是使用习惯了es5的写法喜欢直接用<Script>标签倒入js文件,但是很是可惜,这写法.在es6,或则说vue环境下不支持 真的写法是怎样? 首先.我们要改造我们要映入的外部j ...
- Vue.js 源码分析(八) 基础篇 依赖注入 provide/inject组合详解
先来看看官网的介绍: 简单的说,当组件的引入层次过多,我们的子孙组件想要获取祖先组件的资源,那么怎么办呢,总不能一直取父级往上吧,而且这样代码结构容易混乱.这个就是这对选项要干的事情 provide和 ...
- win10笔记本电脑连wifi显示“无internet,安全”解决办法
吹一波, 不出意外的话,这应该是网上最全最详细的解决办法......毕竟妹子的电脑遇到了问题,咱一定要给她解决啊. 问题描述:连上了WiFi,显示“无Internet,安全”.但实际上她的电脑是有网的 ...
- 【原】通过Spring结合Cglib处理非接口代理
前言: 之前做的一个项目,虽然是查询ES,但内部有大量的逻辑计算,非常耗时,而且经常收到JVM峰值告警邮件.分析了一下基础数据每天凌晨更新一次,但查询和计算其实在第一次之后就可以写入缓存,这样后面直接 ...
- 汇编指令之CMP, TEST指令
一.CMP指令 这一块呢,我不想上图了,汇编的博文我已经快要让我写吐了,其实也有好多我没有补充进来,比如进制,LEA指令,数据宽度,有符号,无符号的区分等等,但我真的要吐了,这些玩意我已经不是第一次写 ...
- 9.InfluxDB-InfluxQL基础语法教程--LIMIT and SLIMIT 子句
本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) LIMIT和SLIM ...
- JMETER 计数器的表现
1.计数器在线程中表现(虚拟用户). 线程组使用4个线程即4个虚拟用户. 如果不勾选每用户独立跟踪计数器. 那么这个计数器将会累加4次. 计算结果为7. 勾选的情况. 这里我们可以看到 index 一 ...
- odoo10学习笔记十五:仪表板
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189353.html 仪表盘可以通过外部ID引用其他视图文件的内容,整合到一个界面进行显示. 一:建立仪表 ...
- git使用笔记(第一次)
背景:公司基于微服务的架构,前端的服务web只有一个.在并行完成不同需求的测试任务时,该服务会拉出不同分支,此时会碰到sit环境与其他测试小伙伴部署冲突的问题.解释下.需求1对应的服务web的A分支, ...