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