精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ARM系列-CXS基礎知識介紹

冬至子 ? 來源:老秦談芯 ? 作者:老秦談芯 ? 2023-11-20 15:39 ? 次閱讀

CXS (Credited eXtensible Stream)是一個流接口協議,主要用于點到點(point-to-point)的數據包通信。CXS接口的主要使用情形是在片上互連和PCIe控制器。CXS中的數據傳輸是單向的,因此一般CXS接口是收/發成對出現的。

看到這里,是不是想起了什么?沒錯,就是AXI-Stream,同樣也是點到點的流接口傳輸,比如中斷控制器GIC的組件之間就采用了AXI-Stream。AXI-Stream在 FPGA中應用較多,尤其是多媒體領域。

image.png

CXS接口的數據傳輸是單向的,兩端是Transmitter(TX)和Receiver(RX)。一個時鐘周期內傳輸的數據稱作flit。一個數據包可以占用一個或多個flit組成。

CXS的接口信號分為兩部分,一部分是必須包含的,另一部分是可選信號。其中必須實現的信號如下(以下用正粗體表示信號,斜粗體表示屬性):

image.png

從接口信號上看,并沒有READY信號,也就是說CXS不像其它的AMBA總線,比如AXI,是通過“VALID - READY”來控制流量。

正如名字中的含義,CXS接口上的流量控制(flow control)通過信用交換機制實現。其信用機制規則如下:

  • 僅當TX有信用值時才能發送數據
  • 當接口剛完成復位或者是第一次active,TX沒有信用值,不能發送數據
  • RX通過CXSCRDGNT信號授予TX信用
  • CXSCRDGNT被RX置位的每個時鐘周期,RX授予一個信用值給TX。每個信用值可用作一次flit傳輸。
  • RX必須保證每釋放一個信用值,即可接收一個flit
  • TX置位 CXSVALID ,每個時鐘周期發送一個flit,占用一個信用值
  • RX可以授予TX的最大信用值數由CXS_MAX_CREDIT屬性決定
  • TX只有等到CXSCRDGNT被置位之后,得到信用才能發送flit
  • 可選,TX可以通過CXSCRDRTN返還信用值給RX,無需發送flit
  • RX不能重用已消耗或返回的信用
  • 如果TX在發送flit或者返回給RX信用的同時接收到一個信用,則TX端的可用信用數不變

正常情況下,TX發送一個flit給RX,同時消耗一個信用值;RX接收到flit,如果有能力接收更多的flit,則可以授予TX一個信用值;隨后,TX得到新的信用值。從TX消耗信用值到得到新的信用值,這段時間稱為信用延遲(credit latency)。為保證TX能夠源源不斷的發送數據,則需要設計好最大可用的信用數量,以保證不會由于信用延遲造成的斷流。

CXS接口的屬性包括以下:

image.png

其中,TX和RX的屬性可以單獨設置。

CXS的完整接口信號列表如下:

image.png

其中,CXSLAST用于連續傳輸;CXSPRCLTYPE用于支持多種協議類型。

CXSCHECKTYPE 屬性被設置成Odd_Byte_Parity,CXS接口上會增加額外的信號線,用于增強接口信號的完整性。對于單bit信號線,增加一個bit,比如 CXSVALID ,增加一個信號 CXSVALIDCHK ;對于多bit信號,每8bit增加一個信號,比如256-bit的 CXSDATA ,增加一個32-bit信號 CXSDATACHK 。增加的信號與原信號相加為奇數。

CXS對每個flit中的數據包放置進行了限制,以簡化數據路徑實現:

  • 數據包的第一個byte必須是16-byte對齊的邊界
  • 數據包的后續字節占用flit的后續字節
  • 數據包可以在任何4-byte對齊的邊界上結束。
  • 從字節位置開始的數據包將占用該flit中的每個后續字節,直到數據包結束或flit結束。
  • 如果flit結束時數據包中還有剩余字節,則該數據包將從下一個flit的字節[0]開始,并占據隨后的每個字節位置,直到數據包結束或flit結束。
  • 當數據包在flit中結束時,flit中的剩余字節可以不使用。
  • flit中的任何數據包必須從相對于flit開始或前一數據包結束的第一個可用16-byte邊界開始。

CXSCNTL信號總線可以分為五個字段,分別為:START,START[N:0]PTR,END,ENDERROR和END[N:0]PTR。下面分別解釋。

image.png

下圖給出CXSCNTL信號的組成示例。當屬性 **CXSMAXPKTPERFLIT ** = 4,屬性 **CXSDATAFLITWIDTH ** = 512時,CXSCNTL信號共有36-bit。

image.png

CXS接口傳輸滿足以下要求的數據包大小需滿足:

  • 至少為4字節
  • 為4字節的倍數
  • 數據大小沒有上限

如果CXS用于CCIX數據包傳輸,需要遵守CCIX的約定。

協議中給出了數據包傳輸的例子,看一個比較復雜的示例。屬性 ***CXSMAXPKTPERFLIT *** = 4, ***CXSDATAFLITWIDTH *** = 512, ***CXSCONTINUOUSDATA *** = true,Protocol 0用于可變長數據包,Protocol 1用于固定長64-byte數據包。在Protocol 0中,P0D和P0E分組必須保持在一起;在Protocol 1中,P1B和P1C分組必須保持在一起,P1E,P1F和P1分組必須保持在一起。

image.png

當屬性 **CXSLINKCONTROL _ ** = Explicit *Credit *Return,CXS接口上會多出一組信號, CXSCRDRTNCXSACTIVEREQCXSACTIVEACKCXSDEACTHINT

其中 CXSACTIVEREQCXSACTIVEACK實現四相位的握手機制。握手機制共分為四種狀態:

    1. STOP
  • CXS接口在STOP狀態時沒有任何操作,所有的信用被RX收回
  • STOP是一個穩定狀態,CXS接口可以無限期保持在STOP
  • RX此時不可以接收flit,也不可以授予信用
  • TX此時不可以發送flit,也不可以返還信用
  • 如果TX有flit等待發送,需要從STOP狀態轉移到ACTIVATE狀態
    1. ACTIVATE
  • 此狀態為STOP到RUN的過渡
  • 期望進入此狀態后,期待CXS通路很快進入RUN狀態
  • 此狀態下,TX必須接收信用,但還不可以發送flit
  • RX此時不可以接收flit,也不可以授予信用
  • RX不可以在狀態ACTIVATE下發送信用。但是允許RX在進入RUN狀態的同一周期內發送信用。由于存在潛在的競爭條件,因此TX在ACTIVATE狀態下可能會收到信用
  • 當RX準備好接收flit時,它可以從ACTIVATE狀態轉移到RUN狀態
    1. RUN
  • TX和RX在此狀態下傳輸flit
  • RUN狀態是穩定狀態,CXS通道可以一直保持在RUN狀態
  • RX可以接收flit,授予信用,接收返還的信用
  • TX可以發送flit,,接收信用
  • TX允許返還信用給RX
  • TX可以在某些情況下從RUN狀態切換到DEACTIVATE狀態,比如TX沒有flit可以發送了
    1. DEACTIVATE
  • 此狀態用于從RUN到STOP的過渡
  • DEACTIVATE是一個中間狀態
  • 在進入此狀態前,TX必須停止發送flit,由于潛在的競爭條件,RX有可能在此狀態下接收flit
  • RX可以發送信用,當RX發現TX返還信用時必須停止繼續發送信用
  • RX可以接收TX返還的信用
  • TX必須發送信用返回,以便將所有信用返回給RX。
  • 只有當所有信用都已返回時,RX才能退出該狀態并移至STOP狀態。

四種狀態轉換的關系如下圖:

image.png

TX始終負責啟動從RUN到STOP,或從STOP到RUN的狀態更改,例如:

  • TX端有flit等待發送,所以需要從STOP轉移到RUN
  • TX端沒有flit可以發送,可以從RUN切換到STOP
  • TX可以觀測一個獨立的邊帶信號,判斷是否需要從RUN移動到STOP,或從STOP移動到RUN
  • TX可以觀測RX發出的CXSDEACTHINT來判斷是否需要從RUN轉移到STOP

當接口的一方同時執行兩個操作時,即存在競爭條件。CXS規范允許數據流和鏈路控制信號組之間存在不同的延遲。因此,到達時的操作順序可能與發出的順序不同。競爭條件之所以會存在,是因為不要求CXSACTIVEREQCXSACTIVEACK信號不需要在TX和RX之間的其它信號具有相同的延遲。

image.png

CXS接口信號間的時序關系如下。

  • CXSVALID,CXSDATA,CXSCNTL和CXSCRDRTN必須是同步關系,且具有相同的延時
  • CXSCRDGNT,CXSACTIVEACK,CXSDEACTHINT必須是同步,但是可以有任意延時
  • CXSACTIVEREQ必須是同步驅動,但是接收端可以異步接收,且可以任意延時

來看一個例子。

image.png

  1. 1.T0時刻,TX和RX都處于STOP狀態,兩邊都可以關斷時鐘,甚至電源
    1. T1時刻,TX置位 CXSACTIVEREQ ,從STOP轉移到ACTIVATE;TX等待RX啟動;
  2. 3.T6時刻,RX完成啟動,置位 CXSACTIVEACK
  3. 4. CXSCRDGNTCXSACTIVEACK**在同一時刻被置位;
  4. 5. T7時刻,TX接收到一個信用,發送一個flit;
  5. 6. TX在接收到更多信用后,連續發送flit。

某些情況下,CXS通道不能中斷數據流,例如PCIe。這時,需要TX和RX實現一個存儲轉發(store-and-forward)buffer。

如果RX內置了這個buffer,數據包可以被下游完整接收。RX必須有足夠的空間來存儲TX所能發送的最大數據包。這種情況下,TX和RX可以設置屬性 *** CXSCONTINUOUSDATA * ** = False。TX無需緩存數據包。

如果RX沒有緩沖區并且需要連續數據,則它會將** *CXSCONTINUOUSDATA *屬性設置為True,并且TX也必須將 *CXSCONTINUOUSDATA ***設置為True。然后,TX必須能夠在不依賴其它接口的情況下發出數據包內的所有flit。

如果需要連續流量,必須確保RX有足夠的信用來覆蓋最壞情況下的往返信用延遲:

  • RX和TX之間的CXSCRDGNT延遲
  • TX端的CXSTXCRDGNTCXSTXVALID之間的最大內部延遲,由TX的CXS_MAX_CREDIT_LATENCY屬性描述
  • RX和TX之間的CXSVALID延遲
  • RX端的CXSTXVALIDCXSTXCRDGNT之間的最大內部延遲,由RX的CXS_MAX_CREDIT_LATENCY屬性描述

RX可以發出的最大信用數取決于其緩沖區的大小,可以通過其** CXS MAX *CREDIT ***屬性來描述。

如果下游接口的時鐘比CXS鏈路慢,則可能不需要每個周期發送一個flit。在這種情況下,RX保持恒定流量所需的信用數可能小于往返延遲。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 緩沖器
    +關注

    關注

    6

    文章

    1903

    瀏覽量

    45320
  • 接收機
    +關注

    關注

    8

    文章

    1158

    瀏覽量

    53161
  • 狀態機
    +關注

    關注

    2

    文章

    489

    瀏覽量

    27391
  • 中斷控制器
    +關注

    關注

    0

    文章

    59

    瀏覽量

    9411
  • PCIe接口
    +關注

    關注

    0

    文章

    116

    瀏覽量

    9625
收藏 人收藏

    評論

    相關推薦

    電感基礎知識 圖文介紹

    `電感基礎知識 圖文介紹`
    發表于 08-16 19:34

    IGBT的介紹和應用基礎知識

    IGBT的介紹和應用,基礎知識
    發表于 06-24 22:42

    ARM基礎知識

    ARM基礎知識
    發表于 01-25 02:23

    ARM架構基礎知識小結

    從單片機轉到ARM ―― ARM架構基礎知識小結
    發表于 12-29 06:16

    電阻的基礎知識介紹

    電阻基礎知識介紹
    發表于 02-26 06:17

    介紹關于編程的基礎知識

    關注、星標公眾號,不錯過精彩內容作者:strongerHuang對于軟件工程師來說,代碼升級(或程序更新)算是必備基礎知識。下面將介紹關于編程的基礎知識,以及結合STM32官方提供的De...
    發表于 07-27 08:13

    介紹PLC的原理及基礎知識

    在自動化控制領域,PLC應用十分廣泛,這里開始介紹PLC的原理及基礎知識
    發表于 09-09 09:07

    1602液晶基礎知識介紹

    一、1602液晶基礎知識介紹1、1602液晶的硬件接口介紹2、1602液晶的讀寫時序介紹3、1602液晶的指令介紹4、簡單實例二、1602液
    發表于 11-22 07:08

    STM32的基礎知識大合集

    2021.3.30第一次筆記STM32的入門學習之基礎知識一STM32的介紹STM32是基于ARM內核的32位MCU系列———內核為ARM
    發表于 11-29 08:09

    GSM基礎知識介紹

    GSM基礎知識介紹
    發表于 07-29 17:18 ?75次下載
    GSM<b class='flag-5'>基礎知識</b>的<b class='flag-5'>介紹</b>

    arm內核基礎知識介紹

    arm內核基礎知識介紹,有需要的朋友下來看看。
    發表于 01-08 14:44 ?12次下載

    后視鏡設計基礎知識介紹

    后視鏡設計基礎知識介紹,感興趣的小伙伴們可以看看我的上傳的資源,有分享更多。
    發表于 08-12 15:00 ?23次下載

    淺談ARM處理器基礎知識

    淺談ARM處理器基礎知識
    發表于 01-14 12:31 ?16次下載

    PIC24H系列參考手冊基礎知識

    本文主要介紹了PIC24H系列參考手冊基礎知識.
    發表于 06-24 03:20 ?4次下載
    PIC24H<b class='flag-5'>系列</b>參考手冊<b class='flag-5'>基礎知識</b>

    FPGA基礎知識介紹

    電子發燒友網站提供《FPGA基礎知識介紹.pdf》資料免費下載
    發表于 02-23 09:45 ?24次下載