基于CPLD的ST-BUS總線收發(fā)模塊設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
現(xiàn)代電信系統(tǒng)已發(fā)展為一個(gè)龐大的綜合化數(shù)字網(wǎng)絡(luò),除了提供傳統(tǒng)電話服務(wù)外,也提供多種數(shù)據(jù)接入服務(wù),其典型應(yīng)用是為其它專用通信系統(tǒng)提供數(shù)據(jù)中繼服務(wù)。因E1信號(hào)接入方式簡(jiǎn)單,一般電信交換機(jī)都會(huì)預(yù)留部分E1接入端口以供專用通信系統(tǒng)使用。為滿足電信網(wǎng)接入要求并充分利用線路資源,E1終端子系統(tǒng)內(nèi)部常采用ST-BUS總線對(duì)各路用戶數(shù)據(jù)進(jìn)行復(fù)接或解復(fù)接,并實(shí)現(xiàn)與E1信號(hào)的轉(zhuǎn)換??紤]到專用接口芯片針對(duì)某一種或幾種標(biāo)準(zhǔn)接口而設(shè)計(jì),已無(wú)法滿足所有接口標(biāo)準(zhǔn)(尤其是新型接口標(biāo)準(zhǔn))要求。為使各種接口都能與電信線路進(jìn)行數(shù)據(jù)交換,且系統(tǒng)配置能更加靈活,文中所述模塊的電路設(shè)計(jì)采用了先進(jìn)的可編程器件來(lái)實(shí)現(xiàn),便于多種接口的混合接入。鑒于接口種類及標(biāo)準(zhǔn)繁多,文中主要討論外部接口與ST-BUS總線通信所需公共模塊(即ST-BUS收發(fā)模塊)的設(shè)計(jì)與驗(yàn)證。
ST-BUS總線規(guī)范
在電信設(shè)備中,模塊互連普遍采用總線架構(gòu),其中應(yīng)用最為廣泛的是ST-BUS(即Serial Telecom BUS,串行電信總線)。電信芯片制造商Zarlink半導(dǎo)體公司根據(jù)電信模塊化應(yīng)用的需要對(duì)ST-BUS的信號(hào)與時(shí)序規(guī)范作了明確的定義,該總線在很大程度上簡(jiǎn)化了不同模塊間的通信方式,可以傳輸包括音頻、視頻、控制信息等在內(nèi)的數(shù)據(jù)信息。
由定義知,ST-BUS是一種傳輸數(shù)字信息的高速同步串行通信總線,其總線信號(hào)包括幀同步、位時(shí)鐘和串行數(shù)據(jù),幀同步信號(hào)是一個(gè)負(fù)脈沖,分為兩種類型:類型0的 F0 同步脈沖僅出現(xiàn)在幀開(kāi)頭的一個(gè)位時(shí)鐘周期內(nèi),它決定著總線上各部件何時(shí)開(kāi)始收或發(fā)一幀信息數(shù)據(jù)流;類型1的 F1 同步脈沖也出現(xiàn)在幀開(kāi)頭且需維持8個(gè)位時(shí)鐘周期(即一個(gè)時(shí)隙周期),在此期間總線上各部件 同時(shí)也在收或發(fā)信息數(shù)據(jù)流,相比于類型0,類型1同步方式應(yīng)用較少。另外,考慮到模塊間通信速率的匹配,ST-BUS定義了四種標(biāo)準(zhǔn)時(shí)鐘頻 率 ,即 16.384MHz、8.192MHz、4.096MHz和2 .048MHz,均可用作部件的內(nèi)部時(shí)鐘,且同一時(shí)刻只能選擇其一,而自適應(yīng)系統(tǒng)則采取自動(dòng)選擇 模式。除了常用的基準(zhǔn)時(shí)鐘2.048MHz外,其余時(shí)鐘頻率總是對(duì)應(yīng)數(shù)據(jù)速率的兩倍,即ST-BUS支持的最大數(shù)據(jù)速率為8.192Mbps。假設(shè)ST-BUS速據(jù)速率為2.048M bps,則時(shí)鐘頻率可在2.048MHz與4.096MHz中任取其一。ST-BUS的一個(gè)完整 幀周 期為12 5μs,每幀又根據(jù)不同數(shù)據(jù)傳輸速率分為不同的時(shí) 隙數(shù)。不過(guò),為了與E1信號(hào)時(shí)隙一一對(duì)應(yīng),實(shí)際應(yīng)用中ST-BUS常采用每幀32時(shí)隙的信號(hào)方式。
由于通信系統(tǒng)越來(lái)越復(fù)雜,為了提高設(shè)備兼容性且便于系統(tǒng)或模塊升級(jí),電信設(shè)備廣泛采用模塊化設(shè)計(jì)思想和方法,而ST-BUS正是便于將各功能模塊聯(lián)接起來(lái)協(xié)調(diào)工作的總線標(biāo)準(zhǔn),所以模塊只要具備ST-BUS總線接口就能方便地嵌入特定通信設(shè)備。
ST-BUS收發(fā)電路與CPLD邏輯設(shè)計(jì)
ST-BUS收發(fā)電路設(shè)計(jì)
為了實(shí)現(xiàn)完整的ST-BUS收發(fā)模塊,首先介紹一下ST-BUS收發(fā)電路設(shè)計(jì)。
為ST-BUS收發(fā)模塊的電路原理圖。這里,ST-BUS收發(fā)模塊功能電路以CPLD作為核心元件,CPLD采用全球第二大可編程器件廠商Altera公司MAX7000B系列的 EPM7128SLC84-15(128個(gè)宏單元,PLCC84封裝)。
同時(shí)考慮到調(diào)試與驗(yàn)證方便,電路模塊采用一個(gè)Atmel公司的AT89C51單片機(jī)(DIP40封裝,文中不作詳細(xì)討論)作為外部控制器。單片機(jī)通過(guò)四線制SPI接口設(shè)置收發(fā)模塊的工作模式、時(shí)隙參數(shù)等,也可通過(guò)SPI或并口P0接口讀(或?qū)懀㏒T-BUS收發(fā)模塊接收(或發(fā)送)的數(shù)據(jù),并通過(guò)RS-232C接口與計(jì)算機(jī)通信。另外,ST-BUS收發(fā)模塊還設(shè)置了2個(gè)中斷輸出信號(hào),并在分別連接到單片機(jī)的中斷輸入引腳 INT0 和 INT1 。因此,單片機(jī)也可以采取中斷方式來(lái)讀取ST-BUS收發(fā)模塊接收到的數(shù)據(jù)。
單片機(jī)的外接晶體11.059MHz;CPLD片上系統(tǒng)時(shí)鐘由外部4.096MHz有源晶體振蕩器提供,采用10引腳雙列插座的JTAG接口實(shí)現(xiàn)CPLD的在線編程;RS-232C與TTL接口電平轉(zhuǎn)換采用MAXIM公司的MAX232ACPE。
ST-BUS收發(fā)模塊設(shè)計(jì)
ST-BUS收發(fā)模塊的功能是實(shí)現(xiàn)ST-BUS總線串行數(shù)據(jù)的可靠收發(fā),接下來(lái)就探討 F0 同步模式下ST-BUS總線接收與發(fā)送的模塊設(shè)計(jì)。
ST-BUS總線數(shù)據(jù)收發(fā)規(guī)則為:發(fā)送端在時(shí)鐘C2上升沿時(shí)發(fā)送數(shù)據(jù),而接收端在C2下降沿時(shí)采樣并讀取數(shù)據(jù),且 F0 同步脈沖在第0時(shí)隙開(kāi)始的第一個(gè)C2上升沿處保持低電平。需要說(shuō)明的是,實(shí)際應(yīng)用中ST-BUS收發(fā)模塊的一端接到各種接口的數(shù)據(jù)交換單元,且通過(guò)外部控制接口設(shè)置各路數(shù)據(jù)所占用的時(shí)隙位置參數(shù),不過(guò),在不影響本文討論ST-BUS收發(fā)模塊設(shè)計(jì)的情況下,這里暫不考慮收發(fā)數(shù)據(jù)與其它接口的交換部分,并假定收發(fā)模塊各路數(shù)據(jù)通道占用固定的時(shí)隙通道(實(shí)際上,這里是由單片機(jī)軟件設(shè)置的)。
另外,根據(jù)時(shí)鐘等信號(hào)的提供方式,時(shí)序電路模塊的工作模式常分為主動(dòng)模式和被動(dòng)模式兩種。若電路模塊所需時(shí)鐘和同步信號(hào)均來(lái)自外部,該模塊就處于被動(dòng)模式;相反,若時(shí)鐘和同步信號(hào)由模塊內(nèi)部產(chǎn)生,該模塊就處于主動(dòng)模式。下面的討論假設(shè)模塊處于時(shí)鐘與幀同步均由外部提供的被動(dòng)模式,但討論結(jié)果對(duì)主動(dòng)模式同樣成立。
(一)接收模塊
ST-BUS接收模塊的功能原理框圖。從本質(zhì)上講,ST-BUS接收模塊的功能是根據(jù)所設(shè)置的ST-BUS時(shí)隙位置接收所需數(shù)據(jù),再通過(guò)特定接口送出接收模塊并維持至少一個(gè)位時(shí)鐘周期。模塊接收數(shù)據(jù)時(shí),由于發(fā)送端(見(jiàn)后)在上升沿處建立ST-BUS總線上的數(shù)據(jù)信號(hào),此時(shí)位時(shí)鐘C2上升沿應(yīng)僅觸發(fā)狀態(tài)轉(zhuǎn)換及計(jì)數(shù)器計(jì)數(shù),因此接收端應(yīng)在數(shù)據(jù)穩(wěn)定期間采樣,即在C2下降沿處讀取串行數(shù)據(jù)。因此,雙通道接收模塊用Verilog HDL實(shí)現(xiàn)時(shí)可采用兩個(gè)always語(yǔ)句加以描述,部分代碼如下(為了簡(jiǎn)化起見(jiàn),信號(hào)和常數(shù)聲明略,下同)。
第一個(gè)always語(yǔ)句內(nèi)容為:
if(!f0)begin //同步檢測(cè),同步則置標(biāo)志并復(fù)位計(jì)數(shù)器
f0_flag<=1;bitcounter<=bitsofbyte-1;bytecounter<=0;end
else if(f0_flag)begin //判斷當(dāng)前是否處于同步狀態(tài)
case(bitcounter) //時(shí)隙內(nèi)位計(jì)數(shù)處理
0:begin bitcounter<=bitsofbyte-1; //當(dāng)前時(shí)隙末位則位計(jì)數(shù)器復(fù)位
if(bytecounter==(bytes_per_frame-1)) //檢查是否幀末時(shí)隙
begin bytecounter=0; //時(shí)隙計(jì)數(shù)復(fù)位
if(f0)f0_flag<=0;end / /無(wú)同步信號(hào)則清除同步標(biāo)志
else bytecounter<=bytecounter+1;end //非幀末時(shí)隙則遞增
default:bitcounter<=bitcounter-1; //正常接收數(shù)據(jù)時(shí)計(jì)數(shù)器遞減
endcase end
位時(shí)鐘C2下降沿觸發(fā)數(shù)據(jù)鎖存并作接收處理,則第二個(gè)always語(yǔ)句內(nèi)容為:
if(f0_flag)begin if(bytecounter==byte_pos1)//檢查當(dāng)前時(shí)隙是否接收數(shù)據(jù)
begin receive2_flag<=0;din1<=din1<<1;din1[0]<=dr;
if(bitcounter==0)receive1_flag<=1;end
else if(bytecounter==byte_pos2) //多通道接收(同上)
……
end
在Altera公司提供的Quartus II 5.0 SP1集成開(kāi)發(fā)環(huán)境下,基于MAX7000S系列的CPLD器件EPM7128SLC84-15對(duì)上述雙通道ST-BUS接收模塊作綜合,占用資源為27個(gè)LC,占用率為21%。再做綜合后時(shí)序仿真,結(jié)果如圖4(a)。因未討論單片機(jī)的控制接口,仿真的通道設(shè)置如下:第一通道為0時(shí)隙,第二通道為31時(shí)隙,這樣設(shè)置也是為了驗(yàn)證幀切換問(wèn)題。由仿真結(jié)果可以看出,接收模塊的功能和時(shí)序正確。
(二)發(fā)送模塊
ST-BUS發(fā)送模塊的功能原理框圖。從本質(zhì)上講,ST-BUS發(fā)送模塊的功能是按照所設(shè)置的時(shí)隙將待發(fā)數(shù)據(jù)變換為特定的串行格式發(fā)送,即將數(shù)據(jù)信號(hào)轉(zhuǎn)換為ST-BUS總線信號(hào)。由前述,發(fā)送端在位時(shí)鐘C2的上升沿處可以既轉(zhuǎn)換狀態(tài)又發(fā)送數(shù)據(jù),因此,雙通道發(fā)送模塊用Verilog HDL實(shí)現(xiàn)時(shí)可以采用一個(gè)always語(yǔ)句加以描述,相應(yīng)的部分代碼如下:
if(!f0)begin f0_flag<=1;bitcounter<=bitsofbyte-1;bytecounter<=0;
if(byte_pos1==0) //時(shí)隙0為第一通道,發(fā)送數(shù)據(jù)data1
begin dx<=data1[7];dout1<=data1<<1;dout2<=data2;end
else if(byte_pos2==0) //時(shí)隙0為第二通道,發(fā)送數(shù)據(jù)data2
……
else dx<=1'bZ; end //非選定時(shí)隙,則輸出高阻釋放總線
else if(f0_flag)begin case(bitcounter)
0:begin
…… //狀態(tài)轉(zhuǎn)換,類似于接收模塊
if(bytecounter==byte_pos1-1) //發(fā)送第一通道數(shù)據(jù)
begin dx<=dout1[7];dout1<=dout1<<1;end
else if(bytecounter==byte_pos2-1)//發(fā)送第二通道數(shù)據(jù)
……
else dx<=1'bZ;end
default:begin bitcounter<=bitcounter-1;
…… //同上,發(fā)送數(shù)據(jù)
end endcase end
采用與接收模塊類似的方法,在Quartus II 5.0 SP1開(kāi)發(fā)環(huán)境下基于EPM7128SLC84-15器件對(duì)雙通道發(fā)送模塊作綜合,占用資源為25個(gè)LC,占用率為20%。后時(shí)序仿真,結(jié)果如圖4(b)。仿真時(shí),為了說(shuō)明雙通道發(fā)送模塊的發(fā)送時(shí)序與通道設(shè)置的順序無(wú)關(guān),與接收模塊的通道設(shè)置相反,發(fā)送模塊的第一通道設(shè)置為31時(shí)隙,第二通道設(shè)置為0時(shí)隙。由仿真結(jié)果可見(jiàn),發(fā)送模塊的功能和時(shí)序也正確。
接收和發(fā)送模塊的功能原理框圖可知,兩個(gè)模塊之間的差異只有數(shù)據(jù)收發(fā)部分,兩個(gè)模塊的同步檢測(cè)、時(shí)隙定位以及位定位都可以共用,因此兩個(gè)模塊可以合并為一個(gè)收發(fā)模塊,如圖3(c)所示,能節(jié)省部分器件資源。從綜合結(jié)果來(lái)看,如果收發(fā)模塊相對(duì)獨(dú)立,那么資源占用將是27+25=52個(gè)LC,占用率高達(dá)41%。而接收與發(fā)送模塊合并后的收發(fā)模塊,占用資源35個(gè)LC,占用率27%。顯然,有效地節(jié)省了CPLD的LC資源。
上面討論并沒(méi)有嚴(yán)格區(qū)分被動(dòng)模式和主動(dòng)模式,但是,前面的電路設(shè)計(jì)已考慮到了雙模式的驗(yàn)證,CPLD器件的外接晶體振蕩器可以讓ST-BUS收發(fā)模塊工作于主動(dòng)模式。當(dāng)工作于主動(dòng)模式時(shí),收發(fā)模塊會(huì)自己產(chǎn)生時(shí)鐘和幀同步等信號(hào),并提供給ST-BUS總線上的其它部件。相反,當(dāng)工作于被動(dòng)模式時(shí),收發(fā)模塊的收發(fā)部分會(huì)屏蔽掉本地時(shí)鐘,而由外部ST-BUS總線提供時(shí)鐘。
基于所選定的CPLD器件EPM7128SLC84-15分析收發(fā)模塊最高工作性能可知,接收模塊和發(fā)送模塊的最高工作頻率均大于20MHz。這說(shuō)明,所設(shè)計(jì)模塊的工作頻率高于前面所述C2幾種工作頻率的最大值,也就是說(shuō)在C2的各頻率條件下,ST-BUS收發(fā)模塊都是適用的。
結(jié)束語(yǔ)
文中所討論的ST-BUS收發(fā)模塊的實(shí)現(xiàn)電路及CPLD內(nèi)部邏輯設(shè)計(jì)已成功應(yīng)用于某專用通信設(shè)備的E1接口板,運(yùn)行性能穩(wěn)定。基本文中設(shè)計(jì)的收發(fā)模塊,在多種不同規(guī)模的可編程器件上已成功實(shí)現(xiàn)了ST-BUS與RS-232等多種標(biāo)準(zhǔn)接口單元以及部分自定義接口的順利對(duì)接,完成各種 接口與ST-BUS總線間的數(shù)據(jù)復(fù)接通信,工作性能穩(wěn)定可靠。所設(shè)計(jì)的ST-BUS收發(fā)模塊具有較強(qiáng)的通用性、可擴(kuò)展性及可移植性,可以方便地移植到采用可編程器件的ST-BUS通信接口應(yīng)用電路。