<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > SPI4.2總線應(yīng)用和調(diào)試

          SPI4.2總線應(yīng)用和調(diào)試

          作者: 時(shí)間:2013-12-04 來(lái)源:網(wǎng)絡(luò) 收藏
          px; MARGIN: 20px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: 14px/25px 宋體, arial; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; PADDING-TOP: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  除了數(shù)據(jù)包中最后一段不滿16字節(jié)的數(shù)據(jù)(EOP)之外,總線的數(shù)據(jù)實(shí)行突發(fā)傳輸,以16字節(jié)為單位(稱為一個(gè)數(shù)據(jù)塊),每次傳輸多個(gè)數(shù)據(jù)塊。因?yàn)閿?shù)據(jù)寬度是16位,所以一次突發(fā)傳輸至少需要4個(gè)時(shí)鐘周期。數(shù)據(jù)的高地址位字節(jié)先發(fā)送(MSB),低地址位字節(jié)后發(fā)送,數(shù)據(jù)塊傳輸過程中不會(huì)被中斷。每次突發(fā)傳輸?shù)拈g隔期間傳送控制包或者訓(xùn)練序列。圖2中,TDAT表示數(shù)據(jù)塊,TCTRL表示控制塊??刂瓢L(zhǎng)度為16位,包含了前次傳輸和下次傳輸?shù)臓顟B(tài)信息:包開始標(biāo)志、包結(jié)束標(biāo)志、邏輯端口地址和DIP4交織校驗(yàn)碼等。數(shù)據(jù)鏈路遵循有限狀態(tài)機(jī)進(jìn)行工作,狀態(tài)包括5種:控制包傳輸、數(shù)據(jù)包傳輸、空閑包傳輸、訓(xùn)練序列傳輸以及訓(xùn)練序列控制[1]。

            因?yàn)闋顟B(tài)鏈路的寬度是2位,所以每次突發(fā)傳輸至少傳輸16位數(shù)據(jù)(4個(gè)時(shí)鐘周期)。反映FIFO隊(duì)列的狀態(tài)信息有3種:飽(SaTIsfied)、餓(Hungry)、極餓(Starving),分別對(duì)應(yīng)二進(jìn)制數(shù)字10、01和00。11表示鏈路處于失步狀態(tài),正在同步過程中。當(dāng)狀態(tài)是“飽”時(shí),說明隊(duì)列幾乎滿了,只接收當(dāng)前正在傳送的數(shù)據(jù)包,其他數(shù)據(jù)包只有等狀態(tài)更新后才能接收。當(dāng)狀態(tài)是“餓”時(shí),可以接收最大MaxBurst2個(gè)數(shù)據(jù)塊。當(dāng)狀態(tài)是“極餓”時(shí),說明隊(duì)列幾乎空了,可以接收最大MaxBurst1個(gè)數(shù)據(jù)塊。MaxBurst1和MaxBurst2是總線初始化時(shí)設(shè)定的參數(shù),MaxBurst1不得小于MaxBurst2。

          2 總線的初始化和同步

            SPI4.2總線初始化時(shí)必須設(shè)定一些基本參數(shù),如表1所列。

            SPI4.2總線協(xié)議定義了一個(gè)叫“日歷”的數(shù)據(jù)結(jié)構(gòu)CALENDAR[i](i=1,…,CALENDAR_LEN)。CALENDAR_LEN(日歷長(zhǎng)度)參數(shù)規(guī)定了邏輯端口(或稱為虛擬通道)的數(shù)目,該數(shù)值不能小于實(shí)際的邏輯端口數(shù)目。例如,如果SPI4.2總線用于10 Gb/s以太網(wǎng)口,那么日歷長(zhǎng)度是1(即CALENDAR_LEN = 1);如果SPI4.2總線用于10個(gè)1 Gb/s以太網(wǎng)口,那么日歷長(zhǎng)度是10(CALENDAR_LEN = 10),CALENDAR[i] = 1,2,…,10,代表了10個(gè)以太網(wǎng)端口。CALENDAR[i]中承載的數(shù)據(jù)被周而復(fù)始地依次傳輸,重復(fù)次數(shù)是CALENDAR_M次。圖3為日歷長(zhǎng)度和重復(fù)次數(shù)都是4的數(shù)據(jù)傳輸示意圖。SPI4.2總線被初始化時(shí),必須確保接口兩端的CALENDAR_LEN和CALENDAR_M分別相等。從這個(gè)角度看,SPI4.2是一種時(shí)分復(fù)用的總線:總帶寬是固定的,“日歷”數(shù)據(jù)結(jié)構(gòu)決定了帶寬和邏輯端口的分配。

            當(dāng)SPI4.2正常工作時(shí),數(shù)據(jù)和狀態(tài)鏈路會(huì)不定期地發(fā)送訓(xùn)練序列。在數(shù)據(jù)鏈路,訓(xùn)練序列至少應(yīng)該在DATA_MAX_T個(gè)時(shí)鐘周期內(nèi)發(fā)送一次。在狀態(tài)鏈路,訓(xùn)練序列至少應(yīng)該在FIFO_MAX_T個(gè)時(shí)鐘周期內(nèi)發(fā)送一次。設(shè)置DATA_MAX_T或FIFO_MAX_T為0將取消各自鏈路的訓(xùn)練序列,一般情況下不推薦這種設(shè)置。

            圖4以XLR732為參照描述了SPI4.2總線的收發(fā)同步過程。啟動(dòng)之后,在發(fā)送方向,發(fā)送模塊(TX)通過數(shù)據(jù)鏈路發(fā)送連續(xù)的訓(xùn)練序列,對(duì)端的接收模塊成功收到訓(xùn)練序列后,會(huì)設(shè)置本端的接收同步標(biāo)志;然后通過狀態(tài)鏈路發(fā)送訓(xùn)練序列給對(duì)端,一旦發(fā)送模塊成功接收到訓(xùn)練序列后,就設(shè)置本端的發(fā)送同步標(biāo)志。

            在接收方,接收模塊(RX)在數(shù)據(jù)鏈路成功接收到對(duì)端發(fā)送的訓(xùn)練序列后,會(huì)設(shè)置本端的接收同步標(biāo)志;然后通過狀態(tài)鏈路發(fā)送訓(xùn)練序列,一旦發(fā)送模塊成功接收到訓(xùn)練序列后,就設(shè)置本端的發(fā)送同步標(biāo)志。在同步過程中,訓(xùn)練序列由指定的連續(xù)的DIP4碼字組成。發(fā)送模塊必須連續(xù)發(fā)送訓(xùn)練序列,直到本端的狀態(tài)鏈路收到有效信息。同時(shí),接收模塊忽視所有接收到的數(shù)據(jù),直到觀察到訓(xùn)練序列,獲得數(shù)據(jù)同步。一旦數(shù)據(jù)鏈路同步之后, FIFO隊(duì)列狀態(tài)信息就開始傳送。

            如果發(fā)送方接收到有效的狀態(tài)信息,它就可以開始進(jìn)行數(shù)據(jù)突發(fā)傳輸。如果在工作過程中,由于某些原因(例如一端器件掉電或重啟)導(dǎo)致總線失步,那么為了再次獲得同步,雙方需要按照上述過程發(fā)送連續(xù)的訓(xùn)練序列,直到建立同步為止。

            表1 SPI4.2初始化基本參數(shù)

            

          SPI4.2初始化基本參數(shù)



          關(guān)鍵詞: SPI4.2 總線應(yīng)用 調(diào)試

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();