博客
关于我
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/

你可能感兴趣的文章
python3简单使用requests 用户代理,cookie池
查看>>
Python3组播通信编程实现教程(发送者+接收者)
查看>>
Python3编写网络爬虫10-数据存储方式三-CSV文件存储
查看>>
python3读取redis返回数据带有'b'的问题
查看>>
Python3连接MySQL
查看>>
Python关于isinstance函数的解析 | 附Demo(全)
查看>>
Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
查看>>
python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
查看>>
python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
查看>>
Python: AES加密与解密
查看>>
Python: Range() 最大尺寸;动态的还是静态的?
查看>>
Python: Windows下用 multiprocessing 的深坑
查看>>
python:Could not find platform independent libraries <prefix>解决方法
查看>>
Python:datetime tzinfo 时区名称文档
查看>>
Python:deepcopy(list) vs new_list = old_list[:]
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
查看>>
Python:TypeError:无法连接“str“和“int“对象
查看>>
Python:XPath 在 ElementTree 中不可用
查看>>