PS-AXI-GPIO-流水灯设计

1、实验目的

在了解了AXI协议的基本内容后,通过已经设计好的AXI的IP核来了解实际设计中AXI的工作原理和设计原理是必要的。这个实验以前实际上按照教程做过,但是没有过多地注意AXI总线的作用和地位,对于AXI协议还是当作黑盒子处理。但是,如果想要将自己的FPGA设计挂到AXI上,了解AXI的具体原理是必要的。这次的回顾除了对一些操作做出具体的解析外,主要任务就是了解IP核的AXI的原理,为下一步基于AXI4打包FL的IP核打好基础。

2、实验操作

(1)构建硬件平台

从目标看,依次添加PS ,AXI-GPIO两个IP核,按照常用开发板设计好,使用默认的自动补齐和连线。这个硬件平台就搭建完成。

配置来看,led需要四个输出,所以AXI-GPIO需要一个四位位宽的输出GPIO。

然后就可以进入引脚设置和生成bit流。

至于对具体的结构会在后面的实验分析中进行,这里只是大致的看一下操作。详细的操作在下面的博文中有:GPIO实验

(2)实现软件设计

这部分需要补充的就是如何使用AXI总线调用外设。一般来说官方对于ARM内核使用的AXI上的IP核上都有比较全面的库。通过这些封装好的库可以有效地使用AXI协议。这部分只需要考虑如何使用即可。

假设已经知道如何导入硬件和初始化设置,这里主要针对一些简单的ARM功能进行编程,方便调试硬件。

【1】对于一个空的工程而言,加入主函数main是第一步。

【2】使用系统函数是基本的操作。如果熟悉的人当然可以直接加入头文件和调用系统函数,完全没压力。但是对于初学者来说,面对大量的可用资源往往不知从何下手。这里提供一个简单的方法。

先看一下vitis的ARM处理器的操作系统的基本框架:

这是vitis创建工程的目录结构。上面的system,也就是操作系统的文件。下面的wrapper则是硬件资源的初始化文件。感觉这两个的关系类似BOOT和WINDOWS的关系。至于文件内容,如果只是想基于ARM内核做开发的话,可以忽略。但是需要了解大致的分布,方便寻找资源来设计。一开始vitis打开了rsc文件夹。这个文件夹就是源文件(也就是用户文件)放置的地方。在这个地方创建一个包含main的主函数,就启动了这个ARM内核。

【3】面对空无一物的主文件,首先要找的就是需要定一个硬件的地址方便操作。这里的地址有一个主地址和一个从地址。主地址可以在硬件设计时分配,这里是0x4120,可以在address editor中找到并且修改。光有主地址还是不够的,这里还需要从地址。所有的地址在vitis中可以查看:

这就是地址配置文件的目录。注意这个目录是在wrapper下的,可以快速查找到对应设备的地址。

【4】基于地址的操作

这里使用的是官方IP核,一般是有用户手册来标明从地址对应的寄存器。对于自定义的基于AXI4的设计,这部分由设计者掌握。如何快速查找到官方IP的手册,在vivado中有快捷方式。实质上这里就是自动调用DOCNAV打开对应文件。

在BD视图中右击IP核,在列表中找IP document的具体文档,一般第一个就可以。

这里由于我使用DocNav是更新的,所以这里就不展示,以后再解决这个问题。

从地址0x0000就是数据位,默认为输出,这里也不用修改输出模式。所以可以直接基于地址操作寄存器。

【5】寄存器操作

这里就需要在wrapper中找rsc文件,从里面调用响应的函数即可。

3、实验结果

这里只是初步接触基于软件设计的调试,实验结果以后有时间做出来再看。这里首先掌握ARM内核调试的方法,为后面的操作打下基础。

PS-AXI-GPIO-流水灯设计的更多相关文章

  1. C语言基于NIOSII的软件开发及流水灯设计

    一.Quartus II 12.1 (32-Bit)进行硬件设计 1.所需要的系统元器件组成 2.系统电路图 二.Nios II 12.1 Software Build Tools for Eclip ...

  2. 毕业回馈-89C51之GPIO使用(流水灯)

    今天分享一个89c51制作的8位流水灯案例.使用Proteus仿真. 同上一遍文章不同.上一篇文章中对于GPIO操作主要是位操作,即sbit led1=P0^0;其中P0^0代表p0.0这个引脚,然后 ...

  3. (一)GPIO 编程实验 LED 流水灯控制

    7个寄存器 是R1-R16.(当然,里面有很多是分几个模式的,所以总共有37个)类似于单片机的R0-R7. GPXCON,GPXDAT等等是另外的寄存器,应该叫,特殊功能寄存器,类似于单片机的P0,P ...

  4. zedboard学习记录.2.PS+PL 流水灯与uart

    1.建立一个工程. 硬件设计 2.IP integrator -> create block desgin;Run Block Automation. 3.add IP -> AXI GP ...

  5. Xilinx Vivado的使用详细介绍(4):Zedboard+vivado之流水灯(加SDK)

    Vivado+zedboard之初学流水灯 Author:zhangxianhe 环境:vivado 2016.3(已验证适用于2015.4) 开发板:Zedboard version xc7z020 ...

  6. STM32学习笔记(二) 基于STM32-GPIO的流水灯实现

    学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...

  7. S5PV210_流水灯

    1.整体思路:把相应的配置数据写入相应的寄存器,控制GPIO电平(Led.s)——运用工程管理Makefile编译.链接文件(由Led.s编译得到led.bin,该文件用于USB启动方式点亮LED,若 ...

  8. 第一个Linux驱动-流水灯【转】

    转自:http://www.xuebuyuan.com/1856562.html 水平有限,描述不当之处请指出,转载请注明出处http://blog.csdn.net/vanbreaker/artic ...

  9. 【接口时序】2、Verilog实现流水灯及与C语言的对比

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1.FPGA型号:XC6SLX45 ...

  10. 第一个FPGA工程—LED流水灯

    这一章我们来实现第一个FPGA工程-LED流水灯.我们将通过流水灯例程向大家介绍一次完整的FPGA开发流程,从新建工程,代码设计,综合实现,管脚约束,下载FPGA程序.掌握本章内容,大家就算正式的开始 ...

随机推荐

  1. MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2

    描述: 2021-08-xx 13:31:30.049 DEBUG 9208 : ==> Preparing: SELECT SUM(end_vt) - SUM(start_vt) FROM s ...

  2. SDL开发笔记(三):使用SDL渲染窗口颜色和图片

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. pwd模块

    # pwd模块提供了获取UNIX平台用户的账户与密码信息(通过文件/etc/passwd),在所有的UNIX版本平台都可以用. # pwd模块返回的是一个类似元组的对象,该对象的各个属性对应于pass ...

  4. Navicat安装包和激活工具

    链接:https://pan.baidu.com/s/11YuOKdgGakt3E8CL80aA2g 提取码:h4f3

  5. 【系统选型】OA需求分析,OA系统选型及各供应商对比。

    去年公司内部做OA信息化升级,需要更新换代一下OA系统,当时OA选型整理下来的资料分享一下. 需求调研整理后如下: 一共四个模块需要更新&升级 :  OA模块(包括行政) + 合同模块 + 费 ...

  6. eclipse c++ 安装

    eclipse及其插件安装 对于我这种被VS惯坏了的人来说,make file 非常不友好的,最近要在redhat 下面去编译c++动态库和应用程序,原有的工程是在window下面的,要到linux下 ...

  7. 【Azure 事件中心】Flink消费Event Hub中事件, 使用Azure默认示例代码,始终获取新产生的事件,如何消费旧事件呢?

    问题描述 根据Azure Event Hub示例文档,[将 Apache Flink 与适用于 Apache Kafka 的 Azure 事件中心配合使用],配置好 consumer.config 文 ...

  8. 【Azure 应用服务】App Service For Linux 环境中,如何从App Service中获取GitHub私有库(Private Repos)的Deploy Key(RSA key)呢?

    问题描述 为App Service For Linux配置CI/CD,源代码在GitHub私有库中,在发布时候报错 Cannot find SourceControlToken with name B ...

  9. [python]将多张图片合并为单个pdf文件

    前言 最近有个个人需求是要把多个图片文件合并为一个PDF文件,这样方便用PDF阅读器连续看,避免界面点一下,只会图片放大.(比如看漫画) 主要思路是先把单张图片转换成单个PDF文件,然后把PDF文件进 ...

  10. 简单封装 Flurl

    FlurlHttpClient类 public class FlurlHttpClient { private readonly FlurlClient client; public FlurlHtt ...