cuter

[ZedBoard测评] 创建基于AXI Lite总线的vga测试IP核(三)(软件部分)

0
阅读(10202)

2、软件设计

从PlanAhead导出硬件信息后,首先看一下SDK自动生成的system.xml文件,看看vga IP核有木有加进来,地址是多少~

image

看到上图的结果,就知道IP核已经添加成功了。

2.1、新建工程

image

File->New->Xilinx C Project

image

工程模板选择 Hello World,工程名改成vga_ip_test_0,然后点击Next:

image

需要新建BSP,把工程名改为vga_ip_test_bsp_0。Finish,然后SDK会创建文件并自动全编译生成的代码。

2.2、设计代码

2.2.1、重命名文件

展开vga_ip_test_0工程文件夹,展开src,找到helloworld.c,选中,右键,Rename,改成vga_ip_test.c,点击OK。

image -> image

2.2.2、编写代码

删除主函数中的所有代码,添加新代码如下:

-----------------代码开始---------------------

/*
* vga_ip_test_0.c: simple test application
*/

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

#include "xil_io.h"//包含Xil_Out32函数
#include "sleep.h" //包含sleep函数

#define vga_base_addr 0x78c00000

void print(char *str);

int main()
{
    //八种颜色循环显示,每一屏显示1s
    while(1)
    {
        Xil_Out32(vga_base_addr,0x0);
        sleep(1);
        Xil_Out32(vga_base_addr,0xf);
        sleep(1);
        Xil_Out32(vga_base_addr,0xf0);
        sleep(1);
        Xil_Out32(vga_base_addr,0xf00);
        sleep(1);
        Xil_Out32(vga_base_addr,0xff);
        sleep(1);
        Xil_Out32(vga_base_addr,0xf0f);
        sleep(1);
        Xil_Out32(vga_base_addr,0xff0);
        sleep(1);
        Xil_Out32(vga_base_addr,0xfff);
        sleep(1);

    }
    return 0;
}

---------------代码结束---------------

这段代码中使用了BSP中的两个函数,具体如何使用,请参考声明和源码。

2.3、下载bitstream和软件可执行代码,运行,并测试。

2.3.1、下载bitstream

image

如上图所示,到Xilinx Tools菜单下,选择Program FPGA:

image 

默认的bitstream一般是对的,不用改,点击Program。下载成功后,zedboard上OLED旁边的蓝色LED点亮:

IMG_20121213_234929

2.3.2、右键选中vga_ip_test_0工程,选择Run As,选择Run Configuration...

image

弹出下面的Run Configuration界面。

image

右键选中Xilinx C/C++ ELF,新建可执行文件。

image

新建完成:

image 

查看一下Device Initialization选项:

image

发现使用ps7_init.tcl进行初始化。

点击Run,查看运行效果。

运行结果是:屏幕循环显示8种颜色,每个颜色维持1秒钟。

测试效果就不给了,前面的文章已经给过测试图了,那篇是通过串口控制屏幕的颜色,软件操作稍微复杂一点,今天只是做了个简单的循环。