【Z-turn Board试用体验】+r软硬协同设计 - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【Z-turn Board试用体验】+r软硬协同设计

blackroot ( 楼主 ) 2015-6-9 17:01:05  显示全部楼层

本次通过点亮三色LED简要说明软硬协同设计的原理:

首先按照以前的章节在Vivado中建立工程进行硬件设计,方法如下:

1. 点击vivado2014.3 快捷键,新建工程,选择xz7c010clg400-1芯片,创建工程。

2.工程新建完毕后,新建block 设计。

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

4. 双击 zynq7 processing system ,进行PS部分的相关配置, 去掉SD0,I2C0.u***0 等设备。如下图

5I}(52HR[$C8X)XI3W`A{1W.jpg

双击AXI_GPIO,在显示的界面中勾选all outputs,同时将数据宽度设置成3.点击ok。如下图

[@VIFTV`%Y5VFICOOAPZP3M.png



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

RYU1KK_ZWH`~O)5Z7[XJVZC.jpg



现在开始就要产生block design,tools->validation design, 接着Create HDL wrapper。

完成后,添加约束文件。

IUU_P}@VVKQE}2V1DC}QR1H.jpg



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

set_property PACKAGE_PIN R14 [get_ports {gpio_rtl_tri_o[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {gpio_rtl_tri_o[0]}]
set_property PACKAGE_PIN Y16 [get_ports {gpio_rtl_tri_o[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {gpio_rtl_tri_o[1]}]
set_property PACKAGE_PIN Y17 [get_ports {gpio_rtl_tri_o[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {gpio_rtl_tri_o[2]}]
点击 flow 下面的RUN synthesis,完成后,点击RUN Implementation。这个过程需要花费一段时间。完成后,就可以generate bitstream。
然后 export hardware(选中include bitstream)。 到这里硬件设计结束。

export hardware 后,选择launch sdk。开始软件设计。打开sdk后,新建应用工程,选择hello world模板,在此基础上进行修改,如下图

2IPM[XC29Q37`V`7QK9VXJ1.png



工程主要代码如下:

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




#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 = 6;
        volatile int Delay;
        init_platform();
        for(i=0;i<4;i++)
          printf("启动点亮三色灯程序!");
        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<3;i++){
            XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, dat);
            for (Delay = 0; Delay < LED_DELAY; Delay++);
            dat = dat <<1;
            }
            dat = 6;
        }
        return XST_SUCCESS;
}
//XST_SUCCESS的值就是0,XST_FAILURE的值是1,在xstaus.h中可以找到相关的定义
接下来就是编译程序,build projects->run as ->launch on hardware(GDB),下载成功就能看到三个颜色的灯,呈流水形式的闪烁。








5I}(52HR[$C8X)XI3W`A{1W.jpg

0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-3-29 21:29 , Processed in 0.439962 second(s), Total 38, Slave 28 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表