Vivado+zedboard之初学流水灯

Author:zhangxianhe

环境:vivado 2016.3(已验证适用于2015.4)

开发板:Zedboard version xc7z020clg484-1

实验:使用Vivado和SDK进行Zedboard开发,制作一个简单的流水灯程序以说明软硬件协同设计的方法、开发流程等。

本文将分为三个部分:

1. 使用Vivado创建一个工程,并构建一个Zynq嵌入式处理系统。

2. 在上述基础上,将完成后的硬件导入到SDK中进行软件设计。

3. 最后下载到ZedBoard上进行调试。

具体步骤如下:

1. 使用Vivado创建工程

1.1新建工程

  1).鼠标左键双击Vivado2016.3图标,打开Vivado 2016.3;

  2).单击Create New Project创建一个新的工程;

  3).单击Next执行下一步;

  4).选择工程所在的位置,并输入工程名ledflow,单击Next;

  5).在Vivado中新建一个RTL工程,暂不添加文件(勾选 Do not specify sources at this time),后面需要的时候添加,单击Next;

  6).这一步要注意,在左上角Select处选择Boards,选择ZedBoard Zynq Evaluation and Development Kit version D器件,单击Next;

  7).单击Finish

  8).等待软件根据设定新建一个RTL工程。

这样新建工程的步骤就完成了,下面进行硬件设计步骤;

1.2 Vivado硬件设计

  1). 单击Create Block Design,创建并添加IP核;

  2).输入工程名led,单击OK;

  3).等待软件Create Block Design

  4).Add IP.右边空白处一般会提示This design is empty. To get started, Add IP from the catalog,单击 Add IP会出现IP的目录,如果此处没有提示,可以单击Diagram左边框的Add IP添加;

  5). 在目录Search中输入ZYNQ7 Processing System;

  6).双击ZYNQ7 Processing System完成IP核的添加;

  7).等待软件Add IP,接下来工程窗上部分会出现Run Block Automation,点Run Block Automation,直接点OK。

  8).接下来继续添加IP,Add Ip 并在在搜索中寻找AXI GPIO,双击添加。

  9).完成后继续点Run Connect Automation,出现窗口先打钩S_AXI,右边设置保持不变,直接点OK。之后继续点run connect automation,打钩剩下的,注意此时右侧选择leds_8bits(LED)。之后OK.点击Diagram的Regenerate Layout,重新布局,完成后出现如下界面。

1.3硬件处理

  1). Tools >Validate Design

  2).等待软件运行,运行后的界面如下:

  3).单击OK;

  4).Right-Click the Top-level Subsystem Design->Generate Output Products,默认设置,直接点generate,运行结束后,点击OK。

  5). Right-Click the Top-level Subsystem Design->Create HDL Wrapper,选择第二项 Let Vivado manage Wrapper and auto-update,点击OK,

  6). 在左侧Flow Navigator中最下边,单击Generate Bitstream,点击save(如果有提示)然后单击Yes,直接生成比特流文件。执行此过程首先会自动进行分析综合和实现。(这里也可以直接先点击Run Synthesis进行综合,然后点击Run Implementation进行实现,然后再点击Generate Bitstream生成比特流) 需要等待运行的时间比较长,耐心等待;

  7).运行完成后,会自动弹出对话框,选择Open Implemented Design,单击OK:

  8).运行完成后的界面如下:

  9).在关联到SDK时,需要将Package和Device都打开,如果运行后只是自动打开了Device,需要在Flow Navigator下找到Synthesis并在其下点击Open Synthesized Design来打开Package,单击NO,将Package和Device同时显示出来;

  10).单击Open Block Design to invoke the IP integrator design

  11).准备两条USB线,一条连接 micro-usb cable between the PC and the PROG port of the board;另外一条 micro-usb cable between the PC and the UART port of the board,打开Zedboard板的电源,如下图所示,打开电源之后POWER灯会亮;

  12).单击左侧导航窗口最下方Hardware Manager中的Open Target,然后选择Auto Connect

  13).单击Hardware Manager中的Program Device,单击xc7z020_1默认设置,单击Program将比特流烧写到ZedBoard板上;完成后板上的DONE蓝灯会亮, 提示比特流文件下载到ZedBoard板上成功:

  14).单击File中的Export,单击Export Hardware,注意打钩include bitstream,点击OK。

  15).单击File中的Launch SDK,默认设置,单击OK,这时会自动启动SDK。

这样在Vivado中的操作就完成了,软件会自动打开。

1.4 SDK中的软件设计

打开后的SDK界面如下:

  1). 单击File > New > Application Project

  2).输入工程名ledflow,其它默认,注意勾选 Use default location(默认已经勾选)单击Next;

  3). 选择一个空的模板:empty application,单击Finish,等待工作环境的建立;

  4). 单击ledflow>右击src>New > Source File

  5).输入工程名ledflow.c(一般命名为main.c),单击Finish;

  6). 编写如下程序:

 * ledflow.c
*
* Created on: 2017年11月16日
* Author: zhangxianhe
*/
#include"xparameters.h"
#include"xgpio.h"
#include"xil_printf.h"
#include"xil_cache.h"
#define GPIO_BITWIDTH 8
#define GPIO_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID
#define LED_DELAY 100000000
#define LED_MAX_BLINK 0x1
#define LED_CHANNEL 1
#define printf xil_printf
XGpio Gpio;
XGpio GpioOutput; int GpioMarquee(u16 DeviceId,u32 GpioWidth)
{
volatile int Delay;
u32 LedBit;
u32 LedLoop;
int Status;
Status=XGpio_Initialize(&GpioOutput,DeviceId);
if(Status!=XST_SUCCESS)
{
return XST_FAILURE;
}
XGpio_SetDataDirection(&GpioOutput,LED_CHANNEL,0x0);
XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,0x0);
for(LedBit=0x0;LedBit<GpioWidth;LedBit++)
{
for(LedLoop=0x0;LedLoop<LED_MAX_BLINK;LedLoop++)
{
XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,<<LedBit);
for(Delay=;Delay<LED_DELAY;Delay++);
XGpio_DiscreteClear(&GpioOutput,LED_CHANNEL,<<LedBit);
for(Delay=;Delay<LED_DELAY;Delay++);
}
}
return XST_SUCCESS;
};
int main(void)
{
while()
{
u32 status;
status=GpioMarquee(GPIO_DEVICE_ID,GPIO_BITWIDTH);
if(status==)
printf("SUCCESS!.\r\n");
else
printf("FAILED.\r\n");
}
return XST_SUCCESS;
}

然后Ctrl+S,保存的同时,软件会自动开始编译,在左下角problem处可以看到相应的warning和error(如果存在),在console里面可以看到编译成功的效果;无误后,如果有错误Click Project-> clean (in case you get any errors with the BSD).

  7).单击Xilinx Tools > program FPGA将比特流烧写到板上(在Vivado中就先将比特流烧写到板上有两个原因:1.如果SDK调试时出现问题,这样可以检测首先是不是Vivado的问题,如果成功烧写,说明板的连接没有问题,并且Vivado软件本身没有问题;2.在之前的调试过程中出现过直接Xilinx Tools > program FPGA无法烧写的情况;因此,保险起见,选择在Vivado中就先将比特流烧写到板上)

  8).单击Program(和在Vivado中烧写的现象一样,完成后DONE蓝色指示灯会亮)

注:如果软件本身以及板的连接没有问题,那么这个步骤会在三秒左右完成,如果一直卡在一半的进度,说明SDK和Vivado没有很好的建立关联;

  9). 选择按钮. 如果找不到这个标志选择 Window > Show view > Terminal.

  10).单击 并且选择合适的 COM port (取决你自己的电脑), and configure the terminal with the parameters as shown below.

  11).在用到串口打印时,需要设置的COM口,为设备管理器中的USB Serial Port(本机为COM5),因此要选择COM5,注意波特率为115200:

  12).右键工程目录中的ledflow目录,选择Debug As > Debug Configurations,双击Xilinx C/C++ application (GDB),自动选择工程,然后选择Reset Entire System。

在STDIO Connection中,勾选Connect STDIO to Console设置COM 5和波特率115200;

  13).单击Apply,再单击Debug,再点击图示箭头所指图标,即可看到现象。

(第一次的时候会出现选择,直接选择第一个运行方式),看到流水灯的效果,每次跑完一圈Console窗口会出现SUCESS!.的消息。

至此,Vivado+Zedboard的流水灯实验就完成了,板子不使用时要记得关闭电源。

Xilinx Vivado的使用详细介绍(4):Zedboard+vivado之流水灯(加SDK)的更多相关文章

  1. xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证

    xilinx Vivado的使用详细介绍(2):创建工程.添加文件.综合.实现.管脚约束.产生比特流文件.烧写程序.硬件验证 Author:zhangxianhe 新建工程 打开Vivado软件,直接 ...

  2. Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真

    Xilinx Vivado的使用详细介绍(1):创建工程.编写代码.行为仿真 Author:zhangxianhe 新建工程 打开Vivado软件,直接在欢迎界面点击Create New Projec ...

  3. Xilinx Vivado的使用详细介绍(3):使用IP核

    ilinx Vivado的使用详细介绍(3):使用IP核 Author:zhangxianhe IP核(IP Core) Vivado中有很多IP核可以直接使用,例如数学运算(乘法器.除法器.浮点运算 ...

  4. Xilinx Vivado的使用详细介绍(5):调用用户自定义封装的IP核

    Zedboard OLED Display Controller IP v1 介绍 Author:zhangxianhe 本文档提供了快速添加,连接和使用ZedboardOLED v1.0 IP内核的 ...

  5. Xilinx Vivado的使用详细介绍(2):综合、实现、管脚分配、时钟设置、烧写

    前面一篇介绍了从新建工程一直到编写代码进行行为仿真,这篇继续进行介绍. 修改器件型号 新建工程时选择过器件型号,如果新建好工程后需要修改型号,可以选择菜单Tools - Project Setting ...

  6. [No0000A7]批处理经常用到的变量及批处理>NUL详细介绍

    绝对路径是指调用绝对的程序位置的路径,例如: start C:\Windows\test.exe 相对路径是文件改变路径以后还会按照变量的路径所在位置去调用,例如: start %WINDIR%\te ...

  7. linux配置网卡IP地址命令详细介绍及一些常用网络配置命令

    linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...

  8. _MSC_VER详细介绍

    _MSC_VER详细介绍 转自:http://www.cnblogs.com/braver/articles/2064817.html _MSC_VER是微软的预编译控制. _MSC_VER可以分解为 ...

  9. php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系

    以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...

随机推荐

  1. Xpath语法详解

    1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...

  2. mybatisplus ssm配置要点

    本以为不难,但也捣鼓了大半天,记录要点如下: 在pom中引入mybatis plus相关包 <!-- mybatis-plus框架包 start --> <dependency> ...

  3. mac Robotframework执行时报错Robot Framework installation not found.

    虽然已经装了,但一直报错 ,版本是3.1.1 最新版 ➜  ~ pip install robotframework DEPRECATION: Python 2.7 will reach the en ...

  4. python类与对象-如何创建可管理的对象属性

    如何创建可管理的对象属性 问题举例 在面向对象编程中, 我们把方法看作对象的接口, 直接访问对象的属性可能是不安全的,或设计上不够灵活. 但是使用调用方法在形式上不如访问属性简洁. circle.ge ...

  5. How to use draggable attribute?怎样使用拖拽属性代码分享

    6.7 Drag and dropSupport: dragndropChrome for Android NoneChrome 4+iOS Safari 11.0+UC Browser for An ...

  6. windows----------telnet不是内部命令问题

    1.

  7. linux 系统管理11 ——系统安全及应用

    一.基本安全措施 1.系统账号清理 (1).将非登陆用户的shell设为/sbin/nologin 方法一.usermod -s 方法二.chsh命令,交互式修改 方法三.chsh -s usermo ...

  8. SQL实现如何计算项目进度总共天数情况、已经施工天数情况、以及施工进度百分比

    SELECT DATEDIFF(DAY,e.StartDate,e.EndDate)as totaldays, (SELECT COUNT(TaskID) from ConstructionManag ...

  9. Jmeter上传附件EXCEL

    1.通过对上传附件接口进行抓包,获取的信息如下: 2.在jmeter脚本中添加http请求,并添加http请求头信息如下: 3.在http请求中添加上传附件的内容如下,由于我上传的是excel,所以M ...

  10. webservice生成客户端代码

    wsimport -d C:\Other\WSDL_JAVA_Code -keep -verbose -Xauthfile C:\Other\.txt http://XXXXXX