07 AXI-Lite-Master读写AXI-Lite-Slave

发布时间 2023-12-30 15:02:36作者: 米联客(milianke)

软件版本:vitis2021.1(vivado2021.1)

操作系统:WIN10 64bit

硬件平台:适用XILINX A7/K7/Z7/ZU/KU系列FPGA

登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!

1概述

基于前面5篇文章中5个实验,我们已经掌握了AXI4总线协议,现在我们编写一个自定义的AXI-Lite-Slave GPIO IP,并且用编写的AXI-Lite-Master IP对其进行仿真验证和上板验证。

本文实验目的:

1:修改VIVADO产生的saxi-lite- gpio模板,增加GPIO的定义

2:修改VIVADO产生的maxi-lite-gpio模板,增加对saxi-lite- gpio寄存器的读写操作。

3:进一步掌握基于vivado实现的ip的封装

2基于VIVADOIP封装

2.1封装maxi_lite_gpio IP

这节课的源码文件已经编写好了,我们直接拿来使用。新建2个文件,把源码文件 maxi_lite_gpio.vsaxi_lite_gpio.v并且方便放入03_ip/maxi_lite文件夹和03_ip/saxi_lite文件夹。

以创建自定义maxi_lite自定义为例,先创建一个空的创建IP所需要的fpga工程

 

添加ip源码文件

这里再次提醒是创建maxi_lite_gpioip至于saxi_lite_gpioip方法一样。

源码后面再分析,暂时我们不分析源码,先完成IP的创建

tools菜单中找到Create and Package New IP

新增IP编辑窗口

参数接口

信号接口

完成IP打包

2.2创建saxi_lite_gpio ip

用同样的方法,创建saxi_lite_gpio

3FPGA图形化编程

设置IP路径

创建BD工程

添加以上完成的maxi_lite_gpiosaxi_lite_gpio两个IP

再添加虚拟IO用于观察数据

完成连线

编写顶层文件配套代码uisrc/01_rtl路径下有源码

module system_wrapper

(

input sysclk,

input [1:0] btn,

output[1:0] led

);

  wire ARESETN;

  reg [7:0] rstn_cnt=0;

  always @(posedge sysclk)begin

    if(rstn_cnt[7]==1'b0)

        rstn_cnt <= rstn_cnt + 1'b1;

  end

   

  assign ARESETN = rstn_cnt[7];

     

  system system_i

       (.sysclk(sysclk),

        .ARESETN(rstn_cnt[7]),

        .btn(btn),

        .led(led));

endmodule

4硬件电路分析

配套工程的 FPGA PIN 脚定义路径为 fpga_prj/uisrc/04_pin/ fpga_pin.xdc

最后的set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]是为了对fpgabit进行压缩,减少bit大小,提高加载速度。

5硬件接线

1:USB-232 USB数据线(我们已经知道开发板集成了USB转串口芯片)接入电脑USB接口

2:接通电源和JTAG

6仿真文件

编写仿真文件,配套代码uisrc/02_sim路径下有源码

module axi_top_sim();

reg sysclk;

wire [1:0] btn = 2'b01;

wire [1:0] led;   

system_wrapper system_wrapper_inst

    (

    .sysclk(sysclk),  

    .btn(btn),

    .led(led)

    );

     

initial begin

    sysclk    = 1'b0;

    #100;

end

 

always

    begin

        #5 sysclk = ~sysclk;

    end    

 

endmodule

 

7实验结果

为了加快仿真,可以把maxi_lite_gpioIP源码中读写的间隔时间减少,如下图所示:

maxi写入数据仿真

saxi读出数据仿真

编译下载测试前,把TIME_SET改回到TIME_SET = 99999999,这样对于100M时钟每间隔500ms读写一次。

每次更改ip源码后,在Tcl Console中输入reset_project fpga工程进行复位

然后根据提示单击下图中Refresh IP Catalog更新IP状态

再单击Upgrade Selected

最后编译产生bit文件下载到开发板测试。

在路径..\uisrc\06_doc路径有本实验的运行结果视频