• vivado 创建PS工程


    前言

    本文简要介绍在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的管脚资源。

  • 相关阅读:
    java ---------- API
    java ------- 泛型
    mybatis(输入、输出参数、ResultMap)
    javase参数传递机制(值传递)
    mybatis配置文件(properties、typeAliases、mappers( resource、class、url、package))
    mybatis(Mybatis与hibernate的不同、原始Dao开发、Mapper动态代理开发)
    mybatis入门(介绍、mybatis入门程序(增、删、改、查))
    javase(四舍五入、switch、length、构造器、重载与重写)
    javase(内存中的堆(heap)、栈(stack)和静态存储区)
    Javase(&与&&的区别和联系)
  • 原文地址:https://www.cnblogs.com/uestcman/p/10335518.html
Copyright © 2020-2023  润新知