本發明屬于緩沖器模塊領域,特別是涉及到一種傳輸接口的彈性緩沖器模塊及SKP的添加方法。
背景技術:
USB3.0規范(Universal Serial Bus 3.0 Specification)是intel、ENC等公司于2008年公布的最新的USB設計標準,它是高速、串行、源同步數據傳輸協議。相比較于早期版本USB,USB3.0采用一種新的物理層,用兩個信道把數據傳輸和確認過程分離,因而提高了數據傳輸速率。采用USB3.0接口進行通信時,發送端采用差分對的方式發送串行信號,接收端采用時鐘數據恢復電路從接收到的串行數據中恢復出時鐘和數據。由于接收端和發送端均有各自獨立的時鐘源,所以接收端恢復出來的時鐘和本地時鐘可能存在一定的偏差。為了保證數據的正確傳輸,USB3.0采用彈性緩沖器來進行時鐘頻率補償和相位同步。
為了完成時鐘頻率補償和相位同步,彈性緩沖器通過插入或刪除SKP對來實現。它的容量大小由時鐘頻率的偏差大小和特定符號的出現頻率共同決定,因此可以穩定地同步一個時鐘域的數據到另一個時鐘。傳統的彈性緩沖器在實現SKP的添加和刪除的過程中涉及到異步的邏輯控制,可能帶來時序錯誤,并且在SKP的添加過程中需要進行寫指針跳躍和斷點保存,需要用更多的邏輯單元和寄存器來完成。
技術實現要素:
本發明的目的是為了避免由異步控制可能帶來的時序錯誤以及減少寫指針跳躍和斷點保存所帶來的邏輯單元和寄存器的使用。
本發明的技術方案為:彈性緩沖的本質是一個讀寫同時受控的異步FIFO,工作在常半滿(normal half full)狀態。彈性緩沖器在工作開始后,首先會向FIFO中寫入8個有效數據,使得彈性緩沖器維持在半滿狀態。當讀寫時鐘不一致時,若讀時鐘頻率大于寫時鐘頻率,則彈性緩沖器中的有效數據個數將會小于8甚至會出現被讀空的狀態,若讀時鐘頻率小于寫時鐘頻率,則彈性緩沖器中的有效數據個數將會大于8甚至會出現寫滿的狀態。為了維持彈性緩沖器在半滿狀態,需要向輸入的數據中添加和刪除SKP。本發明提出一種新彈性緩沖器結構及SKP添加方法,在讀時鐘大于寫時鐘情況下,當彈性緩沖中有效數據數量會小于添加閾值時,閾值監測單元就會發起SKP添加請求,此時若輸出檢查單元給出SKP添加窗口有效,則讀控制單元會將讀指針暫停,通過輸出控制單元向輸出的數據中添加SKP,而此時寫指針正常工作,使得彈性緩沖器中的有效數據量增大到添加閾值以上,以此來完成讀寫時鐘頻率補償的問題。在讀時鐘小于寫時鐘情況下,當彈性緩沖中有效數據數量會大于刪除閾值時,閾值監測單元就會發起SKP刪除請求,此時若輸入檢查單元給出SKP刪除窗口有效,則寫控制單元會將寫指針暫停,通過寫一個數據來覆蓋當前的SKP以實現SKP的刪除,而此時讀指針正常工作,使得彈性緩沖器中的有效數據量降低到刪除閾值以下,以此來補償讀時鐘和寫時鐘之間的頻率差異。
本發明具有以下的優點:
1 與傳統的彈性緩沖器設計相比,本發明提供的新彈性緩沖器將SKP的添加和刪除的過程進行了分離,分別在兩個時鐘域中獨立進行,避免了由異步控制可能帶來的時序錯誤。
2 與傳統的彈性緩沖的設計相比,本發明的彈性緩沖器在進行SKP對的添加時,利用讀指針暫停的方式來實現,無需寫指針跳躍和斷點保存,減少了邏輯單元和寄存器的使用。
附圖說明
圖1繪示本發明提供的一種新彈性緩沖器的結構框圖。
圖2繪示本發明提供的一種新SKP添加過程示意圖。
圖3繪示本發明中SKP刪除過程示意圖。
圖4繪示本發明一實施例的彈性緩沖器設計流程圖。
圖5繪示本發明一實施例的SKP添加的實驗結果圖。
圖6繪示本發明一實施例的SKP刪除的實驗結果圖。
圖7繪示本發明一實施例的下溢實驗結果圖。
圖8繪示本發明一實施例的上溢實驗結果圖。
具體實施方式
圖1 顯示的是本發明提供的一種新彈性緩沖器結構框圖,包括存儲單元、同步單元、閾值監測單元、輸入檢測單元、寫指針控制單元、輸出檢測單元、輸出控制單元以及讀指針控制單元。輸入檢測單元和寫指針控制單元位于恢復時鐘域,協同存儲單元、同步單元和閾值監測單元完成SKP的添加操作。輸出控制單元以及讀指針控制單元位于本地時鐘域,協同存儲單元、同步單元和閾值監測單元完成SKP的刪除操作。輸入檢測單元檢測輸入的數據中是否包含SKP字符,并根據檢測的情況判斷出是否為SKP刪除操作提供窗口。寫指針控制單元用來產生寫指針的二進制碼和格雷碼,其中二進制碼是數據寫入的存儲單元的地址,格雷碼是用于同步到本地時鐘域同讀指針進行比較,判斷FIFO是否下溢。輸出檢測單元是檢測輸出的數據中是否包含SKP字符,為SKP的添加提供添加窗口。輸出控制單元并根據SKP添加操作指令是否有效來添加SKP字符并輸出數據,此外根據FIFO是否讀空來判斷是否要添加END字符。讀指針控制單元產生讀指針的二進制碼和格雷碼,其中二進制碼是讀出的數據在存儲單元對應的地址,格雷碼是用于同步到恢復時鐘域同寫指針做比較,判斷FIFO是否上溢。儲存器是整個彈性緩沖的基礎,根據接收到的寫指針存儲出來自恢復時鐘域的數據,同時會根據讀指針輸出存儲的數據。同步單元的作用是將寫指針的格雷碼同步到讀時鐘域,并與讀指針格雷碼比較,以產生空標志。同樣將讀指針的格雷碼同步到寫時鐘域,并與寫指針格雷碼比較,以產生滿標志。同時還將同步后的讀、寫指針格雷碼轉換為二進制自然碼輸出。閾值監測單元的作用是監測FIFO中有效數據的數量,并根據其數量與8的差值決定是否產生SKP添加或刪除請求標志。
圖2 顯示的是本發明提出的一種新的添加SKP字符的工作機理。在讀時鐘頻率大于寫時鐘頻率情況下,從存儲器中讀出的數據速度要比寫入的速度快,經過一段時間后,彈性緩沖器中的有效數據個數小于添加閾值,此時閾值檢測單元會發送SKP添加請求。在SKP添加請求命令有效的情況下,待到輸出檢測控制單元檢測到輸出數據為SKP時,SKP添加指令有效。有效的SKP添加指令會使得讀指針控制單元發送暫停讀指針指令暫停讀指針,同樣會觸發輸出檢測控制單元將輸出數據變為SKP,完成SKP的添加功能。在利用讀指針暫停來實現SKP添加的過程中,同樣會向存儲單元中寫入數據,增加存儲單元中有效數據個數,使得彈性緩沖器維持在半滿狀態。
圖3 顯示的SKP刪除的工作機理。在讀時鐘頻率小于寫時鐘頻率情況下,彈性緩沖器中的有效數據個數大于刪除閾值,此時閾值檢測單元會發送SKP刪除請求。在SKP添加請求信號有效的情況下,待到輸入檢測單元檢測到輸入數據為SKP時,SKP刪除指令有效。此時寫指針控制單元發送暫停寫指針指令使得寫指針暫停,故在下一個時鐘到來后,后一個數據會覆蓋當前要刪除的SKP,完成SKP刪除功能。寫指針暫停過程中,在存儲單元中的數據會被讀出,減小存儲單元中有效數據個數,使得彈性緩沖器維持在半滿狀態。
圖4繪示出本發明一實施例的彈性緩沖器設計流程圖。在實施例中,當使能信號RxValid有效且復位信號rst無效時,若讀寫時鐘同步,FIFO中的效數據將維持在8個,當寫指針wrptr為4’b1111,則下個寫時鐘周期上升沿到來,wrptr將置零,否則每經過一個寫時鐘周期寫指針加1;若讀時鐘慢于寫時鐘,當彈性緩沖中有效數據數量大于刪除閾值,閾值監測單元則發起SKP刪除請求,待輸入檢測單元檢測到輸入數據為SKP字符時,寫指針將暫停,通過下一個數據的覆蓋當前數據以屏蔽SKP,達到刪除SKP的目的。在本實施例中,當FIFO中有效數據達到8時,讀使能信號start有效,讀操作開始。若讀寫時鐘同步,FIFO中的效數據將維持在8個,當讀指針rdptr為4’b1111,則下個讀時鐘周期上升沿到來,rdptr將置零,否則每經過一個讀時鐘周期讀指針加1;若寫時鐘慢于讀時鐘,當彈性緩沖中有效數據數量小于添加閾值,閾值監測單元則發起SKP添加請求,待輸入檢測及控制單元檢測到輸出數據位SKP字符時,讀指針將暫停以添加SKP,通過控制輸出控制單元改變輸出為SKP達到添加SKP的目的。
圖5到圖 8顯示的是本實施例的不同情況下的仿真結果,圖5是在讀時鐘快于寫時鐘的情況,彈性緩沖器完成SKP添加過程的仿真功能圖,從圖中可以看出,當實施例中添加SKP信號insert有效時,新的SKP字符會被添加到讀出的SKP字符之后。圖6是在寫時鐘快于讀時鐘情況下,彈性緩沖器完成SKP刪除過程的功能仿真圖,從圖中可以看出,當實施例中刪除SKP信號remove有效后,輸入的SKP字符會被下一個輸入的數據所覆蓋,從實施例的仿真圖中可以看出,輸入SKP字符3’h0f9和3’h306會被后面的字符3’h0fa和3’h0fb所覆蓋,完成SKP的刪除。圖7給出的是彈性緩沖器下溢的仿真圖,當FIFO被讀空時,同步單元會產生空標志,empty高電平有效,此時讀時鐘控制單元會暫停讀指針同時輸出檢測控制單元會在輸出端添加EDB字符3’h0f3。圖8是彈性緩沖器的上溢仿真圖,當FIFO中寫滿時,同步單元會產生滿標志,full高電平有效,此時寫控制單元會暫停寫指針,刪除一個有效數據,從仿真圖中可以看出3’h24f被丟棄。