vivado 建立PS工程

前言

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

新建工程

vivado 建立FPGA工程相同算法

创建Zynq硬件系统

新建块设计
编程

添加zynq处理器IP核
app

自动配置
函数

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

能够将GPIO核更名为LED,核的端口也改成LED设计

配置

双击zynq核进行配置,此处不须要配置
双击GPIO核,将端口设为输出,由于vivado有ZedBoard的信息,因此不用本身配置IP configuration
3d

新建约束文件

生成顶层文件

先右击system → Generate Output Products → Generate
再右击system → Create HDL Wrapper → OK
Vivado会为IP子系统生成一个顶层文件,以便对该系统进行综合、实现并生成比特流code

生成比特流

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

外设地址

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

将硬件工程导出到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的管脚资源。

相关文章
相关标签/搜索