ZYNQ:AXI-Stream FIFO驱动程序(PS部分)

        最近在用实验室的zedboard学习zynq,在网上找到了一个叫Harald's Embedded Electronics 的网站,里面有关于zedboard的一些教学。

        在做完第六个实验时,打算把PS部分的程序学习和注释并记录下来,于是有了这个帖子。

 Block Design部分

        中间的AXI-Stream FIFO是我们今天主要控制的对象。

        最右边的myHeartbeat是这个系列教程的自建IP核,本质上是一个分频器,可以把高频转化为低频,这个地方用来使LED0闪烁。

        最右边的mySPI_Tx_AXIS是这个系列教程的自建IP核,功能为SPI接收。

PS程序部分

给出原程序与注释如下:

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"

#include "xil_types.h"
#include "xstatus.h"
#include "xllfifo.h"
#include "xparameters.h"

#define WORD_SIZE 4         // Size of words in bytes
#define MAX_PACKET_LEN 4
#define NO_OF_PACKETS 64
#define MAX_DATA_BUFFER_SIZE NO_OF_PACKETS*MAX_PACKET_LEN

int main()
{
    init_platform();

    print("Hello World\n\r");

    XLlFifo fifo;    //创建一个Axi Streaming FIFO实例

    /*对实例进行初始化*/
    int xStatus = XLlFifo_CfgInitialize(&fifo,
            XLlFfio_LookupConfig(XPAR_AXI_FIFO_MM_S_0_DEVICE_ID),
                (UINTPTR)XPAR_AXI_FIFO_MM_S_0_BASEADDR);

    if(XST_SUCCESS != xStatus) {
        print("Failed to initialize FIFO\n\r");
    }
    print("FIFO initialized\n\r");

    // Check for the Reset value
    int Status = XLlFifo_Status(&fifo);//读取fifo中断状态
    XLlFifo_IntClear(&fifo,0xffffffff);//清除fifoz所有中断
    Status = XLlFifo_Status(&fifo);    //读取fifo中断状态
    if(Status != 0x0) {
        print("Reset value wrong\n\r");
    }

    for(;;)
    {
        print("Press Return\n\r");
        getchar();

        print("Sending\n\r");
        XLlFifo_TxPutWord(&fifo, 0xAAAAAAAA);//将32位数据0xAAAAAAAA送入指定的fifo
        XLlFifo_TxPutWord(&fifo, 0x55555555);//将32位数据0x55555555送入指定的fifo
        XLlFifo_iTxSetLen(&fifo, 2 * WORD_SIZE);//指定传输的字节数,这里是8个字节,共64bit
    }

    print("Good bye\n\r");

    cleanup_platform();
    return 0;
}

        程序的功能:向fifo发送64位数据0xAAAAAAAA,0x55555555

        我们可以点击system.mss文件Peripheral Drivers部分里相对应的Documentation与Import Examples来学习相关的函数调用方法。原博客的代码就是Import Examples例子的一部分,并做了简化。

 

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值