添加AXI主IP(AXI4 Lite和AXI4)示例

添加AXI主IP(AXI4 Lite和AXI4)示例
将等效IP添加到框图中。以下是AXI Central的示例步骤
直接存储器存取(CDMA):
1.右键单击方框图中的任意位置,然后选择“添加IP”。
2.搜索并双击AXI Central Direct Memory Access。
IP上的AXI主机(SG引擎和AXI4数据主机)仅在此连接
部分
3.双击实例(axi_cdma_0)以配置IP。
4.打开MHS并尽可能紧密地匹配设置;参数可能是
添加、修改或删除。
5.单击“确定”。
注:参数验证在验证XPS和IP之间的参数一节中进行了讨论
在基于Zynq平台处理器的设计中AXI主设备和从设备的积分器设计。
6.在MHS的AXI主实例部分(AXI_cdma_0实例)中,找到
BUS_INTERFACE M_AXI=AXI_INTERCONNECT_HP0_SLAVE线。
注意:M_AXI的名称可能略有不同。
7.基于该线上等式的右侧(BUS_INTERFACE M_AXI=
AXI_INTERCONNECT_HP0_SLAVE,在这种情况下,AXI_INTERCONNECT_HP0_SLAVE)执行
搜索并追溯到processingsystem7实例。
例如,BUS_INTERFACE S_AXI_HP0=AXI_INTERCONNECT_HP0_SLAVE。
该AXI主接口连接到S_AXI_HP0接口。
Zynq 7000设备的AXI主接口连接到S_ AXI_,
S_AXI_GP1、S_AXI_HP0、S_axy_HP1、S_maxi_HP2、S_AXI_HP3、S_ax_ACP,
取决于MHS中的连接。

8.如果Zynq设备AXI从接口没有关联的AXI互连(用于
首次在此接口上运行Connection Automation的示例),运行Connection
Zynq 7000设备AXI从机接口自动化。
对于本例,AXI从接口为:/producting_system_7_0/S_AXI_HP0。
AXI主机/AXI_cdma_0/M_AXI或/AXI_cdma_0/M_AAXI_SG显示在运行中
“连接自动化”对话框。
9.选择/axi_cdma_0/M_axi。
10.单击“确定”。
11.如果Zynq设备AXI Slave接口确实包含AXI Interconnect实例,请运行
AXI主接口上的连接自动化(例如/AXI_cdma_0/
M_AXI_SG)。
12.选择/producting_system7_0/S_AXI_HP0。
13.单击“确定”。
Connection Automation为创建或修改axi_mem_intercon实例
AXI互连。
对于其他时钟和复位,以及其他内部或外部信号
连接与XPS设计中使用的方法类似。
14.如果可能,请在外部接口上使用Run Connection Automation。
连接中断
重要!对于每个需要中断支持的IP:确保通过
IP GUI中的参数。
1.右键单击方框图中的任意位置,然后选择“添加IP”。
2.搜索并双击Concat以添加IP。
3.双击xlconcat_0实例。
4.修改端口数量,使其与设计中的中断数量相匹配。
5.单击“确定”。
6.将xlconcat_0实例上的dout[1:0]连接到
processing_system7_0实例。
7.将中断从IP连接到xlconcat_0 InX输入端口。例如
axi_gpio_0实例上的ip2intc_irpt到xlconcat_0上的In0[0:0]端口。
使用此方法连接设计中的每个中断。
提示:In0[0:0]端口是最低的中断优先级,在MHS中是最左边的信号
连接到processing_system_7实例的端口IRQ_F2P是最低中断
优先事项

自定义地址以匹配XPS设计
有必要为设计匹配地址,因为design Automation设置了地址
和地址大小。这确保了与现有软件的兼容性。
1.在文本编辑器中打开MHS文件,然后在块设计中选择“地址编辑器”。
2.对于MHS中的每个AXI从机,获得PARAMETER C_BASEADDR和PARAMETER
C_HIGHADDR。
a.在下的AXI从设备的偏移地址字段中输入C_BASEADDR值
processing_system7_0/数据。
b.确保C_HIGHADDR与AXI从设备的高地址列相匹配。
如果不匹配,请调整AXI从设备的“范围”列,使其与
C_HIGHADDR与Zynq 7000设备AXI主接口(M_AXI_GP0/
M_AXI_GP1)。地址空间介于0x40000000到0x7FFFFFFF之间,并且
0x80000000到0xBFFFFFFF。
注:对于Zynq 7000设备AXI从机接口,地址范围自动设置在
0x00000000和0x3FFFFF。
策略
默认情况下,“互连优化策略”设置为“自定义”。这使您可以在每个主接口和从接口上添加寄存器切片数据FIFO。但是,启用了完全的横杆支持
(主设备与所有从属设备有直接连接)。AXI主发行设置为2,AXI从发行
acceptance被设置为4。
重要!如果XPS设计包括稀疏纵横制支持(某些主机访问的子集
slave),请注意此功能在IP integrator中不可用。每个主节点都连接到所有从属节点。
如果设计的一部分仅连接AXI4 Lite从机,则使用最小化区域策略
外围设备。
这使得AXI互连处于共享接入模式(主设备共享到从设备的连接),
这减少了AXI互连的系统资源,并将AXI主发布设置为1
AXI从机接受为1。将此选项与一起使用
processing_system7__axi_periph或processing_systemon__axi_preriph_1
例子
重要!如果高速AXI从设备(如AXI-MIG或AXI块RAM)连接到AXI
互连实例,将策略留在Custom。

将“最大化性能”策略用于设计的高性能部分。这增加了
每个主设备512个深度FIFO,并将AXI主设备发布设置为4和AXI从设备
接受4。将axi_mem_intercon实例保留为Custom,除非所有axi Masters
需要分组AXI数据FIFO。以下小节将对此进行讨论。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AXI4-Lite是一种简化版的AXI4协议,用于连接处理器和外设。下面是使用AXI4-Lite的基本步骤: 1.定义AXI4-Lite接口:定义AXI4-Lite接口时需要指定地址和数据宽度,如下所示: ```verilog module axi4_lite_interface ( input wire clk, input wire rst, // AXI4-Lite signals input wire [31:0] araddr, // Read address output reg [31:0] rdata, // Read data input wire arvalid, // Read address valid output reg arready, // Read address ready input wire [31:0] awaddr, // Write address input wire [31:0] wdata, // Write data input wire awvalid, // Write address valid output reg awready, // Write address ready input wire wvalid, // Write data valid output reg wready, // Write data ready input wire [1:0] wstrb, // Write strobe output reg bvalid, // Write response valid input wire bready // Write response ready ); ``` 2.实现状态机:使用状态机来处理读写请求和响应。在状态机的每个状态中,处理器可以采取不同的行动,例如准备好数据、等待数据、发送响应等。下面是一个简单的状态机示例: ```verilog reg [1:0] state, next_state; always @(posedge clk) begin if (rst) state <= IDLE; else state <= next_state; end parameter IDLE = 0, READ_ADDR = 1, READ_DATA = 2, WRITE_ADDR = 3, WRITE_DATA = 4, WRITE_RESP = 5; always @(*) begin case (state) IDLE: begin if (arvalid) next_state = READ_ADDR; else if (awvalid) next_state = WRITE_ADDR; else next_state = IDLE; end READ_ADDR: begin if (arready) next_state = READ_DATA; else next_state = READ_ADDR; end READ_DATA: begin if (bready) next_state = IDLE; else next_state = READ_DATA; end WRITE_ADDR: begin if (awready) next_state = WRITE_DATA; else next_state = WRITE_ADDR; end WRITE_DATA: begin if (wvalid) next_state = WRITE_RESP; else next_state = WRITE_DATA; end WRITE_RESP: begin if (bvalid) next_state = IDLE; else next_state = WRITE_RESP; end default: next_state = IDLE; endcase end ``` 3.实现读写逻辑:根据状态机的状态,实现读写逻辑。下面是一个读写逻辑示例: ```verilog reg [31:0] data_mem [0:255]; always @(posedge clk) begin // Read address if (state == READ_ADDR && arvalid && arready) begin rdata <= data_mem[araddr]; arready <= 1'b0; end else begin arready <= 1'b1; end // Write address and data if (state == WRITE_ADDR && awvalid && awready) begin data_mem[awaddr] <= wdata; wready <= 1'b1; awready <= 1'b0; end else if (state == WRITE_DATA && wvalid && wready) begin data_mem[awaddr] <= wdata; wready <= 1'b0; end else begin wready <= 1'b1; awready <= 1'b1; end // Write response if (state == WRITE_RESP && bready) begin bvalid <= 1'b1; end else begin bvalid <= 1'b0; end end ``` 以上是AXI4-Lite的基本使用方法,具体实现可以根据需要进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cckkppll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值