您的位置:首页 > 其它

实验 使用 vivado zedboard GPIO 开关 开控制 LED

2014-07-29 22:48 375 查看
前面我做了几个实验 都没有用过 开关,这一次用一用

发现 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

复制以下代码

#include <stdio.h>
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "sleep.h"
#include "platform.h"
#include "xil_types.h"
#include "xgpiops.h"

/************************** Constant Definitions *****************************/

/*
* The following constant maps to the name of the hardware instances that
* were created in the EDK XPS system.
*/
#define XPAR_LEDS_ID XPAR_AXI_GPIO_0_BASEADDR  //AXI_GPIO_0 是添加的第一个 gpio 所以是 leds
#define XPAR_SWS_ID XPAR_AXI_GPIO_1_BASEADDR   //那么 这个自然是 开关了

int main()
{
static XGpio LED_Ptr;//定义GPIO指针
static XGpio SWS_Ptr;
int XStatus;
int num = 0;
//初始化 LED
XStatus = XGpio_Initialize(&LED_Ptr,XPAR_AXI_GPIO_0_DEVICE_ID);
if(XST_SUCCESS != XStatus)
print("GPIO INIT FAILED\n\r");
XGpio_SetDataDirection(&LED_Ptr, 1,0x00);//通道1;设置方向 0 输出 1输入, 0x00表示8位都是输出
XGpio_DiscreteWrite(&LED_Ptr, 1,0x00);

//初始化 开关
XStatus = XGpio_Initialize(&SWS_Ptr,XPAR_AXI_GPIO_1_DEVICE_ID);
if(XST_SUCCESS != XStatus)
print("GPIO INIT FAILED\n\r");
XGpio_SetDataDirection(&SWS_Ptr, 1,0xFF);//通道1;设置方向 0 输出 1输入 0xFF表示8位都是输入

while(1){
num = XGpio_DiscreteRead(&SWS_Ptr, 1);  //从开关处 读数据
printf("Numb %d\n\r", num);
XGpio_DiscreteWrite(&LED_Ptr, 1,num);   //直接写入 led
usleep(1000);      //delay 1ms
}

printf("end\n\r \n\r");
return 0;
}


确保 zedboard 已经连到电脑上 并打开电源

先 xilinx Tools –> ProgramFPGA





然后

-> Run As –> Launch on Hardware (GDB)





可以看到 结果 64 + 1











第 7 个 和 第 1 个 开关 是开的

表示 所以 led 也亮了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: