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!.\r\n");
       else
           printf("FAILED.\r\n");
    }
    return XST_SUCCESS;
}

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Xilinx软硬件协同设计是指在FPGA(现场可编程门阵列)开发中,通过软硬件的紧密协作,实现更高效、更灵活的系统设计与优化。 软硬件协同设计可以分为两个层面的协作:一是在开发过程中,软件和硬件开发者之间的协同;二是在设计实现中,FPGA芯片硬件与软件的协同工作。 在开发过程中,软硬件协同设计需要软件工程师和硬件工程师之间密切合作。软件工程师负责编写嵌入式软件程序,如驱动程序和应用程序,与硬件进行交互。硬件工程师则设计FPGA的硬件电路,通过软件开发工具进行配置和编程。通过紧密的协作,软硬件开发者可以更好地理解彼此的需求和限制,提高开发效率和开发质量。 在设计实现中,软硬件协同设计可以最大限度地发挥FPGA的灵活性和可编程性能力。软件可通过调整FPGA上的硬件配置进行优化,实现对实时性能、功耗和资源利用率的优化。同时,硬件可以通过FPGA上的控制逻辑与软件紧密协作,实现更高的处理性能和更复杂的功能。 CSDN(全球最大的中文IT社区)提供了大量关于Xilinx软硬件协同设计的教程、案例和资源,帮助开发者更好地掌握软硬件协同设计的技术。通过CSDN,开发者可以了解最新的软硬件协同设计理论和实践,获取解决问题的方法和经验分享,以提高软硬件协同设计的能力和水平。 总的来说,Xilinx软硬件协同设计在FPGA开发中具有重要意义。它能够加强软硬件开发者之间的协作,提高开发效率和质量,同时利用FPGA的灵活性和可编程能力实现系统的优化和功能复杂化。通过CSDN上的资源,开发者可以深入学习和应用软硬件协同设计技术,推动FPGA领域的创新和发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值