在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: BABABA

amba ahb 的hready 用于delay transfer时的细节疑问

[复制链接]
 楼主| 发表于 2007-1-22 16:47:52 | 显示全部楼层


原帖由 limon 于 2007-1-22 16:30 发表
hready=0 & hresp=okay 就是extend phase呀,有什么不对么?


谢谢,我也是这么认为,只是我看amba的specification,
它上面总是很简单的说hready=0,几乎都不提hresp=okay.
作为一个菜鸟我就心虚了。
 楼主| 发表于 2007-1-22 16:54:47 | 显示全部楼层


原帖由 limon 于 2007-1-22 16:37 发表
顺便问个问题,fixed length burst 的最后一个transfer开始的同时,arbiter就要转换hgrant,那么arbiter怎么监视何时为最后burst的最后一次address phase呢?(确切的说是倒数第二个address phase,其间准备好新 ...



arbiter的这一块我还没有看很多次,理解的不是很清楚。
我有一点点的理解,就是:对于fixed length burst,arbiter需要有一个counter来计数,
当传输的beat达到相应的那个数目的时候,arbiter就可以判断传输要结束了。
如果和你的理解不一样,就让我们再讨论讨论吧。

其实,我倒是对于burst type是incr的传输感到不好弄,因为这是不定长的,
如何判断传输结束呢?这个问题我们也来讨论一下吧。

很感谢你的回帖。
发表于 2007-1-22 21:17:09 | 显示全部楼层
我是这样理解的,由于不定长的burst情况不同,因为master要不断的request,每次都由arbiter决定是否grant master以完成这次transfer,也可以说对arbiter来说这和一般的transfer没什么两样,不需要也没可能判断结束的。

至于counter的问题我和你的意见一致,问题在于怎样实现这个counter,似乎一般情况下数hready=1就行。但是retry的情况似乎又要去掉一次hready的影响。这里的时序不敢确定。有谁知道如何count burst的指导一下吧

[ 本帖最后由 limon 于 2007-1-22 21:27 编辑 ]
 楼主| 发表于 2007-1-22 22:26:50 | 显示全部楼层


原帖由 limon 于 2007-1-22 21:17 发表
我是这样理解的,由于不定长的burst情况不同,因为master要不断的request,每次都由arbiter决定是否grant master以完成这次transfer,也可以说对arbiter来说这和一般的transfer没什么两样,不需要也没可能判断结 ...



对于不定长的BURST,也就是INCR的情况有一个地方想请教你一下:
如你所说,INCR的时候,MASTER必须保持HBUSREQ为高,直到它开始了最后一个TRANSFER,
AMBA SPEC上是这么说的:
“For undefined length bursts the master should continue to assert the request until it has started the last transfer.”
想问问你,对于这个has started the last transfer,你是如何理解的,是指最后一个transfer的address发送出去(也就是进入
最后一个address phase),还是指进入最后一个data phase呢?
我个人理解是进入address phase后就可以将HBUSREQ=0。
发表于 2007-1-22 23:06:30 | 显示全部楼层
是的,address phase后就可以HBUSREQ=0了,因为除非transfer成功即hready=1,grant,address,hsel等等都是不会变的。如果遇到retry之类,由于有2个cycle,第一个cycle master先意识到retry的情况需要重新建立HBUSREQ,第二个cycle会有一次hready=1,arbiter会重新仲裁,这时情况就又回到正轨上了
 楼主| 发表于 2007-1-23 10:18:47 | 显示全部楼层


原帖由 limon 于 2007-1-22 23:06 发表
是的,address phase后就可以HBUSREQ=0了,因为除非transfer成功即hready=1,grant,address,hsel等等都是不会变的。如果遇到retry之类,由于有2个cycle,第一个cycle master先意识到retry的情况需要重新建立H ...



你所说的“除非transfer成功即hready=1,...“
这里的hready=1是address phase结束的时候的clk上升沿处的hready吧?
我开始一直认为是data phase结束时候的clk上升沿处的hready,
但是如果是那样,就没办法在这个data phase同时开始下一个transfer的address phase了(我这里指的是另外被grant了一个master的传输)。
不知道我的理解对不对?
发现自己对很多地方的理解都似是而非。

谢谢,和你讨论让我对一些细节清晰了不少。

另外你能帮我看看我另发的一个帖子吗?
就是让裴静 进来指导得那个。
那么起标题是想能让更多的人一起讨论。
再次感谢。
发表于 2007-1-23 11:50:02 | 显示全部楼层
我也是为了写毕业论文才开始看的,没误导你就好。
这个问题我又想了一下(我也不确定一定就对呵呵),应该是master采样得到grant后,立刻就可以hbusreq=0了,而这时应该是address phase的开始。但即使这样,在address phase结束时给出新的grant,下一个master也要再等一个时钟周期才能进入address phase。似乎延迟是无法避免的。反过来想,或许这就是fixed length burst的优势所在(可以背靠背的传递)?

[ 本帖最后由 limon 于 2007-1-23 12:02 编辑 ]
 楼主| 发表于 2007-1-24 10:40:48 | 显示全部楼层


原帖由 limon 于 2007-1-22 21:17 发表
我是这样理解的,由于不定长的burst情况不同,因为master要不断的request,每次都由arbiter决定是否grant master以完成这次transfer,也可以说对arbiter来说这和一般的transfer没什么两样,不需要也没可能判断结 ...



你好。
对于不定长的incr burst,在规范的3.11.2处有讲,我重新看了一遍。
incr必须在传输过程中保持hbusreq=1,直到最后一个transfer。
这样arbiter就可以根据hburst==incr和hbusreq==0来判断进入了最后一个transfer,
因此还是可以判断结束的。
这么理解如何?
发表于 2007-1-26 22:27:46 | 显示全部楼层

回复 #18 BABABA 的帖子

我怎么看你们讨论的时候,都没有谈htrans,如果htrans=IDLE,不就是停止了吗?
发表于 2007-11-5 11:37:56 | 显示全部楼层
对于不定长的传送,master需要一直保持request的。协议有要求。所以master根据传输长度需要来assert request,arbitrator只用监视requet就行了。在倒数第二个数据的时候de-assert request, 这样在最后一个数据的时候arbitrator重新grant其它master并完成最后一个transfer



原帖由 limon 于 2007-1-22 16:37 发表
顺便问个问题,fixed length burst 的最后一个transfer开始的同时,arbiter就要转换hgrant,那么arbiter怎么监视何时为最后burst的最后一次address phase呢?(确切的说是倒数第二个address phase,其间准备好新 ...


[ 本帖最后由 huangchangsandy 于 2007-11-5 11:42 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-26 02:14 , Processed in 0.020097 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表