錢黎明,劉富發(fā),魏敬和
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇 無(wú)錫 214005)
支持PCI總線的HDLC協(xié)議專用控制器設(shè)計(jì)
錢黎明,劉富發(fā),魏敬和
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇 無(wú)錫 214005)
在地面衛(wèi)星通訊中,為了滿足上位機(jī)更快、更可靠的接收外部設(shè)備通信數(shù)據(jù)的要求,設(shè)計(jì)了一款支持外圍部件互聯(lián)(PCI,Peripheral Component Interconnect)總線的高級(jí)數(shù)據(jù)鏈路控制(High-level data link control,HDLC)協(xié)議專用控制器電路。詳細(xì)描述了電路系統(tǒng)構(gòu)成及具體模塊的實(shí)現(xiàn),并給出了仿真波形圖。經(jīng)仿真測(cè)試表明該電路可滿足系統(tǒng)要求,同時(shí)PCI接口速率可達(dá)到132 Mbyte/s。
高級(jí)數(shù)據(jù)鏈路控制(HDLC);PCI總線;控制器
在地面衛(wèi)星通訊領(lǐng)域中,大型地面通訊設(shè)備的測(cè)試數(shù)據(jù)具有傳輸量大、實(shí)時(shí)性要求高的特點(diǎn)。為了解測(cè)試設(shè)備與上位機(jī)的通信狀況,需采用一種大容量高速傳輸?shù)耐ㄐ艆f(xié)議,實(shí)現(xiàn)數(shù)據(jù)傳輸過(guò)程的完全透明。設(shè)計(jì)了一款支持PCI總線的高級(jí)數(shù)據(jù)鏈路控制(HDLC,high level data link control)協(xié)議專用控制器,除了能夠滿足高速度、透明傳輸?shù)囊?,同時(shí)還具有差錯(cuò)控制、同步傳輸、功耗低等優(yōu)點(diǎn),能夠應(yīng)用于任何高速數(shù)據(jù)傳輸系統(tǒng)中。
1.1 PCI總線概述
PCI總線是一種傳輸速率可高達(dá)132Mb ytes/s的高速局部外設(shè)總線,可應(yīng)用在高速率和低功耗領(lǐng)域。該總線共有100根信號(hào),當(dāng)PCI接口作為從設(shè)備時(shí)最少應(yīng)有47根,作為主設(shè)備時(shí)最少應(yīng)有49根[1]。根據(jù)實(shí)際應(yīng)用場(chǎng)合實(shí)現(xiàn)最基本的功能,根據(jù)信號(hào)功能可將總線信號(hào)大致分為系統(tǒng)信號(hào)、數(shù)據(jù)地址信號(hào)、控制信號(hào)、中斷、仲裁及錯(cuò)誤等幾類。其中系統(tǒng)信號(hào)為CLK、RST;數(shù)據(jù)地址信號(hào)為AD、C/BE、PAR;控制信號(hào)包括FRAME、IRDY、TRDY、STOP、LOCK、ID+ SEL、DEVSEL,下面主要采用上述信號(hào)進(jìn)行PCI接口通信研究設(shè)計(jì)。
1.2 HDLC協(xié)議簡(jiǎn)介
HDLC協(xié)議是在通信鏈路層中應(yīng)用較廣泛的協(xié)議,所有數(shù)據(jù)均以信息幀的形式傳送,采用面向比特型規(guī)程使其具有強(qiáng)大的差錯(cuò)檢測(cè)功能和高可靠、高效率透明傳輸?shù)奶攸c(diǎn),該協(xié)議適用于中高速同步半雙工和全雙工通信領(lǐng)域中。典型的HDLC信息幀結(jié)構(gòu),如圖1所示。
圖1 HDLC幀結(jié)構(gòu)
根據(jù)HDLC協(xié)議規(guī)定,所有信息幀必須以標(biāo)志字“0x7E”開始和結(jié)束。接收設(shè)備不斷的搜尋“0x7E”以實(shí)現(xiàn)幀同步,從而確定一幀的開始和結(jié)束。另外,在幀與幀的空載期間,可以連續(xù)的發(fā)送標(biāo)志序列用作時(shí)間填充[2,3]。地址字段表示鏈路上站的地址,當(dāng)站點(diǎn)較多時(shí),可按字節(jié)進(jìn)行擴(kuò)充。控制字段表示幀類型、幀編號(hào)及命令等,也可按字節(jié)進(jìn)行擴(kuò)充。信息字段包含用戶的數(shù)據(jù)信息和來(lái)自上層的各種控制信息。幀校驗(yàn)序列采用循環(huán)冗余校驗(yàn)(CRC)對(duì)地址、控制、信息字段進(jìn)行差錯(cuò)控制。
在一幀數(shù)據(jù)中,HDLC協(xié)議采用“0”比特插入技術(shù),地址、控制、信息、校驗(yàn)碼字段中有可能出現(xiàn)與標(biāo)志字相同的字節(jié),為了保證標(biāo)志字的唯一性,在發(fā)送除標(biāo)志外的其它信息時(shí),只要遇到連續(xù)5個(gè)“1”,在其后自動(dòng)插入一個(gè)“0”。反之,在接收方遇到連續(xù)5個(gè)“1”,自動(dòng)刪除其后的“0”[4]。采用上述操作可實(shí)現(xiàn)任何代碼的傳送,即實(shí)現(xiàn)傳輸?shù)耐该餍浴?/p>
HDLC協(xié)議中加入幀校驗(yàn)序列來(lái)保證數(shù)據(jù)傳輸?shù)目煽啃裕捎醚h(huán)冗余校驗(yàn)碼對(duì)所傳送的數(shù)據(jù)進(jìn)行檢錯(cuò)和糾錯(cuò),校驗(yàn)范圍包括地址、控制、信息字段。HDLC規(guī)程規(guī)定了三種長(zhǎng)度幀校驗(yàn)序列,即8位、16位、32位,設(shè)計(jì)中采用16位幀校驗(yàn)序列,對(duì)應(yīng)CRC校驗(yàn)碼的生成多項(xiàng)式[5]為:
P(X)=X16+X12+X5+1
HDLC協(xié)議控制器的系統(tǒng)框圖如圖2所示。電路工作在數(shù)據(jù)接收狀態(tài)時(shí),首先經(jīng)過(guò)接收處理模塊處理,當(dāng)CRC校驗(yàn)正確后,數(shù)據(jù)經(jīng)過(guò)串并轉(zhuǎn)換后傳送給FIFO,然后經(jīng)過(guò)DMA方式讀取后通過(guò)PCI接口傳送給上位機(jī);電路工作在數(shù)據(jù)發(fā)送狀態(tài)時(shí),首先上位機(jī)通過(guò)PCI傳輸控制模塊將數(shù)據(jù)傳送給接收FIFO,然后數(shù)據(jù)并串轉(zhuǎn)換后分兩路,一路進(jìn)入發(fā)送處理模塊進(jìn)行數(shù)據(jù)的發(fā)送,另一路經(jīng)過(guò)CRC模塊生成CRC校驗(yàn)碼,而后附加在數(shù)據(jù)通路進(jìn)行發(fā)送。其中根據(jù)實(shí)際應(yīng)用接收FIFO和發(fā)送FIFO大小均為128雙字節(jié),通過(guò)FIFO電路實(shí)現(xiàn)HDLC串行數(shù)據(jù)和PCI總線并行數(shù)據(jù)的交互;控制模塊實(shí)現(xiàn)對(duì)其它模塊的控制,僅在其它模塊電路需要工作時(shí)才將其打開,從而達(dá)到降低功耗的目的;由于CRC校驗(yàn)和生成機(jī)理相似,因此在CRC校驗(yàn)/生成模塊通過(guò)電路的復(fù)用實(shí)現(xiàn)差錯(cuò)控制,從而降低電路的功耗和減小電路的面積。HDLC協(xié)議處理部分的工作時(shí)鐘由外部晶振時(shí)鐘經(jīng)過(guò)振蕩器、波特率產(chǎn)生器、數(shù)字鎖相環(huán)后產(chǎn)生的穩(wěn)定時(shí)鐘提供,PCI傳輸控制模塊時(shí)鐘由PCI總線提供。
圖2 HDLC控制器系統(tǒng)框圖
2.1 數(shù)據(jù)接收處理
接收處理模塊由同步模塊、幀頭檢測(cè)、比特解碼、數(shù)據(jù)接收緩沖等模塊電路構(gòu)成,主要采用狀態(tài)機(jī)完成HDLC協(xié)議數(shù)據(jù)的接收,電路狀態(tài)轉(zhuǎn)換圖如圖3所示。由于采用外部時(shí)鐘作為工作頻率,且HDLC協(xié)議為面向比特型,因此首先采用同步模塊對(duì)接收數(shù)據(jù)作同步處理,防止亞穩(wěn)態(tài)產(chǎn)生,提高電路的可靠性。其次進(jìn)入狀態(tài)機(jī)進(jìn)行幀頭檢測(cè),當(dāng)檢測(cè)到“0x7E”,開始數(shù)據(jù)的接收處理。同時(shí)比特解碼模塊開始檢測(cè),當(dāng)檢測(cè)到連續(xù)5個(gè)“1”時(shí),產(chǎn)生去0標(biāo)志,數(shù)據(jù)接收緩沖模塊舍棄下一位的接收;CRC校驗(yàn)?zāi)K進(jìn)行數(shù)據(jù)校驗(yàn),當(dāng)CRC接收完成之后進(jìn)行CRC校驗(yàn)碼的比較,若校驗(yàn)碼正確則進(jìn)入幀尾的檢測(cè)。此時(shí)若檢測(cè)到“0x7E”則完成一幀數(shù)據(jù)的接收操作。
2.2 數(shù)據(jù)發(fā)送處理
發(fā)送處理模塊包括數(shù)據(jù)發(fā)送緩沖、幀標(biāo)志生成、比特編碼等模塊電路構(gòu)成。該過(guò)程即為數(shù)據(jù)接收處理的逆過(guò)程,同樣采用狀態(tài)機(jī)實(shí)現(xiàn)HDLC協(xié)議數(shù)據(jù)的發(fā)送,狀態(tài)轉(zhuǎn)換圖如圖4所示。當(dāng)檢測(cè)到上位機(jī)傳來(lái)的幀發(fā)送標(biāo)志時(shí),開始一幀數(shù)據(jù)的發(fā)送,該模塊從發(fā)送FIFO讀取發(fā)送數(shù)據(jù),然后依次完成幀起始標(biāo)志、數(shù)據(jù)段、CRC校驗(yàn)碼、幀結(jié)尾標(biāo)志的發(fā)送,在數(shù)據(jù)發(fā)送期間使用比特編碼模塊對(duì)數(shù)據(jù)進(jìn)行“0”填充編碼。同時(shí)該模塊在幀與幀的空載期還可連續(xù)發(fā)送幀標(biāo)志,作為時(shí)間填充。
圖3 HDLC接收模塊狀態(tài)機(jī)
圖4 HDLC發(fā)送模塊狀態(tài)機(jī)
2.3 PCI接口設(shè)計(jì)
該模塊電路核心部分為狀態(tài)機(jī)設(shè)計(jì)[6,7],通過(guò)狀態(tài)機(jī)接收并判斷PCI總線上的信號(hào)確定當(dāng)前狀態(tài),從而控制PCI存儲(chǔ)器、I/O口、配置寄存器的讀寫和中斷等主要操作。本文根據(jù)PCI總線時(shí)序邏輯定義狀態(tài)機(jī)各個(gè)狀態(tài)從設(shè)備狀態(tài)轉(zhuǎn)換圖,如圖5所示。該狀態(tài)機(jī)共分為11個(gè)狀態(tài),分別為idle、rw_ wait1、rw_wait2、read_wait、rd_wr、last_rw、configwait1、configwait2、config、return和abort。主設(shè)備通過(guò)仲裁后選定從設(shè)備并開始通信;從設(shè)備地址譯碼匹配時(shí),開始轉(zhuǎn)入數(shù)據(jù)處理操作,可進(jìn)行配置寄存器操作、IO/存儲(chǔ)器的一次讀寫、猝發(fā)讀寫,以及中止傳輸?shù)炔僮?。?dāng)用戶要求中止傳輸且Frame無(wú)效時(shí),狀態(tài)機(jī)通過(guò)return狀態(tài)轉(zhuǎn)到初始狀態(tài)idle。
2.4 仿真和驗(yàn)證
圖5 PCI狀態(tài)轉(zhuǎn)換圖
采用VerilogHDL語(yǔ)言[8]進(jìn)行了電路設(shè)計(jì),使用VCS、DC、Encounter、Calibre等EDA工具進(jìn)行電路的功能仿真、邏輯綜合、布局布線和物理驗(yàn)證等設(shè)計(jì)。設(shè)計(jì)需對(duì)PCI配置方式迸發(fā)數(shù)據(jù)傳輸、PCI配置方式單個(gè)數(shù)據(jù)傳輸、PCI存儲(chǔ)器方式迸發(fā)數(shù)據(jù)傳輸、PCI存儲(chǔ)器方式單個(gè)數(shù)據(jù)傳輸、基于HDLC協(xié)議的數(shù)據(jù)發(fā)送和接收等過(guò)程進(jìn)行仿真驗(yàn)證。
基于HDLC協(xié)議的數(shù)據(jù)發(fā)送時(shí)序如圖6所示,復(fù)位后,PCI工作在從模式,F(xiàn)RAME拉低表示PCI一幀數(shù)據(jù)開始傳輸,IDSEL拉高使得PCI工作在配置方式,對(duì)PCI總線控制器內(nèi)部的命令/狀態(tài)、基址等寄存器進(jìn)行配置;IDSEL拉低使得PCI工作在存儲(chǔ)器方式,對(duì)HDLC協(xié)議控制器內(nèi)部的全局、中斷隊(duì)列、中央FIFO、發(fā)送FIFO、時(shí)鐘模式、發(fā)送時(shí)鐘波特率、中斷使能/屏蔽、發(fā)射器復(fù)位、發(fā)射描述符、請(qǐng)求發(fā)射等寄存器進(jìn)行配置;PCI切換到主模式,根據(jù)發(fā)射描述符中的基址信息,通過(guò)DMA方式從外部存儲(chǔ)器將要發(fā)送的數(shù)據(jù)讀入內(nèi)部發(fā)送FIFO,經(jīng)過(guò)HDLC協(xié)議處理后以串行的方式從TXD1發(fā)送出去。
基于HDLC協(xié)議的數(shù)據(jù)發(fā)送和接收時(shí)序如圖7所示,接收采用閉環(huán)方式,即接收發(fā)送端TXD1的串行輸出數(shù)據(jù),經(jīng)過(guò)HDLC協(xié)議處理后,32位的并行數(shù)據(jù)寫入接收FIFO中,PCI通過(guò)DMA的方式將接收到的數(shù)據(jù)存入外部存儲(chǔ)的另一段地址空間,地址空間以及長(zhǎng)度由接收描述符決定。
圖6仿真波形表明,PCI數(shù)據(jù)傳輸速率132Mbyte/s,外部存儲(chǔ)空間的數(shù)據(jù)可以被 PCI以DMA的方式讀取,經(jīng)過(guò)HDLC協(xié)議處理后,以串行的方式發(fā)送出去;圖7仿真波形表明,外部存儲(chǔ)空間的數(shù)據(jù)可以被PCI以DMA的方式從一塊地址空間拷貝到另一塊地址空間,即基于HDLC協(xié)議、數(shù)據(jù)能被正確的發(fā)送和接收。
圖6 數(shù)據(jù)發(fā)送時(shí)序
圖7 數(shù)據(jù)發(fā)送與閉環(huán)接收時(shí)序
2.5 整機(jī)實(shí)裝測(cè)試
HDLC協(xié)議專用控制器電路采用四面引腳扁平方式封裝,HDLC串行通訊模塊板卡貼裝了2片HDLC協(xié)議專用控制器電路,位于板卡的最左側(cè),如圖8所示。
圖9 整機(jī)實(shí)裝
圖8 HDLC串行通訊板
2塊HDLC串行通訊模塊板卡插入主機(jī)架,和其他模塊板卡一起構(gòu)成整機(jī)系統(tǒng),如圖9所示。
系統(tǒng)測(cè)試數(shù)據(jù)流如下,處理器通過(guò)北橋電路擴(kuò)展出PCI總線,通過(guò)接插件,并行信號(hào)進(jìn)入HDLC串行通訊模塊板卡,通過(guò)PCI橋電路擴(kuò)展出2路PCI分別接到2只HDLC協(xié)議專用控制器電路上,經(jīng)過(guò)HDLC協(xié)議處理與組幀后變?yōu)榇袛?shù)據(jù),串行數(shù)據(jù)經(jīng)過(guò)光藕電路隔離后從接插件輸出,信號(hào)離開HDLC串行通訊模塊板卡進(jìn)入后IO板卡輸出到外部設(shè)備。
實(shí)測(cè)結(jié)果通過(guò)串口上報(bào)給上位機(jī),與HDLC協(xié)議專用控制器電路相關(guān)的測(cè)試結(jié)果從序號(hào)133開始到161結(jié)束,如圖10所示。進(jìn)行了下列類別的功能實(shí)測(cè):PCI配置方式迸發(fā)數(shù)據(jù)傳輸、PCI配置方式單個(gè)數(shù)據(jù)傳輸、PCI存儲(chǔ)器方式迸發(fā)數(shù)據(jù)傳輸、PCI存儲(chǔ)器方式單個(gè)數(shù)據(jù)傳輸、基于HDLC協(xié)議的數(shù)據(jù)接收、基于HDLC協(xié)議的數(shù)據(jù)發(fā)射。測(cè)試結(jié)果證實(shí)了從前向通道輸入的132 Mbyte/s并行輸入數(shù)據(jù),經(jīng)過(guò)HDLC協(xié)議專用控制器電路處理后,輸出了25 Mbit/s的串行數(shù)據(jù);反之,25 Mbit/s的串行輸入數(shù)據(jù),經(jīng)過(guò)專用控制器電路處理后,得到132 Mbyte/s的并行輸出數(shù)據(jù)。2塊HDLC串行通訊模塊板卡共擴(kuò)展出了4路通道,100 Mbit/s的串行數(shù)據(jù)吞吐率了滿足了整機(jī)系統(tǒng)對(duì)帶寬的要求。
圖10 實(shí)測(cè)結(jié)果
為了滿足地面衛(wèi)星通訊等高速數(shù)據(jù)傳輸領(lǐng)域的要求,設(shè)計(jì)了一款支持PCI總線的HDLC協(xié)議專用控制器電路,PCI接口速率可達(dá)到132Mbyte/s,該電路可實(shí)現(xiàn)上位機(jī)和外部通訊設(shè)備數(shù)據(jù)的高速、透明傳輸,已成功應(yīng)用于整機(jī)系統(tǒng)中。
[1]PCISpecial Interest Group.PCI Local Bus Specification Revision2.3[S].2001.
[2]ISO/IEC 13239,Information Technology+Telecommunica tion Exchange between Systems+High+Level Data Link Control(HDLC)Procedures[S].Switzerland:Jul,2002.
[3]應(yīng)三叢.基于FPGA的HDLC協(xié)議控制器[J].四川大學(xué)學(xué)報(bào):自然科學(xué)版,2008(40):116+120.
[4]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].第二版,北京:電子工業(yè)出版社,1999.
[5]HENRIKSSON T,LIU DAKE.Implementation of Fast CRC Calcul+ation[C]//Proceedings of t he Asia and South Pacific,DesignAutomatation Conference.2003:563+564.
[6]FAWCETT B K.DESIGNING PCIBus InterfaceswithPro+ grammable Logic[C].//Proceedings of the Eighth Annu+ al IEEE International,1995.321+324.
[7]張煒,沈德剛.基于FPGA的PCI總線接口設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2009,37(5):174+177.
[8]IEEE.Hardware Description Language Based on the Ver+ ilog Hardware Description Language[S].IEEE Std 1364+1995,1955.
E+mail:limingic@163.com
劉富發(fā)(1987—)男,河南濮陽(yáng)人,碩士,主要研究方向?yàn)锳SIC設(shè)計(jì);
魏敬和(1971—)男,安徽安慶人,博士,主要研究方向?yàn)橄到y(tǒng)芯片SoC設(shè)計(jì)。
Design of HDLC Protocol Controller w ith PCI Bus
QIAN Lin+ming,LIU Fu+fa,WEIJing+he
(The 58th Research Institute of CETC,Jiangsu Wuxi214005,China)
In terrestrial satellite communications,in order tomeet the demands of the faster PC andmore reliable receive external communicationdata,a high+level data link control(HDLC)Protocol Controller with Peripheral Component Interconnect(PCI)bus is designed.The structure of circuit system and the achieved of specific modules are described and the simulation waveforms is given.The simulation tests show that the circuit can meet the system requirements and PCI interface rates up to 132 Mbyte/s.
HDLC;PCIbus;controller
TN47
:A
:1673+5692(2014)06+648+05
錢黎明(1981—),男,安徽蕪湖人,碩士,主要研究方向?yàn)橄到y(tǒng)芯片SoC設(shè)計(jì);
10.3969/j.issn.1673+5692.2014.06.019
2014+08+19
2014+10+24