新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > SPI-4.2總線應(yīng)用和調(diào)試經(jīng)驗(yàn)談

SPI-4.2總線應(yīng)用和調(diào)試經(jīng)驗(yàn)談

作者: 時(shí)間:2011-03-24 來(lái)源:網(wǎng)絡(luò) 收藏


在接收方,接收模塊(RX)在數(shù)據(jù)鏈路成功接收到對(duì)端發(fā)送的訓(xùn)練序列后,會(huì)設(shè)置本端的接收同步標(biāo)志;然后通過(guò)狀態(tài)鏈路發(fā)送訓(xùn)練序列,一旦發(fā)送模塊成功接收到訓(xùn)練序列后,就設(shè)置本端的發(fā)送同步標(biāo)志。
在同步過(guò)程中,訓(xùn)練序列由指定的連續(xù)的DIP-4碼字組成。發(fā)送模塊必須連續(xù)發(fā)送訓(xùn)練序列,直到本端的狀態(tài)鏈路收到有效信息。同時(shí),接收模塊忽視所有接收到的數(shù)據(jù),直到觀察到訓(xùn)練序列,獲得數(shù)據(jù)同步。一旦數(shù)據(jù)鏈路同步之后,F(xiàn)IFO隊(duì)列狀態(tài)信息就開始傳送。如果發(fā)送
方接收到有效的狀態(tài)信息,它就可以開始進(jìn)行數(shù)據(jù)突發(fā)傳輸。
如果在工作過(guò)程中,由于某些原因(例如一端器件掉電或重啟)導(dǎo)致失步,那么為了再次獲得同步,雙方需要按照上述過(guò)程發(fā)送連續(xù)的訓(xùn)練序列,直到建立同步為止。

3 .2接口的
.2接口的包括兩個(gè)重要步驟:鏈路的同步和數(shù)據(jù)的正常收發(fā)。
鏈路同步時(shí),首先必須查看總線兩端的初始化參數(shù)配置。因?yàn)?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/SPI-4">SPI-4.2總線協(xié)議是一個(gè)對(duì)等端數(shù)據(jù)傳輸協(xié)議,所以大部分參數(shù)需要雙方的匹配和協(xié)商,特別是接收方和發(fā)送方的CALENDAR_LEN和CALENDAR_M參數(shù)。
如何查看同步呢?芯片通常會(huì)提供一個(gè)狀態(tài)寄存器來(lái)反映總線的同步。“接收同步標(biāo)志”只能說(shuō)明在數(shù)據(jù)鏈路上成功接收到對(duì)端的訓(xùn)練序列,但不能保證接收的狀態(tài)鏈路是正常的,如果需要確認(rèn)可查看對(duì)端的“發(fā)送同步標(biāo)志”。在收發(fā)雙向通道中,只有兩端的“接收同步標(biāo)志”和“發(fā)送同步標(biāo)志”都置位了,總線才算同步。此時(shí),可以確認(rèn)總線兩端的物理連接是正確的,握手成功。
如果不能同步,就必須檢查兩端的“接收同步標(biāo)志”和“發(fā)送同步標(biāo)志”,判斷是哪一端出了問(wèn)題。檢查是否有DIP4和DIP2錯(cuò)誤,如果有此類錯(cuò)誤,說(shuō)明鏈路上信號(hào)質(zhì)量可能不佳,可以用示波器測(cè)量信號(hào)波形。如果信號(hào)質(zhì)量確實(shí)不好,可以通過(guò)提高信號(hào)驅(qū)動(dòng)能力或者調(diào)整硬件匹配阻抗來(lái)優(yōu)化。如果兩端的接收和發(fā)送都沒(méi)有同步,就必須測(cè)量芯片的電壓、工作頻率、重啟等信號(hào)。
如果兩端的“接收同步標(biāo)志”和“發(fā)送同步標(biāo)志”都已經(jīng)置位,說(shuō)明雙方的接收和發(fā)送都同步,可以正常收發(fā)數(shù)據(jù)了。在大流量數(shù)據(jù)傳輸過(guò)程中,最相關(guān)的是FIFO隊(duì)列的參數(shù)配置,配置不當(dāng)會(huì)導(dǎo)致錯(cuò)包或丟包。以NetLogic公司的XLR732網(wǎng)絡(luò)處理器為例,SPI-4.2總線的發(fā)送模塊的所有邏輯端口共享一個(gè)FIFO隊(duì)列,寬度為16字節(jié),長(zhǎng)度為128;接收模塊的所有邏輯端口共享一個(gè)FIFO隊(duì)列,寬度為16字節(jié),長(zhǎng)度為512。每個(gè)邏輯端口所占用的隊(duì)列地址和大小都可以通過(guò)寄存器配置。
假如某個(gè)端口接收端隊(duì)列的長(zhǎng)度是48,MaxBurst1是12,MaxBurst2是8。那么當(dāng)該模塊接收數(shù)據(jù)時(shí),如果由于某些原因(例如軟件來(lái)不及處理),接收隊(duì)列只剩下12個(gè)空位,也就是接收隊(duì)列已經(jīng)有48-12=36個(gè)空位被占用時(shí),它將通過(guò)狀態(tài)鏈路向?qū)Χ税l(fā)送“餓”的狀態(tài)信號(hào)(反壓信號(hào))。對(duì)端收到該信號(hào)后實(shí)施流控策略,根據(jù)本端發(fā)送端的MaxBurst1設(shè)置值發(fā)送數(shù)據(jù),該值表示接收到“餓”狀態(tài)信號(hào)后最多還可以發(fā)送的數(shù)據(jù)塊數(shù)目。所以接收端的MaxBurst1的值一定要大于對(duì)端發(fā)送端的MaxBurst1,并且要留出一定的余量,因?yàn)閿?shù)據(jù)在鏈路上的傳輸也是需要時(shí)間的。同理,接收端的MaxBurst2要大于對(duì)端發(fā)送端的MaxBurst2。值得注意的是,流控是基于邏輯端口的,而不是整條鏈路。
為保證不發(fā)生接收端FIFO隊(duì)列溢出等問(wèn)題,盡量將接收端的MaxBurst1和MaxBurst2設(shè)置大一些,只要小于FIFO入口總數(shù)就可以,而發(fā)送端MaxBurst1和MaxBurst2的設(shè)置不要超過(guò)本端接收能力。
如果出現(xiàn)EOP(結(jié)束包)和SOP(起始包)錯(cuò)誤或缺失,或者其他錯(cuò)包(例如包長(zhǎng)變短、幀校驗(yàn)錯(cuò)誤等),但沒(méi)有DIP4錯(cuò)誤,該怎么辦?這類問(wèn)題一般出現(xiàn)在FIFO隊(duì)列設(shè)置上,尤其是接收端的FIFO隊(duì)列可能溢出,從而丟失了某些數(shù)據(jù)塊,可以通過(guò)以下3種方法來(lái)檢測(cè)和解決:
①通過(guò)查看接收端FIFO溢出標(biāo)志來(lái)判斷FIFO隊(duì)列是否溢出;
②通過(guò)調(diào)整接收端的MaxBurst1和MaxBurst2來(lái)防止FIFO隊(duì)列溢出;
③如果方法②的調(diào)整足夠大,還有此問(wèn)題,可以查看對(duì)端是否收到反壓信號(hào),以及對(duì)端的狀態(tài)等。
為了方便,通常將發(fā)送端的MaxBurst1和MaxBurst2設(shè)置為相同數(shù)值,將接收端的MaxBurst1和MaxBurst2也設(shè)置成相同數(shù)值。

結(jié)語(yǔ)
隨著處理器的速度越來(lái)越快,處理器集成的內(nèi)核越來(lái)越多,處理器與外圍器件之間,處理器之間,以及外圍器件之間的連接速度逐漸成為制約平臺(tái)性能的瓶頸。許多芯片同時(shí)集成了多個(gè)總線接口,例如XLR732同時(shí)擁有SPI-4.2、HT、以太網(wǎng)3種總線接口。SPI-4.2總線在與其
他總線的競(jìng)爭(zhēng)中體現(xiàn)出了強(qiáng)大的生命力,希望本文所介紹的經(jīng)驗(yàn)對(duì)正在或計(jì)劃SPI-4.2總線的同行有所幫助。


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉