微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 讨论个AHB的问题

讨论个AHB的问题

时间:12-12 整理:3721RD 点击:
当Maste第一拍发出地址100的时候
Slave应该把HREADY置为高还是低?
另外Master的地址请求是不是只持续一拍?
Slave无论如何必须锁存Master发来的地址
否则以后Master的地址就变掉了?
也就是说Slave只能通过HREADY延后数据的传输
不能延后地址的传输?
以上只考虑一个Master一个Slave的情况

这个我觉得协议上已经清楚了。可以参考一下协议上的时序图。
HREADY在第一个cycle,高低都可以的。

所有有效的传输都必须以HREADY为高作为条件
所以Slave在HREADY为高时对地址进行采样
协议中如下说:
In fact, the address phase of any transfer occurs during the data phase of the previous transfer.(page 3-7)
When a transfer is extended, it will have the side-effect of extending the address phase of the following transfer.(page 3-8)
不仅Master和Slave需以HREADY为高作为有效传输条件
Arbiter、Multiplexer都应有相应的HREADY信号作为输入
AHB FAQ上面还说:
An AHB slave must have the HREADY signal as both an input and an output.
HREADY is required as an output from a slave so that the slave can extend the data phase of a transfer.
HREADY is also required as an input so that the slave can determine when the previously selected slave has completed its final transfer and the first data phase transfer for this slave is about to commence.
Each AHB Slave should have an HREADY output signal (conventionally named HREADYOUT) which is connected to the Slave-to-Master Multiplexer. The output of this multiplexer is the global HREADY signal which is routed to all masters on the AHB and is also fed back to all slaves as the HREADY input.

谢谢!
就是说如果master第一次发地址的时候
HREADY高低都无所谓
但当数据和地址pipeline起来的时候
HREADY为低让数据延迟
同时也让这时的地址也延迟了?
也就是说
对于Slave来说
master第一次发地址请求时必须立即锁存地址
而正在传输数据的时候master发来的地址不必立即锁存(如果数据还没准备好)?

不能说“master第一次发地址的时候HREADY高低都无所谓”,其实HREADY应该是高的
在master第一次发送地址之前,可以理解为Default Master或者Dummy Master发起了IDLE传输,那么Slave应该相应地给出zero wait state OKAY response,这个OKAY response中HREADY肯定是为高的,且与你所说的“master第一次发送地址”在同一个周期。
如果从设计Slave接口的角度考虑,你是没有办法区分“master是不是第一发地址”的
是“从系统reset开始的第一次”,还是说“很久以前有过传输,中间IDLE了一段时间,然后再有Master发起传输”,这个就很难区分了
FAQ上为什么说“所有Slave都要有一个HREADY输出,还要有一个HREADY输入”,实际上就是让Slave以HREADY输入为高做为条件对HADDR或者HWDATA进行采样的

那图1上为什么master在发地址A的时候
HREADY是无所谓的呢?
另外如图2所说
地址phase只持续一拍
数据phase才根据HREADY决定是否延迟
所以我的理解是
HREADY只是表示数据是否延迟
跟发地址无关
当Master发地址时只持续一拍,不看HREADY
Slave必须立即所存Master发来的地址

发现楼上两位其实在讲不同的东西,一个在问得到总线控制权后如何传数据,一个在讲如何得到总线控制权。其实lz的问题AMBA白皮书上写的很清楚:
(1)当Maste第一拍发出地址100的时候
Slave应该把HREADY置为高还是低?

如果你说的是第一个地址的话,那hready肯定是高电平,想想master是怎么得到总线控制权的。
Ownership of the address/controlsignals changes at the end of a transfer when HREADY is
HIGH, so a master gets access to the bus when bothHREADY and HGRANTx are HIGH.
如果你说的是第N个地址的话,嗯,那的确不需要考虑Hready是高是低,其实如果hready是低的话,master还要再传一遍该地址的
  
(2)另外Master的地址请求是不是只持续一拍?
Slave无论如何必须锁存Master发来的地址
否则以后Master的地址就变掉了?
也就是说Slave只能通过HREADY延后数据的传输
不能延后地址的传输?

白皮书上有不解释了:The address cannot be extended and therefore all slaves must sample the address during this time. The data, however, can be extended using the HREADY signal. When LOW this signal causes wait states to be inserted into the transfer and allows extra time for the slave to provide or sample data.
  
以上只考虑一个Master一个Slave的情况

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top