專利名稱:Sata鏈接層發送數據通路及fifo存儲優化的方法
技術領域:
本發明涉及一種使用FPGA實現SATA鏈接層發送數據通路的方法,具體涉及采用 一系列控制和FIFO存儲策略的優化,降低對狀態轉移及時性的要求、提高設計靈活性,以 及縮短Phy FIFO中數據駐留造成的遲滯周期、加快主設握手響應周期的方法。
具體地,如
圖1所示,SATA鏈接層發送部分有兩條數據通路,分述如下
數據通路1 :FIS/PayLoad有效數據通路 發送FIFO(a)非空(rempty = 0)、并且對方準備好了接收時,讀使能re有效,此時
開始一邊從FIFO(a)讀數據一邊計算CRC值。當一個完整的FIS讀完后,將計算好的CRC
值就附在該FIS后(該動作是通過Muxl選通來完成的)。 由多路復用器出來的FIS+CRC校驗值,進入擾碼器進行擾碼。 數據通路2 :原語/無效數據發送通路 首先對原語/無效數據發送模塊及ROM模塊進行說明 *PrimitN[4:0]——對ROM中的原語的地址及無效數據的地址進行編號(按編號 尋找)。取值為5'b00000-5'b10001時,對應18種原語。取值為5'blllll時為CONTp原 語后的無效數據。 *Start——啟動信號,為1時PrimitN對應的原語或無效數據出現在ROM的輸出端。
ROM里的原語,一方面對其按地址addr存放,另一方面對其進行編號PrimiN。無效 數據也存放在ROM里,按地址存放并且也對其編號,并且該無效數據的內容是提前定好的, 故信息已知。 一旦無效數據一發送就給擾碼器一個使能,對該無效數據進行擾碼,而原語無 需進行擾碼。原語及無效數據通過Mux2進行復用。 最后,通路1和通路2共同進入Mux3進行復用,并進行8B/10B編碼。 對于SATA鏈接層發送數據通路來說,主控制機經歷如下狀態遷移。IDLE — SendCh
kRdy — SendSOF — SendData — SendCRC — SendEOF — Wait a)當主控制機處于L-IDLE態時,發幀同步原語SYNCp。如果這時從Interface (與 Transp)檢測到HOST傳輸層要求進行幀傳輸信號,即進入SendChkRdy態;
b)處于SendChkRdy態,發送X_RDYP原語告知接收狀態機有數據發送。若接受到 R-RDYP原語后就進入到SendSOF態; c)處于SendSOF態的狀態機發送一個幀起始原語S0FP后,就會從該態轉移到 SendData態5 d)在SendData態,將來自傳輸層的發送FIFO (a)的數據(FIS)傳遞到至物理層的發送FIFO (b),當FIS傳輸完畢或者收到DMATp原語后就從SendData態轉移到SendCRC態;
e)處于SendCRC態的狀態機發送完CRC校驗值,轉移到L-SendEOF態;
f)處于L-SendEOF態的狀態機發送完一個幀結束原語EOFP后,若此時收到SYNCP 同步原語后就會從該態轉移到L-Wait態。 g)在L-Wait態,發WTRMP原語等待接收機的接收結果。
在上述狀態中, 當主控制機處于SendData態時,只要發送FIFO(b)非編程滿(prog_full = 0)且 發送FIFO(a)非空(rempty = O),則讀使能re有效,直至FIS傳輸完畢。此時Muxl = 0, 選通有效數據通路。 當主控制機處于SendCRC態時,CRC模塊輸出保持為,在SendData態最后一次計 算得到的CRC值。此時Muxl = l,選通CRC通路,將CRC值附加在有效數據后面。
當主控制機處于其他態時,需發送原語,首先置PrimiN = 4 'bxxxx,其中xxxx為 存放于ROM中的對應的原語號。此時若發送FIFO(b)非編程空,即prog empty = 0,表明發 送FIFO(b)中有較多(大于等于10個)前次發送的原語或數據,則置Start = l'bO,暫不 發送新的原語;若prog—empty = l,表明發送FIFO(b)中前次的原語或數據已快發送完畢 (小于10個),則置Start = 1' bl,啟動發送當前原語。 需要指出的是,在SendData態時,由于鏈接層對發送FIFO(b)的寫時鐘頻率 (100M)高于物理層對發送FIFO(b)的讀時鐘頻率(75M),當狀態轉移至SendCRC態時,此時 發送FIFO(b)仍有較多數據(至少IO個),即使由于某種條件狀態遷移滯后,仍能保證與物 理層接口 FIFO(發送FIFO(b))輸出數據的連貫性,這就降低了對狀態轉移及時性的要求, 提高了設計靈活性。 同時,利用物理層f ifo (發送FIFO (b))的編程空、滿標志,在senddata態,只要編 程非滿,有數據或CRC來自FIFO(a),就寫入FIFO(b);在原語發送態,FIFO(b)空一些,編程 空有效,再往里寫。這樣,FIFO(b)在發送數據可充分利用其容量,而在發送不同原語切換 時,FIFO(b)始終維持在10個Dword左右,因FIF0(b)中數據駐留造成的遲滯周期大為縮 短,加快了主機和設備原語握手的響應周期。
8
權利要求
一種SATA鏈接層發送數據通路,包括與主控制機連接的FIS/PayLoad有效數據通路和原語/無效數據發送通路,其特征在于,所述FIS/PayLoad有效數據通路包括依次連接的與主控制機連接的傳輸層發送FIFO、CRC模塊、第一多路復用器Mux1以及第一擾碼器的輸入端;所述原語/無效數據發送通路包括依次連接的與主控制機連接的原語/無效數據發送模塊、ROM存儲器、第二擾碼器以及第二多路復用器Mux2的輸入端;所述第一擾碼器的輸出端和第二多路復用器Mux2的輸出端與第三多路復用器Mux3的輸入端連接,所述第三多路復用器Mux3的輸出端與8B/10B編碼器、物理層發送FIFO依次連接。
2. 根據權利要求1所述SATA鏈接層發送數據通路,其特征在于所述物理層發送FIFO設有標記寄存器,所述標記寄存器包括編程滿標記和編程空標記,所述主控制機通過標記寄存器控制物理層發送FIF0。
3. 根據權利要求1 2所述SATA鏈接層發送數據通路,其特征在于所述原語/無效數據發送模塊及R0M存儲器通過PrimitN[4:0]接口和Start接口連接;所述PrimitN[4:0]接口表示對ROM中的原語的地址及無效數據的地址進行編號,當取值為5' b00000-5' b10001時,對應18種原語,當取值為5' blllll時為C0NTp原語后的無效數據;所述Start接口表示啟動信號,當啟動信號為1時,PrimitN[4:0]接口對應的原語或無效數據出現在ROM的輸出端。
4. 一種利用權利要求1所述SATA鏈接層發送數據通路及FIFO存儲優化的方法,其特征在于,該方法包括以下步驟1SATA鏈接層發送部分有兩條數據通路,分別為FIS/PayLoad有效數據通路和原語/無效數據發送通路;2FIS/PayLoad有效數據通路當SATA傳輸層有FIS數據寫入傳輸層發送FIFO時,其空信號rempty由1變為0,此時若主狀態機接收到R-RDYp原語,表明接收方準備好,則令從傳輸層發送FIFO中讀數據的使能信號re變為1,此時開始一邊從傳輸層發送FIFO讀數據, 一邊通過CRC模塊計算CRC值;否則等待;當一個完整的FIS讀完后,通過第一多路復用器Muxl選通CRC通路,并將計算好的CRC值就附在該FIS之后;由第一多路復用器Muxl出來的FIS和CRC校驗值,進入第一擾碼器進行擾碼;3原語/無效數據發送通路ROM存儲器里的原語, 一方面對其按地址存放,另一方面對其進行編號;無效數據也存放在ROM存儲器里,按地址存放并且也對其編號,并且該無效數據的內容是提前定好的,故信息已知;當無效數據一發送就給第二擾碼器一個使能,對該無效數據進行擾碼,而原語無需進行擾碼;原語及無效數據通過第二多路復用器Mux2進行復用;4最后,FIS/PayLoad有效數據通路和原語/無效數據發送通路共同進入第三多路復用器Mux3進行復用,并進行8B/10B編碼,再與物理層發送FIFO連接交互;所述接收方相對于主機端的鏈接層是指設備端;所述接收方相對于設備端的鏈接層是指主機端。
5. 根據權利要求4所述SATA鏈接層發送數據通路及FIFO存儲優化的方法,其特征在于,所述主控制機經歷如下狀態遷移a) 當主控制機處于L-IDLE態時,發幀同步原語SYNCp ;如果這時從與傳輸層的接口信號檢測到傳輸層要求進行幀傳輸信號,即進入SendChkRdy態;b) 處于SendChkRdy態,發送原語X-RDYp告知接收方有數據發送;若接收到原語R_RDYP后就進入到SendSOF態;c) 處于SendSOF態,發送一個幀起始原語SOFP后,就會從該態轉移到SendData態;d) 處于SendData態,將來自傳輸層發送FIFO的FIS/PayLoad有效數據傳遞到至物理層發送FIFO,當FIS/PayLoad有效數據傳輸完畢或者收到原語DMATP后就從SendData態轉移到SendCRC態;e) 處于SendCRC態,主控制機發送完CRC校驗值,轉移到L-SendEOF態;f) 處于L-SendEOF態,主控制機發送完一個幀結束原語E0FP后,若此時收到同步原語SYNCp后就會從該態轉移到L-Wait態。g) 在L-Wait態,發原語WTRMp等待接收方的接收結果。
6. 根據權利要求4所述SATA鏈接層發送數據通路及FIFO存儲優化的方法,其特征在于當主控制機處于SendData態時,只要物理層發送FIFO非編程滿prog_full = 0且傳輸層發送FIFO非空rempty = 0,則讀使能re有效,直至FIS/PayLoad有效數據傳輸完畢,此時第一多路復用器選通有效數據通路。
7. 根據權利要求4所述SATA鏈接層發送數據通路及FIFO存儲優化的方法,其特征在于當主控制機處于SendCRC態時,CRC模塊輸出保持為在SendData態最后一次計算得到的CRC值,此時第一多路復用器選通CRC通路,將CRC值附加在有效數據后面。
8. 根據權利要求4所述SATA鏈接層發送數據通路及FIFO存儲優化的方法,其特征在于當主控制機處于其他態時,需發送原語,首先置PrimiN = 5 'bxxxxx,其中xxxxx為存放于ROM中的對應的原語號,此時若物理層發送FIFO非編程空,即pr0g_empty = 0,表明物理層發送FIFO中有較多前次發送的原語或數據,則置Start = 1' bO,暫不發送新的原語;若pr0g_empty = l,表明物理層發送FIFO中前次的原語或數據已快發送完畢,則置Start=1' bl,啟動發送當前原語。
9. 根據權利要求3 8所述SATA鏈接層發送數據通路及FIFO存儲優化的方法,其特征在于所述非編程滿的定義是尚能寫入物理層發送FIFO而不溢出的數據不大于10個;所述非編程空的定義是已寫入物理層發送FIFO待發送的數據不小于10個。
10. 根據權利要求9所述SATA鏈接層發送數據通路及FIFO存儲優化的方法,其特征在于所述在SendData態時,由于鏈接層對物理層發送FIFO的寫時鐘頻率高于物理層對物理層發送FIFO的讀時鐘頻率,當狀態轉移至SendCRC態時,此時物理層發送FIFO仍有至少10個數據,即使狀態遷移滯后,仍能保證與物理層發送FIFO輸出數據的連貫性。
全文摘要
一種SATA鏈接層發送數據通路及FIFO存儲優化的方法,其數據通路包括包括依次連接的傳輸層發送FIFO、CRC模塊、第一多路復用器以及第一擾碼器的輸入端;依次連接的原語/無效數據發送模塊、ROM存儲器、第二擾碼器以及第二多路復用器的輸入端;第一擾碼器和第二多路復用器與第三多路復用器連接,第三多路復用器與8B/10B編碼器、物理層發送FIFO依次連接。本發明利用物理層FIFO編程空、滿標志,物理層FIFO在發送數據可充分利用其容量,而在發送不同原語切換時,物理層FIFO始終維持在10個Dword左右,因物理層FIFO中數據駐留造成的遲滯周期大為縮短,加快了主機和設備原語握手的響應周期。
文檔編號H04L29/08GK101795284SQ20091021920
公開日2010年8月4日 申請日期2009年11月27日 優先權日2009年11月27日
發明者劉升, 史寶祥 申請人:西安奇維測控科技有限公司