我是靠谱客的博主 合适篮球,最近开发中收集的这篇文章主要介绍Zedboard:软硬件协同实现流水灯,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PS端控制PL端(GPIO IP核)

Vivado端:不需要锁管脚。Board栏的所有外设,Xilinx自家的板子都有的,从这一栏选的外设引脚约束已经自动添加好了。

1.Create block design
2.添加Zynq IP核,Zynq的配置可参考该文章
3. 添加自带的GPIO IP核。配置如下:第一组width设置为8(对应8个灯)

pipeline

4.点击自动连线,GPIO设置为led_8bit模式
5.点击自动连接外设

最终Vivado中的bd图如下所示:

pipeline

验证,生成bit流,导出为硬件平台即可。

SDK端:GPIO IP的封装函数在bsp中的libsrc/文件夹下。

直接将主函数代码替换为如下代码即可。

/*
 * ledflow
 */

#include"xparameters.h"
#include"xgpio.h"
#include"xil_printf.h"
#include"xil_cache.h"

#define GPIO_BITWIDTH 8        // 8个灯
#define GPIO_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID   // 灯设备
#define LED_DELAY 100000000    // 延迟时间
#define LED_CHANNEL 1          // GPIO第一组,只有这一组灯
#define printf xil_printf

XGpio Gpio;
XGpio GpioOutput;

int GpioMarquee(u16 DeviceId,u32 GpioWidth)
{
    volatile int Delay;
    u32 LedBit;
    u32 LedLoop;
    int Status;

    // GPIO Init.
    Status=XGpio_Initialize(&GpioOutput,DeviceId);
    if(Status!=XST_SUCCESS)
    {
       return XST_FAILURE;
    }

    // 配置GPIO:LED_CHANNEL-第一组还是第二组   0x0:输入 or输出
    XGpio_SetDataDirection(&GpioOutput,LED_CHANNEL,0x0);

    // 0x0,写入寄存器的值
    XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,0x0);
    for(LedBit=0x0;LedBit<GpioWidth;LedBit++)
    {
    	XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,1<<LedBit);  // 写入
    	for(Delay=0;Delay<LED_DELAY;Delay++);                    // 等待
        XGpio_DiscreteClear(&GpioOutput,LED_CHANNEL,1<<LedBit);  // 清除该位为0
        for(Delay=0;Delay<LED_DELAY;Delay++);                    // 等待
    }
    return XST_SUCCESS;
};
int main(void)
{
    while(1)
    {
       u32 status;
       // 8个灯依次亮
       status=GpioMarquee(GPIO_DEVICE_ID,GPIO_BITWIDTH);
       if(status==0)
           printf("SUCCESS!.rn");
       else
           printf("FAILED.rn");
    }
    return XST_SUCCESS;
}

下载bitstream,运行后即可观察到流水灯情况。

最后

以上就是合适篮球为你收集整理的Zedboard:软硬件协同实现流水灯的全部内容,希望文章能够帮你解决Zedboard:软硬件协同实现流水灯所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部