SPI4.2總線(xiàn)應用和調試

圖3 日歷長(cháng)度和重復次數都為4的數據傳輸示意圖

圖4 收發(fā)同步過(guò)程示意圖
SPI4.2總線(xiàn)接口的調試包括兩個(gè)重要步驟:鏈路的同步和數據的正常收發(fā)。
在調試鏈路同步時(shí),首先必須查看總線(xiàn)兩端的初始化參數配置。因為SPI4.2 總線(xiàn)協(xié)議是一個(gè)對等端數據傳輸協(xié)議,所以大部分參數需要雙方的匹配和協(xié)商,特別是接收方和發(fā)送方的CALENDAR_LEN和CALENDAR_M參數。
如何查看同步呢?芯片通常會(huì )提供一個(gè)狀態(tài)寄存器來(lái)反映總線(xiàn)的同步?!敖邮胀綐酥尽敝荒苷f(shuō)明在數據鏈路上成功接收到對端的訓練序列,但不能保證接收的狀態(tài)鏈路是正常的,如果需要確認可查看對端的“發(fā)送同步標志”。在收發(fā)雙向通道應用中,只有兩端的“接收同步標志”和“發(fā)送同步標志”都置位了,總線(xiàn)才算同步。此時(shí),可以確認總線(xiàn)兩端的物理連接是正確的,握手成功。
如果不能同步,就必須檢查兩端的“接收同步標志”和“發(fā)送同步標志”,判斷是哪一端出了問(wèn)題。檢查是否有DIP4和DIP2錯誤,如果有此類(lèi)錯誤,說(shuō)明鏈路上信號質(zhì)量可能不佳,可以用示波器測量信號波形。如果信號質(zhì)量確實(shí)不好,可以通過(guò)提高信號驅動(dòng)能力或者調整硬件匹配阻抗來(lái)優(yōu)化。
如果兩端的接收和發(fā)送都沒(méi)有同步,就必須測量芯片的電壓、工作頻率、重啟等信號。如果兩端的“接收同步標志”和“發(fā)送同步標志”都已經(jīng)置位,說(shuō)明雙方的接收和發(fā)送都同步,可以正常收發(fā)數據了。在大流量數據傳輸過(guò)程中,最相關(guān)的是FIFO隊列的參數配置,配置不當會(huì )導致錯包或丟包。以NetLogic公司的XLR732網(wǎng)絡(luò )處理器為例[2],SPI4.2總線(xiàn)的發(fā)送模塊的所有邏輯端口共享一個(gè)FIFO隊列,寬度為16字節,長(cháng)度為128;接收模塊的所有邏輯端口共享一個(gè)FIFO隊列,寬度為16字節,長(cháng)度為512。每個(gè)邏輯端口所占用的隊列地址和大小都可以通過(guò)寄存器配置。
假如某個(gè)端口接收端隊列的長(cháng)度是48,MaxBurst1是12,MaxBurst2是8。那么當該模塊接收數據時(shí),如果由于某些原因(例如軟件來(lái)不及處理),接收隊列只剩下12個(gè)空位,也就是接收隊列已經(jīng)有48-12=36個(gè)空位被占用時(shí),它將通過(guò)狀態(tài)鏈路向對端發(fā)送“餓”的狀態(tài)信號(反壓信號)。對端收到該信號后實(shí)施流控策略,根據本端發(fā)送端的MaxBurst1設置值發(fā)送數據,該值表示接收到“餓”狀態(tài)信號后最多還可以發(fā)送的數據塊數目。所以接收端的MaxBurst1 的值一定要大于對端發(fā)送端的Max
評論