FPGA学习笔记_AMBA总线1

FPGA学习笔记

AMBA总线

1. AMBA简介
2. AHB简介

AMBA总线

1. AMBA简介

  • AMBA总线是ARM研发的(Advanced Microcontroller Bus Architecture),高级微控制器总线体系;是一种开放的协议,主要用于SoC内部和ASIC,用于连接各种功能模块;
    2.0版AMBA标准定义了三组总线:AHB(AMBA高性能总线)、ASB(AMBA系统总线)、和APB(AMBA外设总线)。

2. AHB简介

  • AHB(AMBA高性能总线the Advanced High-performance
    Bus),应用于高性能、高时钟频率的系统模块,它构成了高性能的系统骨干总线( back-bone bus )。

  • 主要支持的特性

    ① 支持数据突发传输( burst transfer ),数据分割传输( split transaction )
    ② 支持字节、半字节和字的传输
    ③ 多主机
    ④ 一个周期内完成总线主设备( master )对总线控制权的交接
    ⑤ 单时钟沿操作
    ⑥ 非三态执行
    ⑦ 更宽的数据总线宽度(最低32位,最高可达1024位,但推荐不要超过256位)


  • AHB 系统:主模块、从模块和基础结构(Infrastructure)3部分组成。

    整个AHB总线上的传输都由主模块发出,由从模块负责回应。

    基础结构(Infrastructure):仲裁器(arbiter)、主模块到从模块的多路器、从模块到主模块的多路器、译码器(decoder)、虚拟从模块(dummy Slave)、虚拟主模块(dummy Master)所组成。

    • AHB主机: 通过提供地址和控制信息发起读/写操作。任何时候值允许一个总线主机处于有效状态并使用总线。
    • AHB从机:在给定的地址空间范围内响应读/写操作。将成功,失败,等待数据传输的信号返回给有效的主机
    • AHB仲裁器:确保每次只有一个主机被允许发起数据传输。AHB必须包含一个仲裁器。.
    • AHB译码器:对每次传输进行地址译码且在传输中包含一个从机选择信号
      注意:所有的AHB执行必须仅仅要求一个中央译码器

  • BUS上传输信号类型7种
    clock,arbitration,address,control signal,write data, read data, response data.
    经过主到从MUX的信号:address, control signal, write data;
    经过从到主MUX的信号:read data, response sgnal.

    虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。

    AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构。

  • 信号描述在这里插入图片描述
    在这里插入图片描述


  • Basic Transfer 基本传输

    完整的transfer分为两个阶段:address phase,data phase:
    Address phase:传送 address, control signal;1个clock cycle内完成;
    Data phase:传送write/read data,response signal;无法在1个clock cycle内完成,slave可用HREADY信号延长transfer,当HREADY为low时,表示transfer尚未结束,为High表示transfer结束。
    为了增加总线性能,AHB可以进行多次transfer pipeline。当前transfer的data phase与下一次transfer的address phase是重叠的。


  • Control signal 控制信号
    5类:
    HTRANS[1:0]: Transfer type,传输类型

    00:IDLE 指示slave忽略目前的transfer
    01:BUSY Burst transfer时,若master无法及时将数据准备好,发出BUSY通知slave
    10:NONSEQ 指示目前transfer的address和control signal和之前的transfer不一样
    11:SEQ 指示目前transfer的address和control signal和之前的transfer一样,通常用在burst transfer中

    HBURST[2:0]: Burst type,突发类型
    在这里插入图片描述
    HPORT[3:0]: Protection control,保护控制
    让master提供额外的protection information。Slave在设计时尽量不适用HPROT信号。
    在这里插入图片描述
    HSIZE[2:0]: Transfer size,传输大小
    在这里插入图片描述
    HWRITE: Transfer direction,传输方向

    HWRITE=1:master在data phase将数据置于write Data bus HWDATA[31:0]上,传输给slave;
    HWRITE=0:slave在data phase将数据置于read data bus HRDATA[31:0]上,传输master。


  • SLAVE Response

    Transfer结束时,slave用HRESP[1:0]告诉master结束状态。

    AHB中transfer结束状态4种

    OKAY: 表示transfer成功,1个clock
    ERROR: 表示transfer失败,2个clock
    READY, SPLIT:当slave判断目前的transfer需要很多歌bus cycle才能完成,为了避免当前的transfer将bus一直占有,回应READY/SPLIT response给master,表示目前的transfer并未完成,master需要重新发送相同的transfer再试一次。二arbiter可以将bus释放给其他需要的master。

    READY, SPLIT区别
    RETRY: arbiter内master的优先权不变,有优先权的master有限发出request,bus还是由高优先权的master获得。2个clock。
    SPLIT: 当arbiter观察到master收到SPLIT response时。则该master的优先权mask起来,使其无法获得bus。若所有的master抖收到了SPLIT,则arbiter把bus交给dummy master(只会发出IDLE transfer)。当发出HSPLIT response的slave处理完transfer之后,会发出HSPLIT信号给arbiter,将master的优先权unmask。2个clock。
    SPLIT能让低优先权的master在合理的情况下,取得bus的所有权,让AHB有更好的设计。缺点:设计更复杂。


  • Arbitration仲裁

    ① 当主机master想要access bus时,令HBUSREQ=1,arbiter在HHCLK的上升沿采样各个master的HBUSREQ信号后,令拥有最高优先权的master的HGRANT信号 =1,使其能够access bus。

    ② 当主机master正在传输burst transfer,如果有最高优先权的主机发送了请求信号request,arbiter可以等待当前burst完成后再 将bus grant给新的master,也可以中断当前的transfer,将bus交给优先级更高的主机master。被中断的master需要重新发出request,等到下次被grant bus是继续完成burst transfer。

    ③ 当arbiter在当前的burst结束后,转移bus的所用权,arbiter会在倒数第二个transfer的address被sample之后,改变HRANT信号,所有新的HGRANT信号会跟最后一个transfer的address一起在同一个时间被sample。

    ④ READY/ SPLIT response时,其第二个cycle必须时IDLE transfer以便让arbiter去改变bus owner。


[参考资源] https://wenku.baidu.com/view/382b16a1cc1755270622087d.html

【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值