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