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. 【OpenGL ES】Blinn改进的冯氏光照模型

    1 前言 ​ 光照元素主要有环境光(ambient).漫反射光(diffuse).镜面反射光(specular),光照模型主要有冯氏模型和 Blinn 改进的冯氏模型,两者区别在与镜面反射光的计算,冯 ...

  2. Golang Web 框架 Gin 基础学习教程集合目录

    Gin Web 框架基础学习系列目录 01-quickstart 02-parameter 03-route 04-middleware 05-log 06-logrus 07-bind 08-val ...

  3. macOS使用CodeRunner快速配置fortran环境

    个人网站:xzajyjs.cn 由于一些项目的缘故,需要有fortran的需求,但由于是M1 mac的缘故,不能像windows那样直接使用vs+ivf这种经典配置.搜了一下网上主流的跨平台方案,主要 ...

  4. zip压缩模块,tarfile压缩模块,包和模块,format格式化的复习--day17

    1.zipfile模块 import zipfile #导入模块 1.压缩文件 (1)创建压缩包 参数1压缩包名字,参数2以w模式创建,参数3压缩固定写法 zf = zipfile.ZipFile(& ...

  5. django中_meta组件

    # _meta组件是一个django中任何一个model类的类实例用来自省的api,简单点说,比如有一个Accounts的模型,则 Accounts._meta # 常用接口 model.Userin ...

  6. 我的第一个项目(十三) :组件间传值的一些方案(vuex,eventbus,localStorage)

    好家伙,   先说一下我的需求,我要组件间传值 1.eventBus 前端兄弟组件传值eventbus无法使用 不报错也不触发,就很奇怪 //eventBus.js import Vue from & ...

  7. MySQL 数据库死锁排查

    死锁排查方法 查看进程状态 show processlist; 查看行锁的状态 show status like 'InnoDB_row_lock%'; 查询是否有死锁 show engine inn ...

  8. 【Azure 云服务】Azure Cloud Service如何来设置固定IP地址(ReservedIP)

    问题描述 在云中环境,部署的应用到云服务(Cloud Service)都是动态的IP地址,所以在添加DNS记录的时候,都是使用CNAME,但如果需要在DNS中添加A记录,则需要一个固定IP. 解决方案 ...

  9. 【Azure 应用服务】收集App Service 关于Availability Zone, Health check 以及 Traffic Manager的文档,并了解高可用(HA)和灾备(DR)

    问题描述 收集App Service 关于Availability Zone, Health check 以及 Traffic Manager的文档,并了解高可用(HA)和灾备(DR)的具体办法 问题 ...

  10. Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库

    在之前的<手把手教你用 NebulaGraph AI 全家桶跑图算法>中,除了介绍了 ngai 这个小工具之外,还提到了一件事有了 Jupyter Notebook 插件: https:/ ...