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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4944|回复: 5

[讨论] AMBA AXI及WISHBONE的一些问题

[复制链接]
发表于 2010-12-13 12:17:04 | 显示全部楼层 |阅读模式

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

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

x

1 AMBA AHB字节选通的问题

比如我一个memory32位宽的。ARM是字节对齐操作,通过地址低两位来选择哪个字节,也就是说我的控制器在接收ARM地址后先要右移两位来确定地址,因为最低两们并不代表实际地址。读的时候可以理解,不管你ARM要哪个字节,我直接把32位数送给你,你自己通过低两位判断。但写的时候呢?我控制器怎么知道你是字节选通还是半字选通还是全字操作。因为你低两位总共只有4种选择。那么是不是ARM在高地址传达是字节选通还是全字传输?

2 AXI协议中没看到他说仲裁。是没有仲裁还是他简略没说,master也没有总线请求信号,他不可能是两两相连吧。master 有数据ID,那么如果有仲裁的话,也应该把master号加上去吧,就像AHB一样。

3 AIX的非对齐传输。我感觉他的非对齐其实也是对齐的,只是它可以首地址不对齐,然后通过strobe来选择有效数据。然后之后的地址也是对齐的。比如0x01开始,他第一笔数只要了0x01-0x03的数据,第二笔同样是从0x04开始的。不知道我这样理解对不对?

还有就是,即使他字节选通已经单独作为一个信号了,干嘛还要通过SIZE来算地址递增。比如我一32memory,你每次地址加1就可以连续读32位的单元,通过stobe来选择想要的就行了,你加4在我memory这看来不就是地址增4了吗,我还得再把他移回来。


4 WISHBONE的问题,最困惑的是,WISHBONE看了过后貌似他就没规定个啥,什么用户都可以自己选择,也没说清楚个什么。还有,在他的时序里面访问slav貌似都是一个周期完成的。他说为提高速度实行的是slave异步提供响应,那你采样控制信号总是同步的吧,比如,第一个上升沿你master发出指令,slave肯定是在第二个上升沿采样信号,再快你master也得在第三上升沿采样响应吧,怎么可能第一个上升沿发指令下个上升沿就完成了。他上面基本都是在一个周期内完成,反正我接触的存储设备是不可能这样的,比如一个SSRAM,write仅一个时钟周期是可以的,但从你发出指令到采样ACK拉高至少两个周期吧(第一上升沿master发出指令,第二上升沿slave采样,并将ACK拉高,第三上升沿master才能采样到ACK为高)。更加说读了,读还比写多一时钟周期,SSRAM采样到读得到下个周期才能提供有效数据。不知道我的理解有没有错,请教大虾指教。还有就是他的WRAP地址递增方式,不知道他的地址是什么算的?这个不像AMBA那么简单明了



以上就是小弟的问题,请大虾们多多指教。发在总线技术版块居然没一人回帖,感觉每次这边人回帖的多,在这边发下。

发表于 2010-12-13 12:48:15 | 显示全部楼层
For: 1 AMBA AHB字节选通的问题
这个需要看HSIZE信号。根据Spec.: HSIZE == 0是byte传输,所以HADDR一次加1;HSIZE==1是16 bits传输,HADDR也必须按照0,2,4,8,这么加。如果HSIZE == 2是32 bits传输,HADDR也必须按0,4,8,C这么加。
For: 2 AXI协议中没看到他说仲裁
AXI基本只定义了master和slave的接口(信号和时序),至于bus(arbiter基本在bus里)怎么做,它就不管啦。符合master/slave的协议就行。所以没有定义arbiter的做法。
For:4 WISHBONE的问题,最困惑的是....
这个多半你还没有看懂,“访问slav貌似都是一个周期完成的”:这个salve肯定有ready(ACK_O)反馈给master的。
对于wrap:你看人家的例子啊。先按照KN  : ((K+1)N - 1)将地址分组。比如wrap4, 地址0-3一组,4-7一组,8-11一组。然后再在组内wrap.下一组地址的出现顺序更第一组一样。
发表于 2010-12-13 21:21:56 | 显示全部楼层
good infromation for me
 楼主| 发表于 2010-12-13 12:28:21 | 显示全部楼层
回复 2# yangyuf1


    你说的也是我以前推测过的,但我不知道ARM如何工作就不敢确定。说得具体一点,比如要访问一个SRAM芯片,data bus是32位的,SRAM芯片也是32位一个单元,支持字节选通。那么如果HSIZE=010,也就是AHB地址按4递增。那么我在设计SRAM控制器时,如果想让AHB访问连续单元,就须对地址进行右移两位处理后给SRAM芯片,低两位直接丢弃。如果HSIZE=000,也就是字节选通,那么SRAM控制器同样将地址右移两位作为SRAM芯片的地址,但使SRAM处理字节选通工作状态,低两位作为字节选择信号。如果HSIZE=001,也就是半字选通,那么SRAM控制器还是同样将地址右移两位作为SRAM芯片的地址,但低两位的10,00代表选择高16还是低16。不管AHB地址怎么递增,加1也好,加2也好,加4也好,SRAM控制器都将他的低两位去掉作为字节选通信号,才能保证SRAM地址的递增性。不知道这样的做法是不是正确的。因为我没有详细学过ARM,不知道ARM到底是如何工作的。所以很多东西都有疑惑。
  非常感谢你心的解惑,实在太感谢了。
发表于 2010-12-14 11:23:59 | 显示全部楼层
回复 2# 索手锋芒


    这个应该就是你说的那个样子的。但是为了确保万无一失,还是用ARM core sim 一下可靠。
发表于 2011-3-2 09:31:43 | 显示全部楼层
VERY GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-7-18 01:50 , Processed in 0.058721 second(s), 9 queries , Gzip On, MemCached On.

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