APB协议

APB是AMBA协议的一部分,设计用于低带宽外设,不支持流水线化。它提供等待状态和错误报告功能,通过PREADY和PSLVERR信号进行交互。APB传输包括写传输和读传输,可能带有等待状态,并且有错误响应机制。PPROT信号用于访问保护,支持不同级别的数据和指令访问。
摘要由CSDN通过智能技术生成

1、概述

        高级外设总线(APB)是高级微控制器总线架构(AMBA)协议系列的一部分。它定义了一种低成本的接口,针对最小功耗和减少接口复杂性进行了优化。 APB协议不是流水线化的,它用于连接不需要AXI协议高性能的低带宽外设。 APB协议将信号转换关联到时钟的上升沿,以简化将APB外设集成到任何设计流程中。每次传输至少需要两个周期。 APB可以与以下接口进行交互:

  1. AMBA高级高性能总线(AHB)
  2. AMBA高级高性能总线Lite(AHB-Lite)
  3. AMBA高级可扩展接口(AXI)
  4. AMBA高级可扩展接口Lite(AXI4-Lite)

        可以使用它来访问外设设备的可编程控制寄存器。

        AMBA 3 APB协议规范v1.0定义了以下额外的功能:

  1. 等待状态。参见第3章“传输”。
  2. 错误报告。参见第3-6页的“错误响应”。

        以下接口信号支持这些功能:

        PREADY:一个准备信号,用于指示APB传输的完成。

        PSLVERR:一个错误信号,用于指示传输失败。

         这个版本的规范被称为APB3。

2、信号描述

2.1、AMBA APB信号

Signal

Source

Description

PCLK

Clock source

时钟。PCLK上升沿定时APB上的所有传输。

PRESETn

System bus equivalent

系统总线等效 复位信号。APB复位信号为低有效。该信号通常直接连接到系统总线的复位信号。

PADDR

APB bridge

这是APB地址总线。它可以是32位宽,并由外设总线桥单元驱动。

PPROT

APB bridge

保护类型。此信号指示事务的普通、特权或安全保护级别,以及事务是数据访问还是指令访问。

PSELx

APB bridge

选择。APB桥单元为每个外设总线从设备生成此信号。它表示已选择从设备,并需要进行数据传输。每个从设备都有一个PSELx信号。

PENABLE

APB bridge

使能。该信号指示APB传输的第二个和随后的周期。

PWRITE

APB bridge

方向。该信号在高电平时表示APB写访问,在低电平时表示APB读访问。

PWDATA

APB bridge

写数据。在PWRITE为高时,该总线由外设总线桥单元驱动。该总线可以是32位宽。

PSTRB

APB bridge

写 strobes。该信号指示在写传输期间要更新哪些字节通道。每个写 strobe 对应写数据总线的八个位通道中的一个。因此,PSTRB[n] 对应于PWDATA[(8n + 7):(8n)]。在读传输期间,写 strobes不能处于激活状态。

PREADY

Slave interface

就绪。从设备使用该信号来延长APB传输。

PRDATA

Slave interface

读数据。所选的从设备在PWRITE为低时驱动该总线。该总线可以是32位宽。

PSLVERR

Slave interface

此信号指示传输失败。APB外设不必支持PSLVERR引脚。对于现有和新的APB外设设计都适用。如果外设不包含此引脚,则APB桥的适当输入被连接到低电平。

2.1.1、Data buses

APB协议有两个独立的数据总线,一个用于读数据,一个用于写数据。这些总线可以是最多32位宽。由于这些总线没有各自独立的握手信号,因此不可能同时在两个总线上进行数据传输。换句话说,在同一时间内无法同时在读数据总线和写数据总线上进行数据传输。

3.传输

3.1、Write transfers

3.1.1、无等待

Figure 3-1 shows a basic write transfer with no wait states.

        在T1时刻,写传输开始,地址PADDR、写入数据PWDATA、写信号PWRITE和选择信号PSEL在PCLK上升沿时输出。这被称为写传输的Setup阶段。

        在T2时刻,使能信号PENABLE和就绪信号PREADY在PCLK上升沿时输出。

        当PENABLE信号被激活时,表示传输的Access阶段开始。

        当PREADY信号被激活时,表示从设备可以在下一个PCLK上升沿时完成传输。

        地址PADDR、写入数据PWDATA和控制信号在传输完成时刻T3(即Access阶段结束时)仍保持有效。

        传输结束时,使能信号PENABLE被取消激活。选择信号PSEL也会被取消激活,除非立即跟随另一个传输传输到同一外设。

3.1.2、有等待

        在第3-3页的图3-2中,展示了从设备如何使用PREADY信号来延长传输。

        在Access阶段中,当PENABLE为高电平时,从设备通过将PREADY置为低电平来延长传输。在PREADY保持为低电平时,以下信号保持不变:

  1. 地址,PADDR
  2. 写信号,PWRITE
  3. 选择信号,PSEL
  4. 使能信号,PENABLE
  5. 写入数据,PWDATA
  6. 写 strobes,PSTRB
  7. 保护类型,PPROT。


        当PENABLE为低电平时,PREADY可以取任意值。这确保了具有固定两个周期访问的设可以将PREADY连接到高电平。

注意: 建议在传输完成后,地址和写信号不要立即改变,而是保持稳定,直到发生另一个访问。这可以降低功耗。

3.2、Write strobes

        写 strobe 信号PSTRB在写数据总线上启用稀疏数据传输。每个写 strobe 信号对应写数据总线的一个字节通道。当PSTRB被激活为高电平时,表示对应的写数据总线字节通道包含有效信息。

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

注:
        对于读取传输,总线主控必须将PSTRB的所有位都驱动为低电平。这意味着在读取数据时,PSTRB信号的所有字节通道都应该置为低电平,不需要指示哪些字节通道包含有效信息。

3.3、Read transfers


        本节描述了两种类型的读取传输:        

  1. 无等待状态的读取传输
  2. 带等待状态的读取传输

3.3.1、无等待

        图3-4展示了一个读取传输。地址、写信号、选择信号和使能信号的时序与页3-2上描述的写传输相同。从设备必须在读取传输结束之前提供数据。

3.3.2、有等待

        图3-5展示了PREADY信号如何延长传输。如果在Access阶段时PREADY被拉低,传输将被延长。协议确保以下内容在额外的周期内保持不变:

  1. 地址,PADDR
  2. 写信号,PWRITE
  3. 选择信号,PSEL
  4. 使能信号,PENABLE
  5. 保护类型,PPROT。 图3-5显示了使用PREADY信号添加了两个周期。然而,您可以添加任意数量的附加周期,从零开始。

3.4、Error response

        可以使用PSLVERR来指示APB传输的错误情况。错误情况可能发生在读取和写入事务中。

        PSLVERR只在APB传输的最后一个周期被认为是有效的,此时PSEL、PENABLE和PREADY都为高电平。

        建议但不是强制的,当PSLVERR未被采样时将其置为低电平。也就是说,在PSEL、PENABLE或PREADY中任何一个为低电平时,可以将PSLVERR置为低电平。

        收到错误的事务可能会改变外设的状态,也可能不会改变。这取决于具体的外设,两种情况都是可以接受的。当写入事务收到错误时,这并不意味着外设内的寄存器未被更新。收到错误的读取事务可能返回无效的数据。对于读取错误,外设没有要求将数据总线驱动为全0。

        APB外设不要求支持PSLVERR引脚。对于现有和新的APB外设设计都是如此。如果外设不包含此引脚,则APB桥的适当输入被连接到低电平。

3.4.1、写传输

        图3-6展示了一个失败的写传输示例,该传输在出现错误后完成。

3.4.2、读传输

        一个读取传输也可以以错误响应完成,表明没有有效的读取数据可用。图3-7展示了一个读取传输以错误响应完成的示例。

3.4.3、映射错误

        在桥接时:

  1. 从AXI到APB:将APB错误映射回RRESP / BRESP = SLVERR。这通过将PSLVERR映射到AXI信号RRESP[1](用于读取)和BRESP[1](用于写入)来实现。
  2. 从AHB到APB:将PSLVERR映射回HRESP = ERROR,用于读取和写入。这通过将PSLVERR映射到AHB信号HRESP[0]来实现。

3.5、Protection unit support

        为了支持复杂的系统设计,通常需要对互联和系统中的其他设备提供保护,以防止非法传输。对于APB接口,这种保护是通过PPROT[2:0]信号来实现的。

        访问保护有三个级别:

        

普通或特权访问,PPROT[0]

  1. LOW表示普通访问
  2. HIGH表示特权访问

        一些主设备使用这个信号来指示它们的处理模式。特权处理模式通常在系统内具有更高级别的访问权限。

安全或非安全访问,PPROT[1] 

  1. LOW表示安全访问
  2. HIGH表示非安全访问

在需要更大程度的处理模式区分的系统中使用。

注意: 当该位为HIGH时,事务被认为是非安全的;当该位为LOW时,事务被认为是安全的。

数据或指令访问,PPROT[2]

  1. LOW表示数据访问
  2. HIGH表示指令访问

该位指示传输是数据访问还是指令访问。

注意: 这种指示只是提供一个提示,在某些情况下可能不是很准确。例如,当一个传输包含指令和数据项的混合时。建议默认将访问标记为数据访问,除非明确知道是指令访问。

表3-1总结了PPROT[2:0]信号的编码:

PPROT[2]

PPROT[1]

PPROT[0]

Transaction Type

0

0

0

Normal data access (Secure)

0

0

1

Normal data access (Non-secure)

0

1

0

Privileged data access (Secure)

0

1

1

Privileged data access (Non-secure)

1

0

0

Normal instruction access (Secure)

1

0

1

Normal instruction access (Non-secure)

1

1

0

Privileged instruction access (Secure)

1

1

1

Privileged instruction access (Non-secure)

注:

        PPROT的主要用途是标识安全或非安全事务。对于PPROT[0]和PPROT[2]标识符的解释,可以使用不同的解释方法,这是可以接受的。

4、操作状态

4.1、工作状态

图4-1展示了APB的操作活动。

状态机通过以下状态运行:

  1. IDLE 这是APB的默认状态。
  2. SETUP 当需要进行传输时,总线进入SETUP状态,此时适当的选择信号PSELx被激活。总线在SETUP状态只保持一个时钟周期,并且总是在下一个时钟上升沿转移到ACCESS状态。
  3. ACCESS 在ACCESS状态中,使能信号PENABLE被激活。在从SETUP转移到ACCESS状态的过程中,地址、写入、选择和写入数据信号必须保持稳定。

        从ACCESS状态退出由从设备的PREADY信号控制:

  1. 如果从设备将PREADY保持为低电平,则外设总线保持在ACCESS状态。
  2. 如果从设备将PREADY置为高电平,则退出ACCESS状态,并且如果不再需要传输,则总线返回到IDLE状态。或者,如果有另一个传输,则总线直接转移到SETUP状态。

        状态机是主机控制的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值