根據(jù)聲明協(xié)議描述的硬件觸發(fā)生成的制作方法
【專利說明】
[0001] 相關(guān)申請(qǐng)數(shù)據(jù) 本申請(qǐng)要求2014年10月24日遞交的序列號(hào)為62/068, 384的美國臨時(shí)專利申請(qǐng)的權(quán) 益,其出于所有目的被并入本文。
技術(shù)領(lǐng)域
[0002] 本發(fā)明涉及測試和測量儀器中的觸發(fā),并且更具體地,涉及根據(jù)具有用戶配置的 協(xié)議的高級(jí)別描述創(chuàng)建觸發(fā)。
【背景技術(shù)】
[0003] 一段時(shí)間以來,觸發(fā)系統(tǒng)已經(jīng)成為測試和測量儀器的一部分。但是觸發(fā)系統(tǒng)通常 依賴于與基礎(chǔ)信號(hào)相關(guān)聯(lián)的條件:例如,信號(hào)升高到高于(或下降到低于)閾值電壓。當(dāng)基 礎(chǔ)信號(hào)所攜帶的數(shù)據(jù)被解碼且驗(yàn)證為與特定協(xié)議匹配時(shí),基于數(shù)據(jù)建立觸發(fā)條件是非常復(fù) 雜的情況,并且如果真會(huì)發(fā)生的話不能在當(dāng)今容易地完成。
[0004] 本發(fā)明的實(shí)施例解決了現(xiàn)有技術(shù)中的當(dāng)前和其他問題。
【附圖說明】
[0005] 圖IA示出了用于匹配特定分組的協(xié)議的例子。
[0006] 圖IB示出了可以匹配圖IA的分組的狀態(tài)機(jī)。
[0007] 圖IC示出了可以在涉及圖IA的分組的數(shù)據(jù)的條件上觸發(fā)的狀態(tài)機(jī)。
[0008] 圖2A示出了用于匹配若干分組的協(xié)議的第二例子。
[0009] 圖2B示出了匹配圖2A的分組的未優(yōu)化狀態(tài)機(jī)。
[0010] 圖2C示出了匹配圖2A的分組的優(yōu)化狀態(tài)機(jī)。
[0011] 圖2D示出了可以在涉及圖2A的分組的數(shù)據(jù)的條件上觸發(fā)的狀態(tài)機(jī)。
[0012] 圖3A-3B示出了修改為反映復(fù)合觸發(fā)條件的圖IB的狀態(tài)機(jī)。
[0013] 圖4示出了根據(jù)本發(fā)明的實(shí)施例的測試和測量儀器,其可以創(chuàng)建和使用圖 1B-1C和2B-2D的狀態(tài)機(jī),以在滿足各種觸發(fā)條件時(shí)觸發(fā)測試和測量儀器,并將面包肩 (breadcrumb)保存到反映圖1B-1C和2B-2D的狀態(tài)機(jī)的操作的存儲(chǔ)器中。
[0014] 圖5示出了關(guān)于圖4的狀態(tài)機(jī)修改器的更多細(xì)節(jié)。
[0015] 圖6示出了關(guān)于圖4的面包肩的更多細(xì)節(jié)。
[0016] 圖7A-7B示出了根據(jù)本發(fā)明的實(shí)施例的用于利用圖4的測試和測量儀器根據(jù)協(xié)議 和用戶配置創(chuàng)建觸發(fā)狀態(tài)機(jī)的過程的流程圖。
[0017] 圖8示出了根據(jù)本發(fā)明的實(shí)施例的用于利用圖4的測試和測量儀器根據(jù)協(xié)議和復(fù) 合觸發(fā)條件創(chuàng)建觸發(fā)狀態(tài)機(jī)的過程的流程圖。
[0018] 圖9示出了根據(jù)本發(fā)明的實(shí)施例的用于利用圖4的測試和測量儀器優(yōu)化狀態(tài)機(jī)的 過程的流程圖。
[0019] 圖10示出了根據(jù)本發(fā)明的實(shí)施例的用于利用圖4的測試和測量儀器創(chuàng)建可以保 存面包肩的狀態(tài)機(jī)的過程的流程圖。
【具體實(shí)施方式】
[0020] 在解釋本發(fā)明如何操作之前,理解正則表達(dá)式和狀態(tài)機(jī)之間的關(guān)系是有用的。給 定正則表達(dá)式,可以構(gòu)造表示所述正則表達(dá)式的狀態(tài)機(jī)。然后狀態(tài)機(jī)可以用于確定特定輸 入是否匹配正則表達(dá)式。如果狀態(tài)機(jī)處理到可接受的終止?fàn)顟B(tài),則輸入匹配正則表達(dá)式;否 貝1J,輸入不匹配正則表達(dá)式。
[0021] 圖IA示出了用于表達(dá)為正則表達(dá)式的命名為"dataPacket"的數(shù)據(jù)分組的協(xié)議的 例子。協(xié)議105描述了數(shù)據(jù)分組。當(dāng)將比特流與該正則表達(dá)式進(jìn)行比較時(shí),系統(tǒng)可以確定 在比特流中是否找到分組。
[0022] 圖IB示出了對(duì)應(yīng)于圖IA的正則表達(dá)式的狀態(tài)機(jī)。狀態(tài)機(jī)110包括狀態(tài)115、120、 125、130、135、140和145,在這些狀態(tài)之間轉(zhuǎn)移。每個(gè)狀態(tài)(也可以被稱作節(jié)點(diǎn)或頂點(diǎn))描述 了需要匹配什么數(shù)據(jù)以進(jìn)入狀態(tài)(接受標(biāo)準(zhǔn))。每個(gè)箭頭是假如滿足狀態(tài)的目標(biāo)接受標(biāo)準(zhǔn)而 可以經(jīng)過的路徑。除了開始狀態(tài)115和成功狀態(tài)145之外,這些狀態(tài)順序地對(duì)應(yīng)于分組所 期望的數(shù)據(jù)。因此,狀態(tài)120匹配比特流中的狀態(tài)S,狀態(tài)125匹配標(biāo)記為"開始"的字段的 3比特?cái)?shù)據(jù),狀態(tài)130匹配標(biāo)記為"addr"字段的4比特?cái)?shù)據(jù),等等。假設(shè)所有的數(shù)據(jù)都可以 由狀態(tài)機(jī)110的狀態(tài)匹配,當(dāng)?shù)竭_(dá)成功狀態(tài)145時(shí),系統(tǒng)可以宣布分組"dataPacket"已經(jīng) 被成功匹配。
[0023] 狀態(tài)機(jī)110表示實(shí)際狀態(tài)機(jī)的簡化版本。例如,狀態(tài)機(jī)110沒有標(biāo)記各個(gè)狀態(tài)之 間的轉(zhuǎn)移,并且狀態(tài)機(jī)110也沒有示出錯(cuò)誤狀態(tài)或當(dāng)數(shù)據(jù)不匹配所期望的內(nèi)容時(shí)所使用的 轉(zhuǎn)移。本領(lǐng)域技術(shù)人員將理解狀態(tài)機(jī)110如何操作,即使沒有這些細(xì)節(jié)。
[0024] 正式地,在數(shù)學(xué)方面,狀態(tài)機(jī)可以表示為五變量組),其中,_是字 母(狀態(tài)機(jī)所識(shí)別的符號(hào)集),S是狀態(tài)機(jī)中的狀態(tài)集,s。是初始狀態(tài),δ是轉(zhuǎn)移函數(shù),轉(zhuǎn)移 函數(shù)從S中的每個(gè)狀態(tài)和Σ中的每個(gè)符號(hào)映射到S中的狀態(tài)(其可能是與輸入狀態(tài)相同的 狀態(tài)),且F是S中最終狀態(tài)集。因此,狀態(tài)機(jī)110可以更正式地表示為),其 中 酸可能潛在地存在比僅狀態(tài)S和二進(jìn)制值0和1識(shí)別出的更多的符號(hào),即 使這是狀態(tài)機(jī)所識(shí)別出的僅有符號(hào)) S=Uio, 115, 120, 125, 130, 135, 140, 145} S0=IlO s (δ在此處沒有更詳細(xì)表達(dá),因?yàn)楸磉_(dá)完整的轉(zhuǎn)移函數(shù)將是非常麻煩且沒有什么價(jià) 值) F={145} 事實(shí)上,狀態(tài)機(jī)110的這個(gè)表達(dá)不一定是完整的。轉(zhuǎn)移通常發(fā)生在個(gè)體符號(hào)上,而不是 符號(hào)組上。因此,從狀態(tài)120到125的轉(zhuǎn)移實(shí)際上可能涉及三個(gè)轉(zhuǎn)移(并因此有一些中間狀 態(tài)):對(duì)于標(biāo)記為"開始"的字段識(shí)別出的每個(gè)比特有一個(gè)轉(zhuǎn)移。但是作為簡化,本領(lǐng)域技術(shù) 人員將理解狀態(tài)機(jī)110如何操作。
[0025] 如果對(duì)于狀態(tài)機(jī)110中給定狀態(tài)讀取特定值,則用戶可能想要觸發(fā)某一過程。例 如,如果地址字段存儲(chǔ)值10 (二進(jìn)制1010;十六進(jìn)制:A),則用戶可能想要觸發(fā)一過程。圖 IC示出了可以如何修改狀態(tài)機(jī)110以實(shí)現(xiàn)該觸發(fā)的例子。在圖IC中,取代匹配地址字段的 任意可能值的是,狀態(tài)機(jī)150比較比特流與具體值1010 (在狀態(tài)155)。如果發(fā)現(xiàn)所述值, 則在狀態(tài)160處,認(rèn)為滿足觸發(fā),并且觸發(fā)使得過程開始(不管該過程可以是什么)。
[0026] 注意,狀態(tài)115和120在狀態(tài)機(jī)150中與在狀態(tài)機(jī)110中是相同的:狀態(tài)115是狀 態(tài)機(jī)開始的狀態(tài),并且狀態(tài)120匹配來自比特流的狀態(tài)S。但是狀態(tài)165不同于狀態(tài)125, 因?yàn)闋顟B(tài)165并不關(guān)心正被讀取的特定字段。換句話說,在狀態(tài)165,所有問題是從比特流 讀取三個(gè)比特。狀態(tài)155也不同于狀態(tài)130,因?yàn)闋顟B(tài)155僅關(guān)心匹配特定比特流1010,而 不是匹配地址字段(如在狀態(tài)130那樣)。最后,一旦已經(jīng)匹配了用戶條件,則不需要再進(jìn)行 進(jìn)一步匹配,所以狀態(tài)機(jī)150不包括對(duì)狀態(tài)135和140的模擬:可以在滿足條件之后立即發(fā) 布觸發(fā)。
[0027] 圖1A-1C示出了正則表達(dá)式、匹配正則表達(dá)式的狀態(tài)機(jī)和觸發(fā)狀態(tài)機(jī)的非常簡單 的例子。(觸發(fā)狀態(tài)機(jī)有時(shí)簡稱為"狀態(tài)機(jī)",但是根據(jù)上下文,本領(lǐng)域技術(shù)人員可以確定特 定狀態(tài)機(jī)是觸發(fā)狀態(tài)機(jī)還是匹配正則表達(dá)式的狀態(tài)機(jī))。圖2A-2D示出了更復(fù)雜的例子。在 圖2A中,示出了用于三個(gè)不同分組的正則表達(dá)式。這些正則表達(dá)式可以轉(zhuǎn)換為狀態(tài)機(jī),如 圖2B所示。注意,圖2B中的狀態(tài)機(jī)205使用單個(gè)開始狀態(tài)來覆蓋所有三個(gè)可能的協(xié)議。
[0028] 狀態(tài)機(jī)205可以如圖所示那樣使用。但是如示出那樣使用狀態(tài)機(jī)205將要求預(yù)見 或回溯,這要求額外的存儲(chǔ)器并可能減緩比特流的處理。例如,假設(shè)給定特定輸入可以到達(dá) 多個(gè)狀態(tài)的情況,最左邊(如圖2B將由人讀取,而不是處理器可以如何使用狀態(tài)機(jī)205)。例 如,注意,狀態(tài)210、215和220全都匹配開始狀態(tài),并且狀態(tài)225、230和235全都匹配作為 從地址(slaveAddress)字段的4個(gè)比特。利用最左邊第一方法,在讀取開始狀態(tài)和作為從 地址字段的4個(gè)比特之后,系統(tǒng)將將處于狀態(tài)225。但是如果讀取的下一比特是0,則系統(tǒng) 將跟隨狀態(tài)機(jī)205的錯(cuò)誤分支,并將不得不展開狀態(tài)機(jī)205的處理以試圖發(fā)現(xiàn)正確的分支。 這是回溯的例子。應(yīng)該清楚的是,不得不倒轉(zhuǎn)狀態(tài)機(jī)205且處理不同分支可能減緩比特流 的處理。避免利用狀態(tài)機(jī)205的回溯將要求預(yù)見處理:系統(tǒng)將以某種方法查看將進(jìn)入到比 特流中的比特。預(yù)見也是復(fù)雜且昂貴的。
[0029] 為了避免回溯和預(yù)見,狀態(tài)機(jī)205可以被優(yōu)化。圖2C中的狀態(tài)機(jī)240示出了優(yōu)化 狀態(tài)機(jī)的例子。利用狀態(tài)機(jī)240,不需要進(jìn)行預(yù)見,并且也不關(guān)心回溯。給定任意分組的任 意前綴(高達(dá)且包括整個(gè)分組),僅有一條可能路徑通過匹配所述前綴的狀態(tài)機(jī)240。因此, 不需要執(zhí)行預(yù)見,且不需要擔(dān)心回溯:給定狀態(tài)機(jī)240中的特定狀態(tài)和特定輸入符號(hào),僅存 在一個(gè)轉(zhuǎn)移到的可能狀態(tài)(該狀態(tài)可能是錯(cuò)誤狀態(tài),為了簡化未在圖2C中示出)。
[0030] 可以利用以下過程實(shí)現(xiàn)優(yōu)化。從以下開始:從開始狀態(tài)走過樹并組合等價(jià)且具有 相同親代的節(jié)點(diǎn)(也就是,將節(jié)點(diǎn)合并為單個(gè)節(jié)點(diǎn))。可以重復(fù)這個(gè)過程,直到不存在更多類 似的節(jié)點(diǎn)要組合。然后發(fā)現(xiàn)等價(jià)成功狀態(tài),組合它們,并隨后組合等價(jià)且具有相同子代的節(jié) 點(diǎn)(再次,重復(fù)該過程直到?jīng)]有更多類似節(jié)點(diǎn)要組合)。
[0031] 圖2D示出了用戶定制特定觸發(fā)的例子。在圖2D中,用戶已經(jīng)選擇當(dāng)正則表達(dá)式