[X]关闭
1

06AXI-Lite-Master读写AXI-Lite-Slave(AXI4总线实战)

摘要: 基于前面5篇文章中5个实验,我们已经掌握了AXI4总线协议,现在我们编写一个自定义的AXI-Lite-Slave GPIO IP,并且用编写的AXI-Lite-Master IP对齐进行仿真验证和上板验证。 本文实验目的: 1:修改VIVADO产生的s ...

软件版本:vitis2020.2(vivado2020.2)

操作系统:WIN10 64bit

硬件平台:适用XILINX A7/K7/Z7/ZU/KU系列FPGA(米联客(milianke)MZU07A-EG硬件开发平台)

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

6.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的封装

6.2基于VIVADO的IP封装

6.2.1封装maxi_lite_gpio IP

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

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

 

添加ip源码文件

这里再次提醒是创建maxi_lite_gpio的ip至于saxi_lite_gpio的ip方法一样。

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

再tools菜单中找到Create and Package New IP

新增IP编辑窗口

参数接口

信号接口

完成IP打包

6.2.2创建saxi_lite_gpio ip

用同样的方法,创建saxi_lite_gpio

6.3FPGA图形化编程

设置IP路径

创建BD工程

添加以上完成的maxi_lite_gpio和saxi_lite_gpio两个IP

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

完成连线

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

module system_wrapper

(

input sysclk_p,

input sysclk_n,

input [1:0] btn,

output[1:0] led

);

 

wire ACLK;

wire ARESETN;

 

IBUFDS IBUFDS_inst (

.O(ACLK),

.I(sysclk_p),

.IB(sysclk_n)

);

 

reg [7:0] rstn_cnt=0;

always @(posedge ACLK)begin

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

rstn_cnt <= rstn_cnt + 1'b1;

end

 

assign ARESETN = rstn_cnt[7];

 

system system_i

(.ACLK(ACLK),

.ARESETN(rstn_cnt[7]),

.btn(btn),

.led(led));

endmodule

6.3硬件电路分析

6.3.1原理图

PL的GPIO可以定义为EMIO,其中PL部分FPGA引脚A21和A18接到了LED上,K24、F21接到了按键上。

6.3.2fpga_pin.xdc中IO约束

添加管脚约束文件,配套代码uisrc/04_pin路径下有源码

create_clock -name sysclk_p -period 5.000 [get_ports sysclk_p]

 

set_property PACKAGE_PIN AH22 [get_ports sysclk_p]

set_property IOSTANDARD DIFF_SSTL12 [get_ports sysclk_p]

set_property PACKAGE_PIN K24 [get_ports btn[0]]

set_property PACKAGE_PIN F21 [get_ports btn[1]]

set_property PACKAGE_PIN A21 [get_ports led[0]]

set_property PACKAGE_PIN A18 [get_ports led[1]]

set_property IOSTANDARD LVCMOS18 [get_ports led[*]]

##bit compress

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

6.4硬件接线

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

2:接通电源和JTAG

3:模式开关设置为JTAG模式,模式开关全部切换到ON

6.5仿真文件

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

module axi_top_sim();

 

reg sysclk_p;

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

wire [1:0] led;

 

system_wrapper system_wrapper_inst

(

.sysclk_p(sysclk_p),

.sysclk_n(~sysclk_p),

.btn(btn),

.led(led)

);

 

initial begin

sysclk_p = 1'b0;

#100;

end

 

always

begin

#5 sysclk_p = ~sysclk_p;

end

 

endmodule

6.6实验结果

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

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路径有本实验的运行结果视频


路过

雷人

握手

鲜花

鸡蛋
发表评论

最新评论

引用 uisrc 2021-8-18 20:42
配套源码下载链接:https://pan.baidu.com/s/1TvjOdZvCyDQpS4a7jYivRQ 提取码:1111

查看全部评论(1)

本文作者
2021-8-13 22:38
  • 7
    粉丝
  • 4136
    阅读
  • 1
    回复
  • 1
  • 2
  • 3
热门评论
排行榜