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