博客
关于我
AMBA标准总线接口
阅读量:215 次
发布时间:2019-02-28

本文共 1389 字,大约阅读时间需要 4 分钟。

AMBA总线架构概述

AMBA(Advanced Multi-Bus Architecture)是一种高级处理器总线架构,旨在满足高性能SoC设计中多样化速率需求的通信标准。其主要分为三种总线:AHB、高级高性能总线;APB、高级外围总线;AXI、高级可拓展接口。

AHB高性能总线

AHB主要面向高效率、高频宽度和快速系统模块设计。它能够连接微处理器、芯片上或芯片外的内存模块和DMA等高效率模块。

AHB接口组成

  • Master:负责发起读写操作,提供地址和控制信号,同一时间只允许一个Master激活。
  • Slave:在指定地址范围内响应读写操作,并向Master反馈成功、失败或等待状态。
  • Arbiter:负责确保总线上仅有一个Master工作,仲裁协议可根据应用定制。
  • Decoder:解码地址并向各Slave提供片选信号,AHB需配备一个仲裁器和一个中央解码器。

AHB多总/从设备架构

Master的地址和数据由Arbiter进行仲裁,发送至Slave。Decoder负责将Slave的数据发送回相应的Master。

AHB基本信号

  • HADDR:32位系统地址总线。
  • HTRANS:表示传输状态(NONSEQ、SEQ、IDLE、BUSY)。
  • HWRITE:传输方向(1-写,0-读)。
  • HSIZE:传输单元大小。
  • HBURST:传输burst类型(SINGLE、INCR、WRAP4、INCR4)。
  • HWDATA:写数据总线。
  • HREADY:表示读写操作完成状态。
  • HRESP:Slave对当前传输状态的应答(OKAY、ERROR、RETRY、SPLIT)。
  • HRDATA:读数据总线。

AHB传输基本流程

  • 地址周期(AP):仅需一个周期。
  • 数据周期(DP):由HREADY信号决定,可能需要多个周期。
  • 流水线传输:先地址周期,再数据周期。

等待传输状态

HREADY信号需保持高电平才能读写数据。

APB高级外围总线

APB主要用于低带宽的外设,如UART、I2C。其架构不同于AHB的多主设备架构,APB总线的唯一主设备是APB桥,与AXI或其他总线相连,因此无需仲裁请求/授予信号。

APB特性

  • 两阶段时序协议。
  • 读写操作需两个时钟周期完成。
  • 不需要等待周期和回应信号,控制逻辑简单。
  • 只需四个控制信号:PSELx、PENABLE、PADDR、PWRITE。

APB状态机

系统初始化为IDLE状态,无传输操作。当有传输需求时,PSELx和PENABLE信号同时激活,系统进入SETUP状态。PCLK下一个上沿后,系统进入ENABLE状态。在ENABLE状态下,地址信号和写信号保持不变,传输完成。若无新传输需求,系统进入IDLE状态。若有连续传输需求,系统自动进入SETUP状态。

写操作

写操作伴随地址线、写数据线、写信号线和选择线的变化。写操作的第一个周期为SETUP周期,随后进入ENABLE周期。在ENABLE周期结束后,本次写操作完成。PENABLE在写操作完成后与PSEL同时拉低,除非有连续传输需求。地址信号和写信号在传输完成后保持不变,直到下一次传输。

读操作

读操作的地址线、写信号线和选择线与写操作时相同。在ENABLE周期内,Slave需通过PRDATA信号向Master返回读数据。PRDATA信号在ENABLE周期的下一个周期被采样。

转载地址:http://zjpi.baihongyu.com/

你可能感兴趣的文章
PyQt MimeData 文件名
查看>>
PyQt QML Material Design 按钮背景不会改变
查看>>
PyQt QString转成python stirng
查看>>
PyQt QToolButton在焦点时不更新图标
查看>>
PyQt 正确使用 emit() 和 pyqtSignal()
查看>>
PyQT-将文件复制到剪贴板
查看>>
PYQT.如何在QTableView中插入小部件
查看>>
PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用
查看>>
PyQt4 到 PyQt5 ->mainFrame() 已弃用,需要修复才能加载网页
查看>>
PyQt4, class:mouseButtons用法
查看>>
PyQt4参考文档
查看>>
PyTorch Lightning:通过分布式训练扩展深度学习工作流
查看>>
PyQt5 - QThread:在线程仍在运行时被销毁
查看>>
PyQt5 - 如何从工作线程发出信号以通过 GUI 线程调用事件
查看>>
PyQt5 Designer 不工作:此应用程序无法启动,因为无法初始化 Qt 平台插件
查看>>
PyQt5 QLCNumber 没有更新
查看>>
PyQt5 TabWidget选项卡BarClicked TypeError:本机Qt信号不可调用
查看>>
PyQt5 从 PyQt4 转换信号代码
查看>>
PyQt5 和 asyncio:从永不完成的收益
查看>>
PyQt5 和 Django:如何使用 HTTP 请求(Multipart-form)上传图像?
查看>>