本發(fā)明涉及服務(wù)器
技術(shù)領(lǐng)域:
,尤其涉及一種異常時(shí)序定位方法、裝置及主板。
背景技術(shù):
:當(dāng)前服務(wù)器主板線路越來越復(fù)雜,對(duì)應(yīng)上電時(shí)序也愈發(fā)復(fù)雜。當(dāng)時(shí)序控制邏輯出現(xiàn)問題,或者時(shí)序信號(hào)傳輸通道上存在器件故障(例如,器件老化失效)、器件的參數(shù)不符合應(yīng)用要求等,都會(huì)導(dǎo)致時(shí)序異常。目前,針對(duì)主板時(shí)序異常,主要是利用示波器按照主板的時(shí)序圖進(jìn)行順次測(cè)量,確定發(fā)生異常的時(shí)序,進(jìn)而排查與該異常時(shí)序相關(guān)的軟硬件,找到導(dǎo)致時(shí)序異常的問題根源,這種做法耗時(shí)費(fèi)力,無法快速找到問題根源。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于提供一種異常時(shí)序定位方法、裝置及主板,用以快速定位異常時(shí)序,進(jìn)而對(duì)與該異常時(shí)序相關(guān)的軟硬件進(jìn)行排查,快速找到問題根源。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供了如下技術(shù)方案:本發(fā)明提供一種異常時(shí)序定位方法,應(yīng)用于主板包括的CPLD(ComplexProgrammableLogicDevice,復(fù)雜可編程邏輯器件),所述主板還包括BMC(BaseboardManagementController,基板管理控制器),所述方法包括:當(dāng)檢測(cè)到有時(shí)序信號(hào)跳變時(shí),將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;當(dāng)接收到所述BMC發(fā)送的讀取指令時(shí),將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC,以使所述BMC基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。進(jìn)一步地,所述將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū)之后,還包括:將時(shí)間寄存器記錄的跳變時(shí)間存入本地存儲(chǔ)區(qū),所述跳變時(shí)間為時(shí)序信號(hào)發(fā)生跳變的時(shí)間點(diǎn);所述將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC之后,還包括:將導(dǎo)致當(dāng)前時(shí)序數(shù)據(jù)存儲(chǔ)的時(shí)序信號(hào)的跳變時(shí)間發(fā)送給BMC,以使所述BMC基于接收到的所有時(shí)序信號(hào)的跳變時(shí)間,確定任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間間隔是否滿足預(yù)設(shè)時(shí)間間隔要求。本發(fā)明還提供一種異常時(shí)序定位方法,應(yīng)用于主板包括的BMC,所述主板還包括CPLD,所述方法包括:向所述CPLD發(fā)送讀取指令;接收所述CPLD基于所述讀取指令返回的時(shí)序數(shù)據(jù),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。進(jìn)一步地,所述方法還包括:接收所述CPLD發(fā)送的時(shí)序信號(hào)的跳變時(shí)間;計(jì)算任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔;確定兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間間隔要求。本發(fā)明還提供一種異常時(shí)序定位裝置,應(yīng)用于主板包括的CPLD,所述主板還包括BMC,所述裝置包括:存儲(chǔ)單元,用于當(dāng)檢測(cè)到有時(shí)序信號(hào)跳變時(shí),將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;發(fā)送單元,用于當(dāng)接收到所述BMC發(fā)送的讀取指令時(shí),將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC,以使所述BMC基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。進(jìn)一步地,所述存儲(chǔ)單元,還用于在將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū)之后,將時(shí)間寄存器記錄的跳變時(shí)間存入本地存儲(chǔ)區(qū),所述跳變時(shí)間為時(shí)序信號(hào)發(fā)生跳變的時(shí)間點(diǎn);所述發(fā)送單元,還用于在將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC之后,將導(dǎo)致當(dāng)前時(shí)序數(shù)據(jù)存儲(chǔ)的時(shí)序信號(hào)的跳變時(shí)間發(fā)送給BMC,以使所述BMC基于接收到的所有時(shí)序信號(hào)的跳變時(shí)間,確定任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間間隔是否滿足預(yù)設(shè)時(shí)間間隔要求。本發(fā)明還提供一種異常時(shí)序定位裝置,應(yīng)用于主板包括的BMC,所述主板還包括CPLD,所述裝置包括:發(fā)送單元,用于向所述CPLD發(fā)送讀取指令;接收單元,用于接收所述CPLD基于所述讀取指令返回的時(shí)序數(shù)據(jù),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;確定單元,用于基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。進(jìn)一步地,所述裝置還包括:所述接收單元,還用于接收所述CPLD發(fā)送的時(shí)序信號(hào)的跳變時(shí)間;計(jì)算單元,用于計(jì)算任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔;所述確定單元,還用于確定兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間間隔要求。本發(fā)明還提供一種主板,所述主板包括CPLD和BMC,所述CPLD,用于當(dāng)檢測(cè)到有時(shí)序信號(hào)跳變時(shí),將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;當(dāng)接收到所述BMC發(fā)送的讀取指令時(shí),將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC;所述BMC,用于向所述CPLD發(fā)送讀取指令;接收所述CPLD基于所述讀取指令返回的時(shí)序數(shù)據(jù),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。進(jìn)一步地,所述CPLD,還用于將時(shí)間寄存器記錄的跳變時(shí)間存入本地存儲(chǔ)區(qū),所述跳變時(shí)間為時(shí)序信號(hào)發(fā)生跳變的時(shí)間點(diǎn);所述將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC之后,將導(dǎo)致當(dāng)前時(shí)序數(shù)據(jù)存儲(chǔ)的時(shí)序信號(hào)的跳變時(shí)間發(fā)送給BMC;所述BMC,還用于接收所述CPLD發(fā)送的時(shí)序信號(hào)的跳變時(shí)間;計(jì)算任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔;確定兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間間隔要求。由以上描述可以看出,本發(fā)明中,CPLD按照預(yù)設(shè)時(shí)序順序在信號(hào)寄存器中記錄每一個(gè)時(shí)序信號(hào)的狀態(tài),簡(jiǎn)稱時(shí)序信號(hào)狀態(tài)(跳變狀態(tài)或未跳變狀態(tài)),并在每一次時(shí)序信號(hào)跳變時(shí),將信號(hào)寄存器中記錄的時(shí)序信號(hào)狀態(tài)保存到本地存儲(chǔ)區(qū)中,當(dāng)接收到BMC的讀取指令時(shí),將保存在存儲(chǔ)區(qū)的時(shí)序信號(hào)狀態(tài)發(fā)送給BMC,以使BMC基于時(shí)序順序遍歷接收到的每一個(gè)時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào),達(dá)到快速定位異常時(shí)序的目的,進(jìn)而找到導(dǎo)致出現(xiàn)該異常時(shí)序的軟硬件問題。附圖說明圖1是本發(fā)明實(shí)施例示出的一種異常時(shí)序定位方法流程圖;圖2是本發(fā)明實(shí)施例示出的另一種異常時(shí)序定位方法流程圖;圖3是本發(fā)明實(shí)施例示出的一種主板示意圖;圖4是本發(fā)明實(shí)施例示出的一種異常時(shí)序定位裝置的結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例示出的另一種異常時(shí)序定位裝置的結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例示出的一種主板的結(jié)構(gòu)示意圖。具體實(shí)施方式這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。在本發(fā)明使用的術(shù)語是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本發(fā)明。在本發(fā)明和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。應(yīng)當(dāng)理解,盡管在本發(fā)明可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本發(fā)明范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。本發(fā)明實(shí)施例提出一種異常時(shí)序定位方法,該方法由CPLD按照預(yù)設(shè)的時(shí)序順序在信號(hào)寄存器中記錄每一個(gè)時(shí)序信號(hào)的狀態(tài),并在每一次時(shí)序信號(hào)跳變時(shí),將信號(hào)寄存器中記錄的時(shí)序信號(hào)狀態(tài)保存到本地存儲(chǔ)區(qū)中,當(dāng)接收到BMC的讀取指令時(shí),將保存在存儲(chǔ)區(qū)的時(shí)序信號(hào)狀態(tài)發(fā)送給BMC,以使BMC基于時(shí)序順序遍歷接收到的每一個(gè)時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。參見圖1,為本發(fā)明異常時(shí)序定位方法的一個(gè)實(shí)施例流程圖,該實(shí)施例從CPLD側(cè)對(duì)異常時(shí)序定位過程進(jìn)行描述。步驟101,當(dāng)檢測(cè)到有時(shí)序信號(hào)跳變時(shí),將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū)。主板上的時(shí)序通常由CPLD通過輸出管腳的電平變化(例如,從高電平變?yōu)榈碗娖交驈牡碗娖阶優(yōu)楦唠娖?進(jìn)行控制,被控制上電的器件會(huì)針對(duì)此次控制返回確認(rèn)信號(hào),該確認(rèn)信號(hào)通過CPLD的輸入管腳接入,當(dāng)輸入管腳出現(xiàn)電平變化時(shí),說明此次時(shí)序控制正常,然后,CPLD按照預(yù)設(shè)時(shí)序順序輸出下一個(gè)控制信號(hào),并確認(rèn)接收到此次控制的確認(rèn)信號(hào),以此類推,直到所有時(shí)序控制完成。本申請(qǐng)將與時(shí)序有關(guān)的輸出管腳和輸入管腳按照時(shí)序順序引到信號(hào)寄存器,例如,假設(shè)當(dāng)前與時(shí)序相關(guān)的輸出管腳和輸入管腳為32個(gè),其中,10個(gè)輸出管腳,22個(gè)輸入管腳,這里需要說明的是,一個(gè)控制信號(hào)的輸出,可能會(huì)接收到返回的多個(gè)確認(rèn)信號(hào),例如,一個(gè)控制信號(hào)輸出,可控制4個(gè)器件上電,這4個(gè)器件同樣有上電順序要求,可通過設(shè)計(jì)不同的硬件電路,保證這4個(gè)器件按照預(yù)設(shè)的時(shí)序順序(這里的時(shí)序順序包括對(duì)控制信號(hào)和確認(rèn)信號(hào)的時(shí)序要求)上電,器件上電后返回確認(rèn)信號(hào),CPLD接收到按時(shí)序順序返回的確認(rèn)信號(hào),證明此次控制正常。以下將與時(shí)序相關(guān)的控制信號(hào)和確認(rèn)信號(hào)均稱為時(shí)序信號(hào),以32個(gè)時(shí)序信號(hào)(分別記為信號(hào)1~信號(hào)32)為例,預(yù)設(shè)的時(shí)序順序?yàn)樾盘?hào)1到信號(hào)32,則作為一個(gè)實(shí)施例,可將信號(hào)1~信號(hào)32依次引到信號(hào)寄存器的最低位到最高位,當(dāng)然,也可以按照時(shí)序順序從最高位引到最低位,在此不做具體限定。每一個(gè)時(shí)序信號(hào)的電平變化(簡(jiǎn)稱時(shí)序信號(hào)跳變)都會(huì)導(dǎo)致信號(hào)寄存器中與該時(shí)序信號(hào)關(guān)聯(lián)的位(以下簡(jiǎn)稱信號(hào)位)的值發(fā)生變化,例如,從0變?yōu)?,或從1變?yōu)?。本申請(qǐng)通過CPLD管腳的電平變化觸發(fā)CPLD感知時(shí)序信號(hào)跳變,將當(dāng)前信號(hào)寄存器中的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū)中,該時(shí)序數(shù)據(jù)由信號(hào)寄存器中每一位的值組成,代表對(duì)應(yīng)時(shí)序信號(hào)的狀態(tài),其中,信號(hào)位的初始值代表對(duì)應(yīng)時(shí)序信號(hào)處于未跳變狀態(tài);當(dāng)信號(hào)位的值變化時(shí),代表對(duì)應(yīng)時(shí)序信號(hào)發(fā)生跳變,即對(duì)應(yīng)時(shí)序信號(hào)處于跳變狀態(tài)。需要補(bǔ)充說明的是,通過本申請(qǐng)可實(shí)現(xiàn)對(duì)較多時(shí)序信號(hào)的監(jiān)控,且本申請(qǐng)直接利用CPLD內(nèi)部存儲(chǔ)區(qū)進(jìn)行存儲(chǔ),無需外接其它器件,節(jié)約成本。步驟102,當(dāng)接收到所述BMC發(fā)送的讀取指令時(shí),將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC。本申請(qǐng)中,CPLD與BMC之間通過總線連接,例如,IIC、SPI等,在此不作限定。BMC接收到時(shí)序數(shù)據(jù)后,按照時(shí)序順序遍歷每一個(gè)時(shí)序信號(hào)狀態(tài),例如,按照時(shí)序順序從時(shí)序數(shù)據(jù)的最低位開始遍歷,最低位顯示時(shí)序信號(hào)狀態(tài)為跳變狀態(tài),則繼續(xù)遍歷下一位,若下一位的時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài),則說明當(dāng)前處于未跳變狀態(tài)的時(shí)序信號(hào)異常,則檢測(cè)主板上與該時(shí)序信號(hào)相關(guān)部分即可,達(dá)到快速定位問題的目的。此外,本申請(qǐng)?jiān)诿看螘r(shí)序信號(hào)跳變時(shí),不僅將信號(hào)寄存器中記錄的時(shí)序數(shù)據(jù)保存到存儲(chǔ)區(qū)中,還會(huì)將時(shí)間寄存器中記錄的時(shí)序信號(hào)跳變的時(shí)間點(diǎn)(簡(jiǎn)稱跳變時(shí)間)保存到存儲(chǔ)區(qū)中,其中,該跳變時(shí)間從主板開機(jī)時(shí)開始統(tǒng)計(jì),例如,當(dāng)按照時(shí)序順序第一個(gè)時(shí)序信號(hào)發(fā)生跳變時(shí),將當(dāng)前時(shí)間寄存器中記錄的跳變時(shí)間(例如,5us)保存到存儲(chǔ)區(qū);當(dāng)?shù)诙€(gè)時(shí)序信號(hào)跳變時(shí),將當(dāng)前時(shí)間寄存器中記錄的跳變時(shí)間(例如,10us)保存到存儲(chǔ)區(qū);以此類推。在一種較優(yōu)的實(shí)施方式中,將時(shí)序信號(hào)跳變時(shí)的時(shí)序數(shù)據(jù)和跳變時(shí)間存儲(chǔ)在相鄰位置,例如,時(shí)序數(shù)據(jù)1、跳變時(shí)間1、時(shí)序數(shù)據(jù)2、跳變時(shí)間2,相當(dāng)于建立了時(shí)序數(shù)據(jù)與跳變時(shí)間的對(duì)應(yīng)關(guān)系。CPLD接收到BMC的讀取指令后,遵循CPLD和BMC之間的總線協(xié)議將時(shí)序數(shù)據(jù)和跳變時(shí)間發(fā)送給BMC,BMC可基于時(shí)序信號(hào)的跳變時(shí)間更加明確確定時(shí)序信號(hào)的時(shí)序順序,同時(shí),計(jì)算任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間間隔要求,例如,按照時(shí)序順序,第一時(shí)序信號(hào)的跳變時(shí)間為5us,第二時(shí)序信號(hào)的跳變時(shí)間為13us,則這兩個(gè)時(shí)序信號(hào)的跳變時(shí)間間隔為8us,假設(shè),第一時(shí)序信號(hào)和第二時(shí)序信號(hào)的理想時(shí)間間隔為5us,臨界時(shí)間間隔為8us,則可得出這兩個(gè)時(shí)序信號(hào)的跳變時(shí)間間隔已達(dá)到臨界狀態(tài),當(dāng)前系統(tǒng)的時(shí)序信號(hào)傳輸可能存在延遲,此時(shí),可調(diào)整CPLD輸出時(shí)序信號(hào)的時(shí)間間隔,或優(yōu)化時(shí)序信號(hào)傳輸通道中各器件的硬件參數(shù),使這兩個(gè)時(shí)序信號(hào)的跳變時(shí)間間隔達(dá)到或接近理想時(shí)間間隔。參見圖2,為本發(fā)明異常時(shí)序定位方法的另一個(gè)實(shí)施例流程圖,該實(shí)施例從BMC側(cè)對(duì)異常時(shí)序定位過程進(jìn)行描述。步驟201,向所述CPLD發(fā)送讀取指令。BMC基于與CPLD的總線連接發(fā)送讀取指令,讀取CPLD中存儲(chǔ)區(qū)保存的時(shí)序數(shù)據(jù)。步驟202,接收所述CPLD基于所述讀取指令返回的時(shí)序數(shù)據(jù),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列。步驟203,基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。例如,按照時(shí)序順序從時(shí)序數(shù)據(jù)最低位開始遍歷時(shí)序信號(hào)狀態(tài),最低位時(shí)序信號(hào)狀態(tài)為跳變狀態(tài),則繼續(xù)遍歷下一位,若下一位的時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài),則該位對(duì)應(yīng)的時(shí)序信號(hào)為異常時(shí)序信號(hào),檢測(cè)主板上與該時(shí)序信號(hào)相關(guān)部分,達(dá)到快速定位問題的目的。此外,BMC可接收到CPLD發(fā)送的每一次時(shí)序信號(hào)跳變的跳變時(shí)間,計(jì)算任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔,確定兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間間隔要求。具體參見CPLD側(cè)的描述,在此不再贅述。從上述描述可以看出,本申請(qǐng)中,CPLD基于時(shí)序順序記錄時(shí)序信號(hào)狀態(tài),BMC基于時(shí)序順序識(shí)別時(shí)序信號(hào)狀態(tài),從而確定按順序應(yīng)發(fā)生跳變而實(shí)際未跳變的時(shí)序信號(hào)為異常時(shí)序信號(hào),達(dá)到快速定位異常的目的。同時(shí),BMC基于CPLD記錄的時(shí)序信號(hào)跳變時(shí)間得到任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間間隔,以確定主板的實(shí)際時(shí)序控制處于如何狀態(tài),以便進(jìn)一步優(yōu)化?,F(xiàn)以32個(gè)時(shí)序信號(hào)(記為信號(hào)1~信號(hào)32)為例,詳細(xì)介紹異常時(shí)序定位過程。參見圖3,為本發(fā)明實(shí)施例示出的主板示意圖,該主板包括CPLD和BMC,兩者之間通過IIC總線通信,其中,CPLD內(nèi)部包括四個(gè)部分:時(shí)序控制模塊、監(jiān)測(cè)計(jì)時(shí)模塊、雙口RAM、IIC模塊。時(shí)序控制模塊通過輸出管腳輸出控制信號(hào)控制器件上電,通過輸入管腳接收器件上電后返回的確認(rèn)信號(hào),以下將控制信號(hào)和確認(rèn)信號(hào)均稱為時(shí)序信號(hào),圖中僅示例性標(biāo)出了兩個(gè)時(shí)序信號(hào),其它時(shí)序信號(hào)未標(biāo)出。本申請(qǐng)按照預(yù)設(shè)的時(shí)序順序(從信號(hào)1到信號(hào)32)將時(shí)序信號(hào)引到監(jiān)測(cè)計(jì)時(shí)模塊的32位信號(hào)寄存器iINPUT的bit0~bit31,每一位代表一個(gè)時(shí)序信號(hào)的狀態(tài)。CPLD通過監(jiān)測(cè)計(jì)時(shí)模塊實(shí)現(xiàn)對(duì)32個(gè)時(shí)序信號(hào)的監(jiān)測(cè),假設(shè),iINPUT中所有位的初始值為0,代表對(duì)應(yīng)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)。當(dāng)信號(hào)1按照時(shí)序順序首先發(fā)生跳變時(shí),CPLD感知到當(dāng)前有時(shí)序信號(hào)跳變,iINPUT中必定存在時(shí)序信號(hào)狀態(tài)的更新(信號(hào)1的跳變導(dǎo)致bit0為1,即跳變狀態(tài)),因此,將iINPUT中的時(shí)序數(shù)據(jù)(記為時(shí)序數(shù)據(jù)1,包含32位時(shí)序信號(hào)狀態(tài))輸出到與雙口RAM連接的數(shù)據(jù)線DATAA上,在地址線ADDRA(本實(shí)施例中假設(shè)為10位地址總線)上輸出地址0,在讀寫控制線OWEA上輸出寫使能信號(hào),將時(shí)序數(shù)據(jù)1寫入到雙口RAM的地址0的位置。同時(shí),CPLD的監(jiān)測(cè)計(jì)時(shí)模塊還對(duì)輸入的系統(tǒng)時(shí)鐘進(jìn)行計(jì)時(shí),計(jì)時(shí)時(shí)間存放在時(shí)間寄存器wvTICKS中,假設(shè),在檢測(cè)到信號(hào)1跳變時(shí),wvTICKS中的計(jì)時(shí)時(shí)間為5us,CPLD將該計(jì)時(shí)時(shí)間(記為跳變時(shí)間1)輸出到數(shù)據(jù)線DATAA,在地址線ADDRA上輸出地址1,在讀寫控制線OWEA上輸出寫使能信號(hào),將跳變時(shí)間1寫入到雙口RAM的地址1的位置。以此類推,在檢測(cè)到每一個(gè)時(shí)序信號(hào)跳變時(shí),都將跳變時(shí)iINPUT中的時(shí)序數(shù)據(jù)和wvTICKS中的跳變時(shí)間順序保存到雙口RAM中,參見表1,為RAM中地址與數(shù)據(jù)的對(duì)應(yīng)關(guān)系。地址0時(shí)序數(shù)據(jù)1地址1跳變時(shí)間1地址2時(shí)序數(shù)據(jù)2地址3跳變時(shí)間2地址4時(shí)序數(shù)據(jù)3地址5跳變時(shí)間3表1其中,時(shí)序數(shù)據(jù)2和跳變時(shí)間2是信號(hào)2發(fā)生跳變時(shí),iINPUT中的時(shí)序數(shù)據(jù)和wvTICKS中的跳變時(shí)間;時(shí)序數(shù)據(jù)3和跳變時(shí)間3是信號(hào)3發(fā)生跳變時(shí),iINPUT中的時(shí)序數(shù)據(jù)和wvTICKS中的跳變時(shí)間。本申請(qǐng)中,BMC為IIC通信的主設(shè)備Master,CPLD通過內(nèi)部IIC模塊作為IIC通信的從設(shè)備Slave,BMC主動(dòng)讀取CPLDRAM中保存的時(shí)序數(shù)據(jù)和跳變時(shí)間。由于IIC總線支持8位讀取格式,為了便于BMC讀取數(shù)據(jù),在前述CPLD寫RAM時(shí),可將32位數(shù)據(jù)分別存儲(chǔ)到4個(gè)RAM塊(BLOCK0~BLOCK3)中,例如,將時(shí)序數(shù)據(jù)1的第0位~第7位寫入BLOCK0的地址0;第8位~第15位寫入BLOCK1的地址0;第16位~第23位寫入BLOCK2的地址0;第24位~第31位寫入BLOCK3的地址0。當(dāng)BMC讀取數(shù)據(jù)時(shí),具體可通過如下方式實(shí)現(xiàn):首先發(fā)送8位校驗(yàn)數(shù)據(jù),使CPLD可以判斷出BMC對(duì)其發(fā)起訪問;然后,BMC發(fā)送要讀取的RAM地址以及讀使能信號(hào),假設(shè),CPLD內(nèi)部IIC模塊與RAM之間的地址線ADDRB為12位地址總線,則BMC需要通過兩幀數(shù)據(jù)發(fā)送,第一幀發(fā)送低8位地址,第二幀發(fā)送高4位地址以及1位讀使能信號(hào)。需要說明的是,這高4位地址中可使用最高兩位標(biāo)識(shí)想要讀取的BLOCK,例如,最高兩位為00時(shí),讀取BLOCK0中的某個(gè)地址(BLOCK內(nèi)的地址由剩下10位地址決定),也就是說,如果BMC想要讀取RAM中的時(shí)序數(shù)據(jù)1,需要通過控制12位地址分4次分別讀取BLOCK0的地址0、BLOCK1的地址0、BLOCK2的地址0以及BLOCK3的地址0來完成時(shí)序數(shù)據(jù)1的讀取。CPLD獲取到上述地址及讀使能信號(hào)后,在雙口RAM的地址線ADDRB上輸出12位地址,在讀寫控制線OWEB上輸出讀使能信號(hào),雙口RAM將對(duì)應(yīng)地址上的8位數(shù)據(jù)輸出到數(shù)據(jù)線DATAB上,通過IIC模塊發(fā)送給BMC,至此,BMC完成一次8位數(shù)據(jù)的接收。通過上述IIC讀取方式,BMC順序讀取到RAM中保存的時(shí)序數(shù)據(jù)和跳變時(shí)間,參見表2,為BMC維護(hù)的時(shí)序記錄表。時(shí)序數(shù)據(jù)(以32位二進(jìn)制位表示)跳變時(shí)間時(shí)序數(shù)據(jù)1:00000000000000000000000000000001跳變時(shí)間1:5us時(shí)序數(shù)據(jù)2:00000000000000000000000000000011跳變時(shí)間2:10us時(shí)序數(shù)據(jù)3:00000000000000000000000000000111跳變時(shí)間3:18us表2假設(shè),主板無法正常啟動(dòng),BMC解析表2中最后一條記錄表項(xiàng),按照時(shí)序順序從最低位向最高位遍歷,bit0為1,說明信號(hào)1跳變正常;bit1為1,說明信號(hào)2跳變正常;bit2為1,說明信號(hào)3跳變正常;bit3為0,說明信號(hào)4未發(fā)生跳變,則確定異常時(shí)序信號(hào)為信號(hào)4,檢查與信號(hào)4相關(guān)的軟硬件,提高定位及解決問題的效率。同時(shí),根據(jù)跳變時(shí)間1和跳變時(shí)間2的時(shí)間間隔10us-5us=5us(假設(shè),設(shè)計(jì)的理想時(shí)間間隔為5us),可知,信號(hào)1和信號(hào)2的跳變時(shí)間間隔已達(dá)到最優(yōu)狀態(tài);計(jì)算信號(hào)2和信號(hào)3的跳變時(shí)間間隔18us-10us=8us(假設(shè),臨界時(shí)間間隔為8us),說明時(shí)序控制模塊的控制邏輯可能有問題,或者,信號(hào)3傳輸通道上某個(gè)器件的參數(shù)有問題,因此,可針對(duì)與信號(hào)3相關(guān)的軟硬件進(jìn)行排查,進(jìn)而定位到問題根源所在,及時(shí)解決問題。與前述異常時(shí)序定位方法的實(shí)施例相對(duì)應(yīng),本發(fā)明還提供了異常時(shí)序定位裝置的實(shí)施例。請(qǐng)參考圖4,為本發(fā)明一個(gè)實(shí)施例中的異常時(shí)序定位裝置的結(jié)構(gòu)示意圖。該異常時(shí)序定位裝置應(yīng)用于CPLD,該異常時(shí)序定位裝置包括存儲(chǔ)單元401和發(fā)送單元402,其中:存儲(chǔ)單元401,用于當(dāng)檢測(cè)到有時(shí)序信號(hào)跳變時(shí),將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;發(fā)送單元402,用于當(dāng)接收到所述BMC發(fā)送的讀取指令時(shí),將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC,以使所述BMC基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。進(jìn)一步地,所述存儲(chǔ)單元401,還用于在將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū)之后,將時(shí)間寄存器記錄的跳變時(shí)間存入本地存儲(chǔ)區(qū),所述跳變時(shí)間為時(shí)序信號(hào)發(fā)生跳變的時(shí)間點(diǎn);所述發(fā)送單元402,還用于在將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC之后,將導(dǎo)致當(dāng)前時(shí)序數(shù)據(jù)存儲(chǔ)的時(shí)序信號(hào)的跳變時(shí)間發(fā)送給BMC,以使所述BMC基于接收到的所有時(shí)序信號(hào)的跳變時(shí)間,確定任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間間隔是否滿足預(yù)設(shè)時(shí)間間隔要求。請(qǐng)參考圖5,為本發(fā)明另一個(gè)實(shí)施例中的異常時(shí)序定位裝置的結(jié)構(gòu)示意圖。該異常時(shí)序定位裝置應(yīng)用于BMC,該異常時(shí)序定位裝置包括發(fā)送單元501、接收單元502及確定單元503,其中:發(fā)送單元501,用于向所述CPLD發(fā)送讀取指令;接收單元502,用于接收所述CPLD基于所述讀取指令返回的時(shí)序數(shù)據(jù),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;確定單元503,用于基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。進(jìn)一步,所述裝置還包括:所述接收單元502,還用于接收所述CPLD發(fā)送的時(shí)序信號(hào)的跳變時(shí)間;計(jì)算單元,用于計(jì)算任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔;所述確定單元503,還用于確定兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間間隔要求。上述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中對(duì)應(yīng)步驟的實(shí)現(xiàn)過程,在此不再贅述。請(qǐng)參考圖6,為本發(fā)明一個(gè)實(shí)施例中的主板的結(jié)構(gòu)示意圖。該主板包括CPLD61和BMC62,其中:所述CPLD61,用于當(dāng)檢測(cè)到有時(shí)序信號(hào)跳變時(shí),將本地信號(hào)寄存器記錄的時(shí)序數(shù)據(jù)存入本地存儲(chǔ)區(qū),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;當(dāng)接收到所述BMC發(fā)送的讀取指令時(shí),將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC;所述BMC62,用于向所述CPLD發(fā)送讀取指令;接收所述CPLD基于所述讀取指令返回的時(shí)序數(shù)據(jù),所述時(shí)序數(shù)據(jù)包括至少兩個(gè)時(shí)序信號(hào)狀態(tài),所述至少兩個(gè)時(shí)序信號(hào)狀態(tài)按照時(shí)序順序排列;基于所述時(shí)序順序遍歷所述時(shí)序數(shù)據(jù)包括的時(shí)序信號(hào)狀態(tài),將遍歷到的首個(gè)時(shí)序信號(hào)狀態(tài)為未跳變狀態(tài)的時(shí)序信號(hào)確定為異常時(shí)序信號(hào)。進(jìn)一步地,所述CPLD61,還用于將時(shí)間寄存器記錄的跳變時(shí)間存入本地存儲(chǔ)區(qū),所述跳變時(shí)間為時(shí)序信號(hào)發(fā)生跳變的時(shí)間點(diǎn);所述將保存在所述存儲(chǔ)區(qū)的時(shí)序數(shù)據(jù)發(fā)送給所述BMC之后,將導(dǎo)致當(dāng)前時(shí)序數(shù)據(jù)存儲(chǔ)的時(shí)序信號(hào)的跳變時(shí)間發(fā)送給BMC;所述BMC62,還用于接收所述CPLD發(fā)送的時(shí)序信號(hào)的跳變時(shí)間;計(jì)算任意兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔;確定兩個(gè)時(shí)序信號(hào)的跳變時(shí)間的時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間間隔要求。CPLD和BMC的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中的實(shí)現(xiàn)過程,在此不再贅述。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。當(dāng)前第1頁1 2 3