zynq学习06 zynq的PL中加入的AXI_GPIO IP核来控制GPIO操作
http://m.blog.csdn.net/article/details?id=19934837
http://www.cnblogs.com/rocbomb/archive/2014/07/29/3876683.html
前面我做了几个实验 都没有用过 开关,这一次用一用
发现 vivado 真的挺方便 所以 使用 vivado 开发
1.建工程
我使用 vivado 2013.4
创建新工程 –》 next –》next
勾选 Do not specify sources at this time //这样跳过后面两个添加文件页面
选择 board –》 zedboard –》next –》finsh
就创建完了。
2.PL端 IP核添加与连线
创建一个空的 Diagram
Create Block Design -》点 ok
接下来 添加 IP核 可以点击 提示 Add IP 也可以点击
搜索 zynq 点 第一个
然后 点击 Run Block Automation 自动配置
点击 添加 GPIO
接下来 会提示 Run Connection Automation 自动连线
选择 S_AXI 变成下图
系统自动添加了 一些IP核
继续点击 Run Connection Automation -》 GPIO
选择 led_8bits -》 OK
同样的方法 添加 GPIO IP核 -》 Run Connection Automation 两次 选择 sws_8bits
就完成了
点击 红圈处 验证 一下。
3.生成 bit 的过程
点击 Source -》 design_1 右键 –》 Create HDL Wrapper -》 OK
然后 Synthesis 、 Implementation 、Bitstream 依次过一遍
这个过程费时间。。 Synthesis 以后 一直点ok 最后 点击 Generate Bitstream
4.输出到SDK
选上 launch SDk 点 OK 就启动SDK 了
我的 SDK 是
点击 FILE –》 new –> Application project
选一个 helloworld
复制以下代码
1 #include <stdio.h> 2 #include "platform.h" 3 #include "xparameters.h" 4 #include "xgpio.h" 5 #include "sleep.h" 6 #include "platform.h" 7 #include "xil_types.h" 8 #include "xgpiops.h" 9 10 11 /************************** Constant Definitions *****************************/ 12 13 /* 14 * The following constant maps to the name of the hardware instances that 15 * were created in the EDK XPS system. 16 */ 17 #define XPAR_LEDS_ID XPAR_AXI_GPIO_0_BASEADDR //AXI_GPIO_0 是添加的第一个 gpio 所以是 leds 18 #define XPAR_SWS_ID XPAR_AXI_GPIO_1_BASEADDR //那么 这个自然是 开关了 19 20 int main() 21 { 22 static XGpio LED_Ptr;//定义GPIO指针 23 static XGpio SWS_Ptr; 24 int XStatus; 25 int num = 0; 26 //初始化 LED 27 XStatus = XGpio_Initialize(&LED_Ptr,XPAR_AXI_GPIO_0_DEVICE_ID); 28 if(XST_SUCCESS != XStatus) 29 print("GPIO INIT FAILED\n\r"); 30 XGpio_SetDataDirection(&LED_Ptr, 1,0x00);//通道1;设置方向 0 输出 1输入, 0x00表示8位都是输出 31 XGpio_DiscreteWrite(&LED_Ptr, 1,0x00); 32 33 //初始化 开关 34 XStatus = XGpio_Initialize(&SWS_Ptr,XPAR_AXI_GPIO_1_DEVICE_ID); 35 if(XST_SUCCESS != XStatus) 36 print("GPIO INIT FAILED\n\r"); 37 XGpio_SetDataDirection(&SWS_Ptr, 1,0xFF);//通道1;设置方向 0 输出 1输入 0xFF表示8位都是输入 38 39 40 41 while(1){ 42 num = XGpio_DiscreteRead(&SWS_Ptr, 1); //从开关处 读数据 43 printf("Numb %d\n\r", num); 44 XGpio_DiscreteWrite(&LED_Ptr, 1,num); //直接写入 led 45 usleep(1000); //delay 1ms 46 } 47 48 printf("end\n\r \n\r"); 49 return 0; 50 }
确保 zedboard 已经连到电脑上 并打开电源
先 xilinx Tools –> ProgramFPGA
然后 -> Run As –> Launch on Hardware (GDB)
可以看到 结果 64 + 1
第 7 个 和 第 1 个 开关 是开的
表示 所以 led 也亮了
zynq学习06 zynq的PL中加入的AXI_GPIO IP核来控制GPIO操作相关推荐
- FPGA设计中,Vivado 调用IP核详细操作步骤
FPGA设计中,Vivado 调用IP核详细操作步骤 今天给大侠带来了FPGA设计中,Vivado 调用IP核详细操作步骤,话不多说,手把手教学,请往下看. 首先咱们来了解一下vivado的IP核,I ...
- FPGA中ISE软件调用IP核导入(.coe)文件并绘制正弦函数
作为一个FPGA小白,本人在学习FPGA软件的过程中看到了这个例子,网上也有相关的教程,奈何实在写的不清楚,我自己花了挺久才弄懂,为了在以后学习中少走弯路,把自己学习到的做个教程吧,供同样是小白的同学 ...
- zynq学习03 zynq中三种实现GPIO的方式
http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...
- 【FPGA学习】Quartus II中NCO与FFT ip核的仿真
FPGA有许多IP核使用起来很方便,本篇博客记录一下NCO以及FFT的IP核使用和学习,实验平台是Altera公司的EP4CE40F23C8N 参考资料: Altera--NCO IP核详解 ALTE ...
- FPGA中如何使用加法器IP核设计累加器
使用加法器IP核设计累加器 前言 一.顺序累加器设计 二.滑动累加器设计 总结 前言 在之前的一个项目中,我的工程一部分运算中主频达到了400MHz时钟.当时的运算需要用到cnt累加器,但是在最后的综 ...
- vivado中复数乘法器的ip核调用及其仿真的详细介绍
复数乘法器的ip核可在下图的中找到 ip核的输入配置和输出配置如下图所示 当我们在选择multplier construction的Use LUTs选项时,选择的是三次乘法的算法,相比于四次 ...
- zynq学习04 zynq中PS通过MIO控制LED
http://m.blog.csdn.net/article/details?id=40954363 这几天在学习zynq,zynq芯片集成了两片arm a9的内核,和xilinx的fpga可编程部分 ...
- zynq学习01 zynq 单独使用PL模块点亮led
对于xilinx的ZC706开发板单独使用PL做流水等试验的网上例程几乎是空白,大多数是PS+PL实验.如果是刚开始接触ZC706板,想写一个单独的PL程序时,你肯定以为很快就可以上手.但是如果你开始 ...
- zynq学习05 Zynq 7000 emio的gpio操作
http://m.blog.csdn.net/article/details?id=44566855 本文讲述怎样使用emio功能的gpio,涉及到fpga部分,软件涉及到一级引导程序fsbl的创建及 ...
最新文章
- 使用node.js进行API自动化回归测试
- 逢低买入?比特币、莱特币和比特币现金反弹行情一触即发?
- 解决使用Navicat等工具进行连接登录mysql的1130错误,无法使用Ip远程连接的问题(mysql为8.0版本)
- 2021MIT博士pluskid年终总结
- 阿里云边缘云全新架构升级,助力CDN操控新体验
- Anbox 和 LXC 代码规模
- 基础练习 数列特征 c语言
- 电脑不能开机维修_MacBook维修 苹果笔记本电脑进水不开机
- Meidapipe 3D手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉
- 后端工程师的「跨域」之旅
- 微信开发 调用摄像机拍照(录像)功能
- 案例:需求问题的解决方案
- python数据导出excel_python实现数据导出到excel的示例
- PVD桌面怎样重新调整personal vDisks大小
- NET Core-学习笔记(二)
- Norton Ghost V12
- 【裴礼文数学分析】例1.1.5
- 第四十一章 SQL命令 DROP VIEW
- Spark问题3之SparkException:Error notifying standalone scheduler's driver endpoint
- 如何在html中播放本地视频文件【兼容ie、火狐、谷歌、360浏览器等】
热门文章
- python中的open函数实例_Python中open函数注意点
- php进攻教程,如何对PHP程序中的常见漏洞进行攻击(下)_php基
- 29岁双非计算机硕士毕业好就业吗,双非硕士与985本科生对比,两者“含金量”谁高?HR回答太现实...
- @override代表什么意思_混凝土中C20、HZS180都代表什么意思?
- gradle 查看依赖类库版本_使用Gradle命令查看项目中库的依赖关系
- ios微信登录不上服务器,iOS微信授权登录
- php get 传循环出来的参数_PHP性能优化小技巧
- vba 根据分辨率 缩放显示比例_【显示百闻录】第一讲:关于屏幕尺寸、比例以及分辨率...
- 动态标题_动态打印区域和打印标题
- 通信系统之信道(一)