一種模擬usb3.0傳輸過程中包出錯的方法
【專利摘要】本發(fā)明公開了一種模擬USB3.0傳輸過程中包出錯的方法,該方法通過設(shè)計一個錯誤編碼來實現(xiàn)對USB3.0傳輸過程中各種包的各種錯誤的注入,從而來模擬USB3.0傳輸過程中包可能出現(xiàn)的各種錯誤情況。本發(fā)明能夠?qū)SB3.0協(xié)議中定義的各種類型的包進行全字段的各種錯誤的注入,可以用于USB3.0主機/設(shè)備控制器IP核的功能驗證當(dāng)中,來提高驗證的質(zhì)量和效率。
【專利說明】一種模擬USB3.0傳輸過程中包出錯的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種模擬USB3.0傳輸過程中包出錯的方法。
【背景技術(shù)】
[0002]1、縮略詞和關(guān)鍵術(shù)語定義
[0003]USB !Universal Serial Bus,通用串行總線。
[0004]IP核:Intellectual Property core,是一段具有特定電路功能的硬件描述語言代碼,該段代碼與具體的集成電路工藝無關(guān),可以移植到不同的半導(dǎo)體工藝當(dāng)中去生產(chǎn)芯片。
[0005]LMP:Link Management Packet,鏈路管理包。
[0006]TP !Transaction Packet,事務(wù)包。
[0007]DP:Data Packet,數(shù)據(jù)包。
[0008]ITP:Isochronous Timestamp Packet,同步時間戮包。
[0009]CRC:Cyclic Redundancy Check,循環(huán)冗余校驗碼。
[0010]ACK TP !Acknowledgement Transaction Packet,確認(rèn)事務(wù)包。
[0011]2、到目前為止,USB 技術(shù)先后共經(jīng)歷了 USB1.0/USB1.1、USB2.0 和 USB3.0/USB3.1三個階段。USB2.0大大拓寬了 USB`技術(shù)的應(yīng)用范圍,并逐步成為計算機的主流接口。但隨著人們對大容量數(shù)據(jù)傳輸?shù)男枨笕找嫫惹校琔SB2.0的傳輸速度早已無法滿足實際應(yīng)用的需要,USB3.0便應(yīng)運而生。USB3.0的數(shù)據(jù)傳輸速率為現(xiàn)行USB2.0的10倍,滿足了當(dāng)今人們對大容量數(shù)據(jù)傳輸?shù)钠惹行枨螅琔SB3.0將逐步取代USB2.0成為最通用的USB接口。而目前USB3.0技術(shù)的核心即是USB3.0主機/設(shè)備控制器IP核的設(shè)計。
[0012]驗證作為集成電路設(shè)計的重要組成部分,其貫穿了整個設(shè)計流程的始終。而功能驗證是集成電路驗證工作的核心內(nèi)容,覆蓋前端設(shè)計的所有階段,是整個驗證工作中最耗時也是最重要的階段。在目前的集成電路設(shè)計中,功能驗證約占整個設(shè)計周期的70%以上。有數(shù)據(jù)表明,導(dǎo)致芯片首次流片失敗的各種因素當(dāng)中,邏輯功能錯誤的比例高達(dá)60%以上,因此,功能驗證的重要性不言而喻。在以IP核設(shè)計為核心的現(xiàn)代集成電路設(shè)計中,IP核的設(shè)計效率和正確性成為提高集成電路設(shè)計效率、保證集成電路設(shè)計正確性的關(guān)鍵。而IP核的設(shè)計效率和正確性又主要取決于功能驗證的質(zhì)量和效率。因此在USB3.0主機/設(shè)備控制器IP核研發(fā)過程中,研究具體的功能驗證方法,是提高IP核的設(shè)計效率和正確性的關(guān)鍵,具有較大的實際意義。
[0013]由于在實際的USB3.0傳輸過程中,傳輸包中可能會出現(xiàn)各種錯誤情況,如包丟失、CRC校驗錯誤、包序號錯誤等。因此需要在USB3.0主機/設(shè)備控制器IP核的功能驗證當(dāng)中,提供一種易于實現(xiàn)的方法來模擬上述可能出現(xiàn)的所有錯誤情況,以驗證USB3.0主機/設(shè)備控制器IP核能否正確地處理上述可能出現(xiàn)的所有錯誤情況。
【發(fā)明內(nèi)容】
[0014]本發(fā)明要解決的技術(shù)問題是提供一種模擬USB3.0傳輸過程中包出錯的方法。
[0015]為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:一種模擬USB3.0傳輸過程中包出錯的方法,包括以下步驟:
[0016](I)由驗證平臺的包產(chǎn)生模塊產(chǎn)生正常包及與正常包對應(yīng)的錯誤編碼;
[0017](2)包產(chǎn)生模塊將正常包及與正常包對應(yīng)的錯誤編碼發(fā)送給驗證平臺的包加錯模塊;
[0018](3)包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼后,根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素;
[0019]所述加錯要素包括Enable、Dppabort/Reserved、Error FielcUError Pattern ;
[0020](4)包加錯模塊判斷加錯要素中的Enable是否為I,若是,則包加錯模塊將錯誤值注入到Eiror Field指定的字段,若否,則不加錯;
[0021](5)包加錯模塊將經(jīng)過加錯處理的錯誤包發(fā)送給USB3.0IP核。
[0022]作為優(yōu)選,步驟(3)所述包加錯模塊接收的正常包包括:數(shù)據(jù)包和非數(shù)據(jù)包。(非數(shù)據(jù)包只有一個開頭序集;數(shù)據(jù)包由數(shù)據(jù)包頭和數(shù)據(jù)包載荷組成,數(shù)據(jù)包頭和非數(shù)據(jù)包一樣均只有一個開頭序集,數(shù)據(jù)包載荷有一個開頭序集和一個尾部序集)
[0023]包加錯情況可分為:包序集加錯、CRC加錯、既不是包序集加錯也不是CRC加錯。包序集加錯包括了:數(shù)據(jù)包包序集加錯和非數(shù)據(jù)包包序集加錯。數(shù)據(jù)包包序集加錯還分為數(shù)據(jù)包尾部序集加錯和數(shù) 據(jù)包非尾部序集加錯。
[0024]作為優(yōu)選,步驟(4)所述包加錯模塊將錯誤值注入到Eiror Field指定的字段,具體包括以下步驟:
[0025]①包加錯模塊根據(jù)包類型判斷為非數(shù)據(jù)包,并根據(jù)Eiror Field判斷為非數(shù)據(jù)包包序集加錯時,包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對非數(shù)據(jù)包包序集的該位字符加錯;
[0026]其中Error Pattern的低四位與數(shù)據(jù)包包序集或非數(shù)據(jù)包包序集的四個字符--對應(yīng)。
[0027]②包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)Eiror Field判斷為數(shù)據(jù)包尾部序集加錯,則判斷所述Dppabort是否為1,若是,則包加錯模塊將正常包的結(jié)尾加錯為無效包的結(jié)尾,若否,則包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯;
[0028]所述無效包的結(jié)尾為USB3.0協(xié)議定義的DPPAB0RT序集;
[0029]Error Pattern的低四位與數(shù)據(jù)包包序集或非數(shù)據(jù)包包序集的四個字符--對
應(yīng),其中Error Pattern的低四位與數(shù)據(jù)包尾部序集的四個字符--對應(yīng)。
[0030]③包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)Eiror Field判斷為數(shù)據(jù)包非尾部的序集加錯時,包加錯模塊依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯;
[0031]Error Pattern的低四位與數(shù)據(jù)包包序集或非數(shù)據(jù)包包序集的四個字符--對
應(yīng),其中Error Pattern的低四位與數(shù)據(jù)包非尾部的序集的四個字符--對應(yīng)。
[0032]④包加錯模塊判斷為CRC加錯時,包加錯模塊直接將CRC值修改為錯誤值;
[0033]⑤包加錯模塊判斷既不是包序集加錯也不是CRC加錯,包加錯模塊將ErrorField指定的字段的值替換為Error Pattern指定的錯誤值,然后包加錯模塊根據(jù)具體加錯的位置,重新計算CRC-5或CRC-16,并將重新計算的CRC-5或CRC-16值替換原有CRC-5或CRC-16的值。
[0034]本發(fā)明的有益效果是:
[0035]能夠模擬USB3.0傳輸過程中包可能出現(xiàn)的各種錯誤情況,且包的加錯過程可由一個獨立的功能模塊完成,利于USB3.0主機/設(shè)備控制器IP核的功能驗證測試平臺的模塊化。
【專利附圖】
【附圖說明】
[0036]下面結(jié)合附圖和【具體實施方式】對本發(fā)明作進一步詳細(xì)的說明。
[0037]圖1是本發(fā)明實施例的包加錯系統(tǒng)模塊示意圖;
[0038]圖2為本發(fā)明實施例中錯誤編碼的格式定義;
[0039]圖2 中標(biāo)記說明:21_Enable, 22-Reserved, 23-Dppabort/Reserved,24-Reserved,25-Error Field,26-Reserved,27-Error Pattern。
[0040]圖3是本發(fā)明實施例1流程圖;
[0041 ]圖4是本發(fā)明實施例2流程圖;
[0042]圖5是本發(fā)明實施例3流程圖;
[0043]圖6是本發(fā)明實施例4流程圖;
[0044]圖7是本發(fā)明實施例5流程圖;
[0045]圖8是本發(fā)明實施例6流程圖;
[0046]圖9是本發(fā)明實施例7流程圖。
【具體實施方式】
[0047]本發(fā)明提出了一種模擬USB3.0傳輸過程中包出錯的方法,使用本方法實現(xiàn)的包加錯模塊將作為USB3.0主機/設(shè)備控制器IP核的功能驗證測試平臺的一部分,其作用就是根據(jù)驗證需求產(chǎn)生各種各樣的錯誤包的激勵,以驗證IP核能否正確處理這些錯誤情況,如圖1所示。首先,測試平臺需要一個能夠根據(jù)USB3.0傳輸要求產(chǎn)生各種正常包的包產(chǎn)生模塊,并且能夠根據(jù)驗證需求產(chǎn)生與每個包相對應(yīng)的錯誤編碼,然后將產(chǎn)生的正常包和相應(yīng)的錯誤編碼提供給包加錯模塊,經(jīng)包加錯模塊處理后再發(fā)送給IP核,最后再使用檢查模塊來完成對IP核響應(yīng)的檢查,即可完成驗證需求。
[0048]圖2為本發(fā)明中錯誤編碼的格式定義,包括:Enable21、Reserved22、Dppabort/Reserved23> Reserved24> Error Field25、Reserved26、Error Pattern27, 其 中,Reserved22、Reserved24 和 Reserved26 為保留位。
[0049]以下各實施例中,錯誤編碼各字段含義詳見表I。
[0050]實施例1
[0051]圖3是實施例1流程圖,該實施例包括以下步驟:
[0052]步驟31:由驗證平臺的包產(chǎn)生模塊產(chǎn)生正常包及與正常包對應(yīng)的錯誤編碼;
[0053]步驟32:包產(chǎn)生模塊將正常包及與正常包對應(yīng)的錯誤編碼發(fā)送給驗證平臺的包加錯模塊;[0054]步驟33:包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼后,根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素;
[0055]所述加錯要素包括Enable、Dppabort/Reserved、Error FielcUError Pattern ;
[0056]作為優(yōu)選,步驟33中所述包加錯模塊接收的正常包包括:數(shù)據(jù)包和非數(shù)據(jù)包。(非數(shù)據(jù)包只有一個開頭序集;數(shù)據(jù)包由數(shù)據(jù)包頭和數(shù)據(jù)包載荷組成,數(shù)據(jù)包頭和非數(shù)據(jù)包一樣均只有一個開頭序集,數(shù)據(jù)包載荷有一個開頭序集和一個尾部序集)
[0057]包加錯情況可分為:包序集加錯、CRC加錯、既不是包序集加錯也不是CRC加錯。包序集加錯包括了:數(shù)據(jù)包包序集加錯和非數(shù)據(jù)包包序集加錯。數(shù)據(jù)包包序集加錯還分為數(shù)據(jù)包尾部序集加錯和數(shù)據(jù)包非尾部序集加錯。
[0058]步驟34:包加錯模塊判斷加錯要素中的Enable是否為I,若是,則包加錯模塊將錯誤值注入到Eiror Field指定的字段,若否,則不加錯;
[0059]作為優(yōu)選,步驟34中所述包加錯模塊將錯誤值注入到Eiror Field指定的字段,包括以下步驟:
[0060]①包加錯模塊根據(jù)包類型判斷為非數(shù)據(jù)包,并根據(jù)Error Field判斷為非數(shù)據(jù)包包序集加錯時,包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對非數(shù)據(jù)包包序集的該位字符加錯;
[0061]其中Error Pattern的低四位與數(shù)據(jù)包包序集或非數(shù)據(jù)包包序集的四個字符是--對應(yīng)的;
[0062]②包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)Eiror Field判斷為數(shù)據(jù)包尾部序集加錯,則判斷所述Dppab`ort是否為1,若是,則包加錯模塊將正常包的結(jié)尾加錯為無效包的結(jié)尾,若否,則包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯;
[0063]所述無效包的結(jié)尾為USB3.0協(xié)議定義的DPPABORT序集;
[0064]Error Pattern的低四位與數(shù)據(jù)包包序集或非數(shù)據(jù)包包序集的四個字符是--對
應(yīng)的,其中Error Pattern的低四位與數(shù)據(jù)包尾部序集的四個字符--對應(yīng)。
[0065]③包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)Eiror Field判斷為數(shù)據(jù)包非尾部的序集加錯時,包加錯模塊依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯;
[0066]Error Pattern的低四位與數(shù)據(jù)包包序集或非數(shù)據(jù)包包序集的四個字符是--對
應(yīng)的,其中Error Pattern的低四位與數(shù)據(jù)包非尾部的序集的四個字符--對應(yīng)。
[0067]④包加錯模塊判斷為CRC加錯時,包加錯模塊直接將CRC值修改為錯誤值;
[0068]⑤包加錯模塊判斷既不是包序集加錯也不是CRC加錯,包加錯模塊將ErrorField指定的字段的值替換為Error Pattern指定的錯誤值,然后包加錯模塊根據(jù)具體加錯的位置,重新計算CRC-5或CRC-16,并將重新計算的CRC-5或CRC-16值替換原有CRC-5或CRC-16的值。
[0069]35:包加錯模塊將經(jīng)過加錯處理的錯誤包發(fā)送給USB3.0IP核。
[0070]實施例2
[0071]圖4是實施例2流程圖,該實施例為模擬USB3.0傳輸過程中既不是包序集也不是CRC加錯。該實施例包括以下步驟:[0072]步驟41:包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼時,進行步驟42,否則等待;
[0073]優(yōu)選的,模擬USB3.0傳輸過程中對Error Field中DP(數(shù)據(jù)包)的序號(SeqNum)加錯,將序號值加錯為9時,則包加錯模塊接收到的與正常包對應(yīng)的錯誤編碼為0x80300009。
[0074]步驟42:包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素 Enable21、Dppabort/Reserved22、Error Field25、Error Pattern27 ;
[0075]其中,Enable簡寫為 E, Dppabort/Reserved 簡寫為 da/r。
[0076]其中,包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,即對錯誤編碼0x80300009進行解碼,獲得加錯要素E = I, da/r = O,Error Field = 0x03,Error Pattern=0x0009。
[0077]其中,加錯要素的保留位的值均設(shè)置為O。
[0078]步驟43:包加錯模塊判斷加錯要素中的Enable為1,則包加錯模塊將Error Field指定的字段的值替換為Error Pat tern指定的錯誤值;
[0079]其中,所述包加錯模塊將Error Field指定的字段的值替換為Error Pattern指定的錯誤值,具體為:包加錯模塊將Error Pattern指定的錯誤值9來替換數(shù)據(jù)包中原SeqNum的值。
[0080]步驟44:包加錯模塊根據(jù)具體加錯的位置,重新計算CRC-5或CRC-16,并將重新計算的CRC-5或CRC-16值替換原有CRC-5或CRC-16的值。返回步驟41。
[0081]實施例3
[0082]圖5是實施例3流程圖,該實施例為模擬USB3.0傳輸過程中CRC加錯,該實施例包括以下步驟:
[0083]步驟51:包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼時,進行步驟52,否則等待;
[0084]優(yōu)選的,模擬USB3.0傳輸過程中對Error Field中ACK TP(確認(rèn)事務(wù)包)的CRC-16加錯,則包加錯模塊接收到的與正常包對應(yīng)的錯誤編碼為0x81000000。
[0085]步驟52:包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素 Enable21、Dppabort/Reserved22、Error Field25、Error Pattern27 ;
[0086]其中,Enable簡寫為 E, Dppabort/Reserved 簡寫為 da/r。
[0087]其中,包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,即對錯誤編碼0x81000000進行解碼,獲得加錯要素E = I, da/r = O,Error Field = 0x10,Error Pattern=0x0000。
[0088]其中,加錯要素的保留位的值均設(shè)置為O。
[0089]步驟53:包加錯模塊判斷加錯要素中的Enable為1,且包加錯模塊判斷為CRC-16加錯,包加錯模塊直接將Error Field中CRC-16值修改為錯誤值。返回步驟51。
[0090]其中,所述包加錯模塊判斷為CRC-16加錯是通過判斷Error Field值為0x10判斷出的。
[0091]實施例4
[0092]圖6是實施例4流程圖,該實施例為模擬USB3.0傳輸過程中非數(shù)據(jù)包包序集加錯,該實施例包括以下步驟:
[0093]步驟61:包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼時,進行步驟62,否則等待;
[0094]優(yōu)選的,模擬USB3.0傳輸過程中對Error Field中非數(shù)據(jù)包包序集加錯時,例如對Set Link Function LMP (設(shè)置鏈路功能鏈路管理包)的HPSTART序集(由4個字符組成的包的開頭)的第2個字符進行加錯,則包加錯模塊接收到的錯誤編碼為0x80000002。
[0095]步驟62:包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素 Enable21、Dppabort/Reserved22、Error Field25、Error Pattern27 ;
[0096]其中,Enable簡寫為 E, Dppabort/Reserved 簡寫為 da/r。
[0097]其中,包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,即對錯誤編石馬 0x80000002 進行解碼,獲得加錯要素為 E=I, da/r = O, Error Field = 0x00, ErrorPattern = 0x0002。
[0098]其中,加錯要素的保留位的值均設(shè)置為O。
[0099]步驟63:包加錯模塊判斷加錯要素中的Enable為1,且包加錯模塊根據(jù)包類型判斷為非數(shù)據(jù)包,并根據(jù)Error Field判斷為非數(shù)據(jù)包包序集加錯時,包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對非數(shù)據(jù)包包序集的該位字符加錯。返回步驟61。
[0100]其中,所述Error Pattern的低四位與非數(shù)據(jù)包包序集的四個字符是--對應(yīng)的。
[0101]其中,所述包加錯`模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對非數(shù)據(jù)包包序集的該位字符加錯,具體為:包加錯模塊就從低位到高位來依次判斷Error Pattern = 0x0002的低四位,當(dāng)判斷出ErrorPattern的第2位的值為I時,則包加錯模塊就對非數(shù)據(jù)包包序集的第2位字符加錯,即將Set Link Function鏈路管理包的HPSTART序集的第2個字符修改,實現(xiàn)加錯。
[0102]實施例5
[0103]圖7是實施例5流程圖,該實施例為模擬USB3.0傳輸過程中數(shù)據(jù)包尾部序集加錯,該實施例包括以下步驟:
[0104]步驟71:包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼時,進行步驟72,否則等待;
[0105]優(yōu)選的,模擬USB3.0傳輸過程中對數(shù)據(jù)包的尾部序集(由4個字符組成的數(shù)據(jù)包的結(jié)尾)加錯為USB3.0協(xié)議定義的無效包的結(jié)尾(DPPABORT序集),則包加錯模塊接收到的錯誤編碼為0xal600000。
[0106]步驟72:包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素 Enable21、Dppabort/Reserved22、Error Field25、Error Pattern27 ;
[0107]其中,Enable簡寫為 E, Dppabort/Reserved 簡寫為 da/r。
[0108]其中,包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,即對錯誤編碼0xal600000進行解碼,獲得加錯要素E=I, da/r = I,Error Field = 0x16,Error Pattern=0x0000。
[0109]其中,加錯要素的保留位的值均設(shè)置為O。
[0110]步驟73:包加錯模塊判斷加錯要素中的Enable為1,且包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)Eiror Field判斷為數(shù)據(jù)包尾部序集加錯,且判斷所述Dppabort為1,則包加錯模塊將正常包的結(jié)尾加錯為無效包的結(jié)尾。返回步驟71。
[0111]其中,所述無效包的結(jié)尾為USB3.0協(xié)議定義的DPPABORT序集。
[0112]其中,所述包加錯模塊將正常包的結(jié)尾加錯為無效包的結(jié)尾,具體為:包加錯模塊數(shù)據(jù)包的正常結(jié)尾(DPPEND序集)加錯為無效包的結(jié)尾(DPPABORT序集)。
[0113]實施例6
[0114]圖8是實施例6流程圖,該實施例為模擬USB3.0傳輸過程中數(shù)據(jù)包尾部序集加錯,該實施例包括以下步驟:
[0115]步驟81:包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼時,進行步驟82,否則等待;
[0116]優(yōu)選的,模擬USB3.0傳輸過程中對數(shù)據(jù)包的尾部序集(由4個字符組成的數(shù)據(jù)包的結(jié)尾)的第3個字符進行加錯,則包加錯模塊接收到的錯誤編碼為0x81600004。
[0117]步驟82:包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素 Enable21、Dppabort/Reserved22、Error Field25、Error Pattern27 ;
[0118]其中,Enable簡寫為 E, Dppabort/Reserved 簡寫為 da/r。
[0119]其中,包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,即對錯誤編碼0x81600004進行解碼 ,獲得加錯要素E = I, da/r = O,Error Field = 0x16,Error Pattern=0x0004。
[0120]其中,加錯要素的保留位的值均設(shè)置為O。
[0121]步驟83:包加錯模塊判斷加錯要素中的Enable為1,且包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)Error Field判斷為數(shù)據(jù)包尾部序集加錯,當(dāng)判斷所述Dppabort為O,則包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯。返回步驟81。
[0122]Error Pattern的低四位與數(shù)據(jù)包尾部序集的四個字符--對應(yīng);
[0123]其中,所述包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯,具體為:包加錯模塊從低位到高位來依次判斷Error Pattern = 0x0004的低四位,當(dāng)判斷到Error Pattern的第3位為1,則包加錯模塊將數(shù)據(jù)包的尾部序集的第3個字符值修改,實現(xiàn)加錯。
[0124]實施例7
[0125]圖9是實施例7流程圖,該實施例為模擬USB3.0傳輸過程中數(shù)據(jù)包非尾部的序集加錯,該實施例包括以下步驟:
[0126]步驟91:包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼時,進行步驟92,否則等待;
[0127]優(yōu)選的,模擬USB3.0傳輸過程中對數(shù)據(jù)包的DPPSTART序集(由4個字符組成的數(shù)據(jù)包載荷的開頭)的第4個字符進行加錯,則包加錯模塊接收到的錯誤編碼為0x81400008。
[0128]步驟92:包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素 Enable21、Dppabort/Reserved22、Error Field25、Error Pattern27 ;
[0129]其中,Enable簡寫為 E, Dppabort/Reserved 簡寫為 da/r。
[0130]其中,包加錯模塊根據(jù)正常包的類型對接收的錯誤編碼進行解碼,即對錯誤編碼0x81600004進行解碼,獲得加錯要素E = I, da/r = O,Error Field = 0x14,Error Pattern=0x0008。
[0131]其中,加錯要素的保留位的值均設(shè)置為O。
[0132]步驟93:包加錯模塊判斷加錯要素中的Enable為1,且包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)Eiror Field判斷為數(shù)據(jù)包非尾部的序集加錯時,包加錯模塊依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯。返回步驟91。
[0133]Error Pattern的低四位與數(shù)據(jù)包非尾部的序集的四個字符--對應(yīng);
[0134]其中,所述包加錯模塊依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯,具體為:包加錯模塊依次判斷ErrorPattern = 0x0008的低四位,當(dāng)判斷到第4位的值為1,則包加錯模塊將數(shù)據(jù)包的DPPSTART序集的第4個字符修改,實現(xiàn)加錯。
[0135]表1:錯誤編碼各字段含義
【權(quán)利要求】
1.一種模擬USB3.0傳輸過程中包出錯的方法,其特征在于包括以下步驟: (1)由驗證平臺的包產(chǎn)生模塊產(chǎn)生正常包及與正常包對應(yīng)的錯誤編碼; (2)包產(chǎn)生模塊將正常包及與正常包對應(yīng)的錯誤編碼發(fā)送給驗證平臺的包加錯模塊; (3)包加錯模塊接收到來自包產(chǎn)生模塊發(fā)送的正常包及與正常包對應(yīng)的錯誤編碼后,根據(jù)正常包的類型對接收的錯誤編碼進行解碼,并獲得加錯要素; 所述加錯要素包括 Enable、Dppabort/Reserved、Error FielcUError Pattern ; (4)包加錯模塊判斷加錯要素中的Enable是否為I,若是,則包加錯模塊將錯誤值注入到Error Field指定的字段,若否,貝U不加錯; (5)包加錯模塊將經(jīng)過加錯處理的錯誤包發(fā)送給USB3.0IP核。
2.根據(jù)權(quán)利要求1所述模擬USB3.0傳輸過程中包出錯的方法,其特征在于:步驟(3)所述包加錯模塊接收的正常包包括:數(shù)據(jù)包和非數(shù)據(jù)包。
3.根據(jù)權(quán)利要求1所述模擬USB3.0傳輸過程中包出錯的方法,其特征在于:步驟(4)所述包加錯模塊將錯誤值注入到Eiror Field指定的字段,具體包括以下步驟: ①包加錯模塊根據(jù)包類型判斷為非數(shù)據(jù)包,并根據(jù)ErrorField判斷為非數(shù)據(jù)包包序集加錯時,包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對非數(shù)據(jù)包包序集的該位字符加錯; ②包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)EirorField判斷為數(shù)據(jù)包尾部序集加錯,則判斷所述Dppabort是否為1,若是,則包加錯模塊將正常包的結(jié)尾加錯為無效包的結(jié)尾,若否,則包加錯模塊就從低位到高位來依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊 就對數(shù)據(jù)包包序集的該位字符加錯; ③包加錯模塊根據(jù)包類型判斷為數(shù)據(jù)包,并根據(jù)EirorField判斷為數(shù)據(jù)包非尾部的序集加錯時,包加錯模塊依次判斷Error Pattern的低四位,當(dāng)判斷到某一位的值為I時,包加錯模塊就對數(shù)據(jù)包包序集的該位字符加錯; ④包加錯模塊判斷為CRC加錯時,包加錯模塊直接將CRC值修改為錯誤值; ⑤包加錯模塊判斷既不是包序集加錯也不是CRC加錯,包加錯模塊將EirorField指定的字段的值替換為Eiror Pattern指定的錯誤值,然后包加錯模塊根據(jù)具體加錯的位置,重新計算CRC-5或CRC-16,并將重新計算的CRC-5或CRC-16值替換原有CRC-5或CRC-16的值。
4.根據(jù)權(quán)利要求3所述模擬USB3.0傳輸過程中包出錯的方法,其特征在于:所述Error Pattern的低四位與數(shù)據(jù)包包序集或非數(shù)據(jù)包包序集的四個字符--對應(yīng);所述無效包的結(jié)尾為USB3.0協(xié)議定義的 DPPAB0RT序集。
【文檔編號】H04L1/00GK103812607SQ201310651603
【公開日】2014年5月21日 申請日期:2013年12月4日 優(yōu)先權(quán)日:2013年12月4日
【發(fā)明者】王杰, 王亞君 申請人:安徽虹莊微電子有限公司