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