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

你可能感兴趣的文章
python两组变量的相关关系散点图_变量是什么?变量间的两种关系——函数关系和相关关系(小学版)...
查看>>
Python中 pass语句的作用
查看>>
python中 urllib, urllib2, httplib, httplib2 几个库的区别
查看>>
python中 yaml库 & json库 & xmltodict库使用
查看>>
python中 将你的名字转化成为二进制并输出
查看>>
Python中*args 和**kwargs的用法
查看>>
Python中*args 和**kwargs的用法
查看>>
Python中*args和**kwargs的使用
查看>>
python中0、1、True、False、if条件
查看>>
python中argparse模块关于 parse_args() 函数详解(全)
查看>>
python中base64编码与解码
查看>>
python中break怎么用_详解Python中break语句的用法
查看>>
python中del函数的垃圾回收
查看>>
Python中DrissionPage的详细解析与实战
查看>>
python中enumerate、变量类型转换
查看>>
python中execute是啥_python – 为什么“c.execute(…)”打破循环?
查看>>
python中exit和break区别_Python中exit()和sys.exit()之间的区别
查看>>
python中h5的用法
查看>>