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