ST-BUS總線接口模塊的Verilog HDL設(shè)計(jì)
摘 要: ST-BUS是廣泛應(yīng)用于E1通信設(shè)備內(nèi)部的一種模塊間通信總線。結(jié)合某專用通信系統(tǒng)E1接口轉(zhuǎn)換板的設(shè)計(jì),本文對(duì)ST-BUS總線進(jìn)行了介紹,討論了ST-BUS總線接口收發(fā)模塊的設(shè)計(jì)方法,給出了Verilog HDL實(shí)現(xiàn)和模塊的時(shí)序仿真圖。
關(guān)鍵詞:ST-BUS;Verilog HDL;接口模塊;E1;CPLD
引言
隨著數(shù)字技術(shù)的迅速發(fā)展,現(xiàn)代通信系統(tǒng)已成為一個(gè)龐大的綜合化數(shù)字網(wǎng)絡(luò)。電信核心網(wǎng)絡(luò)除了提供傳統(tǒng)電話服務(wù)外,還為其它專用通信(比如警用集群通信等)提供中繼服務(wù)。電信系統(tǒng)一般從交換機(jī)引出E1信號(hào)線路以供其它專用通信系統(tǒng)接入。為了滿足電信網(wǎng)的接入規(guī)范,E1終端設(shè)備內(nèi)部常采用一種被稱為ST-BUS的總線來對(duì)需要接入通信網(wǎng)的各路用戶數(shù)據(jù)進(jìn)行排隊(duì),以便統(tǒng)一與E1信號(hào)進(jìn)行轉(zhuǎn)換,充分利用E1線路資源。由于批量生產(chǎn)的接口芯片都是針對(duì)某些特定標(biāo)準(zhǔn)接口而設(shè)計(jì),無法滿足E1通信的特殊需要。為滿足多種特殊接口與電信線路間進(jìn)行數(shù)據(jù)交換的需要,增加系統(tǒng)可重配置的靈活性,本文在所涉及項(xiàng)目中的E1接口轉(zhuǎn)換板的設(shè)計(jì)中采用了可編程器件實(shí)現(xiàn)了多種特殊接口的混合接入。為了簡(jiǎn)化問題,文中主要介紹ST-BUS總線接口收發(fā)模塊的Verilog HDL設(shè)計(jì)。
ST-BUS基本原理
ST-BUS(Serial Telecom BUS,串行通信總線)是卓聯(lián)半導(dǎo)體公司根據(jù)電信應(yīng)用的需要而定義的一種重要的通信設(shè)備內(nèi)部總線通信協(xié)議,它可以將多路信息(包括音頻、視頻、控制信息以及其它數(shù)據(jù)等)進(jìn)行復(fù)接或解復(fù)接,以便統(tǒng)一進(jìn)行信號(hào)轉(zhuǎn)換,實(shí)現(xiàn)本地設(shè)備與電信E1線路間的數(shù)據(jù)交換。隨著通信系統(tǒng)越來越復(fù)雜,電信設(shè)備常有局部部件的淘汰或者更新?lián)Q代。為了提高設(shè)備兼容性也便于系統(tǒng)升級(jí),電信設(shè)備廣泛采取了模塊化設(shè)計(jì)方法,而ST-BUS就是將各功能模塊連接起來協(xié)同工作的一種總線標(biāo)準(zhǔn)。所以,不論模塊的功能和外部接口怎樣,只要具備ST-BUS總線接口,都可以方便地嵌入到特定的通信系統(tǒng)中。
根據(jù)卓聯(lián)對(duì)ST-BUS的信號(hào)及時(shí)序規(guī)范所作的定義,ST-BUS是一種傳輸數(shù)字信息的高速同步串行通信總線,總線接口所需信號(hào)有幀同步信號(hào)、位時(shí)鐘信號(hào)和串行數(shù)據(jù)信號(hào)。幀同步信號(hào)主要有類型0和類型1兩種:類型0的同步脈沖僅出現(xiàn)在幀的開頭,如圖1所示,總線上各部件將之作為重要參考信號(hào)并由此決定何時(shí)開始接收或發(fā)送數(shù)據(jù)流;類型1的同步脈沖需要維持一個(gè)完整的時(shí)隙周期(即8個(gè)位時(shí)鐘周期),在此期間部件也要接收或發(fā)送信息數(shù)據(jù),這種同步方式較少應(yīng)用。ST-BUS定義了4種標(biāo)準(zhǔn)時(shí)鐘頻率,即16.384MHz、8.192MHz、4.096MHz和2.048MHz,其中每一種時(shí)鐘頻率均可作為部件的內(nèi)部時(shí)鐘,不過任意時(shí)刻只能選擇其一,自適應(yīng)系統(tǒng)在設(shè)計(jì)時(shí)采用了自動(dòng)選擇模式。除頻率2.048MHz外,其它時(shí)鐘頻率總是數(shù)據(jù)速率的兩倍,即支持最大數(shù)據(jù)速率為8.192Mbps。如果ST-BUS數(shù)據(jù)速率為2.048Mbps,那么時(shí)鐘可以是2.048MHz或4.096MHz。由圖1可知,一個(gè)完整ST-BUS的幀周期為125ms,而每幀又根據(jù)數(shù)據(jù)速率分為幾種不同的時(shí)隙總數(shù)。但是,為了與E1信號(hào)的時(shí)隙相對(duì)應(yīng),E1終端子系統(tǒng)常采用每幀32時(shí)隙的信號(hào)方式。
ST-BUS收發(fā)模塊設(shè)計(jì)與仿真
為了實(shí)現(xiàn)ST-BUS總線與各種不同(總線)接口之間的可靠數(shù)據(jù)傳輸,下面討論同步模式下ST-BUS接口模塊的設(shè)計(jì),并在部分Verilog HDL描述中以注解方式進(jìn)行詳細(xì)說明。根據(jù)ST-BUS總線協(xié)議,ST-BUS接口模塊可大致分為接收模塊、發(fā)送模塊和控制模塊(含數(shù)據(jù)交換)三部分,分別完成ST-BUS總線數(shù)據(jù)的接收、發(fā)送和控制(包括與其它接口單元進(jìn)行數(shù)據(jù)交換)等功能。要實(shí)現(xiàn)某種特定接口(如RS-232等)與ST-BUS總線之間的數(shù)據(jù)通信,則需要將該接口單元的I/O信號(hào)及控制信號(hào)接到ST-BUS接口的控制模塊,通過控制模塊來控制收發(fā)時(shí)序以及在ST-BUS中所占用的時(shí)隙位置及數(shù)目,而在實(shí)際應(yīng)用中,各路數(shù)據(jù)對(duì)應(yīng)的時(shí)隙位置及數(shù)目常通過外部控制接口設(shè)置。為簡(jiǎn)化問題,這里僅討論ST-BUS接口收發(fā)模塊設(shè)計(jì),且假定時(shí)隙設(shè)置是固定的。
如圖1所示,ST-BUS總線的數(shù)據(jù)收發(fā)遵守以下規(guī)則:發(fā)送端在時(shí)鐘C2的上升沿發(fā)送,而接收端則在C2的下降沿采數(shù)據(jù),且同步脈沖在0時(shí)隙開始的第一個(gè)C2上升沿處保持低電平。
圖1 類型0幀同步ST-BUS總線信號(hào)時(shí)序
ST-BUS接收模塊
ST-BUS接收模塊主要根據(jù)控制模塊所設(shè)置的ST-BUS時(shí)隙等參數(shù)接收所需時(shí)隙的數(shù)據(jù),并將接收到的數(shù)據(jù)送給控制模塊,其原理結(jié)構(gòu)框圖如圖2(a)所示。
圖2 ST-BUS收發(fā)模塊的原理結(jié)構(gòu)框圖
根據(jù)時(shí)鐘等信號(hào)的提供方式,模塊的工作模式常分為主動(dòng)模式和被動(dòng)模式兩種。由于圖2(a)所示的接收模塊所需時(shí)鐘與同步信號(hào)均來自外部,因此該模塊處于被動(dòng)模式;相反,如果時(shí)鐘和同步信號(hào)由模塊產(chǎn)生,則模塊處于主動(dòng)模式。
被動(dòng)模式下ST-BUS接收模塊的基本工作原理為:上電后,在時(shí)鐘穩(wěn)定的情況下,模塊首先檢測(cè)同步信號(hào);在非同步狀態(tài)下,除同步檢測(cè)以外的其它部件均不能工作;檢測(cè)到同步后(即在同步狀態(tài)下),模塊啟動(dòng)時(shí)隙定位和數(shù)據(jù)位定位的計(jì)數(shù)器工作,此時(shí),模塊根據(jù)參數(shù)設(shè)置進(jìn)行數(shù)據(jù)接收。另外,圖2(a)中的時(shí)隙定位和數(shù)據(jù)位定位在本設(shè)計(jì)中采用2個(gè)計(jì)數(shù)器實(shí)現(xiàn),也可以合并為單計(jì)數(shù)器實(shí)現(xiàn)。ST-BUS總線接收操作的關(guān)鍵之處在于前一幀的最后一時(shí)隙(即31時(shí)隙)與當(dāng)前幀的第一時(shí)隙(即0時(shí)隙)之間的切換操作,因?yàn)樾枰瑫r(shí)檢測(cè)同步信號(hào),而一旦同步信號(hào)沒有檢測(cè)到,則模塊會(huì)進(jìn)入失步狀態(tài)。接收模塊的Verilog HDL實(shí)現(xiàn)(信號(hào)和常數(shù)聲明從略,且代碼已簡(jiǎn)化,下同)可以劃分為以下三部分。
(1)同步檢測(cè)
if(!f0) begin file://同步信號(hào)低電平有效
f0_flag<=1; file://置同步標(biāo)志
bitcounter<=bitsofbyte-1;//時(shí)隙內(nèi)的數(shù)據(jù)位數(shù)減法計(jì)數(shù)器復(fù)位
bytecounter<=0; end
file://時(shí)隙數(shù)加法計(jì)數(shù)器復(fù)位
(2)定位計(jì)數(shù)
if(f0_flag) file://判斷同步狀態(tài)
begin case(bitcounter) file://根據(jù)數(shù)據(jù)位計(jì)數(shù)值進(jìn)行時(shí)隙切換
0:begin
bitcounter<=bitsofbyte-1;
file://數(shù)據(jù)位計(jì)數(shù)器復(fù)位
bytecounter<=bytecounter+1;
file://時(shí)隙通道計(jì)數(shù)器遞增
end
default:bitcounter<=bitcounter-1; file://時(shí)隙內(nèi)位計(jì)數(shù)器遞減
endcase end
(3)接收數(shù)據(jù)(含標(biāo)志及使能信號(hào)產(chǎn)生)
if(bytecounter==byte_pos1) begin file://檢查第1通道
din2<=8'bZ;
file://釋放通道2暫存單元
receive2_flag<=0;
file://清除通道2接收標(biāo)志
din1<=din1<<1;
file://移位準(zhǔn)備接收下一位數(shù)據(jù)
din1[0]<=dr; file://讀入數(shù)據(jù)位
if(bitcounter==0) begin receive1_flag<=1;end//接收完整通道數(shù)據(jù)置標(biāo)志
end
else if(bytecounter==byte_pos2)
file://多通道接收(同上)
……
else begin
file://當(dāng)前通道不接收數(shù)據(jù),則釋放暫存單元并清除接收標(biāo)志
din1<=8'bZ;din2<=8'bZ;receive1 _flag<=0;receive2_flag<=0;end
根據(jù)ST-BUS總線收發(fā)規(guī)則及接收模塊基本工作原理,為了31時(shí)隙與0時(shí)隙的可靠切換,設(shè)計(jì)中采用狀態(tài)轉(zhuǎn)換與數(shù)據(jù)接收分開的方法,也即以上模塊可由2個(gè)always語句實(shí)現(xiàn),一個(gè)采用C2上升沿實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換,一個(gè)采用C2下降沿實(shí)現(xiàn)數(shù)據(jù)接收。在Altera公司提供的Quartus II 5.0SP1集成開發(fā)環(huán)境下,利用MAX7000S系列最低性能的CPLD器件作綜合后的時(shí)序仿真結(jié)果如圖3(a)所示。圖中第一通道為0時(shí)隙,第二通道為31時(shí)隙。
a)ST-BUS接收模塊仿真
b)ST-BUS發(fā)送模塊仿真
圖3 ST-BUS收發(fā)模塊綜合后的時(shí)序仿真結(jié)果(C2時(shí)鐘為10MHz)
ST-BUS發(fā)送模塊
ST-BUS發(fā)送模塊主要將控制模塊送來的數(shù)據(jù)按照所設(shè)置的時(shí)隙進(jìn)行發(fā)送,也就是將一般數(shù)據(jù)信號(hào)轉(zhuǎn)換為ST-BUS總線信號(hào),其原理結(jié)構(gòu)框圖如圖2(b)所示。
發(fā)送模塊可工作于兩種模式,即主動(dòng)模式和被動(dòng)模式。圖中細(xì)的虛線部分(除去相應(yīng)的實(shí)線部分)表示工作于主動(dòng)模式的連接,此時(shí),時(shí)鐘和同步信號(hào)均由模塊內(nèi)部產(chǎn)生;若除去細(xì)的虛線部分,則模塊工作于被動(dòng)模式。在本文涉及的E1接口板設(shè)計(jì)中,系統(tǒng)采用了自動(dòng)模式選擇的工作方式。圖中同步的作用,在主動(dòng)模式時(shí)為同步發(fā)生,在被動(dòng)模式時(shí)為同步檢測(cè)。
被動(dòng)模式下ST-BUS發(fā)送模塊的基本工作原理與接收模塊類似,所不同之處在于數(shù)據(jù)傳輸方向相反。與接收模塊一樣,圖2(b)中的時(shí)隙定位和數(shù)據(jù)位定位也可以合并采用單計(jì)數(shù)器實(shí)現(xiàn)。ST-BUS總線發(fā)送操作的關(guān)鍵之處也在于前一幀31時(shí)隙與當(dāng)前幀0時(shí)隙之間的切換,因?yàn)樾枰瑫r(shí)檢測(cè)同步信號(hào),并且狀態(tài)轉(zhuǎn)換和總線數(shù)據(jù)加載都在C2上升沿完成。發(fā)送模塊的Verilog HDL實(shí)現(xiàn)可劃分為兩部分,與接收模塊劃分不同,這里已把發(fā)送數(shù)據(jù)的操作嵌入到了同步檢測(cè)和定位計(jì)數(shù)當(dāng)中,當(dāng)然也可嚴(yán)格按功能塊劃分。
(1)同步檢測(cè)及數(shù)據(jù)發(fā)送
if(!f0) begin file://同步信號(hào)低電平有效
f0_flag<=1;//同步狀態(tài)標(biāo)志
bitcounter<=bitsofbyte-1;//位計(jì)數(shù)器復(fù)位
bytecounter<=0; file://時(shí)隙計(jì)數(shù)器復(fù)位
if(byte_pos1==0) file://通道1為時(shí)隙0,則開始發(fā)送數(shù)據(jù)
begin dx<=data1[7]; file://先送高位到ST-BUS總線
dout1<=data1<<1; file://移位準(zhǔn)備下一位待發(fā)數(shù)據(jù)
dout2<=data2;end file://準(zhǔn)備下一通道待發(fā)數(shù)據(jù)
else if(byte_pos2==0)//通道2為時(shí)隙0,則開始發(fā)送數(shù)據(jù)(同通道1)
……
else dx<=1'bZ; end file://如果沒有選擇0時(shí)隙,則輸出高阻,釋放總線
(2)定位計(jì)數(shù)及數(shù)據(jù)發(fā)送
if(f0_flag) file://判斷同步狀態(tài)
begin case(bitcounter)
0:begin bitcounter<=bitsofbyte-1;//位計(jì)數(shù)器復(fù)位
if(bytecounter==(bytes_per_frame-1)) bytecounter<=0;//時(shí)隙計(jì)數(shù)滿則復(fù)位
else bytecounter<=bytecounter +1;//時(shí)隙計(jì)數(shù)器遞增
if(bytecounter==byte_pos1-1)
file://通道1發(fā)送數(shù)據(jù)
begin dx<=dout1[7];
file://發(fā)送數(shù)據(jù)的最高位
dout1<=dout1<<1; end
file://移位準(zhǔn)備下一位待發(fā)數(shù)據(jù)
else if(bytecounter==byte_pos2-1) file://通道2發(fā)送數(shù)據(jù)(同通道1)
……
else dx<=1'bZ;end
file://非占用通道則釋放總線
default:begin
bitcounter<=bitcounter-1;
file://位計(jì)數(shù)遞減
……
file://同前面通道1、通道2發(fā)送數(shù)據(jù)
end endcase end
根據(jù)ST-BUS總線收發(fā)規(guī)則及發(fā)送模塊基本工作原理,發(fā)送模塊各功能塊均采用C2上升沿,或者采用C2下降沿轉(zhuǎn)換狀態(tài)而采用C2上升沿發(fā)送數(shù)據(jù)。對(duì)前者,以上發(fā)送模塊可用1個(gè)或2個(gè)always語句完成;對(duì)后者,以上發(fā)送模塊則至少需用2個(gè)always語句實(shí)現(xiàn),并將數(shù)據(jù)發(fā)送從以上兩部分中分離出來。采用類似接收模塊的方法,對(duì)發(fā)送模塊單獨(dú)綜合后作時(shí)序仿真,結(jié)果如圖3(b)所示。值得注意的是,為了說明模塊設(shè)計(jì)對(duì)于通道設(shè)置順序的無關(guān)性,圖中第一通道為31時(shí)隙,第二通道為0時(shí)隙。
ST-BUS控制模塊
ST-BUS控制模塊主要完成ST-BUS總線的收發(fā)控制與協(xié)調(diào),同時(shí)也負(fù)責(zé)與外部接口的數(shù)據(jù)交換功能,這部分代碼因涉密不再列出,這里僅簡(jiǎn)單介紹一下其功能。
控制模塊的功能劃分大致分為以下5部分:外部接口時(shí)鐘產(chǎn)生及管理,控制收發(fā)模塊與控制模塊的數(shù)據(jù)交換,控制接口模塊與其它接口的數(shù)據(jù)交換,對(duì)速率不匹配的數(shù)據(jù)作緩存(FIFO),提供對(duì)外通信接口供用戶設(shè)置參數(shù)。根據(jù)實(shí)際應(yīng)用情況,以上所列的功能可以適當(dāng)取舍或調(diào)整。如果速率匹配,則可以舍棄第4部分;如果參數(shù)固化,則可舍棄第5部分。
結(jié)語
基于MAX7000S系列CPLD器件分析收發(fā)模塊的最高工作性能可知,接收模塊的位時(shí)鐘C2最高工作頻率可達(dá)21.74MHz,而發(fā)送模塊的位時(shí)鐘C2最高工作頻率則達(dá)到32.26MHz,完全符合設(shè)計(jì)要求。本文所設(shè)計(jì)的ST-BUS接口模塊具有很強(qiáng)的通用性、可擴(kuò)展性和可移植性,利用MAX7000S系列CPLD器件成功實(shí)現(xiàn)了ST-BUS與UART、RS-232、RS-485等接口單元的順利對(duì)接,并已成功應(yīng)用于某專用集群通信設(shè)備的E1接口板,完成了多路不同接口的數(shù)據(jù)復(fù)接通信,運(yùn)行狀況良好。