PCI總線及在其基礎(chǔ)上發(fā)展起來的CPCI總線,在工業(yè)控制、數(shù)據(jù)采集、信息通信、航空航天等領(lǐng)域得到了廣泛的應(yīng)用。高級數(shù)據(jù)鏈路控制(HDLC)是一個在同步網(wǎng)上傳輸數(shù)據(jù)并面向位的數(shù)據(jù)鏈路層協(xié)議,具有透明傳輸、可靠性高、傳輸效率高以及靈活性高等特點,可以實現(xiàn)點到點或者點到多點的數(shù)據(jù)傳輸,在路由器、網(wǎng)關(guān)等通信或者網(wǎng)絡(luò)設(shè)備中應(yīng)用廣泛。為了滿足實際工作的需要,并為后續(xù)系統(tǒng)升級提供拓展空間,本文設(shè)計并實現(xiàn)了一款基于PCI總線、符合HDLC協(xié)議的通信卡,以滿足高速數(shù)據(jù)傳輸?shù)男枰Mㄐ趴ú捎肞CI總線控制器實現(xiàn)PCI總線接口設(shè)計,采用FPGA實現(xiàn)HDLC通信協(xié)議及接口邏輯設(shè)計,采用RS一422標準對外通信,實現(xiàn)與外系統(tǒng)的互連。
1 HDLC通信卡總體方案
通信卡主要采用PCI9054和FPGA構(gòu)成硬件系統(tǒng),其硬件結(jié)構(gòu)圖如圖1所示。數(shù)據(jù)傳輸流程為:接收數(shù)據(jù)時,通過RS一422接口芯片接收數(shù)據(jù),數(shù)據(jù)格式滿足簡化的HDLC協(xié)議;通過FPGA內(nèi)部的HDI.C模塊進行數(shù)據(jù)接收和串并轉(zhuǎn)換;然后在本地控制邏輯的控制下通過PCI9054以DMA方式傳給上位機,實現(xiàn)數(shù)據(jù)的接收和判讀;發(fā)送數(shù)據(jù)時,上位機軟件將數(shù)據(jù)以DMA方式傳給PCI9054再輸入FPGA,在其內(nèi)部HDLC模塊的作用下,進行數(shù)據(jù)并串轉(zhuǎn)換和HDLC協(xié)議轉(zhuǎn)換,最后通過RS一422發(fā)送器進行電平轉(zhuǎn)換和數(shù)據(jù)發(fā)送。預(yù)留SDRAM以滿足大容量數(shù)據(jù)通信需要。
2 HDLC通信卡電路設(shè)計
2.1 總線接口設(shè)計
PCI總線具有高性能、低成本、開放性、兼容性良好等優(yōu)點,但PCI總線具有嚴格的時序關(guān)系和電氣規(guī)范,使得開發(fā)工作量和難度比較大。PCI總線一般都采用各IC生產(chǎn)商設(shè)計的PCI專用接口芯片進行PCI總線設(shè)的開發(fā),以減少開發(fā)難度、降低上作量;诖丝紤],在本設(shè)計中,采用PLX公司的PCI9054芯片進行總線開發(fā)。
PCI9054芯片滿足PCI V2.2協(xié)議,可作為橋接芯片在PCI總線和本地總線(10cal bus)之間提供信息傳輸,既可以作為兩個總線的主控設(shè)備去控制總線,也可以作為兩個總線的目標設(shè)備去響應(yīng)總線。其本地總線可工作在M、C、J三種模式,可方便地與多種微處理器連接。在C模式下,因本地總線的地址線和數(shù)據(jù)線分開,時序與控制邏輯比較簡單,得到了廣泛應(yīng)用[31。因此本通信卡中,PCI9054工作于C模式從設(shè)備方式,本地總線時鐘采用40 MHz恒溫補償晶振。PCt9054的PCI總線端引腳按照對應(yīng)關(guān)系與PCI總線金手指連接器相連,本地端地址總線為15 bit,數(shù)據(jù)總線為32 bit,控制總線包括ADS、BLAST、LHOLD、LHOLDA、LW/R#、READY、EOT#引腳,將它們分別與FPGA的10口互連。
2.2 FPGA芯片選型與設(shè)計
HDLC協(xié)議是面向比特的高級數(shù)據(jù)鏈路控制規(guī)程,具有強大的差錯檢測功能、高效和同步傳輸?shù)奶攸c,利用它可以確保數(shù)據(jù)信息可靠互通。市場上有許多使用簡單的專用HDLC芯片,但由于HDLC標準的文本較多,這些芯片出于專用目的難以通用于不同版本,缺乏應(yīng)用靈活性,且其片內(nèi)存儲器容量有限。另一種方法是通過軟件對MCU編程實現(xiàn)HDLC協(xié)議,雖然功能靈活、適應(yīng)性強,但處理速度慢、占用處理器資源多,難以高速實現(xiàn)對HDLC數(shù)據(jù)的插“0”和去“0”操作,一般只適用于路數(shù)較少的低速場合141。
為了實現(xiàn)與當前系統(tǒng)HDLC協(xié)議的兼容,本通信卡采用FPGA實現(xiàn)HDLC收發(fā)功能模塊,充分利用FPGA硬件可編程的特點,發(fā)揮其速度快、靈活性高、并行處理信號、實時性能夠預(yù)測的優(yōu)勢。同時,考慮到通信卡傳輸一幀數(shù)據(jù)的長度通常為512 KB~1 KB,而PCI9054的DMA只有32長字FIFO,且PCI讀寫速度與HDLC收發(fā)速度不一致,需要利用FIFO進行數(shù)據(jù)緩存,達到時序匹配的目的。為了提高系統(tǒng)集成度及其可靠性,采用FPGA內(nèi)部存儲單元實現(xiàn)FIFO功能。因此,綜合考慮FPGA內(nèi)部存儲單元數(shù)量、10引腳數(shù)量等,選擇Altera公司的EP2C20一F240用于功能模塊開發(fā)。EP2C20F240為QFP封裝,可用IO口142個,內(nèi)部LE 18 752個,內(nèi)部RAM為239 616 bit,可以滿足系統(tǒng)開發(fā)需要。
2.3 差分接口設(shè)計
通信卡對外通信采用RS一422方式傳輸數(shù)據(jù),傳輸頻率最高為768 kHz。因此,選用MAXIM公司的RS一422發(fā)送器MAX3032E和接收器MAx3094E,其數(shù)據(jù)傳輸率最高分別可達20 Mb/s和10 Mb/s,滿足數(shù)據(jù)高速傳輸需要。
3 HDLC通信卡邏輯設(shè)計
通信卡上的FPGA完成PCI9054本地總線數(shù)據(jù)讀寫時序邏輯的轉(zhuǎn)換,實現(xiàn)HDLC收發(fā)模塊和FIFO數(shù)據(jù)緩存功能。設(shè)計中采用VHDL硬件描述語言實現(xiàn)各功能模塊,利用Ahera公司的集成開發(fā)環(huán)境Quartus II(11.0)完成相關(guān)的編譯、調(diào)試、下載等開發(fā)工作。
3.1 本地總線數(shù)據(jù)讀寫模塊
PCI9054工作于C模式從設(shè)備方式,采用分散/聚合(Scatter—Gather)DMA方式進行數(shù)據(jù)快速傳輸,以發(fā)揮其速度快的優(yōu)勢。根據(jù)PCI9054讀寫時序圖可知,在C模式從設(shè)備方式下,F(xiàn)PGA讀取PCI9054本地端ads_n和hlast_n的引腳狀態(tài),判斷是單周期讀寫狀態(tài)還是猝發(fā)讀寫狀態(tài),實現(xiàn)地址獲取和數(shù)據(jù)讀寫,其狀態(tài)機如圖2所示。同時,在上位機讀數(shù)據(jù)完畢后,如果讀FI.FO為空則將EOT#引腳拉低,將數(shù)據(jù)傳輸結(jié)束信號上傳,強行停止主機數(shù)據(jù)讀操作。這就需要在DMA初始化過程中,設(shè)置DMAMODE寄存器的第14位為EOT#有效模式。
3.2 HDLC通信模塊實現(xiàn)
HDLC的標準幀格式如表1所示,但HDLC也有由用戶定義的非標準幀格式,常用于點對點的通信中。在非標準格式中,地址段、控制段、CRC段是可選的。本通信卡主要用于點對點通信,且采用簡化的HDLC協(xié)議,即省略地址段、控制段、CRC段。其中CRC校驗功能由上位機軟件實現(xiàn)。
HDLC是面向位的,在待傳數(shù)據(jù)中出現(xiàn)與標志字一樣的數(shù)據(jù)時,如果不進行處理,就會被誤認為是幀邊界。為了避免此錯誤,HDLC規(guī)定采用“零比特填充法”使一幀中兩個字段之間不會出現(xiàn)6個連續(xù)1。具體做法是:發(fā)送數(shù)據(jù)時,先進行幀數(shù)據(jù)掃描,只要發(fā)現(xiàn)有連續(xù)的5個1,則立即插入一個0,以此保證數(shù)據(jù)中不會出現(xiàn)連續(xù)6個1;接收數(shù)據(jù)時,先找到3E字段以確定幀的邊界,接著對其后的比特流進行掃描,每發(fā)現(xiàn)5個連續(xù)1就將其后的0刪除,以此保證所傳比特流中不出現(xiàn)幀標志,直到幀尾標志出現(xiàn),從而實現(xiàn)HDLC在鏈路層的“透明傳輸”,保證發(fā)送端可以發(fā)送任意組合的比特流信息,而接收端都能準確無誤地接收到。
FPGA中實現(xiàn)的簡化HDLC模塊總體框圖如圖3所示。讀寫FIFO采用Ahera公司的LPM功能模塊實現(xiàn),大。小可根據(jù)需要設(shè)置,本通信卡設(shè)為512x32 bit。發(fā)送數(shù)據(jù)舅時,寫FIFO接收Pc數(shù)據(jù)(總線寬度為32 bit),首先進行曼并串轉(zhuǎn)換,再進行插“O”操作,最后插入標志字按位發(fā)送出去,輸出數(shù)據(jù)Tx和輸出時鐘Tx_Clk保持同步,整個過程由發(fā)送控制狀態(tài)機進行控制。接收數(shù)據(jù)與發(fā)送數(shù)據(jù)過程相反,由接收控制狀態(tài)機進行控制。其中輸入、輸出時鐘可以設(shè)置為68 kHz或者768 kHz。
發(fā)送控制狀態(tài)機和接收控制狀態(tài)機分別如圖4、圖5所示。發(fā)送數(shù)據(jù)時,發(fā)送狀態(tài)機首先判斷寫FIFO是否有數(shù)據(jù),若有數(shù)據(jù),則插入幀頭,依次讀取FIFO數(shù)據(jù),完成插“0”操作和插幀尾操作,并按照從低到高的順序發(fā)送數(shù)據(jù),直至寫FIFO為空。接收數(shù)據(jù)時,首先搜索幀頭,為了防止接收到連續(xù)兩個標志字而把后一個標志字誤認為是數(shù)據(jù),設(shè)置搜索數(shù)據(jù)狀態(tài)(Data_find),若不是標志字,則作為數(shù)據(jù)進行去“0”操作,完成串并轉(zhuǎn)換和幀尾檢測,并將接收到的數(shù)據(jù)以32 bit為單位,逐次寫入讀FIFO中。當一幀傳輸結(jié)束,采用中斷信號通知上位機及時讀取數(shù)據(jù)。一旦檢測到丟棄序列(0x7F),則結(jié)束對此幀數(shù)據(jù)的處理,并清空讀FIFO里的數(shù)據(jù),同時上報PC機錯誤信息,請求發(fā)送方重新發(fā)送數(shù)據(jù)。
3.3 功能時序圖
圖6、圖7分別給出了利用Quartus II的在線邏輯分析儀SignalTap II獲取的PCI寫數(shù)據(jù)、HDLC數(shù)據(jù)發(fā)送和HDLC接收、PCI讀數(shù)據(jù)的時序波形圖。從圖中可以看到,HDLC模塊正確實現(xiàn)了插“O”和去“0”操作,并能與PCI9054進行正確的數(shù)據(jù)收發(fā)。
本文采用PCI總線控制器PCI9054和FPGA技術(shù)設(shè)計實現(xiàn)了一款符合簡化HDLC協(xié)議的通信卡,并已成功應(yīng)用于實際工作中。實際應(yīng)用表明收發(fā)數(shù)據(jù)正確,可以滿足高速數(shù)據(jù)通信要求。同時,該通信卡設(shè)計中預(yù)留了一定的擴展空間,能夠根據(jù)需要進行功能拓展。本通信卡可應(yīng)用于信號處理、數(shù)據(jù)通信等場合,對PCI總線應(yīng)用設(shè)計有一定的參考價值。
實驗結(jié)果表明,基于ARM9和CPLD硬件平臺,在嵌入式Linux操作系統(tǒng)下,系統(tǒng)能夠?qū)崿F(xiàn)等速跟蹤、位置定點和正弦跟蹤等功能,滿足控制實時性要求,可實現(xiàn)伺服控制。系統(tǒng)體積小、成本低、功耗小、接口豐富、便于開發(fā),且Linux系統(tǒng)具有很好的文件管理功能,有助于實驗數(shù)據(jù)的存儲和導(dǎo)出,便于實驗結(jié)果分析。系統(tǒng)進一步完善后可將控制程序設(shè)計成圖形界面,利用觸摸屏輸入和顯示伺服控制結(jié)果,則可實現(xiàn)控制結(jié)果實時顯示,可視化效果好,整個系統(tǒng)可脫離計算機工作,具有廣泛的應(yīng)用價值。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:基于PCI總線的HDLC通信卡的設(shè)計與實現(xiàn)
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/1083947585.html