0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM系列-CXS基礎(chǔ)知識(shí)介紹

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

CXS (Credited eXtensible Stream)是一個(gè)流接口協(xié)議,主要用于點(diǎn)到點(diǎn)(point-to-point)的數(shù)據(jù)包通信。CXS接口的主要使用情形是在片上互連和PCIe控制器。CXS中的數(shù)據(jù)傳輸是單向的,因此一般CXS接口是收/發(fā)成對(duì)出現(xiàn)的。

看到這里,是不是想起了什么?沒(méi)錯(cuò),就是AXI-Stream,同樣也是點(diǎn)到點(diǎn)的流接口傳輸,比如中斷控制器GIC的組件之間就采用了AXI-Stream。AXI-Stream在 FPGA中應(yīng)用較多,尤其是多媒體領(lǐng)域。

image.png

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

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

image.png

從接口信號(hào)上看,并沒(méi)有READY信號(hào),也就是說(shuō)CXS不像其它的AMBA總線,比如AXI,是通過(guò)“VALID - READY”來(lái)控制流量。

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

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

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

CXS接口的屬性包括以下:

image.png

其中,TX和RX的屬性可以單獨(dú)設(shè)置。

CXS的完整接口信號(hào)列表如下:

image.png

其中,CXSLAST用于連續(xù)傳輸;CXSPRCLTYPE用于支持多種協(xié)議類型。

當(dāng)CXSCHECKTYPE 屬性被設(shè)置成Odd_Byte_Parity,CXS接口上會(huì)增加額外的信號(hào)線,用于增強(qiáng)接口信號(hào)的完整性。對(duì)于單bit信號(hào)線,增加一個(gè)bit,比如 CXSVALID ,增加一個(gè)信號(hào) CXSVALIDCHK ;對(duì)于多bit信號(hào),每8bit增加一個(gè)信號(hào),比如256-bit的 CXSDATA ,增加一個(gè)32-bit信號(hào) CXSDATACHK 。增加的信號(hào)與原信號(hào)相加為奇數(shù)。

CXS對(duì)每個(gè)flit中的數(shù)據(jù)包放置進(jìn)行了限制,以簡(jiǎn)化數(shù)據(jù)路徑實(shí)現(xiàn):

  • 數(shù)據(jù)包的第一個(gè)byte必須是16-byte對(duì)齊的邊界
  • 數(shù)據(jù)包的后續(xù)字節(jié)占用flit的后續(xù)字節(jié)
  • 數(shù)據(jù)包可以在任何4-byte對(duì)齊的邊界上結(jié)束。
  • 從字節(jié)位置開(kāi)始的數(shù)據(jù)包將占用該flit中的每個(gè)后續(xù)字節(jié),直到數(shù)據(jù)包結(jié)束或flit結(jié)束。
  • 如果flit結(jié)束時(shí)數(shù)據(jù)包中還有剩余字節(jié),則該數(shù)據(jù)包將從下一個(gè)flit的字節(jié)[0]開(kāi)始,并占據(jù)隨后的每個(gè)字節(jié)位置,直到數(shù)據(jù)包結(jié)束或flit結(jié)束。
  • 當(dāng)數(shù)據(jù)包在flit中結(jié)束時(shí),flit中的剩余字節(jié)可以不使用。
  • flit中的任何數(shù)據(jù)包必須從相對(duì)于flit開(kāi)始或前一數(shù)據(jù)包結(jié)束的第一個(gè)可用16-byte邊界開(kāi)始。

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

image.png

下圖給出CXSCNTL信號(hào)的組成示例。當(dāng)屬性 **CXSMAXPKTPERFLIT ** = 4,屬性 **CXSDATAFLITWIDTH ** = 512時(shí),CXSCNTL信號(hào)共有36-bit。

image.png

CXS接口傳輸滿足以下要求的數(shù)據(jù)包大小需滿足:

  • 至少為4字節(jié)
  • 為4字節(jié)的倍數(shù)
  • 數(shù)據(jù)大小沒(méi)有上限

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

協(xié)議中給出了數(shù)據(jù)包傳輸?shù)睦?,看一個(gè)比較復(fù)雜的示例。屬性 ***CXSMAXPKTPERFLIT *** = 4, ***CXSDATAFLITWIDTH *** = 512, ***CXSCONTINUOUSDATA *** = true,Protocol 0用于可變長(zhǎng)數(shù)據(jù)包,Protocol 1用于固定長(zhǎng)64-byte數(shù)據(jù)包。在Protocol 0中,P0D和P0E分組必須保持在一起;在Protocol 1中,P1B和P1C分組必須保持在一起,P1E,P1F和P1分組必須保持在一起。

image.png

當(dāng)屬性 **CXSLINKCONTROL _ ** = Explicit *Credit *Return,CXS接口上會(huì)多出一組信號(hào), CXSCRDRTN , CXSACTIVEREQ ,CXSACTIVEACKCXSDEACTHINT 。

其中 CXSACTIVEREQ ,CXSACTIVEACK實(shí)現(xiàn)四相位的握手機(jī)制。握手機(jī)制共分為四種狀態(tài):

    1. STOP
  • CXS接口在STOP狀態(tài)時(shí)沒(méi)有任何操作,所有的信用被RX收回
  • STOP是一個(gè)穩(wěn)定狀態(tài),CXS接口可以無(wú)限期保持在STOP
  • RX此時(shí)不可以接收f(shuō)lit,也不可以授予信用
  • TX此時(shí)不可以發(fā)送flit,也不可以返還信用
  • 如果TX有flit等待發(fā)送,需要從STOP狀態(tài)轉(zhuǎn)移到ACTIVATE狀態(tài)
    1. ACTIVATE
  • 此狀態(tài)為STOP到RUN的過(guò)渡
  • 期望進(jìn)入此狀態(tài)后,期待CXS通路很快進(jìn)入RUN狀態(tài)
  • 此狀態(tài)下,TX必須接收信用,但還不可以發(fā)送flit
  • RX此時(shí)不可以接收f(shuō)lit,也不可以授予信用
  • RX不可以在狀態(tài)ACTIVATE下發(fā)送信用。但是允許RX在進(jìn)入RUN狀態(tài)的同一周期內(nèi)發(fā)送信用。由于存在潛在的競(jìng)爭(zhēng)條件,因此TX在ACTIVATE狀態(tài)下可能會(huì)收到信用
  • 當(dāng)RX準(zhǔn)備好接收f(shuō)lit時(shí),它可以從ACTIVATE狀態(tài)轉(zhuǎn)移到RUN狀態(tài)
    1. RUN
  • TX和RX在此狀態(tài)下傳輸flit
  • RUN狀態(tài)是穩(wěn)定狀態(tài),CXS通道可以一直保持在RUN狀態(tài)
  • RX可以接收f(shuō)lit,授予信用,接收返還的信用
  • TX可以發(fā)送flit,,接收信用
  • TX允許返還信用給RX
  • TX可以在某些情況下從RUN狀態(tài)切換到DEACTIVATE狀態(tài),比如TX沒(méi)有flit可以發(fā)送了
    1. DEACTIVATE
  • 此狀態(tài)用于從RUN到STOP的過(guò)渡
  • DEACTIVATE是一個(gè)中間狀態(tài)
  • 在進(jìn)入此狀態(tài)前,TX必須停止發(fā)送flit,由于潛在的競(jìng)爭(zhēng)條件,RX有可能在此狀態(tài)下接收f(shuō)lit
  • RX可以發(fā)送信用,當(dāng)RX發(fā)現(xiàn)TX返還信用時(shí)必須停止繼續(xù)發(fā)送信用
  • RX可以接收TX返還的信用
  • TX必須發(fā)送信用返回,以便將所有信用返回給RX。
  • 只有當(dāng)所有信用都已返回時(shí),RX才能退出該狀態(tài)并移至STOP狀態(tài)。

四種狀態(tài)轉(zhuǎn)換的關(guān)系如下圖:

image.png

TX始終負(fù)責(zé)啟動(dòng)從RUN到STOP,或從STOP到RUN的狀態(tài)更改,例如:

  • TX端有flit等待發(fā)送,所以需要從STOP轉(zhuǎn)移到RUN
  • TX端沒(méi)有flit可以發(fā)送,可以從RUN切換到STOP
  • TX可以觀測(cè)一個(gè)獨(dú)立的邊帶信號(hào),判斷是否需要從RUN移動(dòng)到STOP,或從STOP移動(dòng)到RUN
  • TX可以觀測(cè)RX發(fā)出的CXSDEACTHINT來(lái)判斷是否需要從RUN轉(zhuǎn)移到STOP

當(dāng)接口的一方同時(shí)執(zhí)行兩個(gè)操作時(shí),即存在競(jìng)爭(zhēng)條件。CXS規(guī)范允許數(shù)據(jù)流和鏈路控制信號(hào)組之間存在不同的延遲。因此,到達(dá)時(shí)的操作順序可能與發(fā)出的順序不同。競(jìng)爭(zhēng)條件之所以會(huì)存在,是因?yàn)椴灰?strong>CXSACTIVEREQ和CXSACTIVEACK信號(hào)不需要在TX和RX之間的其它信號(hào)具有相同的延遲。

image.png

CXS接口信號(hào)間的時(shí)序關(guān)系如下。

  • CXSVALID,CXSDATA,CXSCNTL和CXSCRDRTN必須是同步關(guān)系,且具有相同的延時(shí)
  • CXSCRDGNT,CXSACTIVEACK,CXSDEACTHINT必須是同步,但是可以有任意延時(shí)
  • CXSACTIVEREQ必須是同步驅(qū)動(dòng),但是接收端可以異步接收,且可以任意延時(shí)

來(lái)看一個(gè)例子。

image.png

  1. 1.T0時(shí)刻,TX和RX都處于STOP狀態(tài),兩邊都可以關(guān)斷時(shí)鐘,甚至電源;
    1. T1時(shí)刻,TX置位 CXSACTIVEREQ ,從STOP轉(zhuǎn)移到ACTIVATE;TX等待RX啟動(dòng);
  2. 3.T6時(shí)刻,RX完成啟動(dòng),置位 CXSACTIVEACK ;
  3. 4. CXSCRDGNTCXSACTIVEACK**在同一時(shí)刻被置位;
  4. 5. T7時(shí)刻,TX接收到一個(gè)信用,發(fā)送一個(gè)flit;
  5. 6. TX在接收到更多信用后,連續(xù)發(fā)送flit。

某些情況下,CXS通道不能中斷數(shù)據(jù)流,例如PCIe。這時(shí),需要TX和RX實(shí)現(xiàn)一個(gè)存儲(chǔ)轉(zhuǎn)發(fā)(store-and-forward)buffer。

如果RX內(nèi)置了這個(gè)buffer,數(shù)據(jù)包可以被下游完整接收。RX必須有足夠的空間來(lái)存儲(chǔ)TX所能發(fā)送的最大數(shù)據(jù)包。這種情況下,TX和RX可以設(shè)置屬性 *** CXSCONTINUOUSDATA * ** = False。TX無(wú)需緩存數(shù)據(jù)包。

如果RX沒(méi)有緩沖區(qū)并且需要連續(xù)數(shù)據(jù),則它會(huì)將** *CXSCONTINUOUSDATA *屬性設(shè)置為True,并且TX也必須將 *CXSCONTINUOUSDATA ***設(shè)置為True。然后,TX必須能夠在不依賴其它接口的情況下發(fā)出數(shù)據(jù)包內(nèi)的所有flit。

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

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

RX可以發(fā)出的最大信用數(shù)取決于其緩沖區(qū)的大小,可以通過(guò)其** CXS MAX *CREDIT ***屬性來(lái)描述。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 緩沖器
    +關(guān)注

    關(guān)注

    6

    文章

    1903

    瀏覽量

    45324
  • 接收機(jī)
    +關(guān)注

    關(guān)注

    8

    文章

    1158

    瀏覽量

    53162
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    489

    瀏覽量

    27391
  • 中斷控制器
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    9411
  • PCIe接口
    +關(guān)注

    關(guān)注

    0

    文章

    116

    瀏覽量

    9625
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電感基礎(chǔ)知識(shí) 圖文介紹

    `電感基礎(chǔ)知識(shí) 圖文介紹`
    發(fā)表于 08-16 19:34

    IGBT的介紹和應(yīng)用基礎(chǔ)知識(shí)

    IGBT的介紹和應(yīng)用,基礎(chǔ)知識(shí)
    發(fā)表于 06-24 22:42

    ARM基礎(chǔ)知識(shí)

    ARM基礎(chǔ)知識(shí)
    發(fā)表于 01-25 02:23

    ARM架構(gòu)基礎(chǔ)知識(shí)小結(jié)

    從單片機(jī)轉(zhuǎn)到ARM ―― ARM架構(gòu)基礎(chǔ)知識(shí)小結(jié)
    發(fā)表于 12-29 06:16

    電阻的基礎(chǔ)知識(shí)介紹

    電阻基礎(chǔ)知識(shí)介紹
    發(fā)表于 02-26 06:17

    介紹關(guān)于編程的基礎(chǔ)知識(shí)

    關(guān)注、星標(biāo)公眾號(hào),不錯(cuò)過(guò)精彩內(nèi)容作者:strongerHuang對(duì)于軟件工程師來(lái)說(shuō),代碼升級(jí)(或程序更新)算是必備基礎(chǔ)知識(shí)。下面將介紹關(guān)于編程的基礎(chǔ)知識(shí),以及結(jié)合STM32官方提供的De...
    發(fā)表于 07-27 08:13

    介紹PLC的原理及基礎(chǔ)知識(shí)

    在自動(dòng)化控制領(lǐng)域,PLC應(yīng)用十分廣泛,這里開(kāi)始介紹PLC的原理及基礎(chǔ)知識(shí)。
    發(fā)表于 09-09 09:07

    1602液晶基礎(chǔ)知識(shí)介紹

    一、1602液晶基礎(chǔ)知識(shí)介紹1、1602液晶的硬件接口介紹2、1602液晶的讀寫時(shí)序介紹3、1602液晶的指令介紹4、簡(jiǎn)單實(shí)例二、1602液
    發(fā)表于 11-22 07:08

    STM32的基礎(chǔ)知識(shí)大合集

    2021.3.30第一次筆記STM32的入門學(xué)習(xí)之基礎(chǔ)知識(shí)一STM32的介紹STM32是基于ARM內(nèi)核的32位MCU系列———內(nèi)核為ARM
    發(fā)表于 11-29 08:09

    GSM基礎(chǔ)知識(shí)介紹

    GSM基礎(chǔ)知識(shí)介紹
    發(fā)表于 07-29 17:18 ?75次下載
    GSM<b class='flag-5'>基礎(chǔ)知識(shí)</b>的<b class='flag-5'>介紹</b>

    arm內(nèi)核基礎(chǔ)知識(shí)介紹

    arm內(nèi)核基礎(chǔ)知識(shí)介紹,有需要的朋友下來(lái)看看。
    發(fā)表于 01-08 14:44 ?12次下載

    后視鏡設(shè)計(jì)基礎(chǔ)知識(shí)介紹

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

    淺談ARM處理器基礎(chǔ)知識(shí)

    淺談ARM處理器基礎(chǔ)知識(shí)
    發(fā)表于 01-14 12:31 ?16次下載

    PIC24H系列參考手冊(cè)基礎(chǔ)知識(shí)

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

    FPGA基礎(chǔ)知識(shí)介紹

    電子發(fā)燒友網(wǎng)站提供《FPGA基礎(chǔ)知識(shí)介紹.pdf》資料免費(fèi)下載
    發(fā)表于 02-23 09:45 ?24次下載