APB
APB Usage
- APB主要用于寄存器和外设(GPIO\TIMER\UART)的访问
- CPU 通过AXI接口发出transaction访问外设,AXI-based interconnect接收到AXI transaction,然后通过DRAMC接收到axi访问的请求,访问DRAM数据
- DRAMC中含有寄存器,其中寄存器的值是通过APB进行访问的,所以在AXI-based interconnect中有axi2apb_bridge,进行协议的转化
- CPU访问DMA中的寄存器也是通过APB总线访问
- ARM系统中有CoreSight debug&trace subsystem,调试模块,其于CPU的交互也是通过APB总线

The advantage of APB

- 协议简单
- 频率比较低,功耗低
- 性能比较差
APB2 signals

APB Write Timing

APB read timing

- 一次读写操作需要两个周期,penable为低的时候,处于setup stage,当penable为高的时候处于access stage
Question-1

如果没有penable,是否可以? 在设计APB slave的时候,只要使用psel的第二个时钟上升沿返回数据即可,不需要penable(前提是有clk存在)


Question-2
APB2只定义两个cycle的读写操作?两个cycle是否真的满足APB slave数据的响应?


对于外设而言是由寄存器构成的,通过APB对于外设进行访问和操作,通常是通过寄存器进行的;通常先要program control register,使能外设;查询状态寄存器,状态寄存器满足条件,对相应的数据寄存器进行访问,对于寄存器操作,两个cycle就够了
对于外设内部操作而言,对于如果两个周期没有完成操作,会反应到status register,对于CPU而言,会一直查询status register,状态寄存器满足条件,才能对于数据寄存器进行访问和操作,对于APB而言都是操作寄存器,所以两个cycle是足够的
系统通过软件的方式不断查询外设的状态寄存器,查询外设是不是ready,如果ready执行下一步操作(软件的操作)
AHB3 signal

APB3 write cycle with wait states

APB3 read cycle with slave error


- 当PSEL、PENABLE或PREADY为低电平时,建议但不是必须将PSLVERR驱动为低电平。
- 读传输也可能以错误响应结束,这表明没有有效的读数据可用。上图显示读取传输完成,并有一个错误响应。
APB3 write error

APB4 signals



为什么需要APB4
- cpu可以工作在user mode下或者是privilege mode(IRQ\FIQ\Supervisor\System)下
- 对于支持trustzone的cpu而言,cpu可以工作在Normal World下,也可以工作在Secure World下,对于CPU而言,不同secure状态下,发送出去的transaction是不同的
- user mode下发出的transaction就是normal access
- IRQ\FIQ mode发出的是privilege access


- 写数据总线的每8位有一个PSTRB,因此PSTRB[n]对应于PWDATA[(8n + 7):(8n)]**

APB3和APB4 compatibility
如果将APB3 BUS总线连接到APB4 slave,只需要将WSTRB信号置为1,表示数据有效即可(WSTRB AP3不支持,APB四支持)
PPROT信号取决于APB4的信号是如何设计的,如果APB4 slave只支持privilege mode的访问,PPROT[0]就要置位特权模式下访问的值;如果APB4 slave只支持secure mode的访问,PPROT[1]就要置位secure mode模式下访问的值
如果将APB4 BUS总线连接到APB3 slave,AHB4 BUS支持WSTRB信号,WDATA中有部分有效的数据,有部分无效的数据,但是APB3 slave是不支持的,所以需要设计一个Bridge,先读取APB3 slave地址空间的数据然后把有效的byte写到APB3 slave中

以APB4的slave和APB3的master为例,这个时候应该把PSTRB信号固定为全1,PPROT信号则取决于Slave是如何使用该信号的,根据不同的场景固定为不同的值。
而APB3的slave和APB4的master相连接,这个时候实际上需要一个转接桥,因为本身可能只想写某一个字节,而slave此时不支持也不知道,那就需要一个中间逻辑将pwdata变成想要的值。(比如读回来时32'h2345,想将最高字节改写为6,此时只写一个32'h6000,PSTRB为1000,标志别的字节不要动。这个时候就需要一个中间逻辑将写的数据变成32'h6345)。实际上写起来也很麻烦,因此此时最好将APB3的slave改成APB4协议。
至于APB3和APB2不建议一起用,因为APB2没有PREADY反压机制,因此实际使用起来完全不一样,强行一起用会有巨大的坑。
APB的更多相关文章
- AHB总线和APB总线
AHB主要用于高性能模块(如CPU.DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作:非三态的实现方式:支持突发传输:支持分段传输:支持多个主控制器:可配置 ...
- AHB/APB简介
AHB AHB总线互联结构图 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的 ...
- AMBA总线协议AHB、APB
一.什么是AMBA总线 AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus).ASB (Advanced ...
- AMBA总线协议AHB、APB、AXI对比分析【转】
转自:https://blog.csdn.net/ivy_reny/article/details/56274412 一.AMBA概述 AMBA (Advanced Microcontrolle ...
- APB协议
https://wenku.baidu.com/view/2663f629ef06eff9aef8941ea76e58fafab04592.html https://www.cnblogs.com/l ...
- [转]AMBA、AHB、APB、ASB总线简介
[转]http://www.cnblogs.com/zhaozhong1989/articles/3092140.html 1.前言 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC ...
- AMBA APB总线
前面分析了AHB总线协议.接下来分析APB总线协议. (一) APB总线接口: PCLK APB总线时钟. PRESETn APB总线复位.低有效. PADDR 地址总线. PSELx 从设备选择. ...
- APB总线
APB(Advance Peripheral Bus)是AMBA总线的一部分,从1998年第一版至今共有3个版本. AMBA 2 APB Specfication:定义最基本的信号interface, ...
- ARM芯片stm32中的AHB和APB
AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”.AHB主要用于高性能模块(如CPU.DMA和DSP等)之间的连接.AHB 系统由主 ...
- AHB接口转APB
AHB接口转APB 情景 有一个以AHB接口时序设计的IP,现在需将其移至APB总线上,即将使用APB接口时序驱动该IP. 基本思路 将APB的接口信号映射到AHB的接口信号 要点 APB挂接在AHB ...
随机推荐
- Critical error detected c0000374
我发现出现上述错误是 free 两次内存 float* dd=new float[2]; delete[] dd; delete[] dd;
- 【笔记整理】忽略https证书校验
import requests url = "https://sam.huat.edu.cn:8443/selfservice/" # 默认不忽略ssl证书,如果有证书问题的网站会 ...
- SSM整合 tomcat报错: <严重 [RMI TCP Connection(22)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到>
前提:学了一个暑假 从Javaweb -> mybits ->spring -> spring-mvc 打算跟着网上ssm整合项目做一个项目 在完成最后一步spring对spring ...
- intel 虚拟化 VT-d VT-x VT-c 的区别
intel 虚拟化 VT-d VT-x VT-c 有什么区别,各是什么意思,有什么作用 简单描述理解 VT-d VT-x VT-c VT-d 英文全程为 Virtualization Technolo ...
- 用C实现HashTable
简述HashTable的原理 HashTable是一种数据结构,通过key可以直接的到value,查找值时间总为常数级别O(1). 原理 HashTable底层是使用了数组实现的.数组只要知道了索引, ...
- zookeeper源码(05)数据存储
本文详细分析一下zookeeper的数据存储. ZKDatabase 维护zookeeper服务器内存数据库,包括session.dataTree和committedlog数据,从磁盘读取日志和快照后 ...
- <Python全景系列-1> Hello World,1分钟配置好你的python环境
<从此开始:1分钟配置好你的python环境> 欢迎来到我们的系列博客<Python360全景>!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题, ...
- Java程序接入ChatGPT
目录 0 前言 1 还想体验的小伙伴可以试试 2 Java接入前准备 3 官方支持接入语言 4 调用费用 5 接口调用说明 6 代码实现 6.1 postman调用 6.2 Java调用 7 小结 0 ...
- 关于echarts+vue频繁刷新的造成的内存增长问题
前言 关于解决echarts+ws多次数据刷新渲染,内存增长溢出的尝试. 记录一下,便于下次使用有参考 方法 关闭echarts动画 tooltip的动画设置为false.(echarts动画会缓存, ...
- 云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心
摘要:容器以其独特的技术优势,已经成为业界主流的AI计算框架(如Tensorflow.Caffe)的核心引擎,为了进一步解决企业在AI计算性能与成本上面临的问题,华为云推出了AI容器产品. 容器以其独 ...