总线学习记录

目录

1. 总线介绍

1.1 总线概念

1.2 MCU总线结构

2. AMBA系列总线

2.1 AMBA系列总线:AXI总线

2.1.1 AXI总线概念

2.1.2 AXI传输数据

2.1.3 AXI握手协议

2.1.3.1 读操作握手流程

2.1.3.2 写操作握手流程

2.2 AMBA系列总线:AHB总线

2.2.1 AHB总线概念        

2.2.2 AHB总线传输

2.3 AMBA系列总线:APB总线

1.3.1 APB总线概念

1.3.2 APB总线传输


1. 总线介绍

1.1 总线概念

        总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。
        总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。

1.2 MCU总线结构

2. AMBA系列总线

        AMBA 全称叫 Advanced Microcontroller Bus Architecture,即高级处理总线架构。其下包含了AHB、ASB、APB、AXI等几种总线。

AHB:高性能总线,主要连接高性能、高频率的模块,比如CPU、DMA、片内片外存储器等;

ASB:比较少使用;

APB:主要连接低速外设;

AXI:功能更加强大,高速度,高带宽,管道化互联,非对齐传输,各种功能都支持,用在高端MCU中;

2.1 AMBA系列总线:AXI总线

2.1.1 AXI总线概念

        AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。AXI是AMBA中一个新的高性能协议,AXI技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。

2.1.2 AXI传输数据

AXI传输数据是全双工的。也就是说,读写是同时进行的。一条AXI总线上有5个通道(channel),其中两个用于读操作(分别是读地址channel、读数据channel),三个用于写操作(分别是写地址channel、写数据channel、写回复channel)。每个传输通道都是单方向的。

AXI写操作:

        首先,master通过写地址channel给slave发送一个地址;slave收到信号后,master就可以通过写数据channel往salve送数据;写完以后,slave通过写回复channel 给master一个结束信号,这就是一次AXI写操作。写回复channel其实2个BIT,能代表四种状态,可以表示传输成功、传输失败等状态。

AXI读操作:

        AXI读操作如上,master通过读地址channel给slave发送一个地址,slave通过读数据channel给master返回数据,这就是一次AXI写操作。读操作只需要两个通道,返回的数据和传输完成信号都是用读数据channel一并传输。

2.1.3 AXI握手协议

        AXI总线有5个通道,每个通道为了调节速度,保证传输,都采用了ready、valid握手协议的办法。传输源产生 valid信号来指明何时数据或控制信息有效,目地源产生给出ready 信号来指明已经准备好接受数据或控制信息,只有当ready和valid都是高的时候,才能传输数据。   

VALID信号和 READY 信号的出现顺序有三种情况:

  1. (1)VALID信号先于READY信号拉高;
  2. (2)READY信号先于VALID信号拉高;
  3. (3)VALID信号和READY信号同时拉高;

        如上图所示,为第一种情况,VALID信号先于READY信号拉高。但是无论是那种情况,即valid和ready哪个先来并不重要,只有两者同时拉高后,information才能开始传输,且传输在时钟上升沿发生,即在T3处发生。

2.1.3.1 读操作握手流程

  1. 从机可以在ARVALID出现的时候在给出ARREADY信号,也可以先给出ARREADY信号,再等待ARVALID信号。
  2. 从机必须等待ARVALID和ARREADY信号都有效才能给出RVALID信号,开始数据传输。

使用这上图将读操作整个过程梳理一下。

  • 在位置 1 、2 的时候主机发送了地址 ARADDR,并且 ARVALID 以及 ARREADY 为高,此时就完成了地址的传送。
  • 在位置 2、3、4 、5、6的时候从机发送了数据 RDATA,并且RVALID 以及 RREADY 为高,此时就完成了数据的读取。
  • 在位置 4、6 的时候由于是最后一个数据因此还发送了 RLAST,此时就完成了全部的数据读过程。
  • 上面的波形示意图中实际上省略了RRESP这个信号。

2.1.3.2 写操作握手流程

  1. 主机不可以等待从机先给出AWREADY或WREADY信号后再给出信号AWVALID或WVLAID。
  2. 从机可以等待信号AWVALID或WVALID信号有效或者两个都有效之后再给出AWREADY信号。
  3. 从机可以等待AWVALID或WVALID信号有效或者两个信号都有效之后再给出WREADY信号

使上图将整个写操作过程梳理一下:

  • 在位置 1 的时候主机发送了地址 AWADDR,并且 AWVALID 以及 AWREADY 为高,此时就完成了地址的传送。
  • 在位置 2、3、4 的时候主机发送了数据 WDATA,并且 WVALID 以及 WREADY 为高,此时就完成了数据的传送。
  • 在位置 5 的时候主机发送了数据 WDATA 并且由于是最后一个数据因此还发送了 WLAST, WVALID 以及 WREADY 为高,此时就完成了最后一个数据的传送。
  • 在位置 6 的时候从机发送了反馈 OKAY,并且 BVALID 以及 BREADY 为高,此时就完成了全部的数据写过程。

2.2 AMBA系列总线:AHB总线

2.2.1 AHB总线概念        

        AHB,全称Advanced High Performance Bus,高级高性能总线,是一种总线接口。AHB 是第AMBA协议最重要的一部分。AHB总线的强大之处在于它可以将微控制器CPU、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等连接起来构成一个独立的完成SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。

        

AHB常见架构如上图所示。完整的AHB总线由四个部分构成:

  1. AHB主设备Master:发起一次读/写操作,某时刻只允许一个主设备使用总线。
  2. AHB从设备Slave:响应一次读/写操作,通过地址映射来选择使用那个从设备。
  3. AHB仲裁器Arbiter:允许某一个主设备控制总线。仲裁机制保证了任意时刻只有一个master可以接入总线。arbiter决定哪个发出接入请求的master可以接入总线,这通过优先级算法实现
  4. AHB译码器Decoder:通过地址译码来决定选择哪一个从设备。

AHB总线互联框架如上图所示,总线分为三组:

  1. 写数据总线:HWDATA
  2. 读数据总线:HRDATA
  3. 地址控制总线:HADDR,其他控制信号如hsel,htrans,hwrite,hburst

2.2.2 AHB总线传输

AHB完整传输过程分为以下几个部分:

  1. 主机获取总线使用权:主机向仲裁器发送总线请求信号,仲裁器发送应答后主机可以开始传输。
  2. 数据传输:主机向从机传输数据,分为以下两个部分:
    • 发送地址和控制信号:包括地址,位宽,突发类型(增量突发和回卷突发)等控制信号,仅一个时钟周期
    • 数据传输:进行数据交换,一个或多个时钟周期
  1. 从机应答:从机通过HRESP和HREADY标记完成状态,对于HRESP,有以下状态:
    • OKAY:标记传输完成,当HRESP为该状态且HREADY拉高时,传输完成
    • ERROR:标记传输出错
    • RETRY和SPLIT:标记传输未完成,主设备仍需要占用总线

2.3 AMBA系列总线:APB总线

1.3.1 APB总线概念

        APB的全称为Advanced Peripheral Bus,高级外设总线,是AMBA总线的一部分,主要用于低带宽的周边外设之间的连接,例如UART、I2C等。它的总线架构不支持多个Master,在APB总线里面唯一的Master就是APB桥,其它的低速和低功率的外围皆为 Slave,因此APB总线不需要AHB总线中的仲裁器及其它复杂的线路,APB总线简单许多,如下图所示:

其特性包括:

  1. 低带宽;
  2. 高性能;
  3. 非流水作业,至少需要两个时钟周期传输,且数据均在时钟上升沿变化;
  4. 无需等待周期和回应信号;
  5. 控制逻辑简单,只有四个控制信号,且APB上的传输可采用状态机表示。

1.3.2 APB总线传输

上图是APB的状态机,其中SETUP状态是APB总线的典型状态,有利于IP实现低功耗。

  1. IDLE:这个是 APB 的默认状态,也就是没有传输时候的状态;
  2. SETUP:当需要进行一个传输的时候,APB 首先进入这个状态;PSELx 信号首先拉高;总线仅仅在 SETUP 状态停留一个时钟周期,然后接着在下一个时钟的上升沿进入 ACCESS 状态;
  3. ENABLE:在 SETUP 状态转换到 ENABLE,PENABLE 信号被拉高;在 SETUP 状态转换到 ENABLE状态这段时间里,address,write,select 和 write data 信号必须保持稳定;处于 ENABLE状态下,如果 PREADY 为 0,会让其继续处于 ENABLE状态;否则,PREADY 为 1,如果还有传输则再次进入 SETUP -> ENABLE,如果没有传输,直接回到 IDLE;

读写传输时序:分为不带等待信号的读、写,和带等待信号的读、写。

 能看到这里,你可真是个狠人,相信已经很累了吧,那就扫个码吧,让你放松一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

原海青木

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

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

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

打赏作者

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

抵扣说明:

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

余额充值