實(shí)現USB3.0物理層中彈性緩沖的設計方案
1.引言
本文引用地址:http://dyxdggzs.com/article/155982.htm彈性緩沖由Maurice Karnaugh在電話(huà)網(wǎng)絡(luò )中傳輸PCM信號中提出來(lái)的。隨后人們在很多不同的應用中采用了彈性緩沖技術(shù)來(lái)同步數據,很多協(xié)議例如USB、PCIE、以太網(wǎng)等。
USB3.0是一個(gè)高速,串行,源同步數據傳輸協(xié)議。但是數據經(jīng)過(guò)傳輸線(xiàn)與原數據發(fā)生了很大的偏差。本文從USB3.0的角度分析了彈性緩沖機制,解釋了與其他設計的不同,并采用指針控制與握手的設計方法實(shí)現。
2.彈性緩沖作用
2.1 USB3.0彈性緩沖作用域
在USB3.0中數據傳輸采用雙單工,因此物理層設計為接收、發(fā)送2組差分對傳輸部分。傳輸線(xiàn)是承載數據傳輸的載體。因此如何從傳輸線(xiàn)正確接收數據,并把它同步到系統內部時(shí)鐘域,變的十分關(guān)鍵。
USB3.0中規定的物理層接收部分結構圖如下,它包括差分接收、時(shí)鐘數據恢復、串并轉換和8B10B譯碼。
圖 1USB3.0物理層接收部分結構
整個(gè)數據流向自上而下,差分輸入經(jīng)過(guò)差分接收,從差分信號中提取出時(shí)鐘,并用恢復出來(lái)的時(shí)鐘來(lái)恢復出數據(CDR)?;謴统鰜?lái)的數據在接收時(shí)鐘域進(jìn)行串并轉換為10bit位寬并行數據1,并檢測USB3.0包起始標志符(K28.5)。一旦檢測到起始標志符K28.5,使能符號有效(symbol lock),直至檢測到結束符號,才結束符號有效。
彈性緩沖從串并轉換接收數據,所有的接收數據與控制都工作在接收時(shí)鐘域(receive clock)。因此彈性緩沖要把數據與控制同步到系統時(shí)鐘域(system clock)。把數據向下傳遞給8B10B譯碼模塊,而后傳遞給系統內部。
2.2 彈性緩沖容量
USB3.0中,協(xié)議規定允許的時(shí)鐘精度為-5300ppm到300ppm。而符號時(shí)鐘頻率為2ns即2000ps,最壞情況下每178個(gè)symbol添加或者刪除一個(gè)SKP,也就是每356個(gè)symbol添加或者刪除一個(gè)SKP對(SKP Order Sets)。USB3.0中包最長(cháng)為1052字節,所以最差情況下,最多可以添加或刪除8個(gè)SKP或者4個(gè)SKP對,所以彈性緩沖至少要能緩沖8個(gè)SKP。USB3.0協(xié)議規定每個(gè)SKP order sets為2個(gè)連續的SKP symbol。因此在10B8B譯碼前,SKP order set的游程(running disparity)應該是互補的。
通過(guò)計算得知,彈性緩沖的緩沖容量為8。本文設計采用常半滿(mǎn)2(normal half full)模式來(lái)設計彈性緩沖,所以彈性緩沖容量為16,在正常情況下里面應該有8個(gè)數據,剩下的8個(gè)為緩沖空間,因此叫常半滿(mǎn)。常半滿(mǎn)模式首先要向緩沖中寫(xiě)滿(mǎn)8個(gè)symbol,達到半滿(mǎn),然后讀使能才可以有效,因此大約有8個(gè)時(shí)鐘的延遲。常半滿(mǎn)模式只有在symbol隊列中出現SKP對才能添加或者刪除SKP對。下圖為常半滿(mǎn)輸入輸出時(shí)序圖。
圖 2 常半滿(mǎn)輸入輸出時(shí)序
從上圖可以看出,rx_valid_out有效要晚于rx_valid_in約8個(gè)時(shí)鐘沿;而無(wú)效卻晚于rx_valid_out約0至16個(gè)時(shí)鐘沿(取決于時(shí)鐘精度差)。因此常半滿(mǎn)需要8個(gè)時(shí)鐘延遲才能輸出數據。
評論