AMBA-APB

目录

1.APB 协议

2.APB信号列表

3.数据传输

3.1写传输(2种)

3.1.1 无等待状态的写传输

3.1.2有等待状态的写传输

3.2写选通信号 (PSTRB)

字节通道映射

3.3读传输(2种)

3.3.1 无等待状态的读传输

3.3.2有等待状态的读传输

时序说明

3.4错误响应

3.4.1 写传输

3.4.2读传输

4.信号有效性

说明:


1.APB 协议

        APB(高级外设总线)协议是一种低成本接口,针对最低功耗接口复杂性最小化进行了优化。APB 的接口不是流水线化的(一次数据传输必须完全完成后,才能启动下一次数据传输。换句话说,APB的操作是逐步完成的,没有重叠或并行的传输阶段),它是一个简单的同步协议。每次传输至少需要两个时钟周期完成。

        APB 的接口专为访问外设设备的可编程控制寄存器而设计,外设通常通过 APB 桥接到主内存系统。例如,可以使用从 AXI 到 APB 的桥接器将多个 APB 外设连接到 AXI 内存系统中。APB 传输由 APB 桥发起。APB 桥也称为请求方(Requester)。外设接口响应传输请求,外设也被称为完成方(Completer)

2.APB信号列表

信号名称来源宽度描述
PCLK时钟源1 位时钟信号,所有 APB 信号与 PCLK 的上升沿同步。
PRESETn系统总线复位信号1 位复位信号,低电平有效,通常直接连接到系统总线复位信号。
PADDR请求方 (Requester)ADDR_WIDTH (≤32 位)地址总线,用于表示字节地址,必须保持稳定直到传输完成。
PENABLE请求方 (Requester)1 位使能信号,指示 APB 传输的第二个周期或后续周期。
PWDATA请求方 (Requester)DATA_WIDTH写数据总线,传输写入完成方的数据,可为 8 位、16 位或 32 位。
PRDATA完成方 (Completer)DATA_WIDTH读数据总线,完成方在读周期传输数据,可为 8 位、16 位或 32 位。
PSELx请求方 (Requester)1 位选择信号,用于选择对应的完成方 (Completer),指示数据传输需要访问该外设。
PWRITE请求方 (Requester)1 位方向信号,高电平表示写操作,低电平表示读操作。
PREADY完成方 (Completer)1 位准备就绪信号,完成方可延长传输,用于指示当前传输是否可以完成。
PSLVERR完成方 (Completer)1 位(可选)错误信号,高电平表示传输发生错误。
PSTRB请求方 (Requester)DATA_WIDTH / 8写选通信号,指示写传输中哪些字节有效。
PPROT请求方 (Requester)3 位保护类型,包括普通、特权、安全访问和数据/指令访问类型。
PNSE请求方 (Requester)1 位保护类型的扩展信号,支持领域管理扩展 (RME)。
PWAKEUP请求方 (Requester)1 位唤醒信号,指示 APB 接口的活动。
PAUSER请求方 (Requester)USER_REQ_WIDTH用户请求属性信号,最大宽度建议为 128 位。
PWUSER请求方 (Requester)USER_DATA_WIDTH用户写数据属性信号,最大宽度建议为 DATA_WIDTH / 2
PRUSER完成方 (Completer)USER_DATA_WIDTH用户读数据属性信号,最大宽度建议为 DATA_WIDTH / 2
PBUSER完成方 (Completer)USER_RESP_WIDTH用户响应属性信号,最大宽度建议为 16 位。

        APB 协议具有两个独立的数据总线:用于读取数据的 PRDATA和用于写入数据的 PWDATA。这些总线的宽度可以是 8 位、16 位或 32 位。读取数据总线和写入数据总线的宽度必须相同。

        由于读取数据和写入数据总线没有各自独立的握手信号,数据传输无法同时进行,即不能并发传输。APB 使用非流水线的两阶段传输,包括 设置阶段 (Setup Phase)访问阶段 (Access Phase)

        APB 接口具有单一的地址总线 PADDR,用于读和写的传输。PADDR表示字节地址, 可以与数据宽度不对齐,但其结果是不可预测的。例如,响应方(Completer)可能会使用未对齐的地址、对齐的地址,或者发出错误响应信号。

3.数据传输

所有显示的信号都在 PCLK 上升沿采样

3.1写传输(2种)

  • 无等待状态的写传输
  • 有等待状态的写传输
3.1.1 无等待状态的写传输

传输阶段描述:

  1. 设置阶段(Setup phase):

    • 在 T1 时刻开始设置阶段,选择信号 PSEL 被置为有效。
    • 此时,PADDR(地址)、PWRITE(写方向)以及 PWDATA(写数据)必须有效。
  2. 访问阶段(Access phase):

    • 在 T2 时刻,PENABLE 信号被置为有效,进入访问阶段。
    • 在 PCLK 的上升沿,PREADY 由响应方(Completer)置为有效,表示写数据将在 T3 时刻被接收。
    • 在整个传输完成之前,PADDR、PWDATA 以及任何其他控制信号都必须保持稳定。
  3. 传输结束:

    • 传输完成后,PENABLE 信号被释放(无效)。
    • 如果没有向同一外设进行另一轮传输,PSEL 信号也会被释放(无效)。
3.1.2有等待状态的写传输

访问阶段中的延长: 通过控制 PREADY 信号来延长传输时间。

  • 当 PENABLE 信号为高电平(有效)时,响应方可以通过将 PREADY 驱动为低电平(无效)来延长传输时间。

延长期间保持不变的信号:

在 PREADY 信号保持低电平的期间,下列信号保持不变:

  • 地址信号(PADDR)
  • 方向信号(PWRITE)
  • 选择信号(PSELx)
  • 使能信号(PENABLE)
  • 写数据信号(PWDATA)
  • 写选通信号(PSTRB)
  • 保护类型信号(PPROT)
  • 用户请求属性信号(PAUSER)
  • 用户写入数据属性信号(PWUSER)

PREADY 的状态规则:

  • 当 PENABLE 为低电平时,PREADY 信号可以取任意值。
  • 这保证了那些固定两周期访问的外设可以将 PREADY 信号直接连接为高电平。

3.2写选通信号 (PSTRB)

        PSTRB 信号用于在写数据总线上启用稀疏数据传输。每个 PSTRB 对应写数据总线的 1 个字节。当 PSTRB 被拉高时,它表示相应的字节通道包含有效数据。

字节通道映射

  • 每 8 位的写数据总线上有一个写选通信号,因此 PSTRB[n] 对应于 PWDATA[(8n + 7):(8n)]。
  • 图 3-3 显示了在 32 位数据总线上的这种关系。

对于读取传输,发起者(Requester)必须将所有的 PSTRB 信号拉低。

        PSTRB 信号的存在与兼容性: PSTRB 是一个可选信号,一个 APB 外设可能只支持一部分访问类型,具体支持的访问类型需要在文档中说明,这意味着如果文档声明不支持稀疏写入(sparse writes),则所有 PSTRB 信号的组合可能是兼容的。

3.3读传输(2种)

  • 无等待状态
  • 有等待状态

所有信号都在 PCLK 的上升沿进行采样

3.3.1 无等待状态的读传输

无等待状态的读取传输时序

  • 地址信号 PADDR、写入信号 PWRITE、选择信号 PSEL、使能信号 PENABLE 的时序与写传输部分中描述的相同。
  • 对于读取传输,响应方(Completer)必须在读取传输结束前提供数据。

时序说明在无等待状态的读取传输中,数据必须立即响应,不存在额外的延迟等待状态。

3.3.2有等待状态的读传输

图 3-5 展示了 PREADY 信号如何扩展传输。

有等待状态的读取传输时序

  • 在访问阶段,如果 PREADY 被拉低,传输将被延长。
  • PREADY 保持为低电平期间,以下信号保持不变:
    • 地址信号 PADDR
    • 方向信号 PWRITE
    • 选择信号 PSEL
    • 使能信号 PENABLE
    • 保护信号 PPROT
    • 用户信号 PAUSER
​​时序说明
  • 如图 3-5 所示,在有等待状态的读取传输中,PREADY 可以增加两个周期。然而,实际上可以增加任意数量的附加周期,从零个周期开始。

这意味着在等待状态期间,数据传输可以根据外部设备的响应时间灵活调整,直到传输完成。

3.4错误响应

        PSLVERR 可以用于指示 APB 传输中的错误条件,错误条件可能发生在读或写传输中。
        PSLVERR 仅在 APB 传输的最后一个周期有效,即当 PSEL、PENABLE 和 PREADY 都为高电平时。建议当 PSEL、PENABLE 或 PREADY 为低电平时,PSLVERR 被驱动为低电平。

        发生错误的传输可能会或不会改变外围设备的状态,这取决于具体的外围设备设计。当写传输发生错误时,这并不意味着外围设备中的寄存器没有被更新。当读传输发生错误时,可能会返回无效数据。外围设备没有要求在读错误时将数据总线驱动为全零,请求者接收到读传输的错误响应后,仍然可能使用返回的数据,完成者不能依赖错误响应来阻止读取 PRDATA 上的值。

        完成者不需要支持 PSLVERR。如果完成者不支持 PSLVERR,则适当的输入会被连接为低电平。

3.4.1 写传输

 图 3-6 显示了一个写传输失败并以错误完成的示例

3.4.2读传输

读传输也可以以错误响应完成,表明没有有效的读数据可用。

 3-7 显示了一个读传输以错误响应完成的示例

PSLVERR的映射

当进行桥接时:

  • 从AXI到APB:APB上的PSLVERR错误会映射回AXI的RRRESP(读响应)和BRESP(写响应)。
  • 从AHB到APB:APB上的PSLVERR错误会映射回AHB的HRESP(读写响应)。

        这说明了当APB总线发生错误时,PSLVERR信号会通过桥接机制映射到其他总线(如AXI或AHB)的相应错误响应信号。

4.信号有效性

以下是信号有效性要求

信号始终有效当 PSEL 被激活时必须有效当 PSEL 和 PENABLE 被激活时必须有效当 PSEL、PENABLE 和 PREADY 被激活时必须有效说明
PSEL选择信号,指示外设被选中进行操作
PWAKEUP唤醒信号,可能用于低功耗管理
PADDR地址
PENABLE指示当前周期是事务的有效部分
PWRITE事务是写操作(1)还是读操作(0)
PREADY目标是否准备好完成事务的信号
PWDATA写数据,在有效的写数据线上传输,仅在写操作时有效
PRDATA读数据,仅在读操作时有效
PSLVERR从设备错误信号,表示事务发生错误
PPROT保护信号,指示访问类型(如读/写、用户/特权模式)
PNSE非安全标志,可能指示事务是否为非安全模式
PAUSER暂停或停顿请求信号
PSTRB字节使能信号,指示数据的哪些字节有效
PWUSER用户定义信号,仅在写操作时有效
PRUSER用户定义信号,仅在读操作时有效
PBUSER用户定义信号,可能用于附加信息传输
说明:
  • 始终有效: 表示该信号在任何时刻都必须有效。
  • 当 PSEL 被激活时有效: 表示该信号在 PSEL 被激活时必须有效。
  • 当 PSEL 和 PENABLE 被激活时有效: 表示该信号在 PSEL 和 PENABLE 都被激活时必须有效。
  • 当 PSEL、PENABLE 和 PREADY 被激活时有效: 表示该信号在 PSEL、PENABLE 和 PREADY 都被激活时必须有效。

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

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

相关文章

linux自动化一键批量检查主机端口

1、准备 我们可以使用下面命令关闭一个端口 sudo iptables -A INPUT -p tcp --dport 端口号 -j DROP我关闭的是22端口,各位可以关其它的或者打开其它端口测试,谨慎关闭22端口!不然就会像我下面一样握手超时😭😭&…

【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地

前言:本文教程为,上传文件到服务器并训练深度学习模型,与下载服务器文件到本地。演示指令输入,完整的上传文件到服务器,并训练模型过程;并演示完整的下载服务器文件到本地的过程。 本文使用的服务器为云服…

从零开始开发纯血鸿蒙应用之逻辑封装

从零开始开发纯血鸿蒙应用 一、前言二、逻辑封装的原则三、实现 FileUtil1、统一的存放位置2、文件的增删改查2.1、文件创建与文件保存2.2、文件读取2.2.1、读取内部文件2.2.2、读取外部文件 3、文件删除 四、总结 一、前言 应用的动态,借助 UI 响应完成&#xff0…

python读写文件的三种做法

对于文件操作,python提供了3种做法:open(), os.open() 和with open()语句。 1. open()函数:一般用于更高级的文件读写操作,即人能读懂的用法,如果是写入数据,可用传入字符串。 用法:open(path…

MySQL如何只取根据某列连续重复行的第一条记录

前言 MySQL如何只取根据某列连续重复行的第一条记录,条件:某列、连续、验重 建表准备 DROP TABLE IF EXISTS test; CREATE TABLE test (id bigint NOT NULL,time datetime NULL DEFAULT NULL,price int NULL DEFAULT NULL,PRIMARY KEY (id) USING BT…

Fetch处理大模型流式数据请求与解析

为什么有的大模型可以一次返回多个 data? Server-Sent Events (SSE):允许服务器连续发送多个 data: 行,每个代表一个独立的数据块。 流式响应:大模型服务通常以流式响应方式返回数据,提高响应速度。 批量处理&#x…

【数据结构】链表(1):单向链表和单向循环链表

链表 链表是一种经典的数据结构,它通过节点的指针将数据元素有序地链接在一起,在链表中,每个节点存储数据以及指向其他节点的指针(或引用)。链表具有动态性和灵活性的特点,适用于频繁插入、删除操作的场景…

离散数学考前一天

判断强连通,单向连通,弱连通: 求可达性矩阵P,P里面全是1,就是强连通 否则看P与P的转置矩阵,如果除了主对角线是0,其他全是1,就是单向连通 否则看A1=A与A的转置矩阵&am…

【服务器项目部署】⭐️将本地项目部署到服务器!

目录 🍸前言 🍻一、服务器选择 🍹 二、服务器环境部署 2.1 java 环境部署 2.2 mysql 环境部署 🍸三、项目部署 3.1 静态页面调整 3.2 服务器端口开放 3.3 项目部署 ​ 🍹四、测试 🍸前言 小伙伴们大家好…

Nginx的性能分析与调优简介

Nginx的性能分析与调优简介 一、Nginx的用途二、Nginx负载均衡策略介绍与调优三、其他调优方式简介四、Nginx的性能监控 一、Nginx的用途 ‌Nginx是一种高性能的HTTP和反向代理服务器,最初作为HTTP服务器开发,主要用于服务静态内容如HTML文件、图像、视…

HTML——31.定义媒介资源

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>定义媒介资源</title></head><body><!--source标签用来为<video>视频和<audio>音频 &#xff0c;定义媒介资源--><!--src属性&…

宝塔-firefox(Docker应用)-构建自己的Web浏览器

安装基础软件 宝塔中安装firefox(Docker应用) 。宝塔中需要先安装docker及docker-composefirefox配置安装 点击firefox应用&#xff0c;选择【安装配置】点击右边绿色按钮&#xff0c;进行安装&#xff0c;这一步等待docker-compose根据你的配置初始化docker应用 等待安装 …

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(一)

****非斜体正文为原文献内容&#xff08;也包含笔者的补充&#xff09;&#xff0c;灰色块中是对文章细节的进一步详细解释&#xff01; 三、传统微调范式&#xff08;Traditional Fine-Tuning Paradigm&#xff09; 在这个范式中&#xff0c;首先在大量未标记的文本数据上预…

【泰克生物】从酵母细胞表面展示到抗体筛选:实现精准药物发现

在现代药物发现领域&#xff0c;精准筛选和优化抗体已成为一种必不可少的技术手段。传统的抗体筛选方法依赖于动物免疫或体外筛选&#xff0c;这些方法往往成本高且周期长。近年来&#xff0c;酵母细胞表面展示技术&#xff08;Yeast Surface Display, YSD&#xff09;成为一种…

基于YOLOV5+Flask安全帽RTSP视频流实时目标检测

1、背景 在现代工业和建筑行业中&#xff0c;安全始终是首要考虑的因素之一。特别是在施工现场&#xff0c;工人佩戴安全帽是确保人身安全的基本要求。然而&#xff0c;人工监督难免会有疏漏&#xff0c;尤其是在大型工地或复杂环境中&#xff0c;确保每个人都佩戴安全帽变得非…

Unity开发微信小游戏踩坑总结

前言 不记录真记不住&#xff0c;这个帖子以后不定时更新。 问题1&#xff1a;图片模糊 问题描述&#xff1a; 在Unity里什么事没有&#xff0c;进入到微信开发者工具里就已经模糊了&#xff0c;人物动画是一团马赛克&#xff0c;图片看着倒是没事。 问题原因&#xff1a;…

【AI日记】24.12.30 kaggle 比赛 2-18

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Regression with an Insurance Dataset时间&#xff1a;8 小时 读书 1 书名&#xff1a;教育的本质时间&#xff1a;0.5 小时评估&#xff1a;快速读完&#xff0c;收获不…

VUE echarts 教程二 折线堆叠图

VUE echarts 教程一 折线图 import * as echarts from echarts;var chartDom document.getElementById(main); var myChart echarts.init(chartDom); var option {title: {text: Stacked Line},tooltip: {trigger: axis},legend: {data: [Email, Union Ads, Video Ads, Dir…

微信小程序中遇到过的问题

记录微信小程序中遇到的问题&#xff08;持续更新ing&#xff09; 问题描述&#xff1a;1. WXML中无法直接调用JavaScript方法。2. css中无法直接引用背景图片。3. 关于右上角胶囊按钮。4. 数据绑定问题。5. 事件处理问题。6. 关于movable-view组件的问题7. 关于设置宽度后设置…

RabbitMQ实现生产者消费者

一.启动MQ 注意管理员身份进入cmd才行,我这里是在本地安装的MQ,推荐使用虚拟机安装 二.思路 官方解释RabbitMQ结构: 自我理解RabbitMQ结构: 其实RabbitMQ的服务器就像邮局一样,我们的生产者和消费者对于这个服务器来说都是消费者,因为服务器都可以向两者发送消息 环境准备 …