CoreSight Channel Interface(通道接口)詳解
1. 概述
Channel Interface 是 ARM CoreSight 架構中用于在不同組件之間傳遞觸發事件的專用接口。它是 Event Interface 的增強版本,支持多通道、雙向通信,以及同步與異步兩種時鐘域連接方式。
常見用途:
- 多核 CPU 同步調試停止(Halt)
- 多個 Trace 單元同步開始/停止捕獲
- Profiling 事件同步廣播
- 跨組件硬件觸發協調
Channel Interface 特別適合低頻、單次觸發或允許少量事件合并的應用,但不適合高速計數場景。
2. 信號結構詳解
2.1 通道數量
- 通道數量可配置(由 SoC 設計定義)。
- ARM 推薦至少 4 個通道,以支持多種事件類型并行傳輸。
- 當兩個組件的通道數不同時,連接規則:
- 通道數少的一方連接到多的一方的前 N 個通道
- 額外通道留空,不參與連接
2.2 信號列表與說明
異步 Channel Interface(Asynchronous)
適用于不同時鐘域之間的通信,采用 4 階段握手機制 進行安全事件傳輸。
信號名稱 | 方向(相對于本組件) | 復位后值 | 說明 |
---|---|---|---|
CHOUT[n-1:0] | 輸出 | 0 | 事件請求信號。源組件將其置高表示有事件產生。 |
CHOUTACK[n-1:0] | 輸入 | — | 事件確認信號。目標組件處理完事件后拉高,通知源組件可以結束本次事件。 |
CHIN[n-1:0] | 輸入 | — | 接收到的事件請求信號,由另一組件的 CHOUT 驅動。 |
CHINACK[n-1:0] | 輸出 | 1 | 事件確認反饋信號,通知對方事件已被接收并處理。 |
異步 Channel Interface 連接形式
同步 Channel Interface(Synchronous)
適用于同一時鐘域內的通信,事件直接依賴公共時鐘 CHCLK
同步,無需握手。
信號名稱 | 方向(相對于本組件) | 復位后值 | 說明 |
---|---|---|---|
CHCLK | 輸入 | — | 通道接口時鐘輸入,保證兩端同步采樣。 |
CHOUT[n-1:0] | 輸出 | 0 | 事件輸出信號,直接在時鐘邊沿采樣傳輸。 |
CHIN[n-1:0] | 輸入 | — | 事件輸入信號,來自另一組件的 CHOUT 。 |
異步 Channel Interface 連接形式
3. 異步握手機制(四階段握手)
在異步模式下,信號跨時鐘域傳輸,需要通過四階段握手確保事件不丟失。
過程描述
- 發起事件
源組件將CHOUT
從 0 置為 1,表示有事件產生。 - 事件到達目標
目標組件檢測到CHIN
上升沿或高電平,執行事件處理邏輯。 - 目標確認
目標組件事件處理完成后,將CHINACK
置為 1,表示事件已處理。 - 釋放握手
源組件檢測到CHOUTACK
為 1 后,將CHOUT
清零。目標組件隨后清零CHINACK
,完成一次握手。
4. 同步模式工作流程
- 所有事件信號在
CHCLK
上沿采樣 - 無需握手,事件傳遞延遲僅為 1 個時鐘周期
- 要求兩端組件完全在同一時鐘域
5. 與 CTI/CTM 的應用結合
CTI(Cross Trigger Interface)
- 提供多個觸發輸入(TRIGIN)和輸出(TRIGOUT)
- 可以將 Channel Interface 的事件直接連接到 CTI 輸入
- 用于觸發:
- CPU 調試事件(halt、step)
- Trace 啟動/停止
- 向其他 CTI 廣播事件
CTM(Cross Trigger Matrix)
- 連接多個 CTI,形成事件傳播網絡
- 支持一對多、多對多事件廣播
- Channel Interface 在其中承擔物理傳輸通道的角色
6. 系統應用示例
多核調試停止
- CPU0 斷點 → ETM 輸出事件
- 事件通過 Channel Interface 進入 CTI0
- CTI0 通過 CTM 向 CTI1、CTI2 廣播事件
- CTI1、CTI2 發出 halt 信號 → CPU1、CPU2 同步停止
Trace 停止同步
- ETB 緩沖區滿 → CTI 輸出事件
- CTM 將事件分發給 ETR、TPIU
- 所有 Trace Sink 同步停止捕獲
7. 設計注意事項
- 異步接口必須用握手防止丟事件
- 跨時鐘域必須加同步器,防止亞穩態
- 高速頻繁事件建議使用專用事件總線
- 通道數設計需預留裕量,ARM 建議 ≥ 4