實現USB3.0物理層中彈性緩沖的設計方案
3.1 USB3.0中SKP刪除
當接收時鐘域的symbol lock有效時,寫使能才可能有效。一直可以寫到FIFO處于半滿狀態,此時FIFO處于臨界狀態,讀寫速率的差別將導致不同閥值的觸發。下圖是SKP對的刪除。
圖 7 SKP對刪除
檢測單元用來檢測進入FIFO的數據是否為SKP,起到標注SKP窗口的作用,為SKP的刪除提供了窗口。閥值監測單元一直監測FIFO中有效數據的數量。如果數量大于刪除閥值(FIFO中有10個有效數據),并且SKP窗口有效,那么彈性緩沖暫停指針,屏蔽SKP對,以此來達到刪除SKP對的目的。但是USB3.0中的SKP都是成對出現的,因此刪除SKP對的時候要注意奇偶性。
所以采用狀態機來設計USB3.0中SKP對的刪除,如下圖。當SKP窗口無效的時候,狀態處于idle;當SKP窗口有效而且刪除閥值觸發時,狀態進入了屏蔽狀態;在SKP窗口 有效的情況,屏蔽狀態持續到刪除閥值標志無效;當SKP窗口無效,或者刪除閥值標志無效而且被屏蔽SKP個數是偶數個,則狀態返回到idle狀態。
指針屏蔽verilog代碼如下。
3.2 USB3.0中SKP添加
SKP添加模塊包括斷點保存、寫指針跳躍與握手、讀指針生成與輸出控制模塊 SKP添加發生在讀時鐘快于寫時鐘的時候,在正常情況下,彈性緩沖的讀操作與普通的FIFO沒有任何區別。
圖 9 SKP添加結構
3.2.1 斷點保存
在常半滿模式下,讀寫指針相差8個時鐘。因此在寫指針發生事件,要經過8個左右的 時鐘才能傳遞到讀指針。在出現SKP窗口的時候,如果添加閥值標志觸發,則讀指針要經過8個時鐘才能添加SKP。
評論