[X]关闭

米联客-XILINX-H3_CZ08_7100] FPGA_AXI总线入门连载-06AXI-Lite-Master 读写 AXI-Lite

文档创建者:FPGA课程
浏览次数:36
最后更新:2024-10-14
文档课程分类-AMD-ZYNQ
AMD-ZYNQ: ZYNQ-FPGA部分 » 2_FPGA实验篇(仅旗舰) » 3-FPGA AXI 总线入门
本帖最后由 FPGA课程 于 2024-10-14 18:20 编辑

​ 软件版本:VIVADO2021.1
操作系统:WIN10 64bit
硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA
实验平台:米联客-MLK-H3-CZ08-7100开发板
板卡获取平台:https://milianke.tmall.com/
登录“米联客”FPGA社区 http://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_gpioIP
这节课的源码文件已经编写好了,我们直接拿来使用。新建2个文件,把源码文件 maxi_lite_gpio.v和saxi_lite_gpio.v并且方便放入03_ip/maxi_lite文件夹和03_ip/saxi_lite文件夹。
a21945e7c2c441c188ac080ef9b67160.jpg
以创建自定义maxi_lite自定义为例,先创建一个空的创建IP所需要的fpga工程
fff3cafd51b749aea295bcb978c1d354.jpg
bc6692a804a64d88982f10374b2be34d.jpg
5f81e802e66e4d369dd8d9fa6e6f52bc.jpg

820ae10653a04bfa826652c7e9d907b9.jpg
添加ip源码文件
16dddf4b2e91451191079d164a37cf99.jpg
这里再次提醒是创建maxi_lite_gpio的ip至于saxi_lite_gpio的ip方法一样。
e34e2ca8204b42eb83d5be29d79ef4ad.jpg
cb630b0ee2f84380838a39948cf5749a.jpg
源码后面再分析,暂时我们不分析源码,先完成IP的创建
3885f5d159f849789b7165e8dd723789.jpg
再tools菜单中找到Create and Package New IP
d7581101b71a4dc89abc3128000f275f.jpg
c35e49af447a481296129e8d60dd56db.jpg
aa3e3ca510414b278a78932a56afe01f.jpg
39c154229d5c48f79bafb2b978743411.jpg
新增IP编辑窗口
62dfbf07790947c6a7a2c3f8664d57fa.jpg
6893fd8c86fe485e88b80312018d6caa.jpg
参数接口
4d78992356f4451193cfd262203ef7f6.jpg
信号接口
f79ee27452984d1f8a06cceb8ebb39ba.jpg
完成IP打包
f88211d376bf492ebf0c5b726744fd04.jpg
2.2创建saxi_lite_gpioip
用同样的方法,创建saxi_lite_gpio
3cded90451ec4be3baae15d821c7065c.jpg
ab5cf71b792c413fa6623b926044172a.jpg
19715d5bc1fe4236828d98928794c862.jpg
3FPGA图形化编程
设置IP路径
e21db0c001f542008f103601d6b30dc7.jpg
创建BD工程
c2b40f37e0e04b19abc5925a7bd9eb1e.jpg
添加以上完成的maxi_lite_gpio和saxi_lite_gpio两个IP
dd5537700e91483ca753be3a30f1763f.jpg
再添加虚拟IO用于观察数据
0e88b30ba4934e38821654e33094e88f.jpg
完成连线
001dedbe620d43c88657012e765ae20f.jpg
编写顶层文件配套代码uisrc/01_rtl路径下有源码
  1. `timescale 1ns / 1ns
  2. module system_wrapper
  3. (
  4. input sysclk_p,
  5. input sysclk_n,
  6. input [1:0] btn,
  7. output[1:0] led
  8. );
  9. wire  sysclk;

  10. //对差分时钟采用 IBUFGDS IP 核去转换
  11. IBUFGDS CLK_U(
  12. .I(sysclk_p),
  13. .IB(sysclk_n),
  14. .O(sysclk)
  15. );

  16.   wire ARESETN;
  17.   reg [7:0] rstn_cnt=0;
  18.   always @(posedge sysclk)begin
  19.     if(rstn_cnt[7]==1'b0)
  20.         rstn_cnt <= rstn_cnt + 1'b1;
  21.   end
  22.   
  23.   assign ARESETN = rstn_cnt[7];
  24.    
  25.   system system_i
  26.        (.sysclk(sysclk),
  27.         .ARESETN(rstn_cnt[7]),
  28.         .btn(btn),
  29.         .led(led));
  30. 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
b64e69c2d40e456b93282f8b3a95f17d.jpg
6仿真文件
编写仿真文件,配套代码uisrc/02_sim路径下有源码
  1. module axi_top_sim();

  2. reg sysclk_p;
  3. reg sysclk_n;
  4. wire [1:0] btn = 2'b01;
  5. wire [1:0] led;
  6.    
  7. system_wrapper system_wrapper_inst
  8.     (
  9.     .sysclk_p(sysclk_p),  
  10.     .sysclk_n(sysclk_n),
  11.     .btn(btn),
  12.     .led(led)
  13.     );
  14.    
  15. initial begin
  16.    sysclk_p  <= 1'b0;   //系统时钟设置初值
  17.    sysclk_n  <= 1'b1;
  18.     #100;
  19. end

  20. always #5 sysclk_p = ~sysclk_p;
  21. always #5 sysclk_n = ~sysclk_n;
  22.       
  23. endmodule
复制代码


7实验结果
为了加快仿真,可以把maxi_lite_gpio的IP源码中读写的间隔时间减少,如下图所示:
17ef0b0cdec0455ebdb22e77a53174ee.jpg
maxi写入数据仿真   
5a42a44c34fd4e34b73244fb602fcd4e.jpg
saxi读出数据仿真
672ffa3dd928404a85a8297d87610c46.jpg
0e95fe06a8414571aa4c6dcde21dd828.jpg
编译下载测试前,把TIME_SET改回到TIME_SET = 99999999,这样对于100M时钟每间隔500ms读写一次。   
dcb618778ce0418981f63fd02f974b88.jpg
每次更改ip源码后,在Tcl Console中输入reset_project 对fpga工程进行复位
ae0d523854654f70a06b97916e2fe72b.jpg
然后根据提示单击下图中Refresh IP Catalog更新IP状态
7906c645871a49749183a6799c6122a9.jpg
再单击Upgrade Selected
a71465773eac4b11b6008c32f40889be.jpg
最后编译产生bit文件下载到开发板测试。
在路径..\uisrc\06_doc路径有本实验的运行结果视频



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则