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

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

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

 Block Design部分

ZYNQ:AXI-Stream FIFO驱动程序(PS部分)_第1张图片

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

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

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

PS程序部分

给出原程序与注释如下:

#include 
#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例子的一部分,并做了简化。
ZYNQ:AXI-Stream FIFO驱动程序(PS部分)_第2张图片

 ZYNQ:AXI-Stream FIFO驱动程序(PS部分)_第3张图片

你可能感兴趣的:(ZYNQ,fpga开发)