实验:添加AXI IP到设计
(从writer发布到cnblog,有时候之前发过的,更新会没有效果,方法是在网页上点编辑,进入网页版的编辑界面可以看到新版本,然后在网页上再发布一次。)
需要实现的系统是这样的:
1.PL一侧的ASI GPIO只有一位的宽度,用于连接到BTNU按键(在我的zc702上,我选择连接到SW13)。
说明:PS和PL里面都有GPIO的模块,添加和配置的方法以及在程序里调用的方法,都是不太相同的。
2.PS部分的GPIO有1位的接口,通过EMIO连接到PL的引脚。并且先接到板上的BTNR按键(zc702上的SW5按键)
说明:上一个开关是在PL部分的管脚进入到PL部分的AXI GPIO模块,在通过PL部分的AXI互联模块,和PS部分的GP AXI主端口进入到PS单元中,再通过中央互联,在控制PS部分的GPIO。
这个开关是从PL部分的管脚直接连接到PS部分的EMIO接口,然后直接控制了PS部分的GPIO接口
3.PS上的另一位GPIO连接到一个LED灯。
4.将一个AXI PL定时器中断,连接到PS的中断控制器。当用户按下前面所述任何一个按钮后,启动定时器。定时器的输出控制LED灯?
说明:注意如何配置的PS接收中断的输出?和中断被触发了后,程序如何控制的LED灯?中断是沿触发的,还是电平触发的?
这张图很有助于理解:
操作过程:
下面具体从头开始做一次,争取把定时器,所有的都搞清楚。教材上的软件版本是旧的,还没到vivado。所以很多操作的地方要自己摸索一下。
1.添加EMIO,作为一个开关的输入。
看似一个简单的操作,但由于书上不是vivado的软件,所以我摸索了好一会。首先在diagram中添加了zynq7的IP之后双击它,打开配置对话框,然后选择MIO configuration一栏。
在右边拖到最下面,可以看到GPIO下面有一项EMIO。在这里打勾并且选择用的位宽,OK。但要注意之前需要对这个模块进行一下auto,不然会发现虽然添加了EMIO,但是在原理图上并没有表现出来,这其中的原因是什么我还不知道。
之后ZYNQ7的外观会变成:
可以看到GPIO_0对应的是刚才添加的EMIO,但并没有体现出EMIO的字眼,但如果试验将之前EMIO的位宽选择不同的时候,这个GPIO_0的对应宽度也发生变化,所以毫无疑问EMIO对应的是这个口。然后将这个口展开,看到_I、_O、_T,是不是指这个口可以是输入输出或者三态,我在一次实验中要用这个口作为输入,因此将_I的那个管脚make external,然后在之后程序开发部分确实发现写程序时不用对这个口进行方向的设置,默认就是输入。如果不将GPIO_0展开的话,直接右键单击它make external,会在GPIO的根目录连出去一个端口,是不是也意味着程序开发阶段就需要配置一下这个口的方向?(注意下面这两张图的区别)
2.试图通过AXI GPIO来添加一个输出口和一个输入口。
添加AXI GPIO的IP,然后run connection automation---S_AXI。
会自动添加AXI interconnect和Reset的模块,这都正常的。
但现在涉及到一个问题,我需要AXI GPIO有一位的输入和一位的输出,我可以选择enable两个GPIO channel,每个Channel只用一位,一个channel选择all input,一个选择all output,但是这样浪费了不同的位,同时以后是不是也在系统设计上欠缺了灵活性,我现在把它设成了这样:
,将输入和输出分别引出,用了一个channel的两位。
但我无法将位0设为输入、位1设为输出,我只能将_I和_O分别两位引出,这在我之后的程序设计中会遇到麻烦吗?we will see。
3.添加timer。
在添加IP中添加了AXI timer,然后自动一下,自动完之后只是连接了IP左半边的管脚,右半边并没有动:
所以这很蛋疼,我目前并不了解这个IP,我也觉得花半天去读它的doc没有什么价值,所以我先把它的interrupt管脚连接到PS的一个中断输入,走一步看一步。
先这样配置PS的中断输入:
然后将AXI timer的interrupt输出连接到IRQ_F2P管脚:
然后validation successful,至少说明连接得比较靠谱。
接下来:
连接PIN
看懂书上贴的程序
去尝试读懂那些初始化,看工具包的文档,这个是避不过去的,不如这里吃点苦,加速之后的进程。至少看懂这些底层操作的一半把,恶补并整理一些C语言的语法。
转载于:https://www.cnblogs.com/uvw654/p/3694919.html
实验:添加AXI IP到设计相关推荐
- HDU操作系统 实验1.2·1.3——设计和添加Linux系统调用
实验介绍 上篇文章已经介绍了Linux内核的编译与安装,我们已经掌握了Linux系统内核的编译和启用.接下来,我们将学习掌握如何添加Linux的系统调用,学习掌握测试Linux系统调用. 什么是系统调 ...
- ZYNQ学习之路3. 定制AXI IP核
ZYNQ最大的优点就是硬核A9处理器与FPGA的结合,处理器可以扩展出任何使用者想要的外设(数字逻辑外设),FPGA与处理器通过AXI高速总线进行连接,提供了处理器到FPGA的高速带宽(ZYNQ700 ...
- 计算机网络实验-->> IP 协议分析
一.实验目的 掌握IP数据包格式以及关键字段的含义: 掌握路由器转发IP数据包的流程: 理解验证IP分片原理. 二.实验内容 根据下述网络拓扑结构图,实现IP协议分析. 三.实验步骤 1.添加并连接网 ...
- STI、LOD与WPE概念2:减少或避免WPE/STI效应对IP模块设计的影响
根据网络资料整理 文章目录 电路设计中减小STI.WPE的影响 版图设计中如何减小STI.WPE的影响 总结 随着深亚微米工艺的发展,CMOS制造工艺对设计的影响也越来越大.在0.18um以前都可以忽 ...
- c#窗体应用计算机设计,C#实验报告:Windows窗体设计.doc
郑 州 轻 工 业 大 学 实 验 报 告 课程名称: C#程序设计 实验名称: Windows窗体设计 院 (系): 计算机与通信工程学院 姓 名: 学 号: 专业班级: 计算机 指导教师: 201 ...
- 使用matlab设计电机控制器,matlab实验五直流电机拖动系统控制器设计.doc
matlab实验五直流电机拖动系统控制器设计.doc 实验五直流电机拖动系统控制器设计1实验目的学会CONTROLSYSTEMTOOLBOXSISO设计工具的使用2实验方法按照HELP下CONTROL ...
- 实验二 数据选择器的设计与vivado集成开发环境【Verilog】
实验二 数据选择器的设计与vivado集成开发环境[Verilog] 前言 实验二 数据选择器的设计与vivado集成开发环境 一.实验目的 二.实验环境 三.实验任务 四.实验原理 五.实验步骤 六 ...
- 计算机组成原理课程实验报告,计算机组成原理课程设计实验报告
<计算机组成原理课程设计实验报告>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计实验报告(18页珍藏版)>请在人人文库网上搜索. 1.计算机组成原理课程设计实验报告( ...
- 计算机网络数据分析报告,贵州大学计算机网络实验报告-实验四-分析IP协议数据包格式...
贵州大学计算机网络实验报告-实验四-分析IP协议数据包格式 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 贵州大学GUIZHOU UN ...
最新文章
- java修改 nsf中的数据_最新NSF申请指南中的一些重要改动
- 干货 | YOLOV5 训练自动驾驶数据集,并转Tensorrt,收藏!
- linux可以远程装机吗,linux 远程装机
- 教你在Tableau中绘制蝌蚪图等带有空心圆的图表(多链接)
- Android之组件化开发
- [备忘]几种即见即所得Web编辑器优缺点比较
- python3 url编码 空格 + 简介
- RSA选用小公钥指数(e=3)真的不安全吗?
- nginx的限流配置
- pytorch torch.nn.L1Loss
- 学习前端开发必读书籍,拥有这几本武功秘籍,让你如有神助
- plantuml 方法图_plantuml画流程图
- Kubernetes 学习2 k8s基础概念
- qcc512x_qcc302x开发调试笔记
- java jni so_java 用jni调用so全过程
- javafx canvas_教程:JavaFX的Canvas API概览
- OpenWrt搭建KMS服务(Vlmcsd)
- 【转载】国医大师熊继柏:用中医思维彻底把新冠病毒中医治疗方案说清楚!值得中医人收藏
- 统计数组中英文大写字母,小写字母,数字,空格的个数。
- 解决Linux上rar压缩包文件无法解压缩的问题
热门文章
- 局域网不能远程控制_如何通过Windows自带的局域网远程控制连接两台设备
- python 路径拼接字符串_字符串游戏之拼接字符串
- matlab的区域操作,matlab的操作()
- python︱微服务Sanic制作一个简易本地restful API
- HashMap的小知识点
- 机房(厂房)温度环境监控系统
- MicroPython-GPRS教程之TPYBoardv702GPRS功能测试
- 《Arduino开发实战指南:机器人卷》一2.2 模拟I/O口的操作函数
- 解剖 RxJava 之过滤操作符
- goaccess配置nginx日志解析