ahb 总线架构

AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接。APB用于连接外部设备,对性能要求不高,而考虑低功耗问题。ASB是AHB的一种替代方案。现在已经有AHB V5.0。

AHB总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线主机、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。AHB可以成为一个完整独立的SOC芯片的骨架。

AHB特点:

分块处理
单周期总线主机移交
单时钟沿操作

无需三态门的实现方式
更宽的数据总线架构(64位或者128位)
流水线操作
可支持多个总线主设备(最多16个)

 ahb 总线组成

AHB总线由AHB总线主机(Master)、AHB总线从机(Slave)和Infrastructure构成。Infrastructure由仲裁器、数据多路选择器、地址控制多路选择器、译码器构成。

AMBA AHB 总线协议设计使用一个中央多路选择器互联方案。该方案中,所有总线主机设备输出地址和控制信号来指示它们想执行的传输,同时仲裁器决定哪一个主机能够将它
的地址和控制信号连通到所有的从机。当然也需要一个译码器来控制读数据和响应多路信号选择器,多路信号选择器选中来自传输中所包含从机的适当信号。

AHB 主机: 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。
AHB 从机: 总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。
AHB 仲裁器: 总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能够根据应用要求而得到执行。AHB 必须只包含一个仲裁器,尽管在单总线主机系统中这显得并不重要。
AHB 译码器: AHB 译码器用来对每次传输进行地址译码并且在传输中包含一个从机选择信号。
所有 AHB 执行都必须仅要求有一个中央译码器。

master interface

slave interface

master侧时序和信号分析:

  • hburst[2:0] :用于控制突发类型(模式)
  • hbusreq

    master向bus仲裁器申请bus总线使用权;最多可以有16个master。

  • hlock

    当该信号为高时,表示master请求锁定对总线的访问,在HLOCK为LOW之前,其他master不允许获得总线。

  • HSIZE[2:0]

  • HTRANS[1:0]

    在wait Undefine Length busrt(INCR)的传输期间,当HREADY为低时,允许主机从BUSY改变为任何其它传输类型。如果执行SEQ传输,则burst继续,如果执行IDLE或NONSEQ传输,则burst终止。在T3~T5,HREADY为LOW时,HTRANS需保持。

  • HPROT

    HPROT[6:4]是AHB5新增的,用来表示extended memory types,如果Extended_Memory_Types是True,HPROT[6:4]有效。 Issue A of this specification defined a 4-bit HPROT signal, which is described in this section.
    Issue B of this specification adds extended memory types and this is described in more detail in Memory types on page 3-45.
    -------------Note---------------
    The name of HPROT[3] is changed between Issue A and Issue B of this specification, but the definition remains the same. In Issue A HPROT[3] was designated Cacheable, in Issue B it is designated Modifiable.                                                                                  
    -------------------------------------------------------------------------------------------------------------------------------                                                    The protection control signals, HPROT[3:0], provide additional information about a bus access and are primarily intended for use by any module that implements some level of protection.

    slave一般不使用HPROT信号。(Bufferable和Cacheable的区别详见相应博客随笔)

    AHB5 defines the Extended_Memory_Types property. This property defines whether an interface supports the extended memory types described in this section. If this property is not defined, then the interface does not support the extended memory types.
    This issue of the specification adds additional HPROT signaling and provides a more detailed list of requirements for each of the memory types.
    该规范的这一期增加了额外的HPROT信令,并提供了每种存储器类型的更详细的要求列表。     

  • HGRANT:

  • HRESP[1:0]

    在AHB 5.0中描述如下:

    在AHB 2.0中描述如下:

    除了OKAY之外,其他都需要两拍;RETRY和SPLIT的发生时,当前master都会释放总线,区别如下:

    • The difference between SPLIT and RETRY is the way the arbiter allocates the bus after a SPLIT or a RETRY has occurred:
      • For RETRY the arbiter will continue to use the normal priority scheme and therefore only masters having a higher priority will gain access to the bus.
      对于RETRY,只有较高优先级的master可以获得总线。
      • For a SPLIT transfer the arbiter will adjust the priority scheme so that any other master requesting the bus will get access, even if it is a lower priority. In order for a SPLIT transfer to complete the arbiter must be informed when the slave has the data available. 
      对于SPLIT,仲裁器会调整优先级,让其他所有master都可以获得总线,即使是优先级低的master也可以获得总线,当slave有足够的空间完成split传输时,通知arbiter,arbiter恢复master的优先级,等待高优先级传输完成之后,传输该master的split传输。
    • The SPLIT and RETRY responses provide a mechanism for slaves to release the bus when they are unable to supply data for a transfer immediately. Both mechanisms allow the transfer to finish on the bus and therefore allow a higher-priority master to get access to the bus

   疑问:当slave返回split之后,arbiter仍然按照优先级优先处理其他优先级mater的业务,还是处理完上一个master的业务之后,优先初理split?----恢复该master的优先级,按照优先级正常传输。

slave侧时序和信号分析:

  • HSPLIT[15:0]:当slave认为需要多次初理时,用于分割传输,该信号在slave和arbiter之间使用。

  • hmaster[3:0]:用来表示哪个master正在占用总线

  • hmastlock:表示当前master正在执行锁定的传输序列,该信号与hmaster具有相同的时序。

    参考资料:

    https://www.cnblogs.com/mikewolf2002/p/10335422.html

ahb时序解析的更多相关文章

  1. AHB接口转APB

    AHB接口转APB 情景 有一个以AHB接口时序设计的IP,现在需将其移至APB总线上,即将使用APB接口时序驱动该IP. 基本思路 将APB的接口信号映射到AHB的接口信号 要点 APB挂接在AHB ...

  2. ARM40-A5应用——fbset与液晶屏参数的适配【转】

    转自:https://blog.csdn.net/vonchn/article/details/80784579 ARM40-A5应用——fbset与液晶屏参数的适配 2018.6.18 版权声明:本 ...

  3. 海思hi35xx 开发学习(3):视频输入

    视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVDS 接口和 HISPI 接口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口接收视频数据.V ...

  4. AHB2reg接口转换

    assign mcu_xxx_addr = (rd_after_wr_reg || reg_valid_write_trans) ? haddr_reg[ADDR_WIDTH+:] : haddr[A ...

  5. 3. 海思Hi3519A MPP从入门到精通(三 视频输入)

    视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVDS 接口和 HISPI 接 口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口接收视频数据. ...

  6. Hi3559AV100的VI细节处理说明

    因为项目后期涉及到MPP平台下的VI接口,现把有关视频输入VI模块的实现细节总结,也方便大家进一步了解. 1.整体概述 视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVD ...

  7. 时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析

    InfluxDB 的存储机制解析 本文介绍了InfluxDB对于时序数据的存储/索引的设计.由于InfluxDB的集群版已在0.12版就不再开源,因此如无特殊说明,本文的介绍对象都是指 InfluxD ...

  8. 时序数据库 Apache-IoTDB 源码解析之文件数据块(四)

    上一章聊到行式存储.列式存储的基本概念,并介绍了 TsFile 是如何存储数据以及基本概念.详情请见: 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三) 打一波广告,欢迎大家访问Io ...

  9. 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)

    上一章聊到在车联网或物联网中对数据库的需求,以及 IoTDB 的整体架构,详情请见: 时序数据库 Apache-IoTDB 源码解析之系统架构(二) 打一波广告,欢迎大家访问IoTDB 仓库,求一波 ...

随机推荐

  1. Ebiten-纯Golang开发的跨平台游戏引擎

    Go语言不是让你玩的啊喂! 昨天跟好基友聊开发的事,他说他等着闲下来的时候就用PYGame写个像那个最近挺火的"文X游X"一样的游戏.(没收广告费啊!) 基友突然嘲笑我:" ...

  2. Android实现自动登录和记住密码

    效果图: 在勾选自动登录后下次打开软件会直接跳过登录界面 代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate ...

  3. Java面向对象系列(7)- 什么是继承

    继承 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模 extands的意思是"扩展".子类是父类的扩展 JAVA中类只有单继承,没有多继承 继承是类和类之间的一种关系. ...

  4. [转载]ssh证书登录

    转载链接 前言 本文基于实际Linux管理工作,实例讲解工作中使用ssh证书登录的实际流程,讲解ssh证书登录的配置原理,基于配置原理,解决实际工作中,windows下使用SecureCRT证书登录的 ...

  5. 在自己的项目中使用PCL

    在自己的项目中使用PCL项目设置:1.创建cpp文件,如pcd_write.cpp,文件内容如下例: #include <iostream>#include <pcl/io/pcd_ ...

  6. 【大咖直播】Elastic 企业搜索实战工作坊(第一期)

    借助 App Search 提供的内置功能,您可轻松打造卓越的搜索体验.直观的相关度调整以及开箱即用的搜索分析,不仅可以优化所提供的内容,其提供的 API 还可帮助您将位于各处的所有内容源关联在一起. ...

  7. kubeadm 命令简介

    kubeadm 命令 kubeadm init 启动一个kubernetes主节点 kubeadm join 启动一个kubernetes工作节点并加入到集群中 kubeadm upgrade 更新一 ...

  8. P2150-[NOI2015]寿司晚宴【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P2150 题目大意 将\(2\sim n\)选出一些分成两个集合,要求这两个集合中没有一对数不是互质的.求方案数对\ ...

  9. 几分钟就能学会的Python虚拟环境教程

    什么是虚拟环境 我们在使用Python的时候,通常用pip来进行包管理.比如我们要安装一个叫requests的库,那么我们就会采用以下命令去安装: pip install requests 那你知道, ...

  10. Java 开发最容易写的 10 个bug

    原文链接:10 个让人头疼的 bug 那个谁,今天又写 bug 了,没错,他说的好像就是我...... 作为 Java 开发,我们在写代码的过程中难免会产生各种奇思妙想的 bug ,有些 bug 就挺 ...