前言

本文简要介绍在vivado中创建PS工程。单纯使用zynq芯片的PS部分就像使用普通ARM芯片一样,只是多了建立Zynq硬件系统这一个步骤。vivado创建PL工程参见此处

新建工程

vivado 创建FPGA工程相同

建立Zynq硬件系统

新建块设计

添加zynq处理器IP核

自动配置

添加一个GPIO IP核,同样自动配置,然后在空白处右击选择Regenerate Layout,重新布局

可以将GPIO核改名为LED,核的端口也改为LED

配置

双击zynq核进行配置,此处不需要配置

双击GPIO核,将端口设为输出,因为vivado有ZedBoard的信息,所以不用自己配置IP configuration

新建约束文件

生成顶层文件

先右击system → Generate Output Products → Generate

再右击system → Create HDL Wrapper → OK

Vivado会为IP子系统生成一个顶层文件,以便对该系统进行综合、实现并生成比特流

生成比特流

工程配置完成,点击左下侧Generate Bitstream生成比特流,点击Yes。若没有其他错误,比特流生成完成。

外设地址

硬件工程设计好之后,可在以下窗口中看到系统分配给外设的地址

将硬件工程导出到SDK

VIVADO -> File → Export Hardware 导出硬件到SDK,打钩,包括比特流,点击OK



新建软件工程



注意点next选择empty application



新建.c源文件

录入代码

//点亮灯,需要流水灯代码请自行修改
#include "xparameters.h"
#include"xgpio.h"
#define LED_CHANNEL 1
XGpio GpioOutput;
int main()
{
XGpio_Initialize(&GpioOutput,XPAR_LED_DEVICE_ID);
XGpio_SetDataDirection(&GpioOutput,LED_CHANNEL,0x0);
while (1)
{
XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,0xFF);//点亮全部LED灯
}
}

下载

回到Vivado,program device

再到SDK,运行

效果

说明

bsp是与硬件配置有关的板级支持包,可以方便调用bsp包内的函数实现对外设的控制,而不用关心底层驱动实现。

.elf文件是生成的可执行文件

关于处理器系统

Zynq搭载的是一颗双核ARM-Cortex-A9处理器,是一颗“硬”处理器,而Xilinx MicroBlaze是由可编程逻辑组成的“软”处理器,MicroBlaze也可以在Zynq芯片上实现



上图绿框是应用处理单元(APU),包含两个ARM核等处理资源。NEON引擎实现了单指令多数据功能来实现DSP类算法的加速,NEON指令是对ARM指令集的扩展,可以直接使用。浮点扩展(FPU)则实现了浮点运算的硬件加速

zynq的GPIO

zynq的GPIO实现方式有三种:MIO、EMIO、AXI_GPIO。PS通过这三种GPIO和外部接口通信。上面例子点亮LED灯使用的是AXI_GPIO,是一个IP核,消耗PL逻辑资源和PL管脚资源,挂载在AXI总线上,通过AXI总线地址访问。MIO直接和PS相连接,不消耗PL资源,共有54个。EMIO接口位于PS和PL之间,连接到PL的管脚时不消耗PL逻辑资源,连接到PL实现的外设时不消耗PL的逻辑资源也不消耗PL的管脚资源。

vivado 创建PS工程的更多相关文章

  1. vivado 创建PL工程

    参考来源 https://china.xilinx.com/video/hardware/i-and-o-planning-overview.html 前言 我Win10系统上的Xilinx Plat ...

  2. Vivado SDK 2014.2 创建新工程后,BSP版本不对的解决办法

    问题描述如下: 1. 使用Vivado SDK 2014.2已经创建了工程,但是此时,hdf文件增加了外设,需要重新创建工程以更新SDK中的外设描述: 2. 使用新的hdf创建工程后,发现system ...

  3. 在VS2015 RC打开CTP中创建的工程

    VS2015终于出了RC了!小伙伴们快来安装试用吧,地址在这里,还有新的Windows 10开发工具哦,要不然是开发不了Universal Windows App的,安装前记得卸载CTP版本. 新的R ...

  4. 三、使用maven创建scala工程(scala和java混一起)

    本文先叙述如何配置eclipse中maven+scala的开发环境,之后,叙述如何实现spark的本地运行.最后,成功运行scala编写的spark程序. 刚开始我的eclipse+maven环境是配 ...

  5. 什么是maven与maven的使用过程(例如在idea创建maven工程(重点讲讲idea创建使用maven管理的web工程,并且部署到tomcat上))

    什么是maven与maven的使用过程(例如在idea创建maven工程) (重点讲讲idea创建使用maven管理的web工程项目,并且部署到tomcat服务器上) 一.什么是maven? 1, M ...

  6. Eclipse创建Maven工程报错

    问题 用Eclipse创建maven工程的时候,总是会报错,例如提示: Unable to create project from archetype [org.apache.maven.archet ...

  7. MyEclipse创建Maven工程

    先要在MyEclipse中对Maven进行设置:

  8. 关于Xcode6创建的工程在Xcode5打开

    Xcode6创建的工程在Xcode5打开- 4.0只显示3.5大小的问题 只需要在工程里添加Default-568h@2x.png,即可以解决

  9. windows下无法创建django工程的问题

    环境:python2.7  django1.7 安装好django后,将C:\Python27\Lib\site-packages\Django-1.7.7-py2.7.egg\django\bin; ...

随机推荐

  1. CString中 format、trimLeft和trimright、trim 和FindOneOf用法

    1.format 可以帮助各种类型转换成CString. a. int 转 CString CString str; int number = 4; str.Format(_T("%d&qu ...

  2. POJ 1426 - Find The Multiple - [DP][BFS]

    题目链接:http://poj.org/problem?id=1426 Given a positive integer n, write a program to find out a nonzer ...

  3. OAuth2.0的原理介绍

    OAuth2.0是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. OAuth2.0(开放授权)是一个正式的互联网标准协议. 允许第三方网站在用户 ...

  4. 获取子字符串函数MidStr

    MidStr返回指定范围内的字符串.该函数有三个参数.第一个参数为源字符串,第二个参数为起点(下标从1开始),第三个参数为结束点.通过第二.第三个参数则可指定要复制字符串的范围. function M ...

  5. springcloud第一步:创建eureka注册服务

    实现服务注册 创建EureKaserver 项目 Maven依赖 <parent> <groupId>org.springframework.boot</groupId& ...

  6. 合作开发工具——freeze和pipreqs

    以后在合作开发的过程中,难免会用到别人开发到一半或者将自己开发的项目交给别人,在转交项目的时候需要让别人知道本项目中用到了哪些模块,这时可以用到一条命令来帮助我们. pip3 freeze # 获取环 ...

  7. Java数组转List

    问题:当使用Arrays.asList(a)将数组转为List集合后,进行add操作时,报UnsupportedOperationException异常. 数组转List,直接使用Arrays的asL ...

  8. Python基础(九) type元类

    python元类:type()    元类是python高阶语法. 合理的使用可以减少大量重复性的代码. 元类实际上做了以下三方面的工作: 干涉创建类的过程 修改类 返回修改之后的类 为什么使用元类? ...

  9. Newtonsoft.Json解析数组

    以下是解析json数组: var jsonInfo=[{"name":"abc","id":"1","coun ...

  10. Centos7 Firewall 防火墙配置应用实例参考(转)

    时间:2016-06-02 02:40来源:linux.it.net.cn 作者:IT   简单的配置,参考学习:--permanent  当设定永久状态时 在命令开头或者结尾处加入此参数,否则重载或 ...