TWI484347B - 資料傳輸方法以及通用串列匯流排主機控制器 - Google Patents
資料傳輸方法以及通用串列匯流排主機控制器 Download PDFInfo
- Publication number
- TWI484347B TWI484347B TW098144424A TW98144424A TWI484347B TW I484347 B TWI484347 B TW I484347B TW 098144424 A TW098144424 A TW 098144424A TW 98144424 A TW98144424 A TW 98144424A TW I484347 B TWI484347 B TW I484347B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- input data
- buffer
- data packet
- input
- Prior art date
Links
Landscapes
- Information Transfer Systems (AREA)
Description
本發明係有關於一種資料傳輸方法以及使用該方法的通用串列匯流排(USB)主機控制器,特別是有關於一種在USB設備和主機之間執行資料傳輸的方法和執行該方法的USB主機控制器。
在現有的USB3.0的技術規範中,主機透過主機控制器與USB設備交互傳輸資料。為了支援USB 3.0的雙匯流排構架,主機控制器必須包括超速(SuperSpeed)和USB2.0元件,這能夠同時在每個匯流排上管理主機與USB設備之間的控制、狀態以及資訊交換。該主機控制器包括SuperSpeed和USB2.0的多個下游埠,透過這些下游埠,主機能夠檢測USB設備的連接和移除,管理主機和USB設備之間的控制流動,管理主機和USB設備之間的資料流程動,收集狀態和活動統計,以及向所連接的USB設備提供電力。基於超速元件,USB 3.0可提供十倍於USB 2.0的傳輸速度和更高的節能效率,因而廣泛用於電腦週邊設備和消費電子產品。
為支援USB 3.0協定,Intel其後推出了擴展主控制器介面(Extensible Host Controller Interface,簡稱xHCI)協定,xHCI協定主要描述了系統軟體與硬體之間介面所用的暫存器和資料結構,為USB 3.0主控制器與USB 3.0周邊驅動程式之間提供標準通信方式。根據xHCI協定和USB3.0協定,USB主機控制器可以啟動或停止資料傳輸,例如USB主機控制器在其用完(run out of)用於該資料傳輸的緩衝器空間的情況下會停止該資料傳輸,而當USB主機控制器通知該USB設備這種狀態時,該USB設備會切換到另一個資料傳輸或者等待並在該USB主機控制器分配出緩衝器空間時繼續同一資料傳輸。
在上游週期(Upstream Cycle)/輸入傳輸的處理中,現有的USB主機控制器需要在其緩衝器內接收到來自USB設備的足夠多的輸入資料(IN data)之後,才能利用所有這些輸入資料來計算CRC(迴圈冗餘碼)結果,並且將計算出的CRC結果與所有參與計算CRC結果的輸入資料組合成一個完整的資料封包(Data Packet)。之後,判斷該資料封包是否存在錯誤(包括檢查CRC結果是否有錯誤以及資料封包是否完整等),如果存在錯誤,USB主機控制器將不向主機發送此資料封包,並丟棄該資料封包;如果沒有錯誤,則將該資料封包發送給主機的系統記憶體。
上述資料傳輸過程請參考第1圖所示的流程圖。在步驟ST1中,USB主機控制器接收輸入資料,並在步驟ST2中確定本次所接收的輸入資料是否為該資料封包的最後一個資料。需要說明的是,一個資料封包包含的資料量是可預設的,例如,可預設每個資料封包包含10位元組(Byte)或10雙位元組(DW)的資料,而輸入資料的接收和發送可以以位元組或雙字(DW)為單位,因此USB主機控制在步驟ST1中接受到輸入資料和步驟ST2中判斷是否為資料封包的最後一個資料,均可以位元組或雙字為單位。若在步驟ST2判斷得出該輸入資料不是資料封包的最後一個資料,則返回到步驟ST1繼續接收輸入資料。如果在步驟ST2判斷所接收的輸入資料是該資料封包的最後一個資料,則在步驟ST3中計算該資料封包的CRC結果,並將所接收的輸入資料組合成資料封包。
由上述可知,現有的USB主機控制器需要在其緩衝器內接收到足夠多的來自USB設備的輸入資料之後(例如一個資料封包所包含的資料量),才能利用所有輸入資料來計算CRC結果,因此,在緩衝器接收來自USB設備的輸入資料的過程中,USB主機控制器用於傳輸資料到主機的匯流排將處於空閒狀態,因此造成匯流排的利用率較低,傳輸資料的整體速率也明顯降低。並且,存放在緩衝器內的資料,由於未能及時傳輸至主機的系統記憶體,一旦當上游週期(Upstream Cycle)/輸入傳輸出現故障或中斷,若USB設備繼續向USB主機控制器內的緩衝器發送輸入資料,則極易導致USB主機控制器內的緩衝器溢出(overrun)。
本發明的目的在於提供一種途徑以便解決上述現有技術中出現的問題。
根據本發明的一個方面,提供了一種用於USB主機控制器的資料傳輸方法,該方法包括如下步驟:接收一輸入資料;計算該輸入資料的CRC結果,同時將該輸入資料發送至主機的系統記憶體;判斷該輸入資料是否為一資料封包的最後一個輸入資料;以及當確定該輸入資料為該資料封包的最後一個輸入資料時,將計算得出的CRC結果附至該輸入資料之後發送。
根據本發明的一個方面,提供了一種USB主機控制器,該USB主機控制器包括:協定轉換模組,用於接收一輸入資料,並計算CRC結果;傳輸模組,用於接收來自該協定轉換模組的該輸入資料,並產生一輸入緩衝器請求;緩衝器管理器,用於根據該輸入緩衝器請求分配一緩衝器,以暫存該輸入資料;以及DMA控制器,用於將緩衝器內的該輸入資料發送至主機的系統記憶體,其中,該協定轉換模組於計算CRC結果的同時,將該輸入資料發送至傳輸模組,並且判斷該輸入資料是否為一資料封包的最後一個輸入資料,以及當確定該輸入資料為該資料封包的最後一個輸入資料時,將計算得出的CRC結果附至該輸入資料之後發送。
為讓本發明之特徵和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
現在將參考本發明的示例性實施例進行詳細的描述,在附圖中圖解說明了所述實施例的示例,其中相同的參考數字始終指示相同的元件。此外,在整個公開中,當顯示或描述處理或方法時,方法的步驟可以以任何順序或者同時執行,除非從上下文中能清楚一個步驟依賴於先執行的另一步驟。此外,步驟之間可以有顯著的時間間隔。
第2圖係為根據本發明實施例的模組化示意圖。如第2圖所示,USB主機控制器20包括協定轉換模組21、傳輸模組22、緩衝器管理器23以及DMA(記憶體直接存取)控制器24。協定轉換模組21用於接收輸入資料(IN Data),並對輸入資料進行解析,同時由其內部的CRC計算模組211計算輸入資料的CRC結果,並且將所接收的輸入資料及時發送到傳輸模組22。傳輸模組22在收到來自協定轉換模組21的輸入資料後,向緩衝器管理器23發出輸入緩衝器請求。緩衝器管理器23包括緩衝器控制器231以及由緩衝器232、233和234構成的緩衝器陣列。緩衝器232-234可以為一種SRAM(靜態隨機存取記憶體)。緩衝器管理器23在收到傳輸模組22發送的輸入緩衝器請求後,由緩衝器控制器231為將要輸入的資料分配緩衝器空間,並向傳輸模組22發出已經分配好緩衝器陣列的輸入緩衝器回應。
第3圖所示的是根據本發明實施例的資料傳輸的流程圖。如第3圖所示,首先,主機設備在與USB設備(未示出)處於連接狀態下,透過USB主機控制器20向USB設備發出輸入資料請求(IN Request),USB設備相應於該請求向USB主機控制器20發送輸入資料(IN Data),USB主機控制器20的協定轉換模組21於步驟ST301接收該輸入資料,並對該輸入資料進行解析,以及於CRC計算模組211內計算該輸入資料的CRC結果。隨後資料傳輸流程進入步驟ST302,協定轉換模組21確定所接收到的輸入資料是否為一資料封包的最後一個資料。如果確定不是所述資料封包的最後一個輸入資料,則返回到步驟ST301繼續接收下一個輸入資料。
如前所述,由於USB主機控制器在接收來自USB設備的輸入資料時是以位元組或雙字為單位,而每個資料封包通常包括一定的輸入資料量,也就是說,協定轉換模組21在接收一個資料封包時,步驟ST301和ST302將會迴圈多次,在此時間內,USB主機控制器會同時執行步驟ST305,即由協定轉換模組21將收到的輸入資料發送到傳輸模組22,由傳輸模組22向緩衝器管理器23發出輸入緩衝器請求。緩衝器管理器23在緩衝器控制器231為將要輸入的資料分配好緩衝器空間後,向傳輸模組22發出輸入緩衝器回應。傳輸模組22基於該回應,將所接收到的輸入資料發送到對應的緩衝器中。
另外,在本發明的實施例中,緩衝器控制器231會計算緩衝器陣列中所接收到的資料量,並在所接收到的資料量達到一預設的閾值(threshold value)時,將緩衝器陣列中的資料順序發送到DMA控制器24。其中所述預設的閾值可以是1、2、3、4…n個資料封包,或者1k、2k、4k、8k比特的數據等。該輸入資料透過DMA控制器被發送至系統記憶體。
同時如果在步驟ST302確定所接收的輸入資料是所述資料封包的最後一個資料,則進入步驟ST303,將所計算的該資料封包的CRC結果附在所述最後一個輸入資料之後發送到傳輸模組22。之後,進入步驟ST304,緩衝器控制器231確定所接收的資料封包是否存在錯誤。這種錯誤包括所計算的CRC結果錯誤以及資料封包不完整的錯誤等。如果確定資料封包存在錯誤,則進入步驟ST306,通知緩衝器管理器23中止與該錯誤的資料封包相關的資料的發送,並在步驟ST307處通知主機之前所發送的資料封包中的錯誤狀態。另外,如果確定資料封包不存在錯誤,則不做任何操作或者通知緩衝器管理器23繼續發送資料,從而進入步驟ST305。
第4圖所示的是根據本發明實施例的資料傳輸過程中出現錯誤時的時序圖。在該時序圖中,CLK為時鐘脈衝,BFIN_REQ為傳輸模組22發出的輸入緩衝器請求脈衝,BFIN_ACK是緩衝器管理器23在分配好緩衝器空間後發出的輸入緩衝器回應脈衝,INBF_DATA_REQ表示向緩衝器輸入資料的請求脈衝,DATA_RX是接收到的輸入資料信號,RXCRC32ERR是緩衝器控制器231所發出的CRC結果存在錯誤的信號脈衝,以及INBF_DATA_ERRTERM表示資料封包不完整的信號脈衝。
第5A圖係為現有技術中的資料傳輸的時序圖,而第5B圖顯示根據本發明實施例的資料傳輸的時序圖。其中,OUTBF_DATA_REQ表示請求發送緩衝器中的資料至DMA控制器的請求信號脈衝,其一定程度上代表了上游資料匯流排的使用時間。CRC_CHECK是檢查和確定CRC結果是否正確的脈衝。透過比較兩者OUTBF_DATA_REQ變成高電位的時刻,就可以明顯瞭解,第5B圖所示的根據本發明實施例的資料傳輸中,從發送緩衝器中向DMA控制器發送資料的時間遠早於現有技術的發送時刻,這也就是說,在資料傳輸過程中,本發明的上游資料匯流排在USB主機控制器剛開始接收輸入資料不久就處於使用狀態,而現有技術中的上行資料匯流排幾乎在整個資料封包傳輸至USB主機控制器完成時才開始處於使用狀態,因此本發明的匯流排利用率相對於現有技術得到了顯著的提升。
而且,由於本發明的USB主機控制器在接收到輸入資料不久就開始向系統記憶體發送資料,也就是加快了對上游週期/輸入傳輸處理的反應時間,因此,即使資料傳輸的上游週期暫時出現故障時,USB設備繼續發送資料也不易導致緩衝器超載。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
ST1~ST6、ST301~ST307...步驟
21...協定轉換模組
211...CRC計算模組
22...傳輸模組
23...緩衝器管理器
231...緩衝器控制器
232~234...緩衝器
24...DMA控制器
第1圖顯示現有技術中的執行資料傳輸的流程圖;
第2圖顯示根據本發明實施例的模組化示意圖;
第3圖顯示根據本發明實施例的資料傳輸的流程圖;
第4圖顯示根據本發明實施例的資料傳輸過程中出現錯誤時的時序圖;
第5A圖係為現有技術中的資料傳輸的時序圖;
第5B圖顯示根據本發明實施例的資料傳輸的時序圖。
ST301~ST307...步驟
Claims (13)
- 一種資料傳輸方法,用於USB主機控制器,該資料傳輸方法包括:接收一資料封包中之一輸入資料;計算該輸入資料的CRC結果,同時將該輸入資料發送至主機的系統記憶體;判斷該輸入資料是否為該資料封包的最後一個輸入資料;以及當確定該輸入資料為該資料封包的最後一個輸入資料時,將計算得出的CRC結果附至該輸入資料之後發送。
- 如申請專利範圍第1項所述之資料傳輸方法,更包括:當確定該輸入資料不是該資料封包的最後一個輸入資料時,則繼續接收該資料封包的下一個輸入資料。
- 如申請專利範圍第1項所述之資料傳輸方法,其中將該輸入資料發送至系統記憶體的步驟還包括:將該輸入資料暫存於USB主機控制器內的一緩衝器中,以及透過一DMA控制器將緩衝器內的該輸入資料發送至該系統記憶體。
- 如申請專利範圍第3項所述之資料傳輸方法,更包括:當該緩衝器內的輸入資料量達到一預設的閾值時,開始將該緩衝器內的該輸入資料發送至該系統記憶體。
- 如申請專利範圍第4項所述之資料傳輸方法,其中該預設的閾值以比特數或資料封包的個數為單位。
- 如申請專利範圍第1項所述之資料傳輸方法,更包括:判斷該資料封包是否存在錯誤,當確定該資料封包存 在錯誤時,該USB主機控制器中止與該資料封包相關的資料的發送,並通知該系統記憶體之前所發送的資料封包存在錯誤。
- 如申請專利範圍第1項所述之資料傳輸方法,其中該輸入資料以位元組或雙字為單位。
- 一種USB主機控制器,包括:一協定轉換模組,用於接收一資料封包中之一輸入資料,並計算CRC結果;一傳輸模組,用於接收來自該協定轉換模組的該輸入資料,並產生一輸入緩衝器請求;一緩衝器管理器,用於根據該輸入緩衝器請求分配一緩衝器,以暫存該輸入資料;以及一DMA控制器,用於將緩衝器內的該輸入資料發送至主機的系統記憶體,其中,該協定轉換模組於計算CRC結果的同時,將該輸入資料發送至傳輸模組,並且判斷該輸入資料是否為該資料封包的最後一個輸入資料,以及當確定該輸入資料為該資料封包的最後一個輸入資料時,將計算得出的CRC結果附至該輸入資料之後發送。
- 如申請專利範圍第8項所述的USB主機控制器,其中當該緩衝器管理器確定該緩衝器內的輸入資料量達到一預設的閾值時,該DMA控制器開始將該緩衝器內的該輸入資料發送至該系統記憶體。
- 如申請專利範圍第9項所述的USB主機控制器, 其中該預設的閾值以比特數或資料封包的個數為單位。
- 如申請專利範圍第8項所述的USB主機控制器,其中當該協定轉換模組確定該輸入資料不是該資料封包的最後一個輸入資料時,則該協定轉換模繼續接收該資料封包的下一個輸入資料。
- 如申請專利範圍第8項所述的USB主機控制器,其中該緩衝器管理器還用於確定該資料封包是否存在錯誤,當確定該資料封包存在錯誤時,該緩衝器管理器中止與該資料封包相關的資料的發送,並通知該系統記憶體之前所發送的資料封包存在錯誤。
- 如申請專利範圍第8項所述的USB主機控制器,其中該輸入資料以位元組或雙字為單位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098144424A TWI484347B (zh) | 2009-12-23 | 2009-12-23 | 資料傳輸方法以及通用串列匯流排主機控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098144424A TWI484347B (zh) | 2009-12-23 | 2009-12-23 | 資料傳輸方法以及通用串列匯流排主機控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201122833A TW201122833A (en) | 2011-07-01 |
TWI484347B true TWI484347B (zh) | 2015-05-11 |
Family
ID=45046371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098144424A TWI484347B (zh) | 2009-12-23 | 2009-12-23 | 資料傳輸方法以及通用串列匯流排主機控制器 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI484347B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148135A1 (en) * | 2006-12-13 | 2008-06-19 | Hughes William A | Partial CRC Insertion in Data Packets for Early Forwarding |
-
2009
- 2009-12-23 TW TW098144424A patent/TWI484347B/zh active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148135A1 (en) * | 2006-12-13 | 2008-06-19 | Hughes William A | Partial CRC Insertion in Data Packets for Early Forwarding |
Also Published As
Publication number | Publication date |
---|---|
TW201122833A (en) | 2011-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101699419B (zh) | 数据传输方法以及使用该方法的通用串行总线主机控制器 | |
US20140068134A1 (en) | Data transmission apparatus, system, and method | |
EP3702927A1 (en) | Flit-based parallel-forward error correction and parity | |
US10146715B2 (en) | Techniques for inter-component communication based on a state of a chip select pin | |
US20170293519A1 (en) | Method and system for timeout monitoring | |
JP5902702B2 (ja) | イニシエータ装置、ターゲット装置、通信システム、タイムアウト検出方法、およびタイムアウト検出プログラム | |
CN102075401B (zh) | 在pcie总线上传输报文的方法、设备和系统 | |
US20070088874A1 (en) | Offload engine as processor peripheral | |
WO2017041533A1 (zh) | 断开PCIe设备与主机之间的链接的方法和装置 | |
US20080162753A1 (en) | Method for Performing Full Transfer Automation in a USB Controller | |
US8161221B2 (en) | Storage system provided with function for detecting write completion | |
CN112765082B (zh) | 多主机仲裁方法、装置和可读存储介质 | |
WO2023207571A1 (zh) | 一种数据传输方法及装置 | |
TWI483117B (zh) | 用於執行命令之裝置、主機控制器及用於執行命令之系統 | |
US20090271532A1 (en) | Early header CRC in data response packets with variable gap count | |
TWI484347B (zh) | 資料傳輸方法以及通用串列匯流排主機控制器 | |
US20210173808A1 (en) | Early parity error detection on an i3c bus | |
US20090268736A1 (en) | Early header CRC in data response packets with variable gap count | |
TWI773969B (zh) | 內部積體電路匯流排之從屬裝置的測試方法 | |
US20090268727A1 (en) | Early header CRC in data response packets with variable gap count | |
CN113934671B (zh) | 一种接口控制芯片及网络设备 | |
WO2012093475A1 (ja) | 情報転送装置および情報転送装置の情報転送方法 | |
WO2022086798A1 (en) | Repeated in sequence packet transmission for checksum comparison | |
CN114443558A (zh) | 一种可控ep传输数据的方法、装置及介质 | |
CN117234971A (zh) | Ipmi命令传输方法、装置、系统及电子设备 |