本發(fā)明涉及一種異步多時鐘處理方法,特別涉及一種嵌入式系統(tǒng)異步多時鐘處理方法。
背景技術(shù):
當(dāng)前,嵌入式系統(tǒng)逐步的趨于平臺化,模塊化設(shè)計,各個外設(shè)共同與主處理器銜接,由主處理器協(xié)調(diào)工作,往往因為各個模塊的時鐘不同步的問題,導(dǎo)致各種出錯的結(jié)果,如音頻斷音,顯示滯后,停頓等等現(xiàn)象。對于異步時鐘的車載DVD機芯,其音頻信號通過IIS(Inter-IC Sound Bus)總線傳輸給MCU(Micro Control Unit)處理,DVD機芯系統(tǒng)的時鐘傳遞到嵌入式系統(tǒng)的時鐘域,通常DVD機芯的時鐘與嵌入式系統(tǒng)的時鐘不同步,這樣就會造成MCU(Micro Control Unit)解碼之后的聲音異常,具體表現(xiàn)為播放聲音停頓,或者播放慢半拍的情況,影響音質(zhì),聽覺感受。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是為了克服上述背景技術(shù)的缺陷,提供一種嵌入式系統(tǒng)異步多時鐘處理方法。
一種車載嵌入式的異步多時鐘處理方法,所述嵌入式系統(tǒng)包括處理器及與其相連的緩存器和可編程邏輯器件,所述處理器通過所述可編程邏輯器件連接外部不同時鐘域的嵌入式模塊。所述異步多時鐘處理方法包括:
A1.當(dāng)外部嵌入式模塊的外部時鐘域快于本系統(tǒng)的內(nèi)部時鐘域時,執(zhí)行快時鐘域同步子步驟;當(dāng)所述外部時鐘與慢于所述內(nèi)部時鐘域,則執(zhí)行A2;
A2. 所述處理器控制所述可編程邏輯器件采集外部時鐘域信號周期,并計算出所述外部時鐘域的邊沿指示信號;
A3所述處理器獲取所述邊沿指示信號,并以該邊沿指示信號作為內(nèi)部時鐘域的使能時鐘信號。
進一步的,所述快時鐘域同步子步驟如下:
B1. 所述可編程邏輯器件接收所述外部嵌入式模塊發(fā)出的數(shù)據(jù),并將該數(shù)據(jù)寫入所述緩存器中,所述處理器讀取并處理所述緩存器中的數(shù)據(jù);
B2. 所述可編程邏輯器件監(jiān)控緩存器是否溢出,若接收到緩存器發(fā)出的溢出信號,則向處理器發(fā)出警告。
進一步的,所述可編程邏輯器件通過觸發(fā)器獲取外部時鐘域的信號;所述步驟A2具體包括以下子步驟:
C1. 可編程邏輯控制控制所述觸發(fā)器接收外部時鐘域的外部時鐘信號,當(dāng)外部時鐘信號到達所述觸發(fā)器時,所述觸發(fā)器產(chǎn)生觸發(fā)信號;
C2. 所述可編程邏輯器件獲取所述觸發(fā)信號并保存為第一觸發(fā)信號,同時再向所述觸發(fā)器獲取第二觸發(fā)信號并做非門邏輯運算,且保存到所述可編程邏輯器件中;
C3. 所述可編程邏輯器件將所述第一觸發(fā)信號與所述第二觸發(fā)信號做與門運算,獲得所述邊沿指示信號。
優(yōu)選的,所述觸發(fā)器為多級串聯(lián)的D觸發(fā)器。
本發(fā)明的車載嵌入式的異步多時鐘處理方法有效的簡化系統(tǒng)復(fù)雜度,避免了使用專用異步時鐘處理IC帶來的系統(tǒng)復(fù)雜化問題,節(jié)省了IC以及PCB空間帶來的成本。
附圖說明
圖1為本發(fā)明的方法流程圖。
圖2為本發(fā)明的快時鐘域同步子步驟流程圖。
具體實施方式
下面將結(jié)合附圖對本發(fā)明的嵌入式系統(tǒng)異步多時鐘處理方法作進一步的描述。
一種車載嵌入式的異步多時鐘處理方法,嵌入式系統(tǒng)包括處理器及與其相連的可編程邏輯器件,可編程邏輯器件內(nèi)部設(shè)有緩存器,用于緩存數(shù)據(jù),處理器通過可編程邏輯器件連接外部不同時鐘域的嵌入式模塊,外部嵌入式模塊通過該可變成邏輯芯片與處理器實現(xiàn)時鐘同步處理以及數(shù)據(jù)傳輸。在本實施例中,可編程邏輯器件可以是CPLD(Complex Programmable Logic Device復(fù)雜可編程邏輯器件),其可以實現(xiàn)多數(shù)據(jù)并行處理,適合于處理時鐘同步化的問題,且其系統(tǒng)消耗較少,相對穩(wěn)定,具有價格優(yōu)勢,很大程度上提高產(chǎn)品的可靠性與穩(wěn)定性,提高終端客戶的實際體驗。如圖1所示,異步多時鐘處理方法包括:
A1.通過比較外部嵌入式系統(tǒng)的外部時鐘域與內(nèi)部系統(tǒng)的內(nèi)部時鐘域,從而確定兩者之間的快慢關(guān)系,一般情況下其快慢關(guān)系在產(chǎn)品設(shè)計之前已經(jīng)可以確定,當(dāng)外部嵌入式模塊的外部時鐘域快于本系統(tǒng)的內(nèi)部時鐘域時,執(zhí)行快時鐘域同步子步驟;當(dāng)所述外部時鐘與慢于所述內(nèi)部時鐘域,則執(zhí)行A2;
另外,在其他實施例中,在外部時鐘域與內(nèi)部時鐘域的快慢關(guān)系不明確時,可以通過以下方法進行確定:處理器控制可編程邏輯器件檢測并采集外部嵌入式模塊的外部時鐘域。將外部嵌入式系統(tǒng)的時鐘信號輸出端連接到可編程邏輯器件中,對外部嵌入式系統(tǒng)的外部時鐘信號進行實時采集。之后在通過處理器將外部時鐘域與本系統(tǒng)的內(nèi)部時鐘域進行對比,從而確定外部時鐘域的周期以及相位差。
A2. 處理器控制可編程邏輯器件采集外部時鐘域的外部時鐘信號,根據(jù)外部時鐘信號的變化,并計算出外部時鐘域的邊沿指示信號,具體為在外部嵌入式系統(tǒng)時鐘信號輸出端與可編程邏輯器件之間設(shè)置有觸發(fā)器,當(dāng)時鐘信號進入觸發(fā)器時,觸發(fā)器會產(chǎn)生相應(yīng)的觸發(fā)信號,而可編程邏輯器件則通過觸發(fā)器獲取外部時鐘域的信號,如圖1所示,包括了C1~C3的子步驟:
C1. 可編程邏輯控制控制觸發(fā)器接收外部時鐘域的信號,當(dāng)外部時鐘域信號到達觸發(fā)器時,觸發(fā)器被變化的高低電平脈沖信號的觸發(fā),從而產(chǎn)生實時變化的觸發(fā)信號。在本實施例中,當(dāng)外部時鐘域信號變化時,觸發(fā)器被觸發(fā),輸出高電平。
C2. 可編程邏輯器件獲取C1步驟中產(chǎn)生的觸發(fā)信號并保存為第一觸發(fā)信號,同時再向觸發(fā)器獲取一次觸發(fā)信號作為第二觸發(fā)信號,并做非門邏輯運算,且保存到可編程邏輯器件中。由于本實施例中可編程邏輯器件采用的是CPLD,其可以多數(shù)據(jù)并行處理,因此兩次獲取觸發(fā)信號的時間間隔遠(yuǎn)小于外部時鐘域的周期,對觸發(fā)信號的變化非常靈敏。
C3. 在完成獲取第一觸發(fā)信號和第二觸發(fā)信號后,可編程邏輯器件將第一觸發(fā)信號與第二觸發(fā)信號做與門運算,從而獲得邊沿指示信號??膳e例描述,當(dāng)外部時鐘域的時鐘信號沒有產(chǎn)生高低電平轉(zhuǎn)換時,觸發(fā)器沒有被觸發(fā),期間輸出的電平是不變的,因此采集的第一觸發(fā)信號和第二觸發(fā)信號相同,經(jīng)過上述邏輯門運算后為0,沒有產(chǎn)生邊沿指示信號,輸出低電平。但是當(dāng)外部時鐘域的時鐘信號產(chǎn)生高低電平轉(zhuǎn)換時,觸發(fā)器被觸發(fā),產(chǎn)生不同電平信號,此時會造成可編程邏輯器件獲取的第一觸發(fā)信號和第二觸發(fā)信號不相同,經(jīng)過運算后為1,產(chǎn)生邊沿指示信號,輸出到處理器中。
在實際應(yīng)用中,如果外部時鐘域輸出的時鐘信號不穩(wěn),觸發(fā)器將無法穩(wěn)定準(zhǔn)確地工作,因此也無法時鐘信號的狀態(tài),在一個擁有異步時鐘域的系統(tǒng)中,外部時鐘域很難和內(nèi)部時鐘域產(chǎn)生確定的時序關(guān)系,及出現(xiàn)亞穩(wěn)態(tài)現(xiàn)象,為了消除亞穩(wěn)態(tài)現(xiàn)象的影響,觸發(fā)器應(yīng)為多級串聯(lián)的觸發(fā)器,在本實施例中,則采用了三級串聯(lián)的D觸發(fā)器。當(dāng)在第一級的觸發(fā)器出現(xiàn)亞穩(wěn)態(tài)的問題時,其輸出會出現(xiàn)一種不穩(wěn)定的中間值,并且這個時間受多種因素影響,或者說這個輸出在高電平到低電平之間滿足一定形式的概率分布。當(dāng)?shù)诙€觸發(fā)器的采樣窗口到來的時候,在第二級輸入端口上的電平仍然處在可以使第二級出現(xiàn)亞穩(wěn)態(tài)的電平范圍內(nèi)的概率會變得很小,如果再加上第三級,在第三極上的這個概率變得很小,幾乎可以忽略不計。這樣經(jīng)過多級觸發(fā)器的串聯(lián),可以降低亞穩(wěn)態(tài)的發(fā)生。
A3.處理器獲取邊沿指示信號,并以該邊沿指示信號作為內(nèi)部時鐘域的使能時鐘信號。當(dāng)獲取到高電平的邊沿指示信號時,處理器則判定該信號為外部嵌入式系統(tǒng)的使能時鐘信號,同時也作為自身的使能時鐘信號,做出相應(yīng)的動作,實現(xiàn)時鐘同步。
另外,在上述的步驟A1中,如圖2所示,快時鐘域同步子步驟如下:
B1. 可編程邏輯器件接收外部嵌入式模塊發(fā)出的數(shù)據(jù),根據(jù)外部時鐘域?qū)?shù)據(jù)進行接收,并將該數(shù)據(jù)寫入緩存器中,緩存器類型可采用FIFO(先入先出)緩存器,然后處理器根據(jù)內(nèi)部時鐘域的時鐘信號對緩存器中的數(shù)據(jù)進行處理讀取和處理,由于增設(shè)了緩存器,可避免同步由于外部時鐘域過快導(dǎo)致處理器對數(shù)據(jù)處理錯誤的問題。
B2. 可編程邏輯器件監(jiān)控緩存器是否溢出,當(dāng)外部時鐘域過快時,可能會使存放要處理數(shù)據(jù)的緩存器溢出,若接收到緩存器發(fā)出的溢出信號,則向處理器發(fā)出警告,處理器做出相應(yīng)的動作。
上面結(jié)合附圖對本發(fā)明的實施方式作了詳細(xì)說明,但是本發(fā)明并不限于上述實施方式,在本領(lǐng)域普通技術(shù)人員所具備的知識范圍內(nèi),還可以在不脫離本發(fā)明宗旨的前提下作出各種變化。