vivado + zedboard 初体验
参考文章:https://www.cnblogs.com/rocbomb/archive/2014/07/29/3876683.html
vivado:2017.1 (下载地址:https://www.0daydown.com/04/731603.html)
zedboard:AES-Z7EV-7Z020-G
Zynq-7000 SoC XC7Z020-CLG484-1
512 MB DDR3
256 Mb Quad-SPI Flash
4 GB SD 卡
板上 USB-JTAG 编程
10/100/1000 Ethernet
USB OTG 2.0 和 USB-UART
PS & PL I/O 扩展 (FMC, Pmod™, XADC)
多显示 (1080p HDMI, 8-bit VGA, 128 x 32 OLED)
I2S Audio CODEC
1、安装vivado
默认安装一直到最后,如果出现C++ 2015安装失败的选项的话,下载一个DirectX Repair修复一下再重新装(下载地址:https://dl.pconline.com.cn/download/360074-1.html)
2、尝试一下板子
要注意编程口在电源线旁边。
这是结构框图。PS+PL+一堆外设
3、硬件
1)新建工程
新建工程
工程名和目录
先不制定RTL
选择板子,有C和D,没搞清,我就用默认的试试了
然后继续,生成工程
2、用IP搭积木
新建个block
开始放IP了
给IP连个线
重复此过程添加GPIO,连线的时候左边选S_AXI。
给GPIO关联到LED上,用作指示灯
重复上两步再添加一个GPIO选S_AXI,并关联到sws_8bits上,用作开关
点击验证,大概率都没问题
右键design,添加个外套
然后开始跑流程,Synthesis, Implementation, Generate Bitstream
速度挺慢的,一个结束会弹出对话框继续另一个。
导出硬件
启动软件
4、软件
软件启动了
新建软件工程
打开helloworld.c对动点手脚
#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"
#define XPAR_LEDS_ID XPAR_AXI_GPIO_0_BASEADDR //添加 led
#define XPAR_SWS_ID XPAR_AXI_GPIO_1_BASEADDR //添加 开关
int main()
{
static XGpio LED_Ptr;//定义LED的指针
static XGpio SWS_Ptr;//定义开关的指针
int state = 0;
//初始化 LED
XGpio_Initialize(&LED_Ptr,XPAR_AXI_GPIO_0_DEVICE_ID);
XGpio_SetDataDirection(&LED_Ptr, 1,0x00);//通道1;设置方向 0 输出 1输入, 0x00表示8位都是输出
XGpio_DiscreteWrite(&LED_Ptr, 1,0x00);//开始全关
//初始化 开关
XGpio_Initialize(&SWS_Ptr,XPAR_AXI_GPIO_1_DEVICE_ID);
XGpio_SetDataDirection(&SWS_Ptr, 1,0xFF);//通道1;设置方向 0 输出 1输入 0xFF表示8位都是输入
while(1){
state = XGpio_DiscreteRead(&SWS_Ptr, 1); //从开关处 读数据
printf("Numb %d\n\r", state);
XGpio_DiscreteWrite(&LED_Ptr, 1,state); //数据写入 led
usleep(1000); //延时 1ms
}
return 0;
}
选好硬件和bitstream,然后编程
下载软件运行
叮咚,亮了