(6)(PCM-SWITCH)
這是邏輯中的核心部分,其框圖如圖5所示。

圖5中INNER指內線用戶,EXTERNAL指外線用戶,DTMF指收號模塊,AUDIO指提示語音模塊。同時,RAM-D用來存放PCM數據,RAM-ADD用來存放控製RAM-D讀出的地址。
各路PCM信號在用來標識時隙的SLOT-CLOCK上升沿順序寫入對應的RAM-D內,RAM的大小均為32×2 byte(可容兩幀),確保送上一幀數據時,不影響當前幀寫入。RAM-ADD為32 byte的RAM,存放著對應通路的交換信息,例如,RAM-ADD(IN-IN)中的0地址處存放的是內線交換時希望0時隙內線用戶收到的時隙的標號,這些信息由MCU總線寫入。同時,在SLOT-CLOCK上升沿,將RAM-ADD順序讀出的輸出作為地址來讀取RAM-D,從而實現了交換功能。基於這樣的原理,係統實現了內線、外線、DTMF收號、提示語音這幾塊之間的靈活交換(DTMF和提示語音為單向信號,實際在同一PCM總線上)。
(7) 信號音產生(SIGNAL-GEN)
信號音頻率均為450 Hz,僅以通斷時間來區分。我們在FPGA中建立了一張450 Hz、8k采樣的正弦表(PCM編碼後),工作時循環讀出並進行並串轉換。利用定時器和三態門對其進行處理,從而形成了通斷時間不同的各種信號音。將各種信號音通過三態門掛接在用戶的PCM總線上,需要時隻要打開對應的三態門,就可以將正確的信號音送到當前的時隙上。
三、工作流程及軟件設計
FPGA為MCU提供了與其他器件間的接口,使其能夠以簡短的指令實現原本複雜的底層操作。限於篇幅,這裏隻作簡要的介紹。
1. 內線通話
內線摘機:如果該用戶主叫,向該時隙送撥號音(到撥號為止),同時將主叫話路送到當前有閑的DTMF模塊(如果沒有,送忙音)的時隙上,收號完成再從DTMF時隙拿掉(或超時拆線),根據收號結果,看被叫用戶狀態,忙則將忙音送主叫時隙,否則向主叫時隙送回鈴音,同時令被叫振鈴;如果該用戶被叫,則切掉該用戶振鈴,同時取消主叫時隙的回鈴音,將這兩個時隙的話路交換,建立連接。
內線掛機:如果通話在連接狀態,則取消通話連接,送對端時隙忙音;如果無通話連接,則取消對方振鈴(如果存在的話),並拿掉本時隙上的所有信號。
2. 外線通話
外線呼入:當測知有外線呼入時,如果沒有空閑收號模塊,則等待直到出現空閑為止;否則,將呼入外線的編碼信號送至DTMF模塊的時隙,同時將提示撥分機號的提示語音編碼信號送至呼入外線的時隙,等待撥號完成(或超時拆線)。後麵的過程與內線通話類似,唯一不同的是向外線送忙音隻需拿掉送至呼入外線時隙的所有信號即可,而送給外線的回鈴音是由提示語音來替代的。
呼叫外線:在內線摘機後的收號過程中,當用戶撥號第一位為某特定數字(例如“0”),認為是呼叫外線,將該話路由收號時隙拿掉,並尋找一路空閑外線(若無則送忙音),將話路時隙與外線時隙進行交換,建立通話,後續過程與內線通話相似,但僅需處理內線端即可。
需要注意的是, 821034的串行控製接口與標準的SPI略有不同,在/SS有效前需要1個SCLK,拉高後需要2個SCLK,所以編程中在寫SPI的前後,各進行了一次偽寫(即在未拉低/SS的情況下,寫SPI)操作,以確保操作的正確。
四、結語
係統中,除語音至PCM編碼段外,其餘話路部分實現了完全數字化,可以顯著提高內線通話質量(特別是內部網具一定規模的情況下)。同時,將原本IC實現的功能集成在單一的FPGA中實現,減小了係統複雜度,降低了成本,增加了係統的穩定性,並且這使係統的升級相較於傳統的PBX變得更為方便靈活,用戶可以根據要求在不改動硬件的情況下以編程方式實現較自由的功能擴展。特別地,隨著規模的增大,本方案的上述優勢會愈發明顯。
參考文獻
[1]葉敏.程控數字交換與交換網[M].第二版.北京:北京郵電大學出版社,2003.
[2]Application Note(AN-408)[Z].IDT,2003.
[3]ACEX 1K Programmable Logic Device Family[Z].Altera,2001.
[4]Aduc812 Handbook[Z].Analog Devices,2003.