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