【ARM AMBA APB 入门 1 -- APB总线介绍】

news2024/11/24 11:27:25

文章目录

    • APB 总线历史
    • 1.1 APB 总线介绍
      • 1.1.1 APB 使用场景
      • 1.1.2 APB 信号列表
      • 1.1.3 APB 状态机
    • 1.2 APB 传输时序
      • 1.2.1 APB 写传输时序
        • 1.2.1.1 Write transfer with no wait states
        • 1.2.1.2 Write transfer with wait states
      • 1.2.2 APB 读时序
        • 1.2.2.1 Read transfer with no wait states
        • 1.2.2.1 Read transfer with wait states
      • 1.2.3 Error Respond
        • 1.2.3.1 Error response Write transfer
        • 1.2.3.2 Error response Read transfer
        • 1.2.3.3 Mapping of PSLVERR

APB 总线历史

ARM APB总线(Advanced Peripheral Bus)是ARM公司推出的一种高速、低功耗的外设总线。它主要用于连接处理器和外设之间的通信,具有简单、灵活、可靠等特点。以下是APB总线的发展历史:

  • APB v1.0:最初的APB总线发布于1996年,它是一种基于8位数据传输的低速总线,主要用于连接一些简单的外设。
  • APB v2.0:随着ARM处理器性能的提升,APB总线也在不断升级。1998年,APB v2.0发布,它支持16位数据传输,速度提高了一倍,同时增加了一些新的特性。
  • APB v3.0:2000年,APB v3.0发布。它进一步提高了总线的速度和可靠性,并增加了一些新的特性,如支持burst传输和split-transaction。
  • APB v4.0:随着SoC(System on Chip)的广泛应用,APB总线也在不断演进。2003年,APB v4.0发布,它支持更高的数据传输速度和更多的特性,如支持DMA(Direct Memory Access)传输和pipelined burst传输。
  • AMBA3 APB:2004年,ARM发布了AMBA3协议,这是一种新的总线架构,它包括了APB、AXI(Advanced eXtensible Interface)和ATB(Advanced Trace Bus)三种总线。其中,APB总线成为AMBA3协议中的低速总线,主要用于连接一些简单的外设。
  • AMBA4 APB:2010年,ARM发布了AMBA4协议,这是一种全新的总线架构,它针对SoC的需求进行了优化,支持更高的数据传输速度和更多的特性。在AMBA4协议中,APB总线仍然作为低速总线的角色存在,但它的性能和可靠性得到了进一步提升。

以上是APB总线的发展历史,随着ARM处理器和SoC的不断发展,APB总线也将不断演进和完善。
—以上内容来自ChatGPT

1.1 APB 总线介绍

1.1.1 APB 使用场景

在SOC设计中,APB 一般作为IP的配置接口,包括低速外设如 I2C, UART, I2S等,也包括 DDR, PCIe, Ethernet 等高速IP,可以方便的实现CPU对外设IP的寄存器配置。系统中一般会实现一个AXI2APB 或者 AHB2APB 的桥接器将 APB 口挂载在系统上。
在这里插入图片描述

1.1.2 APB 信号列表

Y: Mandatory
N: Must not be preset
O: Optional for inputs and outputs
OO: Optional for output ports, mandatory for inputs
C: Conditional, must be present if the property is True
OC: Optional conditional, optional but can only be present if True
在这里插入图片描述

SignalSourceDescription
PCLK时钟源系统时钟,传输发生在上升沿
PRESETn复位源复位信号,低使能
PADDRAPB桥地址信号,最高可达32位
PSELxAPB桥由APB bridge产生的信号,针对每一个Peripheral Bus Slave片选信号,表示x从机是否被选中
PENABLEAPB桥使能信号,标记传输使能
PWRITEAPB桥读/写控制信号,高位写,低为读
PWDATAAPB桥写数据
PREADY从机标记从机是否已将数据发送到总线,高为ready
PRDATA从机读数据
PSLVERR从机故障信号,高为发生故障

APB 总线架构不支持多个主模块,其唯一的主模块(master)就是 APB桥, 此外,在 APB 总线中分别有 PWDATAPRDATA,但这并不表示它支持同时读写。

1.1.3 APB 状态机

在这里插入图片描述

  • IDLE:这个是 APB 的默认状态,也就是没有传输时候的状态;
  • SETUP:当需要进行一个传输的时候,APB 首先进入这个状态;PSELx 信号首先拉高;总线仅仅在 SETUP 状态停留一个时钟周期,然后接着在下一个时钟的上升沿进入 ACCESS 状态;
  • ACESS:在 SETUP 状态转换到 ACCESS,PENABLE 信号被拉高;在 SETUP 状态转换到 ACCESS 状态这段时间里,address,write,select 和 write data 信号必须保持稳定;
    处于 ACESS 状态下,如果 PREADY 为 0,会让其继续处于 ACCESS 状态;否则,PREADY 为 1,如果还有传输则再次进入 SETUP -> ACCESS ,如果没有传输,直接回到 IDLE;

1.2 APB 传输时序

1.2.1 APB 写传输时序

写传输分为不带等待信号的写,和带等待信号的写。

1.2.1.1 Write transfer with no wait states

在这里插入图片描述

  • T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP;
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS;
  • T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低。

1.2.1.2 Write transfer with wait states

在这里插入图片描述

  • T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,同时拉高 PSEL,从 IDLE 进入 SETUP
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS
  • T3 时刻检测到 PREADY 为 0,也就是说 Slave 还没有接收完数据,所以在此刻,下面信号必须保持,以便 Slave 能够继续采样:
    • PADDR 地址信号
    • PWRITE 数据方向信号
    • PSEL 片选信号
    • PENABLE 使能信号
    • PWDATA 数据
  • T4 时刻 PREADY 依然 为 0,所以还是保持不变
  • T5 时刻,PREADY 为 1,说明 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低

注意:即便是传输结束了,Address 和 data 信号也不会立即改变,直到下一次传输才会刷新新的地址和数据信号,这样做的原因是减少功耗;

1.2.2 APB 读时序

1.2.2.1 Read transfer with no wait states

在这里插入图片描述

  • T1 时刻 APB 将地址信息 PADDR 准备好,拉低 PWRITE 表示进入读,同时拉高 PSEL,从 IDLE 进入 SETUP;
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS;
  • T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经完成收据发送,PRDATA 上就是来自 Slave 的数据,传输完成;PENABLE 拉低,PSEL 拉低。

1.2.2.1 Read transfer with wait states

在这里插入图片描述
时序过程和上述一样,只不过 PREADY 被拉低了两个周期,真正从 Slave 读的数据到 T5 时刻才真正有效;

1.2.3 Error Respond

在读和写的过程,可能出现错误,错误通过 PSLVERR 信号来指明;APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低

1.2.3.1 Error response Write transfer

下面这个是写失败后的时序:
在这里插入图片描述
可以看到,在写失败后,PSLERR 信号被拉高了

1.2.3.2 Error response Read transfer

下面这个是读失败后的时序:
在这里插入图片描述
读失败后,PRDATA 上的数据不再有效。

1.2.3.3 Mapping of PSLVERR

如果发生了失败的情况 PSLVERR 信号会反馈到桥接的 AHB/AXI 总线上的回复信号上。

推荐阅读
https://blog.csdn.net/zhoutaopower/article/details/103729440

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/648539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言二级指针复习

之前写过一篇二级指针的博文,C语言二级指针Demo - Win32 版本_bcbobo21cn的博客-CSDN博客 下面复习一下二级指针; 二级指针的概念是这样, int a 100; int *p1 &a; int **p2 &p1; 有一个整型变量a被赋值100;…

【Python开发】FastAPI 10:SQL 数据库操作

在 FastAPI 中使用 SQL 数据库可以使用多个 ORM 工具,例如 SQLAlchemy、Tortoise ORM 等,类似 Java 的 Mybatis 。这些 ORM 工具可以帮助我们方便地与关系型数据库进行交互,如 MySQL 、PostgreSQL等。本篇文章将介绍如何使用 SQLAlchemy 来完…

osgb倾斜摄影三维模型数据web端在线管理平台,一键查看、分享

「四维轻云」是基于浏览器打造的一款osgb倾斜摄影三维模型数据web端在线管理平台,为用户提供了项目管理、团队管理、空间测量、场景编辑、在线标绘等功能,实现了osgb倾斜摄影三维模型数据在线管理、浏览和分享。 此外,为了更好地满足用户需求…

数据库信息速递 AWS因迁移PostgreSQL DBaaS而遭遇长时间停机时间而备受诟病

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

分享:win10使用 python 让 NVIDA GeForce MX250 显卡发挥余热,安装CUDA,cuDNN和PyTorch

目录 1. 更新最新的显卡驱动2. 安装CUDA3. 安装cuDNN4. 安装pytorch 1. 更新最新的显卡驱动 打开NVIDA更新驱动的官网地址 根据下图的选择,记得Windows驱动程序类型要选标准,如图 点击搜索,下面就会列出一大堆的历史驱动,选择第…

Stable Diffusion你需要知道的算法原理;ChatGPT新增函数调用;Adobe Illustrator引入AI工具Firefly;

🦉 AI新闻 🚀 OpenAI更新ChatGPT,新增函数调用、4倍上下文长度、更低的嵌入成本 摘要:OpenAI在官网发布了ChatGPT的更新细节,包括新增函数调用、GPT-4和GPT-3.5-Turbo的升级、降低成本等。其中,新增函数调…

接口使用https 为什么是一大段返回,而http是一行一行返回?

背景: 最近在调试chatgpt对话网站,因为返回数据比较大,就用到到了流读取。开始调用http一点都没有问题,但是上生产切换https时候始终抱错?这个问题纠结2天,终于在你chatgpt加持解决了 https 为什么是一大段…

Unity3D:场景视图视图选项

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 “场景视图视图选项”工具栏 您可以使用“场景视图视图选项”工具栏“叠加”来选择用于查看场景以及启用/禁用照明和音频的各种选项。这些控件仅在开发期间影响场景视图&#xff0…

mybatis二级缓存

MyBatis 缓存可以极大的提升查询效率。 MyBatis系统中默认定义两级缓存(一级缓存和二级缓存)。一、两级缓存 1、一级缓存:(本地缓存):sqlSession级别的缓存。一级缓存是一直开启的;sqlSession级…

Kafka学习---4、消费者(分区消费、分区平衡策略、offset、漏消费和重复消费)

1、消费者 1.1 Kafka消费方式 1、pull(拉)模式:consumer采用从broker中主动拉取数据。 2、push(推)模式:Kafka没有采用这种方式。因为broker决定消息发生速率,很难适应所有消费者的消费速率。…

Hive的概念

Hive 概述 Hive是一个基于Hadoop的数据仓库系统,它提供了类似与SQL的查询语言HiveQL,可以将结构化数据存储在Hadoop分布式文件系统中,并通过MapReduce进行过处理。 Hive的目标是使数据分析师和其他人员能够使用SQL语言来查询大规模的数据集&#xff0…

Triton教程 --- Triton架构

Triton教程 —Triton架构 文章目录 Triton教程 ---Triton架构并发模型执行模型和调度器无状态模型状态模型控制输入隐式状态管理状态初始化调度策略直接的Oldest 合奏模型 下图显示了 Triton 推理服务器的高级架构。 模型存储库是一个基于文件系统的模型存储库,Trit…

链表--part8--环形链表(leetcode 142)

文章目录 基本思路leetcode 142 环形链表 基本思路 此题为重点题目 此题实际上可以分为俩题: 1 判断是否存在环 2 如果存在返回环的入口 如果不存在返回null 那我就对于这俩种情况进行相关的解释。 判断是否有环 有点类似追及问题,我们可以定义一个快指…

全面理解Starrocks3.0

文章目录 什么是Starrocks适用场景系统架构产品特性 什么是Starrocks StarRocks 是新一代极速全场景 MPP (Massively Parallel Processing) 数据库。StarRocks 的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理,就可以用 StarRocks 来支…

Python3数据分析与挖掘建模(16)特征降维与特征衍生

1. 特征降维(PCA) 回顾知识点: 特征降维是指将高维特征空间的数据映射到低维空间的过程,以减少特征的数量并保留数据的主要信息。下面是特征降维的一般步骤: (1)求特征协方差矩阵&#xff1a…

I2C协议

i2c硬件电路 i2c总线连接图: 注: i2c的SDA和SCL都需要上拉电阻,改变上拉电阻大小可调节I2C总线的上拉强度,上拉电阻用1k~100k不等,小了驱动能力就强,但电流就大了。不同内核版本上的驱动不一样&#xff…

C语言之指针详解(3)

目录 本章重点 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 9. 指针和数组面试题的解析、 4. 数组参数、指针参数 我们来看一维数组传参 #include<stdio.h> void test(in…

Rust语言从入门到入坑——(2)Rust在windows上搭建开发环境

文章目录 0 引入1、搭建 Visual Studio Code 开发环境1.1、安装 Rust 编译工具1.2 、VS Code安装 2、官网在线3、总结4、引用 0 引入 开始搭建一个适合在windows上运行的Rust环境。 Rust支持的程序语言很多&#xff1a;可详见官网介绍 1、搭建 Visual Studio Code 开发环境 …

Systrace分析知识点

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、抓取Systrace二、CPU模块知识点三、input 点击事件处理流程四、Vsync 事件处理五、Android 绘制一帧流程分析六、Camx Trace TAG开启方法七、参考文…

管理类联考——英语——趣味篇——刷题需要实现什么目的?

刷题需要实现什么目的&#xff1f;  第一&#xff1a;在真题中巩固考研英语基础 在掌握一定的词汇量和句子分析能力后&#xff0c;开始一字不漏、逐字逐句的完成历年真题的超精读。抄写真题中生词&#xff0c;继续夯实词汇、分析长难句翻译&#xff0c;弄清楚题目中正确选项为…