【AMBA】APB总线的个人学习记录(一):理论知识

news2024/10/6 2:47:00

精通APB (Advanced Peripheral Bus) 总线设计通常意味着你不仅理解其基础概念,而且能够在实际的硬件设计中灵活运用APB总线,解决复杂问题,并优化设计。以下是一些关键点,当你掌握这些方面时,可以说你对APB总线设计有了深入的理解:

  1. 理论知识

    • 理解APB总线的基本原理和架构。
    • 熟悉APB总线的信号定义,包括地址、数据、控制和握手信号。
    • 了解APB总线的时序要求和协议规范。
  2. 设计能力

    • 能够设计APB主控器(通常是APB桥接器)和APB从设备。
    • 熟练使用Verilog、VHDL或其他硬件描述语言实现APB接口。
    • 能够集成APB总线到系统级芯片(SoC)设计中。
  3. 验证技能

    • 掌握APB总线的验证方法,能够创建测试用例并执行功能验证。
    • 使用形式验证或模拟来确保APB接口的正确性。
  4. 调试技巧

    • 能够使用逻辑分析仪或波形查看器调试APB总线上的问题。
    • 理解如何定位和解决时序和数据完整性问题。
  5. 优化与分析

    • 理解APB总线的性能瓶颈,并知道如何优化设计以提高效率。
    • 能够进行功耗分析,确保设计符合低功耗目标。
  6. 标准与兼容性

    • 理解APB总线与其他AMBA总线(如AHB、AXI)的交互。
    • 确保设计遵循ARM AMBA APB规范。
  7. 实践经验

    • 拥有多个成功的APB总线设计和集成经验。
    • 能够处理跨芯片设计的复杂性。
  8. 持续学习

    • 关注APB总线和AMBA架构的发展趋势,保持更新知识。

精通任何技术都需要时间和实践,对于APB总线设计而言,这同样适用。你需要通过阅读官方文档、参考设计、参与项目和不断实践来积累经验。同时,加入相关的技术论坛和社区,与同行交流,也是提高技能的好方法。

总线会有按照协议规定的一组信号,除此之外,总线所连接的从设备也会有独立的时钟与复位信号,不会和总线用相同的时钟,所以两者之间传输的数据和信号会要做跨时钟处理。

目录

    • 基本原理
    • 架构
    • 信号定义
    • 时序要求
      • 无需等待的写操作
      • 有等待的写操作
      • 无需等待的读操作
      • 需要等待的读操作
    • 错误响应
    • 保护单元支持

基本原理

高级外设总线(APB:Advanced Peripheral Bus)是高级微控制器总线体系结构(AMBA:Advanced Microcontroller Bus Architecture)协议系列的一部分。它定义了一个低成本的接口,优化了最小的功耗和降低的接口复杂性。

APB是非流水结构,所以它主要用在不需要用到高性能总线(AXI)的低带宽外围设备上。

特点:

  • 成本低
  • 功耗小
  • 接口简单
  • 非流水结构

常见用法:使用APB总线来访问外围设备的可编程控制寄存器。

架构

Alt

信号定义

信号方向
(对主设备)
位宽信号描述
PCLK输入系统时钟源1bit时钟信号,APB协议中所有信号只和时钟上升沿有关
(同步APB总线上的所有操作)
PRESETn输入系统复位1bit复位信号,低电平有效
PADDR输出APB桥32bit地址总线,指示要访问的寄存器地址
PWRITE输出APB桥1bit方向信号,指示当前传输的是读操作还是写操作
高电平写,低电平读
PSEL输出APB桥根据系统需求片选信号,指示选择的从设备
每个从设备都有一个对应的PSEL信号
PENABLE输出APB桥1bit使能信号,在传输的第二个和后续时钟周期有效,
它表明数据传输已经开始,但尚未完成
PWDATA输出APB桥32bit写数据总线,用于从主设备向从设备传输数据。
在写操作期间,数据在PENABLE的上升沿锁存
PSTRB输出APB桥4bit字节选通信号,用于指示哪些字节应当被写入。
PSTRB中的一位对应写数据总线中的一个字节
PRDATA输入从设备32bit读数据总线,用于从设备向主设备传输数据。
在读操作期间,数据在PENABLE的上升沿采样
PREADY输入从设备1bit准备信号,用于告知主设备从设备是否准备好接收或发送数据。
在传输过程中,如果从设备需要更多时间来准备数据,它可以延迟PREADY信号,从而延长传输周期
PPROT输出APB桥3bit保护类型。指示事务的正常、特权或安全保护级别,
以及该事务是数据访问还是指令访问

时序要求

无需等待的写操作

无需等待的写操作

  1. 在T0阶段,所有总线处于IDLE状态。
  2. 在T1阶段,PADDR、PWRITE、PWDATA和PSEL在时钟的上升沿被寄存,即主设备APB桥把这些数据发送到总线上。此时处在Setup状态。
  3. 在T2阶段,PENABLE拉高,指示传输开始,与此同时从设备已经接收到主设备发送过来的地址和写控制命令,知道主设备要准备发数据过来,于是拉高PREADY表示已经做好准备。此时处在Access状态。
  4. T3时刻,PADDR和PWRITE会一直保持有效直到传输结束(T3时刻)。表示传输结束的时钟上升沿到来后,PENABLE和PSEL拉低。

PREADY有效就表示从设备可以在下一个时钟上升沿完成传输。

有等待的写操作

只有当从设备准备好接收数据后,PREADY信号才会拉高,传输才得以开始。因此当从设备没准备好的时候,可以保持PREADY的低电平,来延长传输。

传输被延长的时候,PADDR,PWRITE,PSEL,PENABLE,PWDATA,PSTRB和PPROT会一直保持原来的值。
需要等待的写操作

无需等待的读操作

无等待的读操作和写操作唯一的区别在于此时的PWRITE是低电平,从设备需要在读操作结束前将数据传输到总线上。
在这里插入图片描述

需要等待的读操作

在读操作中同样可以使用PREADY来延长传输。
在这里插入图片描述
注意的是,在读操作中,PSTRB所有位必须设置为低电平。


Note:
传输过程中可以一直保持地址PADDR和读写操作PWRITE信号的不变,直到开始新一轮的传输,这有助于系统节省功耗。


错误响应

PSLVERR用于指示APB传输时读写操作中出现的错误情况。

  • 当PSEL、PENABLE和PREADY都为高电平时,会出现错误状态。
  • 出现错误状态后,PSLVERR会在传输的最后一个时钟周期内保持有效。

APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低。

failing write transfer
failing read transfer
映射关系:

  • AXI -> APB RRESP[1]/BRESP[1] = PSLVEER
  • AHB -> APB HRESP[0] = PSLVERR

保护单元支持

protection encoding

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

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

相关文章

004-GeoGebra基础篇-GeoGebra的布局

注意,为保证大家的GeoGebra的学习顺利从基础、中级到高级的过度,本教程笔记有此要求: 必须使用英文版GeoGebra(虽说GeoGebra也支持汉字写算式,但强烈不建议,因为一个英文翻译过来的中文真是五花八门&#…

网店管家婆与金蝶云星空对接集成往来单位查询接口打通客户新增

网店管家婆与金蝶云星空对接集成往来单位查询接口打通客户新增 对接系统网店管家婆 目前网上管家婆已服务超十万家海内外企业级用户,覆盖了服装配饰、食品酒水、数码3C、美妆日护、医疗保健、母婴用品、五金工具等等行业。 对接系统:金蝶云星空 金蝶K/3C…

如何高效管理TikTok账号?TK矩阵防关联测评养号引流系统揭秘

TK矩阵防关联测评自养号系统是为TikTok(TK)平台设计的,旨在帮助卖家实现多账号管理、防关联以及自动化测评和养号的功能。该系统通过一系列的技术手段和创新功能,为跨境电商运营者提供了强大的支持。 系统核心优势 1. 全球真实环…

5000字深入讲解:企业数字化转型优先从哪个板块开始?

很多企业都知道数字化转型重要,但不知道应该怎样入手,分哪些阶段。以下引用国内领先数字化服务商 织信Informat 的数字化转型方法论材料,且看看他们是如何看待数字化转型的?数字化转型应该从哪先开始?如何做&#xff1…

一个好玩的 AI 产品,一起来玩儿梗

欢迎贡献你的扎心梗图: - 万物皆可meme介绍:https://hqexj12b0g.feishu.cn/wiki/space/7385353047184375810 - 任何人都可以编辑的玩梗集:https://hqexj12b0g.feishu.cn/wiki/

Redis-Bitmap位图及其常用命令详解

1.Redis概述 2.Bitmap Bitmap 是 Redis 中的一种数据结构,用于表示位图(bit array)。 它通常用于处理大规模数据集中每个元素的状态,比如用户的在线/离线状态(每个用户对应一个位,表示在线(1&a…

【课程总结】Day12:YOLO的深入了解

前言 在【课程总结】Day11(下):YOLO的入门使用一节中,我们已经了解YOLO的使用方法,使用过程非常简单,训练时只需要三行代码:引入YOLO,构建模型,训练模型;预测…

分类预测 | PSO-PNN基于粒子群算法优化概率神经网络的数据分类预测(Matlab)

分类预测 | ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别 目录 分类预测 | ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.PSO-PNN基于粒子群算法优化概率神经网络的数据…

SQLite:一个极简使用教程

SQLite是一个轻量级的、文件系统基础的数据库,它被设计为配置简单、易于部署。SQLite数据库存储在一个单一的磁盘文件中,这意味着数据库的创建和维护都非常简单。 1. SQLite特点 轻量级:SQLite不需要一个独立的服务器进程。它是一个嵌入式SQ…

Steam夏促遇到社区打不开、社区进不去的处理措施一览

在Steam夏促中,绝大部分Steam游戏都会有折扣优惠,包括一些3A大作在夏促中也会降价售卖,玩家可以低价购买到自己心仪的游戏。不少玩家进入Steam社区查看游戏评价时遇到社区打不开、社区进不去的情况,不知道怎么解决,下面…

Pycharm一些问题解决办法

研究生期间遇到关于Pycharm一些问题报错以及解决办法的汇总 ModuleNotFoundError: No module named sklearn’ 安装机器学习库,需要注意报错的sklearn是scikit-learn缩写。 pip install scikit-learnPyCharm 导包提示 unresolved reference 描述:模块…

React小记(五)_Hooks入门到进阶

React 16.8 版本 类组件 和 函数组件 两种组件共存,到目前 React 18 版本,官方已经不在推荐使用类组件,在函数组件中 hooks 是必不可少的,它允许我们函数组件像类组件一样可以使用组件的状态,并模拟组件的生命周期等一…

新手向导:掌握Axure RP的第一步

其实很多时候,我们很容易把教程做得太复杂,让学生失去重点被复杂的理论吓到。入门基础的时候只需要先弄清楚两个核心内容,学起来就容易多了:一是简单了解这个软件,二是学习这个软件的基本操作。所以如果你问我什么是好的 Axure RP…

chrome 配置允许跨域

目录 1.Chrome跨域插件配置 1.1启动插件 1.2. 设置本地调试跨域 2 Firefox跨域插件 2.1. 安装插件 CORS Everywhere 2.2. 启动插件 3 工具下载链接 1.Chrome跨域插件配置 使用chrome插件“Allow CORS: Access-Control-Allow-origin ”来解决跨域问题。 点击pin图标&…

小语言模型SLM 百科全书

想象一下这样一个世界:智能助手不再驻留在云端,而是驻留在你的手机上,无缝理解你的需求并以闪电般的速度做出响应。这不是科幻小说;这是小型语言模型 (SLM) 的前景,这是一个快速发展的领域,有可能改变我们与…

倒装COB封装技术与常规SMD封装技术差异对比

倒装COB显示屏与常规SMD LED显示屏一个很大的差异点就是在于封装工艺的不同,COB(Chip on Board)封装和SMD(Surface Mounted Device)封装是LED显示屏领域中两种常见的技术,所表现出来的差异主要在于封装结构…

“卷王”新思路!孟德尔随机化联合共定位,IF冲上12+

今天分享的这篇文章很有意思,用上了统计学中的“顶流CP”孟德尔随机化贝叶斯共定位,强强联手,让孟德尔随机化不再单调!本文思路清晰,设计严谨,结果可靠,想学习孟德尔随机化发文套路的千万不要错…

【selenium 】操作元素

操作元素 元素操作鼠标操作键盘操作 元素操作 元素操作示例清空输入框clear()deiver.find_element_by_id(“username”).clear()输入文字send_keys()deiver.find_element_by_id(“username”).send_keys(‘zs’)元素点击 click()deiver.find_element_by_id(“login”).click()…

手持小风扇哪个牌子比较好?五大热门手持小风扇品牌推荐

炎炎夏日,真的需要一款随身小风扇来拯救我们的高温困境!不过,市面上的选择太多了,真的让人眼花缭乱。今天,我就给大家快速推荐五款热门的手持小风扇,它们不仅轻便易携,而且各有特色。有的是风力…

vue3中若v-model绑定的响应字段出现三级,该如何实现rules验证规则

比如以下内容: 配置的rules内容 const rulesref({title:[{required:true,message:"请输入标题",trigger:"blur"},{max:50,message:"最大不能超过256个字",trigger:"blur"}],Category:[{required:true,message:"请选择…