AMBA ATB 中刷新和发送数据之间的区别?

问题描述 投票:0回答:1

我是 AMBA ATB 协议的新手,并试图理解它。

我发现发送器可以使用数据信号将跟踪数据发送到接收器,

  • ATBYTES
  • ATDATA
  • ATID
  • 已准备好
  • 有效

还有另一个称为“缓冲区刷新”的功能,用于从发送器源中删除跟踪数据。这是由接收方通过置位 AFVALID 来启动的。 所以我的疑问是,

两种方法有什么区别?第一种方式数据是否保留在 FIFO 中?
  1. 既然 FIFO 位于发送器内部,那么接收器如何决定何时刷新?
arm amba
1个回答
0
投票

信令接口

“发射器”是一个

外围设备

。接收器是“控制器”或总线主控器。值得注意的是,控制器通过 ATB 启动所有消耗 什么是数据? 冲洗指的是什么?它不指外围设备数据(即设备数据,如以太网、通信端口等)。它指的是跟踪缓冲区数据。当控制器读取事件时,外设可能不会立即报告事件。如果发生多个事件,则需要一个

跟踪数据

缓冲区。

答案

两种方法有什么区别?第一种方式数据是否保留在 FIFO 中?

FLUSH 丢弃所有数据;比读出并丢弃更有效。两种方法都会清空任何 FIFO。

既然 FIFO 位于发送器内部,那么接收器如何决定何时刷新?

跟踪数据与外设的操作有关。控制器始终启动外设的使用。如果存在先前使用的陈旧“跟踪数据”,控制器可以将其刷新。用例取决于控制器。控制器可能有自己的缓冲区(跟踪数据和外围数据),但这种管理位于接口之外。这取决于控制器(通常是 CPU;或最终由某个 CPU 驱动)。

因此,只有一个真正值得关注的“缓冲区”。它是正在等待的外设中缓冲的跟踪数据 (AT_VALID)。如果控制器断言 AT_READY,则缓冲区中的下一个值将放置在数据上,或者 AT_VALID 取消断言。

以ETM为例。 ATB 数据的具体示例是

Cortex-M4 ETM

。它定义了用于跟踪 Cortex-M4 CPU 上的程序执行的数据格式。它提供 ETB(嵌入式跟踪缓冲区),CPU 可以通过另一个垫片/AHB 接口读取该缓冲区,也可以将其发送到 JTAG 接口。即,ATB 规范并不是要回答您的问题,为了允许多次(重新)使用,它仍然含糊不清。

数据/传输信号

ATBYTES[m:0] - 从外设到控制器的总线。 ATDATA 上要捕获的字节数,负 1。

ATDATA[n:0] - 从外设到控制器的总线。追踪数据。

ATID[6:0] - 来自外设的恒定总线。唯一标识跟踪来源的 ID。
  • ATREADY - 来自控制器的线路。控制器已准备好接受数据
  • ATVALID - 来自外设的线路。表示 ATDATA 总线保存数据。
  • 全球信号
  • ATCLK - 全局 ATB 时钟。
ATCLKEN - ATCLK 域的使能信号(可选)。

ATRESETn - 接口复位,异步/同步低电平有效。
  • 冲水信号
  • AFVALID - 刷新信号,指示必须刷新所有缓冲区,因为跟踪捕获即将停止。
AFREADY - 确认冲洗操作。

    重要的是,有 ATCLK,用于锁存/设置 ATDATA 线。如果 ATREADY 和 ATVALID 均被置位,则 ATDATA 将被视为“读取”或使用。冲洗线将为
  • 所有
  • 数据执行此操作;不需要多个时钟。该文档还指出了除了测量开始之外的另一种用途;停止测量是断言信号的更好时机。在这两种情况下,这都可以防止数据过时。

© www.soinside.com 2019 - 2024. All rights reserved.