ahan 2004-11-26 17:10
那位大侠对AMBA总线比较熟悉啊?(AMBA总线专题讨论)
最近在做soc设计,也在看AHB总线协议,刚刚入门,还得来这里向各位前辈请教。
谢谢。
[[i] 本帖最后由 老扁 于 2008-2-28 17:12 编辑 [/i]]
cctvlsj 2004-11-26 20:27
那位大侠对AMBA总线比较熟悉阿?
我还可以,有什么需要问的尽管说,你做什么SOC啊?
atuhappy 2004-11-26 22:07
那位大侠对AMBA总线比较熟悉阿?
详细聊聊
ahan 2004-11-27 10:22
那位大侠对AMBA总线比较熟悉阿?
我们现在做的soc是3G terminals的baseband chip;
现在的器件有LSI的ZSP500+ARM926,现在最重要的是片线总线以及总线之间的通信问题。特别是ARM如何访问ZSP的内部CACHE,总线仲裁如何处理,需要做几层的AMBA总线之类的东西,假如大家有兴趣,我可以把我们遇到的一下问题拿到这里和大家讨论一下。也请前辈们多多指导:)
另外不知道前辈们能否提供一些参考模型和paper,我手上就只有两篇paper,但是很粗略,也上传上来供大家参考。
ahan 2004-11-27 10:24
那位大侠对AMBA总线比较熟悉阿?
:)
ahan 2004-11-27 10:26
那位大侠对AMBA总线比较熟悉阿?
:)
还有一篇
老扁 2004-11-27 19:05
那位大侠对AMBA总线比较熟悉阿?
AMBA 2.0总线本身是很简单的,而且性能也不是很高,除非你用的是AMBA 3.0的AXI总线. 总线的仲裁是要根据你的系统配置和性能要求自己来做的,这是一个必须仔细设计和研究的模块.至于用几层,一般如果AHB上高速设备少的话只用一个AHB就可以啦,加一个AHB/APB桥接低速设备就OK啦.如果你的系统比较复杂,而且高速设备比较多,相互之间有访问区域的划分,则也可以考虑分两层AHB,但这样你的系统就变复杂啦.
老扁 2004-11-27 19:20
那位大侠对AMBA总线比较熟悉阿?
AHB总线是双向总线,有两套数据线,但它并没有充分利用这两套数据线来同时传输数据,以提升总线带宽.所以ARM提出了一个新的高性能总线AXI.AXI总线就充分利用了总线的带宽,理论上使总线带宽提高了一倍.这个AXI总线跟IBM的高性能PLB总线的性能就有可比性了.
ahan 2004-11-27 21:49
那位大侠对AMBA总线比较熟悉阿?
这次我们暂时使用AMBA2.0,现在系统还没有塔起来。我简单介绍一下哈,AMBA上挂dsp,arm,DMA,MEMCTL,最小配置,通过一个bridge接一些uart和usb等。DMA控制器和MEMCTL据说也是IP,好吓人哦。我们自己开发的IP只有FIR,VITERBI,TURBO,三个。公司跟ARM公司要amba总线上的verilog代码,arm公司说只给一层结构的amba总线,多层的要自己开发,在我看来,今后要是dsp和arm要独立操作片外存储器,或着片内的cache,肯定要两层才行。对么?
还有,今后开发后如何对总线上的通信做验证,确实还是有点迷惑,不知道那位师兄做过,讲解一下流程?
ahan 2004-11-29 08:48
那位大侠对AMBA总线比较熟悉阿?
请教一个问题,AHB部分没有定义传输过程中arbiter打断的过程和反应,
在3-5看到下面的介绍:
IN normal operation a master is allowed to complete all the transfers in a particular burst before the arbiter grants another master access to the bus.However,in order to avoid excessive arbitration latencies it is possible for the arbiter to break up a burst and in such cases the master re-arbitrate for the bus in order to complete the remainning transfers in the burst.
老扁 2004-11-29 11:10
那位大侠对AMBA总线比较熟悉阿?
一般情况下Arbiter会等待上一个burst传输的倒数第二个时给出新的grant,但是由于AHB里有不定长的wrap传输类型,加上有hready信号可以降低速度等因素,为了提高总线的性能,比较简单的arbiter设计都会在有高优先级的request时break up正在进行的传输.低优先级被break up后可以继续申请.你要是想某个传输不被打断,可以在发请求时使hold有效,但一般系统里尽量不要用hold,因为这样可能反而会造成很多问题,况且一般都设计成hold也只有最高优先级的才能用.
ahan 2004-11-29 15:19
那位大侠对AMBA总线比较熟悉阿?
比较简单的arbiter设计都会在有高优先级的request时break up正在进行的传输.低优先级被break up后可以继续申请
-------是不是可以这样子理解,假如一条总线上有两个master,万一低优先级的的传输没有完成,高优先级的master发出请求,arbiter就可能中断低优先级的master的传输,对么?但是若是高优先级的master一直申请总线,低优先级的master会不会永远无法取得总线那?如何解决?谢谢。
ahan 2004-11-29 15:25
那位大侠对AMBA总线比较熟悉阿?
还请教一个问题:关于burst的长度限制问题
3-11
burst must not cross a 1KB address boundary.Therefore it is important that masters do not attampt to start a fixed-length incrementing burst which would cause this boundary to be crossed.
老扁 2004-11-29 15:35
那位大侠对AMBA总线比较熟悉阿?
1. 确实,如果arbiter比较简单,高优先级又一直申请,低优先级就会永远得不到机会;所以对于有优先级的系统,arbiter要设计得复杂一些才行. 可以考虑用权重轮循法来仲裁.
2. 3-11的意思是说地址空间以1k为一个大的边界,你做burst时地址不能跨越这个边界.如果跨越边界,必须分成两次burst传输来实现.
ahan 2004-11-29 16:19
那位大侠对AMBA总线比较熟悉阿?
[这个贴子最后由ahan在 2004/11/29 04:20pm 第 1 次编辑]
1.听了师兄的介绍,感觉仲裁系统不是我一个人可以解决的,并且设计到具体的算法问题,不知道其他人是买ip还是自己开发?
2.因为每次传输的size不一样,但是所以1kB对应传输的beats次数不一样,具体这部分的定义对master和slave有什么具体的影响呢?望指教:)
也就说假如master不按规定传了1kB,slave会有什么反应?如何保证slave在master发出1kB的数据的作出恰当的反应?做为master如何保证一次transfer在1kB之内呢?
比如说DMA,假如ARM要求DMA搬移2KB的数据,这时候DMA就要识别分两次搬移,看来DMA也是一个不容易处理的地方,在总线上DMA应该和ARM共享,不知道ARM通过什么端口控制DMA(这部分还没有看,才看了一个星期的AHB,不好意思哈)。
老扁 2004-11-29 16:44
那位大侠对AMBA总线比较熟悉阿?
看来你没有理解这个1K地址边界的含义.
你想像把系统的地址空间分割成1K大小的很多块,每次传输的地址只能在每个块内增加,要跨越到下一个块时,必须另起一次传输操作. 一般AHB的一次burst长度最好不要超过8.
另外,DMA在实现的时候也不是象你说的那样,而是每次也只传输8个,16个 beats,一个DMA操作是分很多次总线操作来实现的.而且DMA的优先级一般比较低,只有在没有其他高优先级总线操作的情况下,它才能去得到总线.
ahan 2004-11-29 16:59
那位大侠对AMBA总线比较熟悉阿?
因为其中有个INCR的传输方式,没有定义传输的长度,假如每次传输32bit,256beats就达到1KB,若每次传64bit,那么128eats就够了,假如master没做好,假如哈,因为DMA也是个master撒,每次64bit,传了129次,那么挂在总线的memory(slave)他如何知道错了呢?
老扁 2004-11-29 17:19
那位大侠对AMBA总线比较熟悉阿?
slave是完全被动的,它不需要知道错没错.1k边界是master必须遵守的.这个1k的边界是对一次burst有限制,对多次不限制,你的DMA完全可以跨边界的.
感觉你有很多系统概念还不很清晰,你不光要研究总线,你还得研究一些系统设计的原理才能很好用好总线协议.AHB总线本身是不会讲这些原理的.
ahan 2004-11-29 17:50
那位大侠对AMBA总线比较熟悉阿?
确实哈,原来读计算机的时候很少研究硬件的东西,后来读通信又搞什么编码,现在看系统结构,没有专注的地方,不好。谢谢师兄:)
ahan 2004-11-29 20:10
那位大侠对AMBA总线比较熟悉阿?
再请教一个问题Protection control
The protection control signals,HPROT[3:0],provide additional information about a bus access and are primarily intended for use by any module that wishes to implement some level of protection.
The signals indicate if the transfer is
an opcode fetch or data access
a privileged mode access or user mode access.
For bus masters with a memory management unit these signals also indicate whtether the current access is caheable or bufferable.
页:
[1]
2
3
4
5
6
7
8
9
10