實驗 使用 vivado zedboard GPIO 開關 開控制 LED


前面我做了幾個實驗 都沒有用過 開關,這一次用一用

發現 vivado 真的挺方便 所以 使用 vivado 開發

1.建工程

我使用 vivado 2013.4

image

創建新工程 –》 next –》next

image

勾選 Do not specify sources at this time   //這樣跳過后面兩個添加文件頁面

image

選擇 board –》 zedboard –》next –》finsh

就創建完了。

 

2.PL端 IP核添加與連線

image

創建一個空的 Diagram

Create Block Design -》點 ok

image

接下來 添加 IP核  可以點擊 提示 Add IP  也可以點擊 image

image

搜索 zynq 點 第一個

image

然后 點擊 Run Block Automation  自動配置

imageimage

點擊 image 添加 GPIO

image

接下來 會提示 Run Connection Automation 自動連線

選擇 S_AXI    變成下圖  

image

系統自動添加了 一些IP核

繼續點擊 Run Connection Automation  -》 GPIO

image

選擇 led_8bits  -》 OK

image

同樣的方法 添加  GPIO IP核  -》 Run Connection Automation 兩次  選擇 sws_8bits

就完成了

image

image  

點擊  紅圈處 驗證 一下。

 

3.生成 bit 的過程

image

點擊 Source  -》 design_1  右鍵 –》 Create HDL Wrapper  -》 OK

然后  Synthesis 、 Implementation 、Bitstream 依次過一遍

image

這個過程費時間。。  Synthesis 以后 一直點ok    最后 點擊 Generate Bitstream

4.輸出到SDK

 

image

image

選上 launch SDk 點 OK  就啟動SDK 了

我的 SDK 是

點擊 FILE –》 new –>  Application project

image

選一個 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

image

然后 image  -> Run As –> Launch on Hardware (GDB)

image

可以看到 結果  64 + 1

image

IMG_20140729_223929

第 7 個 和 第 1 個  開關 是開的

表示 所以 led 也亮了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM