實(shí)現USB3.0物理層中彈性緩沖的設計方案
彈性緩沖本質(zhì)上是讀寫(xiě)同時(shí)受控的異步FIFO,常半滿(mǎn)(normal half full)FIFO,其深度為16,首先要寫(xiě)滿(mǎn)8個(gè)有效數據,并一直維持在半滿(mǎn)的狀態(tài)。因此在正常情況下,FIFO一直處于或接近半滿(mǎn)狀態(tài),當讀寫(xiě)時(shí)鐘一樣快慢的時(shí)候,FIFO中有8個(gè)有效數據。
圖 3 常半滿(mǎn)讀寫(xiě)同等速率
當讀時(shí)鐘快于寫(xiě)時(shí)鐘,讀出的數據多于寫(xiě)入的數據,常半滿(mǎn)模式可能導致FIFO中的數據數量少于8,甚至有可能被讀空。如下圖所示,在出現SKP窗口的時(shí)候,FIFO中的有效數據為4,比常態(tài)少4。所以此時(shí),彈性緩沖應該添加4個(gè)SKP,使得FIFO維持半滿(mǎn),以此來(lái)調節時(shí)鐘。此時(shí)讀指針向前跳躍4個(gè)間隔,并且當讀指針讀到跳躍區間時(shí),完成SKP添加。
圖 4 常半滿(mǎn)模式讀快于寫(xiě)
當讀時(shí)鐘慢于寫(xiě)時(shí)鐘,寫(xiě)入的數據多于讀出的數據,常半滿(mǎn)模式可能導致FIFO中的數據數量多于8,甚至有可能被寫(xiě)滿(mǎn)。如下圖所示,在出現SKP窗口的時(shí)候, FIFO中有效數據為10,比常態(tài)多2. 所以此時(shí),彈性緩沖應該刪除2個(gè)SKP,使得FIFO維持半滿(mǎn),以此來(lái)調節時(shí)鐘。此時(shí)寫(xiě)指針應該暫停2個(gè)時(shí)鐘周期,完成SKP刪除。
圖 5 常半滿(mǎn)寫(xiě)快于讀
3.彈性緩沖結構
常半滿(mǎn)模式下彈性緩沖的結構設計,可以分為接收時(shí)鐘域控制、系統時(shí)鐘域控制、閥值檢測與同步。接收時(shí)鐘域控制包括,寫(xiě)控制與寫(xiě)指針控制。系統時(shí)鐘域控制包括讀控制與讀指針控制。閥值檢測與同步包括SKP添加刪除閥值與時(shí)鐘域之間的同步。
圖 6 常半滿(mǎn)模式彈性緩沖結構
評論