[X]关闭

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

文档创建者:uisrc
浏览次数:417
最后更新:2024-04-24
文档课程分类
AMD: FPGA部分(2024样板资料) » 2_FPGA实验篇(仅旗舰) » 3-FPGA AXI 总线入门
软件版本: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.v和saxi_lite_gpio.v并且方便放入03_ip/maxi_lite文件夹和03_ip/saxi_lite文件夹。
2504661-20231230145828334-677608706.jpg
以创建自定义maxi_lite自定义为例,先创建一个空的创建IP所需要的fpga工程
2504661-20231230145828884-201671014.jpg
2504661-20231230145829333-350095927.jpg
2504661-20231230145829739-2037440962.jpg

2504661-20231230145830138-489919082.jpg
添加ip源码文件
2504661-20231230145830654-1250313508.jpg
这里再次提醒是创建maxi_lite_gpio的ip至于saxi_lite_gpio的ip方法一样。
2504661-20231230145831208-108045012.jpg
2504661-20231230145831640-435780199.jpg
源码后面再分析,暂时我们不分析源码,先完成IP的创建
2504661-20231230145832063-1584238509.jpg
再tools菜单中找到Create and Package New IP
2504661-20231230145832456-274101867.jpg
2504661-20231230145832899-415169343.jpg
2504661-20231230145833326-672215380.jpg
2504661-20231230145833694-1267358799.jpg
新增IP编辑窗口
2504661-20231230145834081-1379416303.jpg
2504661-20231230145834493-1353311161.jpg
参数接口
2504661-20231230145834924-1377853762.jpg
信号接口
2504661-20231230145835351-1525026132.jpg
完成IP打包
2504661-20231230145835850-839701221.jpg
2.2创建saxi_lite_gpio ip
用同样的方法,创建saxi_lite_gpio
2504661-20231230145836269-1783348633.jpg
2504661-20231230145836623-1955069232.jpg
2504661-20231230145837037-141692196.jpg
3FPGA图形化编程
设置IP路径
2504661-20231230145837461-362853332.jpg
创建BD工程
2504661-20231230145837915-1363339996.jpg
添加以上完成的maxi_lite_gpio和saxi_lite_gpio两个IP
2504661-20231230145843254-1027241091.jpg
再添加虚拟IO用于观察数据
2504661-20231230145843602-879158431.jpg
完成连线
2504661-20231230145843949-286836848.jpg
编写顶层文件配套代码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]是为了对fpga的bit进行压缩,减少bit大小,提高加载速度。
5硬件接线
1:USB-232 USB数据线(我们已经知道开发板集成了USB转串口芯片)接入电脑USB接口
2:接通电源和JTAG
2504661-20231230145844384-929073554.jpg
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_gpio的IP源码中读写的间隔时间减少,如下图所示:
2504661-20231230145844812-1603888582.jpg
maxi写入数据仿真
2504661-20231230145850275-1315328824.jpg
saxi读出数据仿真
2504661-20231230145850703-435436127.jpg
2504661-20231230145851181-1092508379.jpg
2504661-20231230145856628-1564806075.jpg
编译下载测试前,把TIME_SET改回到TIME_SET = 99999999,这样对于100M时钟每间隔500ms读写一次。
每次更改ip源码后,在Tcl Console中输入reset_project 对fpga工程进行复位
2504661-20231230145857078-1473610511.jpg
然后根据提示单击下图中Refresh IP Catalog更新IP状态
2504661-20231230145857440-178154428.jpg
再单击Upgrade Selected
2504661-20231230145857795-1853928646.jpg
最后编译产生bit文件下载到开发板测试。
在路径..\uisrc\06_doc路径有本实验的运行结果视频

发表评论已发布 1

mzyjzwbo

发表于 3 天前 | 显示全部楼层

根本做不出来啊,照着做还是你们的案例都不对,能不能详细一点啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则