VoIP語(yǔ)音網(wǎng)關(guān)中TDM控制模塊的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
Wishbone最先是由Silicore公司提出,現(xiàn)在已被移交給OpenCores組織維護(hù)。Wishbone總線規(guī)范是一種片上系統(tǒng)IP核互連體系結(jié)構(gòu),定義了一種IP核之間共公的邏輯接口,可用于軟核、固核和硬核,對(duì)開(kāi)發(fā)工具和目標(biāo)硬件沒(méi)有特殊要求,并且?guī)缀跫嫒菀延兴械木C合工具,可以用多種硬件描述語(yǔ)言來(lái)實(shí)現(xiàn)。
TDM控制模塊的設(shè)計(jì)
● TDM在VoIP語(yǔ)音網(wǎng)關(guān)系統(tǒng)中的作用
TDM控制模塊同時(shí)接收來(lái)自ISDN(綜合業(yè)務(wù)數(shù)字網(wǎng))、E1專線或者語(yǔ)音編碼器等不同信源的串行語(yǔ)音數(shù)據(jù)。如圖1,VoIP語(yǔ)音網(wǎng)關(guān)的基本功能是完成以太網(wǎng)數(shù)據(jù)與外部語(yǔ)音設(shè)備數(shù)據(jù)的轉(zhuǎn)換,TDM接口與以太網(wǎng)接口分別為外部語(yǔ)音設(shè)備的數(shù)據(jù)、以太網(wǎng)上數(shù)據(jù)與網(wǎng)關(guān)系統(tǒng)的通信橋梁。該網(wǎng)關(guān)SoC系統(tǒng)的處理器采用的是同濟(jì)大學(xué)微電子中心自主沿發(fā)的高性能低功耗的32位嵌入式CPU BC320。
圖1 TDM控制模塊的作用
● 時(shí)分復(fù)用原理與TDM數(shù)據(jù)頻率
時(shí)分復(fù)用是把對(duì)信道的使用時(shí)間劃分為多個(gè)時(shí)間幀,進(jìn)一步把時(shí)間幀劃分為n個(gè)時(shí)間隙(時(shí)間間隔)。每一個(gè)時(shí)間隙分配給一個(gè)子信道,從而實(shí)現(xiàn)在一個(gè)信道上同時(shí)傳輸多路信號(hào)。時(shí)分復(fù)用循環(huán)使用時(shí)間幀,各路信號(hào)循環(huán)順序插入時(shí)間幀中的時(shí)間隙傳輸。TDM控制模塊的主要作用就是復(fù)用多路信號(hào)與解復(fù)用混合有多路信號(hào)的TDM數(shù)據(jù),如圖2所示。
圖2 時(shí)分復(fù)用的時(shí)隙
本設(shè)計(jì)的串行語(yǔ)音數(shù)據(jù)針對(duì)E1專線標(biāo)準(zhǔn),E1主要應(yīng)用于歐洲,中國(guó)也采用該標(biāo)準(zhǔn)。E1標(biāo)準(zhǔn)的數(shù)據(jù)率為2.048Mb/s,每一個(gè)時(shí)間幀包括30個(gè)B子信道,一個(gè)D子信道和一個(gè)同步子信道,共32個(gè)子信道。以語(yǔ)音模擬信道為例,信道帶寬限制為3.4kHz,根據(jù)奈圭斯特定律,子信道采樣速率至少是信號(hào)最高頻率的兩倍,通常選擇采樣速率為8kHz。因此,整個(gè)TDM信道的比特速率可以達(dá)到:
8kb/s×8×32=2048kb/s=2.048 Mb/s,即E1標(biāo)準(zhǔn)規(guī)定的TDM數(shù)據(jù)率。
● 模塊設(shè)計(jì)
模塊的主要功能是完成多路數(shù)據(jù)的復(fù)用和復(fù)用數(shù)據(jù)的分解,其關(guān)鍵部分就是復(fù)用和分解。本設(shè)計(jì)采用緩存器輔助完成復(fù)用和分解,實(shí)現(xiàn)兩種協(xié)議數(shù)據(jù)跨時(shí)鐘域的轉(zhuǎn)換。本設(shè)計(jì)模塊主要分三部分,見(jiàn)圖3。
圖3 TDM接口控制模塊的基本結(jié)構(gòu)
串行數(shù)據(jù)接口主要負(fù)責(zé)串行數(shù)據(jù)與8位寬并行數(shù)據(jù)的轉(zhuǎn)換,因?yàn)榇娣艛?shù)據(jù)的FIFO是以8bit為一地址空間的。轉(zhuǎn)換由設(shè)計(jì)的狀態(tài)機(jī)來(lái)控制:接收 (receive)操作、發(fā)送(transmit)操作和等待,接收就是將串行數(shù)據(jù)轉(zhuǎn)換成8bit位寬數(shù)據(jù)的過(guò)程,發(fā)送與之相反。由于語(yǔ)音數(shù)據(jù)要求雙工機(jī)制,由時(shí)鐘高低電平來(lái)作為發(fā)送和接收狀態(tài)的切換信號(hào),即當(dāng)時(shí)鐘為低時(shí)由發(fā)送狀態(tài)轉(zhuǎn)為接收狀態(tài),當(dāng)時(shí)鐘為高時(shí),由接收狀態(tài)切換為發(fā)送狀態(tài),這樣可以看作接收與發(fā)送是同時(shí)進(jìn)行的。
發(fā)送、接收緩存器不僅包括用于暫時(shí)存儲(chǔ)數(shù)據(jù)的FIFO,而且還設(shè)計(jì)有狀態(tài)機(jī)來(lái)控制接收、發(fā)送數(shù)據(jù)流。由于跨時(shí)鐘域,由雙口RAM組成的FIFO可能會(huì)帶來(lái)地址比較沖突的問(wèn)題,本設(shè)計(jì)采用乒乓機(jī)制來(lái)完成FIFO,當(dāng)一個(gè)緩存器進(jìn)行讀操作時(shí),另一個(gè)緩存器則進(jìn)行寫(xiě)操作,兩者的切換由硬件來(lái)完成。以下以接收緩存器為例(數(shù)據(jù)方向從TDM串行數(shù)據(jù)到Wishbone總線并行數(shù)據(jù))來(lái)描述本設(shè)計(jì)。緩存器的大小設(shè)計(jì)為包含四幀TDM數(shù)據(jù),因此每個(gè)FIFO的大小為8bit×32×4=1024bit,如圖4。選用乒乓FIFO以及FIFO大小設(shè)計(jì)的原因如下。
圖4 乒乓FIFO
串行數(shù)據(jù)的時(shí)鐘相對(duì)于Wishbone總線的時(shí)鐘要慢,當(dāng)兩時(shí)鐘域上的數(shù)據(jù)相互轉(zhuǎn)換時(shí),Wishbone總線可以在很短時(shí)間內(nèi)讀寫(xiě)FIFO,而串行總線需要相對(duì)較長(zhǎng)的時(shí)間讀寫(xiě)相同數(shù)據(jù)量。盡管如此,在Wishbone總線時(shí)鐘頻率相對(duì)較慢時(shí),Wishbone總線很可能在下一批串行數(shù)據(jù)寫(xiě)進(jìn)FIFO前不能完全讀空FIFO。以接收緩存器為例,如果不考慮處理器(BC320)中斷響應(yīng)時(shí)間和從RAM讀數(shù)據(jù)的時(shí)間(待處理的數(shù)據(jù)都要先暫存在Wishbone 總線上掛的RAM中),從Wishbone總線讀空一個(gè)FIFO中的四幀數(shù)據(jù)需要時(shí)間為:
1/25M x 32 x 4 = 5.12 x 10-6 s= 5.12us
25M是本設(shè)計(jì)在FPGA開(kāi)發(fā)板進(jìn)行測(cè)試時(shí)所采用的時(shí)鐘頻率,即測(cè)試系統(tǒng)時(shí)Wishbone總線上的時(shí)鐘頻率。
而在另一邊串行數(shù)據(jù),當(dāng)四幀寫(xiě)滿FIFO后,第五幀的第一個(gè)字節(jié)數(shù)據(jù)開(kāi)始寫(xiě)入FIFO的準(zhǔn)備時(shí)間為:
1/24M x 8 = 4 x 10-6?s = 4us
FIFO中的四幀數(shù)據(jù)被讀空時(shí)間大于第五幀的第一個(gè)字節(jié)寫(xiě)入FIFO的準(zhǔn)備時(shí)間,F(xiàn)IFO的寫(xiě)滿與讀空都是有硬件產(chǎn)生信號(hào)標(biāo)識(shí),此時(shí)FIFO讀空信號(hào)標(biāo)識(shí)未產(chǎn)生,不能對(duì)同一FIFO進(jìn)行寫(xiě)操作,導(dǎo)致待寫(xiě)數(shù)據(jù)丟失。因此選用兩個(gè)FIFO采用乒乓機(jī)制來(lái)切換讀寫(xiě)操作,如圖4所示。
在解復(fù)用時(shí),數(shù)據(jù)的地址恢復(fù)很重要,一個(gè)TDM數(shù)據(jù)幀含有32個(gè)時(shí)隙,每一時(shí)隙中的數(shù)據(jù)均來(lái)自不同的信道源,本模塊要將復(fù)用在一路的TDM數(shù)據(jù)恢復(fù)出32路。TDM數(shù)據(jù)的每個(gè)時(shí)隙含8個(gè)bit,而Wishbone總線的數(shù)據(jù)位寬是32位,因此需要四幀的TDM數(shù)據(jù)才能拼接成一路完整32位寬數(shù)據(jù)。相鄰時(shí)隙數(shù)據(jù)由于來(lái)自不同信道源,暫存在FIFO中的地址不能相鄰,前一時(shí)隙中數(shù)據(jù)和后一時(shí)隙中數(shù)據(jù)在地址空間上相差4(如圖4),這樣從初始地址開(kāi)始,每相鄰四個(gè)地址對(duì)應(yīng)的數(shù)據(jù)拼接成一路完整的信號(hào),在Wishbone總線讀取FIFO中數(shù)據(jù)時(shí)的地址是按順序的。
本文著重討論了接收緩存器的設(shè)計(jì),發(fā)送緩存器與之類似,這里就不再贅述。
Wishbone接口連接TDM控制模塊與Wishbone總線,它的主要功能是設(shè)計(jì)正確的狀態(tài)機(jī)產(chǎn)生有效控制信號(hào)來(lái)同步數(shù)據(jù)交換。
驗(yàn)證與結(jié)論
用Verilog語(yǔ)言描述完成TDM控制模塊的設(shè)計(jì),并以VoIP語(yǔ)音網(wǎng)關(guān)系統(tǒng)為驗(yàn)證平臺(tái),利用Candence公司的NC-verilog仿真器進(jìn)行代碼仿真。仿真波形表明,處理器(BC320)對(duì)FIFO寫(xiě)滿產(chǎn)生信號(hào)標(biāo)識(shí)的反應(yīng)時(shí)間大約為60個(gè)Wishbone總線時(shí)鐘周期,這一時(shí)間加上Wishbone總線讀空第一個(gè)FIFO所用時(shí)間后,串行語(yǔ)音數(shù)據(jù)仍在寫(xiě)進(jìn)另一個(gè)FIFO,Wishbone總線有足夠的空閑等待這個(gè)FIFO寫(xiě)滿標(biāo)示信號(hào)的產(chǎn)生,不會(huì)有任何數(shù)據(jù)丟失。
VoIP語(yǔ)音網(wǎng)關(guān)系統(tǒng)在型號(hào)為Virtex-II Pro FF1152的FPGA開(kāi)發(fā)板上進(jìn)行了硬件驗(yàn)證,TDM控制模塊外接型號(hào)為L(zhǎng)e88221的SLIC(用戶線接口電路)芯片作為語(yǔ)音信源,利用Chipscope在線掃描TDM控制模塊內(nèi)部、Wishbone總線和處理器(BC320)寄存器的信號(hào)變化,并用示波器對(duì)SLIC芯片信號(hào)進(jìn)行捕捉。從觀察的信號(hào)來(lái)看,所設(shè)計(jì)的TDM控制模塊能夠與系統(tǒng)的其他IP模塊,尤其是處理器(BC320)和以太網(wǎng)模塊正確有效地協(xié)同工作,模塊的功能達(dá)到設(shè)計(jì)要求。