2:掌握通过VIVADO工具产生AXI-full-master代码 3:理解AXI-full-master中自定义寄存器的地址分配 4:掌握通过VIVADO封装AXI-full-slave图形化IP 5:通过仿真验证AXI-full-master IP的工作是否正常。 2创建axi4-full-master总线接口IP 新建fpga工程,过程省略 新建完成工程后,单击菜单栏Tools->Create and Package New IP...
在上图中,我们描述了典型的AXI总线互联方式,经过AXI-interconnect 可以完成多个MASTER和多个SLAVE之间的互联。比如对于XILINX的SOC来说,内存有PS的DDR也有PL的DDR,还有基于AXI4总线的其他IP,比如PCIE的XDMA IP等,都可以通过AXI-interconnect实现高效的互联,这样各个外设之间的数据就能非常方便的基于AXI4总线实现共享访问。
整个工程由两部分构成:1、我们打包的IP,该IP的接口是AIX4-Full-master;2、AXI Verification IP,这是一个AXI的验证IP,提供多种验证方式,功能很强大,双击这个IP,看看它的内置定制信息: 可以看到,它可选择接口模式来实现主机或从机或直通功能;可选协议类型,地址位宽,数据位宽等。我们这里不动它,直接cancel。 2、...
大概流程图就下面 接下来就是快速实现下,在vivado中点击左上角的Tools工具创建一个AXI4接口的IP核,接口类型选择AXI-Full,接口模式是Master,位宽这里好像不能选择。。。 接下来就是编辑IP核,顺便看看官方给的AXI-Full协议的示例代码了(看着有900行,其实大都是注释,写的也很清楚),先是参数部分,DDR3读写基地址、...
slv_agent = new("master vip agent",UUT.design_1_i.axi_vip_0.inst.IF); 在本教程中,我们需要使 AXI VIP 在控制台中输出错误,因此我们需要使用以下行(99 行附近)启用详细模式 // set print out verbosity level slv_agent.set_verbosity(400); ...
首先,读地址通道 (Read Address Channel) 从主设备 (Master) 发送到从设备 (Slave),以便设置地址和部分控制信号。 然后,此地址的数据通过读数据通道 (Read data channel) 从从设备发送到主设备。 请注意,根据下图所示,每个地址中可发生多次数据传输。此类型的传输事务称为突发 (burst)。需要注意的是AXI4-Full是...
slv_agent = new("master vip agent",UUT.design_1_i.axi_vip_0.inst.IF); 17. 在本教程中,我们需要使 AXI VIP 在控制台中输出错误,因此我们需要使用以下行(99行附近)启用详细模式 // set print out verbosity level slv_agent.set_verbosity(400); ...
然后可以设计一个相对复杂点的AXI-full的Slave,比如AXI2RAM模块,该模块可以支持突发乃至Outstanding,甚至可以支持乱序,完成该模块以后工作中再遇到AXI-Slave设计,至少心里不会虚,并且面试基本可以应付大部分问题了。 最后可以再设计一个AXI Master,从主机和从机两个不同的维度深刻理解AXI协议的通信机制,这个主机同样的也...
然后是多个Master访问多个Slave,这种情况就需要引入仲裁逻辑了,相对的设计也会更加复杂,此时多个Master共享Interconnect,相应的会影响到带宽。 上面的例子一次只能建立1对1的访问,我们看下面的复杂例子,左边是完全映射(Full Mapping),即Master可以访问所有的Slave。右图则是部分映射(Sparse Mapping),可以看到一个Master只能...
在 INIT_READ 状态下, 状态机拉高 start_single_burst_read 信号, 不断地启动 AXI4 Master 接口对 Slave端同一存储空间进行突发读操作, 同时将读出的数据与写入的数据进行对比。读操作完成后, read_done 信号拉高,状态机进入 INIT_COMPARE 状态。在 INIT_COMPARE 状态下, 判断 AXI4 接口在读写过程中的是否...