O 引言
在各種基于PCM30/32路一次群系統(tǒng)、能夠接入公共電話通信網(wǎng)的專用匯接調(diào)度設(shè)備中,目前廣泛采用的設(shè)計(jì)方式為利用MCU控制多種專用集成電路(ASIC)協(xié)同工作,完成對語音調(diào)度數(shù)據(jù)的接收、疊加、分組交換等操作,此類設(shè)備在可實(shí)現(xiàn)功能和用戶規(guī)模等方面都受到所采用ASIC本身功能特性的限制,因此,雖然針對某一特定應(yīng)用的匯接機(jī)、調(diào)度機(jī)品種很多,但仍很難滿足所有的應(yīng)用需求,對于一些特殊功能需求往往要進(jìn)行單獨(dú)設(shè)計(jì),在很大程度上增加了用戶的使用維護(hù)成本。
近年來隨著通訊技術(shù)和集成電路技術(shù)的發(fā)展,可編程邏輯器件及SoC設(shè)計(jì)在各種應(yīng)用設(shè)計(jì)中大量被應(yīng)用,在通信系統(tǒng)中,可編程邏輯器件的應(yīng)用范圍同樣越來越廣。利用可編程邏輯器件相對于使用獨(dú)立器件進(jìn)行語音調(diào)度數(shù)據(jù)編解碼、交換疊加等處理操作,在提高系統(tǒng)性能與集成度以及降低成本方面均有極大優(yōu)勢。同時,利用可編程邏輯器件能夠針對應(yīng)用需求進(jìn)行系統(tǒng)設(shè)計(jì),突破傳統(tǒng)設(shè)計(jì)方式受器件限制較大的弊端。
對實(shí)現(xiàn)語音調(diào)度功能的可編程邏輯芯片來說,時鐘信號的同步可以有兩種模式:主模式和從模式。如果是在已有的交換平臺或通訊系統(tǒng)上增加設(shè)計(jì)其他語音調(diào)度功能,則已有外部時鐘系統(tǒng)難以被改變也不宜改變,這時語音調(diào)度電路應(yīng)采用從模式來同步。而對于全新設(shè)計(jì)的語音調(diào)度設(shè)備來說,就可以采用主模式的時鐘同步模式,由可編程器件產(chǎn)生時鐘及同步信號供芯片本身和外圍電路器件使用,使得外圍電路設(shè)計(jì)更為簡潔。
在時鐘同步采用從模式設(shè)計(jì)方式時,芯片需要從接收到的串行數(shù)據(jù)流中提取時鐘信號以便正確可靠地進(jìn)行串行數(shù)據(jù)流接收,這是匯接調(diào)度設(shè)備接入已有通信網(wǎng)絡(luò)進(jìn)行語音調(diào)度數(shù)據(jù)處理的首要條件。
針對這個問題,文中介紹了一種從串行PCM數(shù)據(jù)流中提取同步時鐘的方法。
1 PCM一次群數(shù)據(jù)流同步時鐘提取方法
1.1 同步時鐘提取基本設(shè)計(jì)
我國和歐洲在電話語音通信使用PCM30/32路一次群傳輸系統(tǒng)中,通常串行數(shù)據(jù)速率為8 000幀×32時隙×8 =2.048 Mb/s,實(shí)際應(yīng)用的各類語音調(diào)度系統(tǒng)中數(shù)據(jù)傳輸大都以該速率進(jìn)行。在PCM串行數(shù)據(jù)流中,各碼元之間的相對位置是固定不變的,為了在數(shù)據(jù)流中區(qū)分出一個個的數(shù)據(jù)碼元,接收端必須具備對應(yīng)數(shù)據(jù)流的同步時鐘信號,從而進(jìn)一步正確接收PCM串行數(shù)據(jù)。
接收端數(shù)據(jù)流同步時鐘信號提取功能模塊基本工作原理是以一個3位計(jì)數(shù)器count1對16.384 MHz(PCM串行數(shù)據(jù)流速率8倍)全局時鐘信號進(jìn)行8分頻,計(jì)數(shù)器最高位作為同步采樣時鐘信號輸出,由全局時鐘上升沿驅(qū)動。在計(jì)數(shù)值跳變至0和4時,分別輸出同步時鐘的下降沿和上升沿。
作為常用時鐘源的石英晶體振蕩器具有比較好的長期頻率穩(wěn)定性,但作為全局時鐘輸入在產(chǎn)生同步時鐘過程中,由于晶振實(shí)際頻率與標(biāo)稱頻率相對偏差所產(chǎn)生的誤差隨時間推移而累積,造成本地同步時鐘相位漂移(相對于串行數(shù)據(jù)流中包含的時鐘信息),所以需要不斷調(diào)整輸出同步時鐘相位才能夠保證接收過程不出現(xiàn)失步,這一點(diǎn)通過在分頻計(jì)數(shù)過程中調(diào)整計(jì)數(shù)器count1的計(jì)數(shù)值來實(shí)現(xiàn)。
進(jìn)行相位調(diào)整時,在全局時鐘驅(qū)動下檢測到一個PCM信號上升沿到來后,即在一個碼元的開始時刻,改變分頻計(jì)數(shù)器count1中計(jì)數(shù)值為0,繼續(xù)計(jì)數(shù)到4時同步時鐘上升沿出現(xiàn),其位置在PCM數(shù)據(jù)流一個碼元范圍的正中間,從而保證時鐘信號相對于輸入數(shù)據(jù)流具有合適的建立時間和保持時間。
實(shí)測某型16.384 MHz晶振偏差約每周期4 ns,為保證采樣時的信號具有較好的建立時間與保持時間,確定每20~30個周期做一次輸出同步時鐘相位調(diào)整。設(shè)計(jì)中使用5位計(jì)數(shù)器count2定時,該計(jì)數(shù)器計(jì)數(shù)值超過20進(jìn)行相位調(diào)整。
1.2 時鐘信號提取過程異常情況解決
上述從已知數(shù)據(jù)速率的PCM數(shù)據(jù)流中提取采樣時鐘并進(jìn)行相位校正的基本方法在使用中存在以下兩個問題:
(1)計(jì)時計(jì)數(shù)器值超過20后,系統(tǒng)在全局時鐘驅(qū)動下進(jìn)行PCM信號上升沿檢測過程中,計(jì)時計(jì)數(shù)器count2依然工作,當(dāng)該5位計(jì)數(shù)器值達(dá)到31而依然沒有檢測到PCM信號上升沿到來時,下一個時鐘到來時計(jì)數(shù)器值將復(fù)位為0導(dǎo)致錯過本次校正。
(2)在同步時鐘相位出現(xiàn)很大偏差時,若PCM輸入信號在某全局時鐘上升沿過后很短時間到來,同時分頻計(jì)數(shù)器輸出同步時鐘上升沿隨后出現(xiàn),接收系統(tǒng)將對該碼元進(jìn)行一次采樣,此時,若緊隨其后的全局時鐘上升沿檢測到該P(yáng)CM信號上升沿且計(jì)數(shù)器count2值為21,就會誤校正輸出同步時鐘相位,出現(xiàn)如圖1所示情況,同步時鐘上升沿在本碼元內(nèi)出現(xiàn)兩次,一個PCM輸入高電平碼元被采樣兩次,產(chǎn)生接收錯誤。
上述兩種情況中,出現(xiàn)第一種會造成采樣錯誤影響信號的后續(xù)處理,第二種情況則會造成采樣時鐘相位校正錯誤,導(dǎo)致信號采樣失敗。
針對這兩種情況,需要對基本方法進(jìn)行進(jìn)一步完善,設(shè)計(jì)中分別給出如下方法來解決:
(1)針對計(jì)時計(jì)數(shù)器溢出情況,在提取模塊中設(shè)置一個溢出位overflow,在count2溢出時置位為1,此時,全局時鐘檢測到下一個PCM輸入信號上升沿時忽略計(jì)數(shù)器計(jì)數(shù)值立即進(jìn)行相位校正,以推遲校正代替漏校正,達(dá)到改進(jìn)系統(tǒng)工作性能的目的。添加該處理過程后,系統(tǒng)對相應(yīng)情況校正結(jié)果如圖2所示。圖中count2計(jì)數(shù)器溢出后overflow置高電平,在遇到下一個PCM輸入信號上升沿時立即校正輸出時鐘相位,未考慮count2中計(jì)數(shù)值為8小于20的因素。
(2)針對采樣輸出時鐘的誤校正情況,在功能模塊中設(shè)置一個標(biāo)志位changed,當(dāng)某PCM高電平碼元內(nèi)已經(jīng)發(fā)生采樣時鐘的上升沿跳變changed位置1,這時,在該碼元未結(jié)束前不再進(jìn)行校正,changed標(biāo)志位置位后在計(jì)時計(jì)數(shù)器計(jì)數(shù)值大于20時清除。如圖3所示。
經(jīng)過上述的異常情況的處理程序,同步時鐘提取功能模塊將能夠正確地從輸入的PCM數(shù)據(jù)流中得到準(zhǔn)確的具有合適相位的采樣時鐘輸出供接收數(shù)據(jù)使用。
2 同步時鐘提取過程編程實(shí)現(xiàn)及仿真結(jié)果
同步時鐘提取模塊的聲明代碼如下:
輸入端口為pcm_in,clk和reset,分別為PCM輸入信號,全局時鐘輸入和復(fù)位信號,輸出端口僅一個,clk_out采樣時鐘。
模塊中兩個計(jì)數(shù)器count1和count2,分別為前述分頻計(jì)數(shù)器和計(jì)時計(jì)數(shù)器。
三個標(biāo)志位:run,changed和overflow,后兩個在第二部分中詳細(xì)介紹過功能,run標(biāo)志位為模塊工作狀態(tài)標(biāo)志位,run位置1模塊運(yùn)行;changed標(biāo)記本碼元采樣狀態(tài),已經(jīng)采樣過則該位置1;overflow標(biāo)記計(jì)時計(jì)數(shù)器溢出狀態(tài),已溢出則該位置1。
模塊使用同步時序設(shè)計(jì)方式實(shí)現(xiàn),所有工作在輸入全局時鐘信號clk上升沿的驅(qū)動下進(jìn)行,包括復(fù)位功能同樣為同步工作。在clk驅(qū)動下,復(fù)位信號低電位時系統(tǒng)復(fù)位,各寄存器進(jìn)行初始化工作置初值,復(fù)位信號結(jié)束后,run標(biāo)志位置1模塊開始工作。系統(tǒng)模塊框圖如圖4所示。
以Altera的EPM7128SLC84型CPLD作為目標(biāo)器件,在集成開發(fā)環(huán)境QuartusⅡ中對上述VerilogHDL語言描述的時鐘信息提取模塊編譯綜合布局布線后進(jìn)行時序仿真,得到仿真波形如圖5所示。
為了方便對異常處理功能進(jìn)行驗(yàn)證,仿真時使用輸入時鐘約為PCM碼流速率的7.5倍,由圖5中可以看出,設(shè)計(jì)對于輸出采樣時鐘校正有很明顯效果。
圖6中則是使用完全8倍時鐘輸入的仿真結(jié)果,結(jié)果完全符合設(shè)計(jì)目標(biāo)。
3 結(jié)論
本文中給出的串行數(shù)據(jù)流采樣時鐘提取方法及其實(shí)現(xiàn),不僅局限于文中所特定語音通信PCM30/32路系統(tǒng),對類似的已知速率串行數(shù)據(jù)流異步接收系統(tǒng)均適用。該方法能夠有效地提取出數(shù)據(jù)流中包含的發(fā)送端時鐘信息,并消除接收端本地時鐘與之相位偏差、時鐘頻率偏差等因素導(dǎo)致的工作穩(wěn)定性不高以至接收數(shù)據(jù)錯誤等不良結(jié)果,具有較好的適應(yīng)性。