EETOP 创芯网论坛

找回密码

  登录   注册  

搜帖子
汽车电子资料大全(下载奖励300信元)
查看: 143|回复: 0

[原创] 玩转Zynq连载37——[ex56] 基于Zynq的AXI HP总线读写实例

[复制链接]
发表于 2019-11-26 09:53:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
00.jpg
1概述
         AXI HP总线是Zynq芯片非常重要的一个功能,它可以实现Cortex A9与PL之间大吞吐量的数据通信。可以说,Zynq芯片最大的卖点恐怕就是这条总线。对不起,不是1条,是4条这样的AXI HP总线。PL作为AXI HP主机,可以通过这4条总线实现对内存(DDR3)的读写访问,这4条总线加总的极限带宽,通常能够超过DDR3的最大有效带宽,因此,对于处理器与PL之间的数据交互,Zynq芯片可以做到了最优状态。因此,对于用Zynq做开发的工程师而言,如何玩转AXI HP总线就成为了必修课。
37-1.png
         本实例(zstar_ex56)通过一个简单的AXIHP总线主机的读时序和写时序逻辑,来带领读者掌握基于Zynq的AXI HP总线基本使用方法。在这个实例中,首先需要在Zynq PS端对AXI HP总线进行配置,在系统硬件框图中进行必要的接口引出,然后在顶层源码中例化接口,并进行AXI HP读写时序的逻辑设计。
2 AXI总线协议介绍
         参考文档《玩转Zynq-基础篇:AXI总线协议介绍.pdf》。
3Zynq PSAXI HP配置
         在ZYNQ7 ProcessingSystem中,点击左侧Page Navigator的PS-PL Configuration页面,右侧展开HP Slave AXI Interface --> S AXI HP0 Interface,勾选S AXI HP0Interface并且在展开的S AXI HP0 DATA WIDTH后面选择数据位宽是64(可选项只有32bit和64bit)。
37-2.png
         回到Diagram中,需要将新增加的S_AXI_HP0接口引出。如图所示,点击选中S_AXI_HP0,然后单击右键,在弹出菜单中点击Create Interface Port...。
37-3.png
         如图所示,将接口命名为AXI_HP0。
37-4.png
         同样的方式,将S_AXI_HP0_ACLK引出,命名为AXI_HP0_ACLK。完成接口引出后,如图所示。
37-5.png
         在Address Editor中,由于新增加的AXI_HP0总线地址还未做映射,所以如图所示,需要点击左侧的Auto Assign Address进行自动地址分配。
37-6.png
         完成地址映射后,如图所示,AXI_HP0默认分配了偏移地址(OffsetAddress)0x0开始的1G内存空间。也就是说,这1G的地址空间是AXI_HP0可访问的地址空间。通常而言,DDR3也会默认映射到这一段地址空间中。那么,通过AXI_HP0就可以实现DDR3的读写了。
37-7.png
         如图所示,点击ValidateDesign确认当前系统配置是否OK。
37-8.png
4 AXI HP主机读写逻辑设计
         本实例工程源码的层次结构如下所示。我们重点来看和AXI HP相关的模块axi_hp0_source.v、axi_hp0_wr.v和axi_hp0_rd.v模块。
37-9.png
         axi_hp0_source.v模块以1s为单位,计数定时,产生对AXIHP0总线固定地址32'h0100_0000写一组递增的burst lenght = 16的64bit位宽的数据。其产生的信号接口如下。
37-10.gif
         o_data_*信号送到axi_hp0_rd.v模块发起一次读DDR3的操作,i_data_*信号送到axi_hp0_wr.v模块发起一次DDR3写的操作。在ILA在线逻辑分析仪中,由于每秒都有AXI HP0总线的读操作和写操作,因此我们可以很容易抓到它们的时序进行观察和分析。
         axi_hp0_wr.v模块对AXI HP0总线的写地址通道、写数据通道和写响应通道的信号接口产生必要的时序,完成一组数据的DDR3写入操作。该模块下例化了一个名为fifo_generator_0的FIFO,外部需要写入的数据都统一送到该模块中,当状态机检测到该FIFO的数据个数满足一个DDR3写入的burst length时,就发起一次DDR3写地址和数据的时序,读出FIFO中国的数据,通过AXI HP0的写数据通道送给DDR3。执行写操作的状态关系是先写地址(STATE_WADD),然后送数据(STATE_WDAT),最后等待写响应(STATE_DONE),完成一次操作(STATE_IDLE)。
         axi_hp0_rd.v模块对AXI HP0总线的读地址通道产生必要的时序,由于读数据通道是由从机输出的,因此对该模块而言是输入,该实例的目的只是希望通过ILA在线逻辑分析仪进行时序查看,所以我们没有对读数据通道的接口做任何额外的连接。该模块的设计比较简单,按照axi_hp0_source.v模块给出的每秒定时脉冲和地址,每秒产生一个读地址通道时序即可。
5 AXI HP主机读写逻辑仿真
         在本实例工程的Sources中,展开SimulationSources --> sim_1,可以看到已经编写好的测试脚本tb_axi_hp0_wr.v,该测试脚本主要针对我们的AXI主机写模块axi_hp0_wr.v进行测试。在Simulation Sources中高亮的模块,表示当前有效的顶层模块。
37-11.png
         若是希望设定更改SimulationSources中有效的顶层模块,如图所示,可以展开Flow Navigator --> Simulation,点击SimulationSettings。弹出选项卡中,设置Simulation top module name即当前有效的Simulation顶层模块。
37-12.png
         点击Simulation --> RunSimulation即可执行测试脚本的仿真。
37-13.png
         如图所示,在弹出仿真界面后,点击RunAll按钮,可以运行仿真测试。
37-14.png
         axi_hp0_wr.v模块的仿真波形如下。
37-15.png
         其中一次AXI HP0总线写地址和数据的时序波形如图所示。
37-16.png
6嵌入式软件工程创建
         参考文档《玩转Zynq-工具篇:导出PS硬件配置和新建SDK工程.pdf》导出PS硬件工程,并打开EDK新建一个HelloWorld的模板工程。本实例并不需要在嵌入式软件中做任何其它的功能实现,只需要在.bit文件烧录完成后,运行嵌入式软件即可(主要是PL端的时钟源是来自Zynq PS,因此必须在嵌入式软件运行起来后,才能够产生时钟信号)。
7板级调试
         在Zstar板子上,设置跳线帽P3为JTAG模式,即PIN2-3短接。
         连接好串口线(USB线连接PC的USB端口和Zstar板的UART接口)和Xilinx下载线(下载器连接PC的USB端口和Zstar板的JTAG插座)。使用5V电源给板子供电。
         参考文档《玩转Zynq-环境篇:XilinxPlatformCableUSB下载器使用指南.pdf》烧录PL工程编译产生的.bit和.ltx文件到Zstar板中,如图所示。
37-17.png
         参考《玩转Zynq-工具篇:SDK在线运行裸跑程序.pdf》导出硬件并打开EDK,创建HelloWorld模板工程。运行工程,注意PL的.bit文件已经烧录好,不用再次烧录,直接运行.elf文件即可。
         回到Vivado,查看当前引出的AXI接口。如图所示,可以双击hw_ila_1即可弹出dashboard_1界面。
37-18.png
         如图所示,设置以AXI_wvalid ==R作为触发条件,触发一次波形。
37-19.png
         AXI_wvalid == R触发后,如图所示,出现了两组波形事件,前面一个是AXI HP总线写数据波形,后面一个是AXI HP总线读数据波形。
37-20.png
         如图所示,前面一个波形是对AXI总线固定地址连续写入16个每16bit递增的64bit数据。
37-21.png
         如图所示,后面一个波形是对相同地址的AXI总线读操作,读出的16个64bit数据和写入的数据一致。
37-22.png
更多资料共享
腾讯微云链接:https://share.weiyun.com/5s6bA0s
百度网盘链接:https://pan.bAIdu.com/s/1XTQtP5LZAedkCwQtllAEyw
提取码:ld9c

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询 |  EETOP 创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2020-2-19 04:14 , Processed in 0.075633 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表