AXI协议详解(四)

在这里插入图片描述

上一篇我们完成了一个内存式的axi4从机的rtl设计,并进行了仿真验证。是不是有点不过瘾呢?本周我们将在ZYNQ中测试一下之前的从机是否真的能满足功能,回复AXI4可以获取最新的rtl设计以及zynq下的测试环境,有条件的朋友可以实际看下效果~

先说最重要的部分,本次测试发现之前的从机的几处错误,后台的代码已经更新。

首先是hand_ar信号无法拉低的问题,更改过后的代码如下所示,更改过的地方有两个部分:

  • hand_ar拉低的条件(arvalid && arready && (arlen_cnt_r == arlen_r))更改为最后一个数据握手成功的时刻(rvalid && rready && (arlen_cnt_r == arlen_r))
  • hand_ar拉高的条件(arvalid && arready)提前拉高,(arvalid && ~arready && ~hand_ar)
// hand_ar
always@(posedge aclk or negedge aresetn)begin
    if(!aresetn)
        hand_ar <= 1'b0;
    else if(arvalid && ~arready && ~hand_ar)
        hand_ar <= 1'b1;
    else if(rvalid && rready && (arlen_cnt_r == arlen_r))
        hand_ar <= 1'b0;
end

其次是hand_aw信号拉高的时刻稍晚,可能会导致写数据地址同步错误的问题。这个问题在仿真中并没有出现,但是在实测当中,顺序写数据时第二个数据写入地址总是偏移4,其他的写数据过程均正确,后续更改hand_aw信号后功能正常。将awvalid && awready更改为了awvalid && ~awready && ~hand_aw(为了避免问题,将hand_ar的拉高时间也做了相应的改变)

// hand_aw
always@(posedge aclk or negedge arese
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值