开发板:Zynq7030数据采集板
PC平台:Ubuntu-18.04 + MobaXterm
开发环境:Xilinx Vivado + SDK -18.3
学习目标:Zynq7030数据采集板通过串口输出 “Hello World” 字符串

一、Vivado工程创建

上一篇文章Zynq-7000系列之linux开发学习笔记:开发前准备(一)中,介绍了整个开发环境的搭建过程,所需要的文件都已准备就绪。为了先熟悉Zynq7030在Llinux下开发流程,我们先来从最简单的开发学起:从串口打印出 “Hello World” 字符串。
从VMWare虚拟机进入到Ubuntu系统,然后打开一个终端,输入 vivado 打开软件。
在这里插入图片描述
然后点击 Create Project 进入到工程创建向导窗口,点击 Next 按钮进入到下一界面。
在这里插入图片描述
这里需要给工程名取为: helloWorld ,工程就放在创建的 /home/claude1009/xc7030/helloworld 目录下,点击 Next 按钮进入到下一界面。
在这里插入图片描述
选择创建 RTL Project,然后点击 Next 按钮进入到下一界面。
在这里插入图片描述
第一个工程,没有别的文件可添加,点击 Next 按钮进入到下一界面。
在这里插入图片描述
在这里插入图片描述
由于Zynq7030数据采集板是采用 ffg676 封装的7030 FPGA,属于Xilinx的 Zynq-7000 系列,Speed为 -2 。找到对应的芯片后,点击 Next 按钮进入到下一界面。

在这里插入图片描述
可以看见整个工程创建的概述,点击 Finish 就完成了工程的创建。
在这里插入图片描述

二、系统设计与配置

工程创建完成后,就进入到了系统设计界面,可以看见工程的一些信息。Zynq的系统开发一般都有原理框图的设计,这样可以更直观地对系统的各硬件模块进行连接。点击 Create Block Design 按钮,设计命名为 helloWorld ,然后进入到原理图设计界面,通过添加特定的IP来实现特定的功能。
在这里插入图片描述
点击图中的 + 添加IP,在弹出的窗口里输入 Zynq 就可以看见 ZYNQ7 Processing System,这就是本次开发需要的PS端IP,双击创建即可。
在这里插入图片描述
创建后就可以看见如图所示的模块,然后双击模块进行配置。
在这里插入图片描述
进入到配置界面就可以看到整个Zynq7000系列的架构框图。
在这里插入图片描述
选中 PS-PL Configuration ,然后展开选项,图中的 FCLK_RESET0_N M AXI GP0 interface 两个选项目前用不到,将框中的勾去掉即可。
在这里插入图片描述
选中 Peripheral I/O Pins ,然后展开选项:将图中的 UART1 选中即可,核对一下UART1的MIO引脚是否能与板上的硬件原理图对应上。
在这里插入图片描述
选中 MIO Configuration ,然后展开选项:可以看到刚才选中的 UART1 引脚信息。这里注意:要把 Bank 0 Bank 1 的IO标准选择为 LVCMOS 1.8V 。因为在硬件设计时,这两个Bank的电压都是1.8V,所以还是要依据硬件设计来配置此处的电压标准。
在这里插入图片描述
选中 Clock Configuration ,然后展开选项。核对图中的时钟频率是否为33.3333MHz,根据硬件设计来确定。并将图中 FCLK_CLK0 的勾去掉。
在这里插入图片描述
选中 DDR Configuration ,然后展开选项。根据硬件设计中所选择的DDR型号,在 Memory Part 中选择对应型号。如果没有的话,可以选择相似的型号。
在这里插入图片描述
配置完成后,可以得到如图所示的IP模块,点击 Run Block Automation 进行自动布线。
在这里插入图片描述
在这里插入图片描述
布线完成后,在左边的 Sources 栏中,右键工程,按图中所示顺序进行操作即可。
在这里插入图片描述
在这里插入图片描述
最后就可得到如图所示的原理框图设计,检查一下就可以关闭此界面。
在这里插入图片描述
退出刚才界面后,点击图中 Generate Bitstream 按钮生成Bitstrem。
在这里插入图片描述
在等待一段时间后,Bitstream生成完成。在主界面中,可以看到本工程使用的一些资源。
在这里插入图片描述
然后点击 File -> Export -> Export Hardware ,导出硬件配置,并在 Include bitstream 选项上打勾。
在这里插入图片描述
在这里插入图片描述
最后点击 Launch SDK 即可启动SDK。
在这里插入图片描述

三、SDK软件编程

进入到SDK软件界面后,自动加载Vivado工程里面的配置。然后便可看见软件工程的一些地址信息。
在这里插入图片描述
点击 File -> New -> Application Project ,创建一个应用工程,命名为 helloworld ,然后点击 Next
在这里插入图片描述
Xilinx为我们提供了一些软件模板,这里我们使用 Hello World 即可。
在这里插入图片描述
创建成功后,在左边的工程目录中多出了两个文件夹: helloworld helloworld_bsp 。展开 helloWorld ,找到src目录下的 helloworld.c 文件,就可以看到自动生成的C代码了。这里我多添加了一行图中所示的代码0.0.0.0.0
在这里插入图片描述
C代码搞定后,点击图中所示的图标,打到配置FPGA的界面,点击 Browse 找到在Vivado下生成的Bitstream,该文件在工程目录/ helloworld.runs/impl_1/helloworld_wrapper.bit
在这里插入图片描述
在这里插入图片描述
最后右键helloworld工程文件夹,选择 Run As -> 1 Launch on Hardware(System Debugger)即可。
在这里插入图片描述
这里要注意的就是,下载调试前要在PC端打开准备好的MobaXterm工具。确认好PC端的串口COM号,点击软件界面中的 Session 创建一个串口连接,波特率为 115200 即可。
等待下载完成后,就可以在MobaXterm里看到串口打印的信息了。
在这里插入图片描述
这里再多说一个问题:在本次设计的工程中,系统是怎么知道C代码中的print语句输出字符串到UART1的呢?而不是输出到其它UART口或者是JTAG的Console口?
简单说明一下:在SDK的工程目录中右键 helloworld_bsp ,然后选择 helloworld_bsp -> Board Support Package Settings 。在 Board Support Package Settings 界面里,选择 Standalone ,可以看到 stdin stdout 两项是连接到 ps7_uart_1 的,说明Print凼数输出和输入的对象为UART1。
在这里插入图片描述
到此为止,一个最简单的Hello World工程就实现完成了。是不是对整个开发流程有一丢丢的熟悉了呢0.0.0

Logo

更多推荐