飞泉

Vivado高效设计案例分享------用vivado2014.2 进行软硬件协同设计之流水灯

0
阅读(12536)

硬件平台:zybo

软件平台:vivado2014.2

    先使用vivado 2014.2 进行硬件设计, 使用IP核设计硬件。方法如下:

1. 点击vivado2014.2 快捷键,新建工程,选择xz7c010clg400-1芯片。参考上篇博客,里面有新建工程的例子。

2.工程新建完毕后, 与上篇博客相同,新建block 设计。

3.add ip。 这里需要添加两个IP。1:zynq7 processing system,2:axi_gpio。添加完两个IP核后,选择run block 。

4. 双击 zynq7 processing system ,添加zybo_zynq_def.xml配置文件, 去掉SD0,I2C0.usb0 等设备。如下图

5.设置完成后,点击ok。 双击AXI_GPIO,勾选 all outputs。 GPIO Width 选择4.如下图

6.点击ok,完成后。点击run connection automation。分别点击/axi_gpio_0/s_axi.和/axi_gpio_0/gpio.完成自连接。生成连接图如下

7.现在开始就要产生block design ,这个时间需要几分钟。 接着Create HDL wrapper。

8. 完成后,添加约束文件。

9.点击next。创建约束文件 ,代码如下

set_property PACKAGE_PIN D18 [get_ports {gpio_rtl_tri_o[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {gpio_rtl_tri_o[0]}]
set_property PACKAGE_PIN G14 [get_ports {gpio_rtl_tri_o[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {gpio_rtl_tri_o[1]}]
set_property PACKAGE_PIN M15 [get_ports {gpio_rtl_tri_o[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {gpio_rtl_tri_o[2]}]
set_property PACKAGE_PIN M14 [get_ports {gpio_rtl_tri_o[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {gpio_rtl_tri_o[3]}]


10.点击 flow 下面的RUN synthesis,完成后,点击RUN Implementation。这个过程需要花费一段时间。

11.完成后,就可以generate bitstream。软化 export hardware。 到这里硬件设计结束。


12 export hardware 后,选择launch sdk。开始软件设计。打开sdk后,如下图

13.新建应用工程,如下图

14.点击next,新建 helloworld 工程。点击finish。完成新建工程。

15.用如下的代码替换掉hello world 工程里面的代码

#include 
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"



#define GPIO_EXAMPLE_DEVICE_ID  XPAR_AXI_GPIO_0_DEVICE_ID// XPAR_LEDS_POSITIONS_DEVICE_ID

#define LED_DELAY     10000000

#define LED_CHANNEL 1


XGpio Gpio;



int main()
{


    	int Status,i;
		int dat = 0x01;
    	volatile int Delay;
        init_platform();
    	Status = XGpio_Initialize(&Gpio, GPIO_EXAMPLE_DEVICE_ID);
    	if (Status != XST_SUCCESS) {
    		return XST_FAILURE;
    	}


    	XGpio_SetDataDirection(&Gpio, LED_CHANNEL,dat);

    	while (1) {
    		for(i=0;i<4;i++){
    		XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, dat);
    		for (Delay = 0; Delay < LED_DELAY; Delay++);
			dat = dat <<1;
			}
    		dat = 0x01;
    	}

    	return XST_SUCCESS;

}


16.点击CTRL+S,然后RUN debug(注意:在这里需要连接zybo板卡与pc机。并打开zybo的电源。)。这样就能看到流水灯在跑了。