chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

簡(jiǎn)單地分析幾個(gè)Ack/Nak機(jī)制的例子

SwM2_ChinaAET ? 來(lái)源:未知 ? 作者:李倩 ? 2018-05-30 09:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這一篇文章來(lái)簡(jiǎn)單地分析幾個(gè)Ack/Nak機(jī)制的例子。

Example 1. Example of Ack

Step1 設(shè)備A準(zhǔn)備依次向設(shè)備B發(fā)送5個(gè)TLP,其對(duì)應(yīng)的序列號(hào)分別為3,4,5,6,7;

Step2 設(shè)備B成功的接收到了TLP3,并將NEXT_RCV_SEQ從3加到4,但是設(shè)備B沒(méi)有立即向設(shè)備A返回Ack(此時(shí)AckNak_LATENCY_TIMER尚未溢出);

Step3 設(shè)備B又成功地接收到了TLP4和TLP5;

Step4 假設(shè)此時(shí)AckNak_LATENCY_TIMER溢出了,則設(shè)備B會(huì)向設(shè)備A返回一個(gè)帶有序列號(hào)為5的Ack DLLP。同時(shí),設(shè)備B將AckNak_LATENCY_TIMER復(fù)位,但是并未重新啟動(dòng),直到設(shè)備B成功地接收到了TLP6。

Step5 設(shè)備A接收到了Ack5,將REPLAY_TIMER和REPLAY_NUM復(fù)位,然后將Buffer中的序列號(hào)5(和5之前)的TLP備份移除;

Step6 一旦設(shè)備B接收到TLP6,AckNak_LATENCY_TIMER又會(huì)被重新啟動(dòng)。

Example 2. Ack with Sequence Number Rollover

Step1 設(shè)備A準(zhǔn)備依次向設(shè)備B發(fā)送序列號(hào)為4094,4095,0,1,2的TLP,注意第一個(gè)發(fā)送的是TLP4094,最后一個(gè)發(fā)送的是TLP2。也就是說(shuō)序列號(hào)Rollover了;

Step2 設(shè)備B成功接收到TLP4094~TLP1后,假設(shè)此時(shí)AckNak_LATENCY_TIMER溢出了,則設(shè)備B向設(shè)備A返回Ack1 DLLP;

Step3 設(shè)備A接收到Ack1,并將Buffer中的序列號(hào)為1(和之前的,包括TLP4094~TLP1)的TLP備份移除。同時(shí)將REPLAY_TIMER和REPLAY_NUM復(fù)位。

Example 3. Example of Nak

Step1 假設(shè)設(shè)備A準(zhǔn)備依次向設(shè)備B發(fā)送序列號(hào)為4094,4095,0,1,2的TLP;

Step2 設(shè)備B成功地接受了TLP4094,并將NEXT_RCV_SEQ加1,變?yōu)?095;

Step3 設(shè)備B接收到了TLP4095,但是該TLP并未通過(guò)CRC校檢(即存在錯(cuò)誤)。此時(shí)無(wú)論AckNak_LATENCY_TIMER處于何種狀態(tài),設(shè)備B都會(huì)立即向設(shè)備A返回Ack4094(注意返回的Ack DLLP中的序列號(hào)為上一次成功接收的TLP的序列號(hào))。同時(shí)設(shè)備B將AckNak_LATENCY_TIMER停止并復(fù)位;

Step4 設(shè)備B會(huì)一直等待設(shè)備A向其發(fā)送TLP4095,但是設(shè)備A卻并不知發(fā)生了什么,在接收到設(shè)備B向其返回的Ack/Nak之前,會(huì)繼續(xù)發(fā)送TLP0~TLP2,只是設(shè)備B會(huì)直接忽略這些TLP。

Step5 當(dāng)設(shè)備A接收到來(lái)自設(shè)備B的Nak4094 DLLP時(shí),會(huì)將Buffer中的TLP4094(和之前的TLP)移除,并從TLP4095從新開(kāi)始發(fā)送。同時(shí),將REPLAY_TIMER復(fù)位。

注:Mindshare書中,此處說(shuō)還會(huì)復(fù)位REPLAY_NUM,這是不正確的。

Step6 由于設(shè)備A接收到的是Nak,而不是Ack,因此設(shè)備A會(huì)重新啟動(dòng)REPLAY_TIMER并將REPLAY_NUM加一;

Step7 一旦設(shè)備B成功地接收到TLP4095,設(shè)備B便會(huì)清除NAK_SCHEDULED標(biāo)志位,并將NEXT_RCV_SEQ計(jì)數(shù)器加一,同時(shí)重啟AckNak_LATENCY_TIMER。

Example 4. Example of Lost TLPs

Step1 假設(shè)設(shè)備A準(zhǔn)備依次向設(shè)備B發(fā)送TLP 4094,4095,0,1,2;

Step2 設(shè)備B成功地接收了TLP4094~TLP0,并向設(shè)備A返回Ack0,此時(shí)設(shè)備B的NEXT_RCV_SEQ為1;

Step3 設(shè)備A接收到設(shè)備B返回的Ack0,從Buffer中移除相應(yīng)的TLP備份;

Step4 設(shè)備B接收到了TLP2(而不是TLP1),也就是說(shuō)TLP1在傳輸過(guò)程中丟失了。此時(shí),設(shè)備B會(huì)直接將TLP2丟棄,并將NAK_SCHEDULED標(biāo)志位置位,同時(shí)向設(shè)備A返回Nak0 DLLP;

Step5 設(shè)備A接收到Nak0 DLLP后,會(huì)將Buffer中的TLP0(以及之前的,如果有的話)移除。同時(shí),從TLP1開(kāi)始,重新向設(shè)備B發(fā)送。

Example 5. Example of Bad Nak

Step1 設(shè)備A準(zhǔn)備依次向設(shè)備B發(fā)送TLP 4094,4095,0,1,2;

Step2 設(shè)備B成功的接收了TLP4094~TLP0,但是由于AckNak_LATENCY_TIMER尚未溢出,所以設(shè)備B沒(méi)有立即向設(shè)備A返回Ack DLLP;

Step3 設(shè)備B發(fā)現(xiàn)TLP1中存在錯(cuò)誤,于是向設(shè)備A返回Nak0 DLLP,并將NAK_SCHEDULED標(biāo)志位置位;

Step4 設(shè)備A發(fā)現(xiàn)其接收到的Nak0 DLLP中也存在錯(cuò)誤(CRC校檢不通過(guò)),于是直接丟棄了Nak0;

Step5 然而設(shè)備B卻一直在等待設(shè)備A向其發(fā)送TLP1,在其成功接收TLP1之前,設(shè)備B不會(huì)返回任何Ack或者Nak,不管設(shè)備A向其發(fā)送什么(除TLP1之外的)。設(shè)備B的NAK_SCHEDULED標(biāo)志位也一直保持置位;

Step6 尷尬的是,設(shè)備A并不知道設(shè)備B想要其重發(fā)TLP1(由于沒(méi)有成功接收到Nak0)。因此,設(shè)備A會(huì)繼續(xù)向設(shè)備B發(fā)送之后的TLP,但是由于一直沒(méi)有接收到設(shè)備B的Ack/Nak DLLP,設(shè)備A的REPLAY_TIMER會(huì)在一段時(shí)間后溢出;

Step7 當(dāng)設(shè)備A的REPLAY_TIMER溢出后,設(shè)備A會(huì)向Buffer中的所有TLP都重新發(fā)送一遍,并重啟REPLAY_TIMER,同時(shí)將REPLAY_NUM計(jì)數(shù)器加一;

Step8 設(shè)備B會(huì)再次接收到TLP4094~TLP0,但是這在之前就已經(jīng)成功接受到過(guò)了。因此設(shè)備B會(huì)直接將其丟棄,且不會(huì)像設(shè)備A返回任何的Ack或者Nak

Step9 此時(shí),設(shè)備B再次接收到了TLP1,并未發(fā)現(xiàn)錯(cuò)誤(成功接收)。于是,設(shè)備B將NAK_SCHEDULED標(biāo)志位清零,并重啟AckNak_LATENCY_TIMER,將NEXT_RCV_SEQ加一。

聲明:本文內(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)投訴
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2302

    瀏覽量

    97195
  • TLP
    TLP
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    16315

原文標(biāo)題:【博文連載】PCIe掃盲——Ack/Nak 機(jī)制詳解(二)

文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    CY7C65215A作為從站,在主站寫入時(shí)響應(yīng)NAK是怎么回事?

    設(shè)備寫入數(shù)據(jù)時(shí),總是在主設(shè)備向從設(shè)備寫入的每個(gè)字節(jié)上響應(yīng) ACK。 我遇到的問(wèn)題是,當(dāng)我的微控制器作為主站向作為從站的賽普拉斯寫入數(shù)據(jù)時(shí),賽普拉斯對(duì)最后一個(gè)字節(jié)的響應(yīng)是 NAK,而不是 ACK
    發(fā)表于 07-04 06:30

    BLE中的ACK機(jī)制

    ACK
    橙群微電子
    發(fā)布于 :2023年03月31日 09:52:36

    簡(jiǎn)單的窗口及菜單的例子

    簡(jiǎn)單的窗口及菜單的例子:  Dos匯編,Win32匯編,硬件資料,豐富的匯編、C 源代碼,編程例子詳解。
    發(fā)表于 05-06 16:36 ?9次下載

    什么是ACK (ACKnowledge Character)

    什么是ACK (ACKnowledge Character)  英文縮寫: ACK (ACKnowledge Character) 中文譯名: 確認(rèn)字符 分  類: 傳輸與接入
    發(fā)表于 02-22 10:12 ?2030次閱讀

    labview與access操作簡(jiǎn)單例子

    做的labview與access操作簡(jiǎn)單例子,互相學(xué)習(xí)吧
    發(fā)表于 03-15 16:00 ?93次下載

    24C02中IIC總線的應(yīng)答信號(hào)(ACK)時(shí)序圖分析

    24C02中IIC總線的應(yīng)答信號(hào)(ACK)時(shí)序圖分析,很好的單片機(jī)學(xué)習(xí)資料。
    發(fā)表于 03-21 17:30 ?94次下載

    各種簡(jiǎn)單例子源碼

    關(guān)于單片機(jī)開(kāi)發(fā) 基于IAR平臺(tái) 各種簡(jiǎn)單例子源碼 入門級(jí)別
    發(fā)表于 06-20 16:09 ?1次下載

    CAN總線波形中為什么ACK電平偏高?

    CAN總線一直以實(shí)時(shí)性強(qiáng)、傳輸距離遠(yuǎn)、抗干擾能力強(qiáng)、數(shù)據(jù)保證到達(dá)等特點(diǎn)而廣泛應(yīng)用于高可靠性的場(chǎng)合。但常常在觀察CAN通信波形時(shí),我們會(huì)發(fā)現(xiàn)差分電平在ACK段突然增高,這是什么原因?qū)е碌哪??這里結(jié)合測(cè)試實(shí)例對(duì)ACK電平偏高的原因做簡(jiǎn)單
    發(fā)表于 07-05 15:08 ?1w次閱讀
    CAN總線波形中為什么<b class='flag-5'>ACK</b>電平偏高?

    PCIe總線的通信機(jī)制

    那么為什么要分為Non-Posted和Posted兩種類型呢?對(duì)于Memory Writes來(lái)說(shuō),對(duì)效率要求較高,因此采用了Posted的方式。但是這并不意味著Posted類型的操作不需要Completer進(jìn)行應(yīng)答,只是此時(shí)Completer采用了另一種應(yīng)答機(jī)制——Ack
    的頭像 發(fā)表于 04-24 09:41 ?1.2w次閱讀
    PCIe總線的通信<b class='flag-5'>機(jī)制</b>

    Ack/Nak機(jī)制詳細(xì)介紹

    Ack/Nak是一種由硬件實(shí)現(xiàn)的,完全自動(dòng)的機(jī)制,目的是保證TLP有效可靠地傳輸。Ack DLLP用于確認(rèn)TLP被成功接收,Nak DLLP
    的頭像 發(fā)表于 05-29 14:46 ?1.6w次閱讀
    <b class='flag-5'>Ack</b>/<b class='flag-5'>Nak</b><b class='flag-5'>機(jī)制</b>詳細(xì)介紹

    MATLAB代碼和例子分析

    MATLAB代碼和例子分析。
    發(fā)表于 05-27 09:44 ?0次下載

    ack文本查找工具

    ./oschina_soft/ack3.zip
    發(fā)表于 05-25 09:24 ?0次下載
    <b class='flag-5'>ack</b>文本查找工具

    PCIe鏈路層里的ACK/NAK介紹

    Spec洋洋灑灑數(shù)千頁(yè),也不會(huì)從頭到尾去通讀整個(gè)協(xié)議。對(duì)于cocotbext-pcie里面牽涉到的鏈路層的ACK/NAK,牽涉到的PCIe背景,聊做記錄。 ????本文僅結(jié)合PCIe Spce
    的頭像 發(fā)表于 06-25 10:31 ?4123次閱讀
    PCIe鏈路層里的<b class='flag-5'>ACK</b>/<b class='flag-5'>NAK</b>介紹

    python最簡(jiǎn)單for循環(huán)例子

    Python是一種簡(jiǎn)單而又強(qiáng)大的編程語(yǔ)言,通過(guò)其清晰的語(yǔ)法和豐富的功能庫(kù),我們可以實(shí)現(xiàn)各種各樣的任務(wù)。其中一個(gè)最基本的語(yǔ)法結(jié)構(gòu)就是for循環(huán),讓我們來(lái)看一下如何使用for循環(huán)來(lái)編寫一個(gè)最簡(jiǎn)單例子
    的頭像 發(fā)表于 11-21 14:53 ?2015次閱讀

    CAN總線波形中為什么ACK電平偏高?

    在觀察CAN通信波形時(shí),我們會(huì)發(fā)現(xiàn)差分電平在ACK段突然增高,這是什么原因?qū)е碌哪??本文結(jié)合測(cè)試實(shí)例對(duì)ACK電平偏高的原因做簡(jiǎn)單分析。ACK
    的頭像 發(fā)表于 03-28 08:23 ?2092次閱讀
    CAN總線波形中為什么<b class='flag-5'>ACK</b>電平偏高?