AHB总线笔记(三)附AMBA2.0面试提问

一种特殊的AMBA系统(叠加结构)

叠加在一起的AMBA系统Multi-layer:

并行的访问可以提高系统的带宽。 

AHB-Lite 

        假设AHB上面只有一个master,再这个系统下面不需要request,不需要grant,压根就不需要arbiter,slave也是一样会更加简单,不需要RETRY也不需要SPLIT,只需要返回ERROR或者OKAY 。

AHB总结

※ 主要组成部分:

    Master、slaves、arbiter、decoder 。

※ 传输的过程:

    流水线机制,有address phase 和data phase。

※ 提高性能:

    Burst read/Write。

※ 仲裁机制:

    总线控制权的移交。

※ 如果slave短时间内无法响应

    可以把HREADY拉低

※ 如果slave长时间无法响应

    可以插入SPLIT或者RETRY

※ 如果master不能进行传输

    master的HTRANS插入BUSY,注意BUSY和IDLE的区别,BUSY是插在同一个burst中间,而IDLE是插在两次burst中间。

※ Arbiter 的优先级最好可以配置。

※ 如果slave长时间不能响应的话,一般不支持SPLIT响应,使用RETRY响应。

※ 总线上如果只有一个Master的话,可以使用AHB Lite协议,不用arbiter。

APB总线

APB比AHB要简单很多

APB信号: 

        APB总线的信号,开头都是P开头,这点在笔记一有所提到。APB中也有很多的slave ,每个slave也有一段自己的地址空间,address落在哪个地址空间内,哪个PSELx就会拉高。PWRITE = 1的时候就是写操作,PWRITE = 0的时候就是读操作。

PADDR [31:0] 地址总线,由设备总线的bridge单元驱动。

PSELx 从译码器来的信号,到每一个总线从设备x。

PENABLE 用于在设备总线上把所有访问按时间阶段进行。

PRDATA 和 PWDATA 最多32位宽。

APB互连

        APB Master会把AHB输入的CLK、HADDR、HWRITE、HWDATA全部都传输给自己的slave,信号以广播的形式传播给各个slave,但是具体哪个slave能得到相应开始工作还得看PSEL具体选择了哪个slave,选中了slave之后PRDATA读入mux传回给Bridge。

APB写传输 

        APB写操作里面,当选中某个slave时,PSEL信号拉高,选中slave,然后具体是否写入还得看PENABLE是否拉高,只有PSEL和额PENABLE同时拉高时,才可以进行数据写入。APB不是pipeline的形式。APB在PSEL信号拉高后,PENABLE最快也得延迟一个周期拉高,所以APB数据传输最快也得两个cycle才能写入一个数据。

APB读传输

        读传输和写传输一样,最快也得两个周期读一个数据,APB中没有用pipeline,两个cycle一个是SETUP cycle 一个是ENABLE cycle。

        APB协议还有一个PSLVERR信号,PSLVERR是slave驱动的。PSLVERR=1,是apb-slave内部发生错误的指示。可能的错误:
        1):read 了一个只写的地址;write了一个只读的地址;
        2):读或写了slave内部某个没有定义的地址;

        slave就会返回PSLVERR=1给master。

AHB2APB Bridge 

        在上面的APB Bridge里,其实大部分信号都是从AHB接入,或者内部slave输出的,实际上APB需要处理的就是PENABLE信号。而这个ENABLE信号的产生是通过一个状态机产生的。

        下图为ENABLE信号产生的FSM :

 APB slave接口

APB到AHB接口

假设要做一个AHB的master,要去读APB的信号。

         AHB每两个cycle才能读一个,因为APB最快读数据也得两个cycle。如果AHB和APB的时钟频率是一样的,那么PRDATA读出来可以直接赋值给HRDATA,但是如果APB的时钟频率更低,那么就不能直接赋值,需要把值用寄存器存一下,然后在返回给AHB。这一张图就可以把APB的信号传输说清楚了,不管是读和写,都先给一个PSEL,然后在下一个周期PENABLE拉高,进行读或者写操作。

        每一个从设备都占用系统的一段地址空间。所有的从设备都是可寻址的。寄存器/存储器都是内存映射方式访问。CPU/IP读写其他IP的数据类似于读写存储器。 

CPU和IP之间的通信

        CPU 和 IP 进行通信,CPU总是主设备,IP总是从设备,IP可以发送一个中断请求,CPU 进入中断模式就可以去读slave的状态寄存器,来判断你到底想汇报一个什么事情,由interrupt service routine(ISR)来处理中断。

        比如DMA和 CPU之间的通信,DMA的状态寄存器就是Status, 存放的地址空间为0x04,有ready和busy两种状态。由DMA向CPU发起一次中断,然后CPU进入中断模式,去读DMA状态寄存器中的状态,如果状态为ready,并且要发起一次数据搬运start,那么就可以给DMA传输起始地址、终止地址和数据长度,把数据搬运的任务交给DMA。 

AMBA2.0面试高频问题

学完AMBA 2.0 知道了AHB和APB的协议,需要彻底掌握:

1.AHB有哪些组成部分?

2.APB有哪些组成部分?

3.AHB信号由哪些?分别有什么作用?

4.AHB传输有几个阶段?哪些阶段?

5.burst传输时如何开始一段新的INCR传输?

6.burst传输能超越1K边界吗?为什么?如果跨越1K边界要怎么处理?

7.HSEL信号是如何得到的?

8.AHB slave有哪些响应信号?

9.AHB slave短时间无法响应怎么办? 长时间无法响应怎么办?

10.AHB HTRANS中的IDLE和BUSY有什么区别?

11.AHB slave的HRESP响应的RETRY和SPLIT有什么区别?

12.32bit小印第安序是怎么控制数据总线的有效字节的?如果传输的数据不是32bit而是8bit,那么传输的是哪8bit,由什么判断?

13.master 可以控制总线的条件是什么?

14.什么是AHB lite?

15.APB有哪些信号?分别有什么作用?

16.APB传输有什么特点?

17.AHB和AHB Lite有什么区别?

        如果能完整回答上面的问题,那面试提问 AMBA总线2.0的内容就基本没什么问题了,上面所有问题的答案,都可以在我写的AHB总线笔记里得到答案。

        祝大家找工作顺利。

  • 9
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 在中提到,AMBA AHB协议中的wrapping burst传输指的是通过四拍传输大小为4字节的数据。举例来说,如果传输的起始地址是0x30,那么传输的四个地址分别是0x30、0x34、0x38和0x3C。尽管HBURST被设置为WRAP4,但实际上不会发生wrap,这是AMBA AHB协议允许的。 关于HPROT的默认值,根据,建议对于不需要保护信息的主设备,HPROT的默认值为HPROT = 4'b0011,即非缓存、非缓冲、特权、数据访问。 在复位过程中,AHB信号的状态应处于有效电平(逻辑“0”或逻辑“1”),不应为X态或高阻态。根据的SPEC规定,HTRANS需要为IDLE,同时需要确保系统中所有slave输出的HREADY为高,以避免死锁情况。 当master重新构建被终止的burst传输时,唯一的限制是需要使用合法的burst组合。例如,一个master执行了8拍的burst传输,但在完成3次传输后失去了对总线的控制。剩下的5次传输可以使用SINGLE burst传输、INCR4 burst传输或5拍的INCR burst传输。为了简单起见,建议master使用INCR burst传输重建剩余的传输。 关于AHB如何处理LOCKed SPLITs,根据的说明,当传输被SPLIT时,arbiter将该master从仲裁选择中移除,直到slave指示传输可以完成。在访问被LOCKed时,访问不能被另一个master中断。为了同时处理这两个需求,AHB系统会授予一个"dummy master"仲裁,在锁定传输期间只执行IDLE传输。因为将仲裁授予其他master将违反AHB LOCK相关的协议。当所有请求响应都处于SPLIT状态时,也需要使用dummy master一直发送IDLE传输。 在AMBA AHB协议中,地址总线HADDR不需要作为arbiter的输入。然而,在某些系统设计中,使用地址总线来确定在master之间切换的时间点可能会很有用。例如,arbiter可以被设计为在burst传输边界改变总线所有权。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [AMBA AHB面试题连载(七)](https://blog.csdn.net/iNostory/article/details/119496654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [AMBA AHB面试题连载(六)](https://blog.csdn.net/iNostory/article/details/119467115)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [AMBA AHB面试题连载(八)](https://blog.csdn.net/iNostory/article/details/119525042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃葱的酸菜鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值