《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于PCI總線的HDLC通信卡的設(shè)計(jì)與實(shí)現(xiàn)
基于PCI總線的HDLC通信卡的設(shè)計(jì)與實(shí)現(xiàn)
來(lái)源:電子技術(shù)應(yīng)用2012年第8期
鄧?guó)P軍,張 龍,,王益忠
中國(guó)衛(wèi)星海上測(cè)控部,,江蘇 江陰214431
摘要: 一種基于PCI9054和FPGA的HDLC通信卡設(shè)計(jì)方案和功能實(shí)現(xiàn),。介紹了該HDLC通信板卡的設(shè)計(jì)思路和系統(tǒng)組成、PCI總線設(shè)計(jì)的關(guān)鍵技術(shù)和FPGA的選型,、簡(jiǎn)化HDLC協(xié)議的FPGA實(shí)現(xiàn)及接口控制邏輯,,給出了該HDLC通信卡數(shù)據(jù)收發(fā)的時(shí)序圖。
關(guān)鍵詞: HDLC PCI9054 PCI總線 FPGA
中圖分類號(hào): TN47
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)08-0030-03
Design and implementation of HDLC communication card based on PCI-bus
Deng Fengjun,,Zhang Long,,Wang Yizhong
China Satellite Maritime Tracking & Control Department, Jiangyin 214431,China
Abstract: A design project and function implementation of a kind of HDLC communication card based on PCI bus is introduced in the paper. It introduces the system architecture of the card firstly. Then, it descript the key technology of PCI bus and the choice of FPGA chip. Lastly, the hardware implementation of the simple HDLC protocol and the interface control logic have been introduced in detail, and the timing diagrams of data transmitting and receiving of the HDLC communication card are given.
Key words : HDLC,;FPGA,;PCI9054;PCI bus

    PCI總線及在其基礎(chǔ)上發(fā)展起來(lái)的CPCI總線,,在工業(yè)控制,、數(shù)據(jù)采集、信息通信,、航空航天等領(lǐng)域得到了廣泛的應(yīng)用,。高級(jí)數(shù)據(jù)鏈路控制(HDLC)是一個(gè)在同步網(wǎng)上傳輸數(shù)據(jù)并面向位的數(shù)據(jù)鏈路層協(xié)議,具有透明傳輸、 可靠性高,、傳輸效率高以及靈活性高等特點(diǎn),,可以實(shí)現(xiàn)點(diǎn)到點(diǎn)或者點(diǎn)到多點(diǎn)的數(shù)據(jù)傳輸,在路由器,、網(wǎng)關(guān)等通信或者網(wǎng)絡(luò)設(shè)備中應(yīng)用廣泛[1],。為了滿足實(shí)際工作的需要,并為后續(xù)系統(tǒng)升級(jí)提供拓展空間,,本文設(shè)計(jì)并實(shí)現(xiàn)了一款基于PCI總線,、符合HDLC協(xié)議的通信卡,以滿足高速數(shù)據(jù)傳輸?shù)男枰?。通信卡采用PCI總線控制器實(shí)現(xiàn)PCI總線接口設(shè)計(jì),,采用FPGA實(shí)現(xiàn)HDLC通信協(xié)議及接口邏輯設(shè)計(jì),采用RS-422標(biāo)準(zhǔn)對(duì)外通信,,實(shí)現(xiàn)與外系統(tǒng)的互連,。

1 HDLC通信卡總體方案
    通信卡主要采用PCI9054和FPGA構(gòu)成硬件系統(tǒng),其硬件結(jié)構(gòu)圖如圖1所示,。數(shù)據(jù)傳輸流程為:接收數(shù)據(jù)時(shí),,通過RS-422接口芯片接收數(shù)據(jù),數(shù)據(jù)格式滿足簡(jiǎn)化的HDLC協(xié)議,;通過FPGA內(nèi)部的HDLC模塊進(jìn)行數(shù)據(jù)接收和串并轉(zhuǎn)換,;然后在本地控制邏輯的控制下通過PCI9054以DMA方式傳給上位機(jī),實(shí)現(xiàn)數(shù)據(jù)的接收和判讀,;發(fā)送數(shù)據(jù)時(shí),,上位機(jī)軟件將數(shù)據(jù)以DMA方式傳給PCI9054再輸入FPGA,在其內(nèi)部HDLC模塊的作用下,,進(jìn)行數(shù)據(jù)并串轉(zhuǎn)換和HDLC協(xié)議轉(zhuǎn)換,,最后通過RS-422發(fā)送器進(jìn)行電平轉(zhuǎn)換和數(shù)據(jù)發(fā)送。預(yù)留SDRAM以滿足大容量數(shù)據(jù)通信需要,。

2 HDLC通信卡電路設(shè)計(jì)
2.1 總線接口設(shè)計(jì)

    PCI總線具有高性能,、低成本、開放性,、兼容性良好等優(yōu)點(diǎn),,但PCI總線具有嚴(yán)格的時(shí)序關(guān)系和電氣規(guī)范,使得開發(fā)工作量和難度比較大,。PCI總線一般都采用各IC生產(chǎn)商設(shè)計(jì)的PCI專用接口芯片進(jìn)行PCI總線設(shè)備的開發(fā),,以減少開發(fā)難度、降低工作量,?;诖丝紤],,在本設(shè)計(jì)中,采用PLX公司的PCI9054芯片進(jìn)行總線開發(fā)[2],。
    PCI9054芯片滿足PCI V2.2協(xié)議,,可作為橋接芯片在PCI總線和本地總線(local bus)之間提供信息傳輸,既可以作為兩個(gè)總線的主控設(shè)備去控制總線,,也可以作為兩個(gè)總線的目標(biāo)設(shè)備去響應(yīng)總線,。其本地總線可工作在M、C,、J三種模式,,可方便地與多種微處理器連接。在C模式下,,因本地總線的地址線和數(shù)據(jù)線分開,,時(shí)序與控制邏輯比較簡(jiǎn)單,得到了廣泛應(yīng)用[3],。因此本通信卡中,,PCI9054工作于C模式從設(shè)備方式,,本地總線時(shí)鐘采用40 MHz恒溫補(bǔ)償晶振,。PCI9054的PCI總線端引腳按照對(duì)應(yīng)關(guān)系與PCI總線金手指連接器相連,本地端地址總線為15 bit,,數(shù)據(jù)總線為32 bit,,控制總線包括ADS、BLAST,、LHOLD,、LHOLDA、LW/R#,、READY,、EOT#引腳,將它們分別與FPGA的IO口互連,。
2.2 FPGA芯片選型與設(shè)計(jì)
    HDLC協(xié)議是面向比特的高級(jí)數(shù)據(jù)鏈路控制規(guī)程,,具有強(qiáng)大的差錯(cuò)檢測(cè)功能、高效和同步傳輸?shù)奶攸c(diǎn),,利用它可以確保數(shù)據(jù)信息可靠互通,。市場(chǎng)上有許多使用簡(jiǎn)單的專用HDLC芯片,但由于HDLC標(biāo)準(zhǔn)的文本較多,,這些芯片出于專用目的難以通用于不同版本,,缺乏應(yīng)用靈活性,且其片內(nèi)存儲(chǔ)器容量有限,。另一種方法是通過軟件對(duì)MCU編程實(shí)現(xiàn)HDLC協(xié)議,,雖然功能靈活,、適應(yīng)性強(qiáng),但處理速度慢,、占用處理器資源多,,難以高速實(shí)現(xiàn)對(duì)HDLC數(shù)據(jù)的插“0”和去“0”操作,一般只適用于路數(shù)較少的低速場(chǎng)合[4],。
    為了實(shí)現(xiàn)與當(dāng)前系統(tǒng)HDLC協(xié)議的兼容,,本通信卡采用FPGA實(shí)現(xiàn)HDLC收發(fā)功能模塊,充分利用FPGA硬件可編程的特點(diǎn),,發(fā)揮其速度快,、靈活性高、并行處理信號(hào),、實(shí)時(shí)性能夠預(yù)測(cè)的優(yōu)勢(shì),。同時(shí),考慮到通信卡傳輸一幀數(shù)據(jù)的長(zhǎng)度通常為512 KB~1 KB,,而PCI9054的DMA只有32長(zhǎng)字FIFO,,且PCI讀寫速度與HDLC收發(fā)速度不一致,需要利用FIFO進(jìn)行數(shù)據(jù)緩存,,達(dá)到時(shí)序匹配的目的,。為了提高系統(tǒng)集成度及其可靠性,采用FPGA內(nèi)部存儲(chǔ)單元實(shí)現(xiàn)FIFO功能,。因此,,綜合考慮FPGA內(nèi)部存儲(chǔ)單元數(shù)量、IO引腳數(shù)量等,,選擇Altera公司的EP2C20-F240用于功能模塊開發(fā),。EP2C20F240為QFP封裝,可用IO口142個(gè),,內(nèi)部LE 18 752個(gè),,內(nèi)部RAM為239 616 bit,可以滿足系統(tǒng)開發(fā)需要,。
2.3 差分接口設(shè)計(jì)
    通信卡對(duì)外通信采用RS-422方式傳輸數(shù)據(jù),,傳輸頻率最高為768 kHz。因此,,選用MAXIM公司的RS-422發(fā)送器MAX3032E和接收器MAX3094E,,其數(shù)據(jù)傳輸率最高分別可達(dá)20 Mb/s和10 Mb/s,滿足數(shù)據(jù)高速傳輸需要,。
3 HDLC通信卡邏輯設(shè)計(jì)
    通信卡上的FPGA完成PCI9054本地總線數(shù)據(jù)讀寫時(shí)序邏輯的轉(zhuǎn)換,,實(shí)現(xiàn)HDLC收發(fā)模塊和FIFO數(shù)據(jù)緩存功能。設(shè)計(jì)中采用VHDL硬件描述語(yǔ)言實(shí)現(xiàn)各功能模塊,,利用Altera公司的集成開發(fā)環(huán)境Quartus II(11.0)完成相關(guān)的編譯,、調(diào)試,、下載等開發(fā)工作。
3.1 本地總線數(shù)據(jù)讀寫模塊
    PCI9054工作于C模式從設(shè)備方式,,采用分散/聚合(Scatter-Gather)DMA方式進(jìn)行數(shù)據(jù)快速傳輸,,以發(fā)揮其速度快的優(yōu)勢(shì)。根據(jù)PCI9054讀寫時(shí)序圖可知,,在C模式從設(shè)備方式下,,F(xiàn)PGA讀取PCI9054本地端ads_n和blast_n的引腳狀態(tài),判斷是單周期讀寫狀態(tài)還是猝發(fā)讀寫狀態(tài),,實(shí)現(xiàn)地址獲取和數(shù)據(jù)讀寫,,其狀態(tài)機(jī)如圖2所示。同時(shí),,在上位機(jī)讀數(shù)據(jù)完畢后,,如果讀FIFO為空則將EOT#引腳拉低,將數(shù)據(jù)傳輸結(jié)束信號(hào)上傳,,強(qiáng)行停止主機(jī)數(shù)據(jù)讀操作,。這就需要在DMA初始化過程中,設(shè)置DMAMODE寄存器的第14位為EOT#有效模式,。

3.2 HDLC通信模塊實(shí)現(xiàn)
    HDLC的標(biāo)準(zhǔn)幀格式如表1所示,,但HDLC也有由用戶定義的非標(biāo)準(zhǔn)幀格式,常用于點(diǎn)對(duì)點(diǎn)的通信中,。在非標(biāo)準(zhǔn)格式中,,地址段,、控制段,、CRC段是可選的。本通信卡主要用于點(diǎn)對(duì)點(diǎn)通信,,且采用簡(jiǎn)化的HDLC協(xié)議,,即省略地址段、控制段,、CRC段,。其中CRC校驗(yàn)功能由上位機(jī)軟件實(shí)現(xiàn)[4-5]。

    HDLC是面向位的,,在待傳數(shù)據(jù)中出現(xiàn)與標(biāo)志字一樣的數(shù)據(jù)時(shí),,如果不進(jìn)行處理,就會(huì)被誤認(rèn)為是幀邊界,。為了避免此錯(cuò)誤,,HDLC規(guī)定采用“零比特填充法”使一幀中兩個(gè)字段之間不會(huì)出現(xiàn)6個(gè)連續(xù)1。具體做法是:發(fā)送數(shù)據(jù)時(shí),,先進(jìn)行幀數(shù)據(jù)掃描,,只要發(fā)現(xiàn)有連續(xù)的5個(gè)1,,則立即插入一個(gè)0,以此保證數(shù)據(jù)中不會(huì)出現(xiàn)連續(xù)6個(gè)1,;接收數(shù)據(jù)時(shí),,先找到3E字段以確定幀的邊界,接著對(duì)其后的比特流進(jìn)行掃描,,每發(fā)現(xiàn)5個(gè)連續(xù)1就將其后的0刪除,,以此保證所傳比特流中不出現(xiàn)幀標(biāo)志,直到幀尾標(biāo)志出現(xiàn),,從而實(shí)現(xiàn)HDLC在鏈路層的“透明傳輸”,,保證發(fā)送端可以發(fā)送任意組合的比特流信息,而接收端都能準(zhǔn)確無(wú)誤地接收到[6],。
    FPGA中實(shí)現(xiàn)的簡(jiǎn)化HDLC模塊總體框圖如圖3所示,。讀寫FIFO采用Altera公司的LPM功能模塊實(shí)現(xiàn),大小可根據(jù)需要設(shè)置,,本通信卡設(shè)為512×32 bit,。發(fā)送數(shù)據(jù)時(shí),寫FIFO接收PC數(shù)據(jù)(總線寬度為32 bit),,首先進(jìn)行并串轉(zhuǎn)換,,再進(jìn)行插“0”操作,最后插入標(biāo)志字按位發(fā)送出去,,輸出數(shù)據(jù)Tx和輸出時(shí)鐘Tx_Clk保持同步,,整個(gè)過程由發(fā)送控制狀態(tài)機(jī)進(jìn)行控制。接收數(shù)據(jù)與發(fā)送數(shù)據(jù)過程相反,,由接收控制狀態(tài)機(jī)進(jìn)行控制,。其中輸入、輸出時(shí)鐘可以設(shè)置為68 kHz或者768 kHz,。

    發(fā)送控制狀態(tài)機(jī)和接收控制狀態(tài)機(jī)分別如圖4,、圖5所示。發(fā)送數(shù)據(jù)時(shí),,發(fā)送狀態(tài)機(jī)首先判斷寫FIFO是否有數(shù)據(jù),,若有數(shù)據(jù),則插入幀頭,,依次讀取FIFO數(shù)據(jù),,完成插“0”操作和插幀尾操作,并按照從低到高的順序發(fā)送數(shù)據(jù),,直至寫FIFO為空,。接收數(shù)據(jù)時(shí),首先搜索幀頭,,為了防止接收到連續(xù)兩個(gè)標(biāo)志字而把后一個(gè)標(biāo)志字誤認(rèn)為是數(shù)據(jù),,設(shè)置搜索數(shù)據(jù)狀態(tài)(Data_find),,若不是標(biāo)志字,則作為數(shù)據(jù)進(jìn)行去“0”操作,,完成串并轉(zhuǎn)換和幀尾檢測(cè),,并將接收到的數(shù)據(jù)以32 bit為單位,逐次寫入讀FIFO中,。當(dāng)一幀傳輸結(jié)束,,采用中斷信號(hào)通知上位機(jī)及時(shí)讀取數(shù)據(jù)。一旦檢測(cè)到丟棄序列(0x7F),,則結(jié)束對(duì)此幀數(shù)據(jù)的處理,,并清空讀FIFO里的數(shù)據(jù),同時(shí)上報(bào)PC機(jī)錯(cuò)誤信息,,請(qǐng)求發(fā)送方重新發(fā)送數(shù)據(jù),。

3.3 功能時(shí)序圖
    圖6、圖7分別給出了利用Quartus II的在線邏輯分析儀SignalTap II獲取的PCI寫數(shù)據(jù),、HDLC數(shù)據(jù)發(fā)送和HDLC接收,、PCI讀數(shù)據(jù)的時(shí)序波形圖。從圖中可以看到,,HDLC模塊正確實(shí)現(xiàn)了插“0”和去“0”操作,,并能與PCI9054進(jìn)行正確的數(shù)據(jù)收發(fā)。

 

 


    本文采用PCI總線控制器PCI9054和FPGA技術(shù)設(shè)計(jì)實(shí)現(xiàn)了一款符合簡(jiǎn)化HDLC協(xié)議的通信卡,,并已成功應(yīng)用于實(shí)際工作中,。實(shí)際應(yīng)用表明收發(fā)數(shù)據(jù)正確,可以滿足高速數(shù)據(jù)通信要求,。同時(shí),,該通信卡設(shè)計(jì)中預(yù)留了一定的擴(kuò)展空間,能夠根據(jù)需要進(jìn)行功能拓展,。本通信卡可應(yīng)用于信號(hào)處理,、數(shù)據(jù)通信等場(chǎng)合,對(duì)PCI總線應(yīng)用設(shè)計(jì)有一定的參考價(jià)值,。
參考文獻(xiàn)
[1] 羅文翰,張劍鋒.基于MPC860的HDLC通道驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2005,,31(15):66-68.
[2] 張素蘭,余國(guó)輝.基于PCI總線的高速串行通信模擬系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),,2007,,28(15):3617-3620.
[3] 陳斌,王成華,,夏永君.基于DSP和PCI的通用數(shù)據(jù)采集及處理卡實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,,2005(1):171-173.
[4] 羅力凡,,常春藤.基于VHDL的FPG開發(fā)快速入門·技巧·實(shí)例[M].北京:人民郵電出版社,2009.
[5] 陸園琳,,喬廬峰,,王志功.多通道高速HDLC處理器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子學(xué)報(bào),2003,,31(11):1630-1634.
[6] 馬萍,,唐衛(wèi)華,李緒志.基于PCIExpress總線高速數(shù)采卡的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,,2008,,28(9-1):116-118.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。