趙桂芳
【摘 要】本文利用PCI總線規(guī)范及應(yīng)用作為切入點,系統(tǒng)概述了目前PCI總線的研究現(xiàn)狀。PCI總線因其優(yōu)越的性能,高度的兼容性在計算機系統(tǒng)中廣泛應(yīng)用。通過PCI總線完成串行數(shù)據(jù)的通訊和數(shù)字量模擬量的轉(zhuǎn)換具有重要實用意義。在掌握PCI總線架構(gòu)及的前提下,我們希望運用橋芯片PCI9054搭建PCI多通道I/O卡、AIAO卡。本文主要通過研制原則、功能分析以及研究方案等方面敘述了研究思路。
【關(guān)鍵詞】PCI總線;FPGA;PCI9054;數(shù)據(jù)傳輸
中圖分類號: TP274.2文獻標識碼: A文章編號: 2095-2457(2019)10-0089-004
DOI:10.19694/j.cnki.issn2095-2457.2019.10.037
Research on Multi-channel I/O and AIAO Cards Based on PCI Bus Technology
ZHAO Gui-fang
(The 5720 factory of the Chinese Peoples Liberation Army, Wuhu Anhui 241007, China)
【Abstract】Using the PCI bus specification and application as a starting point, this paper summarizes the research status of the current PCI bus. The PCI bus is widely used in computer systems due to its superior performance and high compatibility. It is of great practical significance to complete serial data communication and digital analog conversion through the PCI bus. On the basis of mastering the PCI bus architecture, we hope to build a PCI multi-channel I/O card and AAIO card using the bridge chip PCI9054. This paper mainly describes the research ideas through research principles, functional analysis and research programs.
【Key words】PCI bus; FPGA; PCI9054; Data transmission
0 前言
隨著計算機技術(shù)在各領(lǐng)域的不斷應(yīng)用,市場對計算機性能提高的需求從未停止。IO總線系統(tǒng)作為計算機中連接計算機處理器與外圍設(shè)備的部分常被看作整個計算機的骨架。計算機內(nèi)部的IO總線決定了計算機的架構(gòu),直接影響計算機的性能。PCI總線作為最常用的計算機IO總線其各自功能模塊的研制自然也變成為研究的熱點。
本文首先總結(jié)分析了PCI總線研究現(xiàn)狀,然后分別從研制原則、功能分析以及研究方案等方面,系統(tǒng)的描述了研究總體思路,后續(xù)將對總線模塊的開發(fā)做具體闡述。
1 PCI總線概述
PCI的含義為外圍器件互聯(lián)(Peripheral Component Interconnect)。PCI總線能夠?qū)崿F(xiàn)快速訪問系統(tǒng)內(nèi)存存儲器,可以使處理器以接近自身最高速的速度訪問外圍設(shè)備。一個基于PCI總線構(gòu)建的系統(tǒng)至少應(yīng)包含兩級橋結(jié)構(gòu)。一是處理器至PCI的橋稱為主橋(Host橋),其主要功能是將處理器接口的總線周期轉(zhuǎn)換為PCI周期。二則是PCI至擴展總線的橋稱為擴展總線橋,其主要功能是將為PCI總線提供如ISA、USB等擴展接口。
存在于PCI總線上的設(shè)備可以是主設(shè)備、從設(shè)備或既有主設(shè)備功能也有從設(shè)備功能。PCI總線主設(shè)備可以發(fā)起總線傳輸?shù)仁聞?wù),對PCI總線從設(shè)備進行訪問。一個PCI總線的帶載能力是有限的,總線上負載的增加會使電平信號趨于穩(wěn)定的時間變長。故為使一個系統(tǒng)中盡可能多的加入負載常使用多級結(jié)構(gòu),運用PCI-PCI橋連接上一級、下一級PCI總線。
2 PCI總線研究現(xiàn)狀
早期計算機架構(gòu)中,系統(tǒng)存儲和外圍設(shè)備通過ISA總線與處理器連接。之后VESA總線的出現(xiàn)使得計算機系統(tǒng)第一次有了局部總線的概念。ISA總線和VESA總線便是IO總線系統(tǒng)的雛形。
之后出現(xiàn)了PCI總線是由Intel公司推出的一種總線標準。Intel公司使用VESA總線標準,當時的更新也只是針對VESA總線進行局部修補,并不能解決長期問題。VESA總線僅可有限的支持突發(fā)傳輸,考慮到之后五至十年的發(fā)展,Intel決定不再支持此總線,并統(tǒng)一定義了PCI總線規(guī)范,以解決不同處理器應(yīng)用不同總線的問題。PCI總線是一個通用的,不受限與處理器的總線系統(tǒng)。在PCI總線系統(tǒng)中,不同的總線通過橋芯片進行轉(zhuǎn)接。1992年6月,Intel正式發(fā)布了PCI總線技術(shù)規(guī)范1.0;1993年4月發(fā)布升級版的2.0。此時的PCI總線工作頻率為33.3MHz。1995年發(fā)布的修改版的規(guī)范2.1支持66.6MHz工作頻率,傳輸速率也得到了巨大提升。PCI總線也被專用于與外部設(shè)備互聯(lián),形成了我們所說的IO總線的概念。1998年完成規(guī)范2.2。1999年又發(fā)布了PCI-X總線規(guī)范,傳輸性能進一步提高,傳輸協(xié)議也得到了更多合理的改進。
再后來又演化出了PCI Express總線標準,并行傳輸被改進為串行傳輸,采用點對點的互聯(lián)。
PCI總線兼容性能十分出色,功能全面,能夠支持多種外圍設(shè)備,并且數(shù)據(jù)傳輸速度迅速、延時短,所以可以很好的連接CPU設(shè)備。目前針對PCI總線的研究主要集中在以下幾個方面:
2.1 PCI總線的發(fā)展歷程
文獻[1]詳述了PCI總線自誕生以來經(jīng)歷的幾個發(fā)展階段:PCI、PCI-X、PCI EXPRESS。最早的PCI總線是是穿插在CPU和系統(tǒng)總線的一級總線,通過橋接電路完成了對它的管理工作,保證了上下接口的協(xié)調(diào)性,并對數(shù)據(jù)進行傳輸。PCI-X總線的工作頻率更高,數(shù)據(jù)位數(shù)達到64位,支持更多通信協(xié)議,傳輸效率大大提高。PCI Express總線能夠?qū)崿F(xiàn)點對點的傳輸。傳輸方式分為兩種,即雙向傳輸模式和數(shù)據(jù)分通道。其中,數(shù)據(jù)的分通道傳輸是對x1、x2、x4、x8、x12、x16和x32等多通道的連接,x1單向傳輸帶寬速度為250MB/s,雙向傳輸帶寬則為500MB/s。
2.2 PCI驅(qū)動及引用程序開發(fā)
文獻[2]應(yīng)用WDM(Windows Driver Mode)開發(fā)Windows操作系統(tǒng)PCI硬件的驅(qū)動程序,對硬件進行操作。WDM(Windows Driver Mode)屬于操作系統(tǒng)的內(nèi)核模式,它是Microsoft公司開發(fā)出的一種驅(qū)動程序開發(fā)模型,旨在進一步降低所需驅(qū)動程序復(fù)雜性,來簡化驅(qū)動程序的開發(fā),其驅(qū)動程序是由運行于內(nèi)核模式的系統(tǒng)級代碼組成。并在驅(qū)動程序的基礎(chǔ)上開發(fā)對應(yīng)的控制軟件。
2.3 通過PCI接口協(xié)議芯片實現(xiàn)PCI數(shù)據(jù)與外部通訊
文獻[3]應(yīng)用協(xié)議芯片PCI9052解析PCI總線信號,實現(xiàn)其與ISA總線互聯(lián)。文獻[4]通過協(xié)議芯片PCI9054將PCI數(shù)據(jù)向EEPROM進行讀寫。文獻[5]介紹了協(xié)議芯片PCI9054的內(nèi)部架構(gòu),以及實現(xiàn)通信的原理。文獻[6]基于“FPGA+PCI9054”架構(gòu)開發(fā)了PCI通訊卡。文獻[7]基于“PLD+PCI9054”架構(gòu)制作PCI總線通信模塊。文獻[8]介紹了PCI9054配套的開發(fā)軟件PLXSDK中有關(guān)協(xié)議芯片中斷的運用方式。
2.4 通過可編程邏輯器件設(shè)計PCI接口
通過FPGA或CPLD利用硬件語言編寫軟核,實現(xiàn)PCI總線接口的功能。其內(nèi)部的各功能模塊采用電路圖及Verilog HDL或VHDL語言等方式實現(xiàn)。需要完成的工作包括數(shù)據(jù)傳輸總線,中斷總線,等總線模塊功能。
文獻[9]基于FPGA,從PCI協(xié)議的介紹、總體設(shè)計思路、各功能模塊設(shè)計、電路仿真等角度設(shè)計PCI接口。通過有限狀態(tài)機實現(xiàn)PCI接口時序。
文獻[10]運用CPLD構(gòu)成PCI接口系統(tǒng),其具有潔、可靠等優(yōu)點,是一種行之有效的設(shè)計途徑。在接口的CPLD設(shè)計中,根據(jù)PCI總線傳輸時序來進行狀態(tài)機構(gòu)造,并使用VHDL語言進行功能模擬,從而達到預(yù)期目的。
2.5 基于PCI總線DMA傳輸實現(xiàn)
DMA技術(shù)是一種由DMA控制器控制的存儲器與外部設(shè)備或存儲器之間大數(shù)據(jù)量傳輸?shù)姆椒?,具有傳輸速度高,CPU額外開銷小的優(yōu)點。
文獻[11]介紹了一種使用FPGA在32位PCI接口內(nèi)實現(xiàn)DMA塊模式傳輸?shù)脑O(shè)計方法,硬件部分基于Xilinx Virtex-II Pro芯片,通過一個OPB-PCI總線橋芯片實現(xiàn)了PowerPC與主機間的PCI接口通信,不僅實現(xiàn)了PCI的突發(fā)式傳輸,發(fā)揮了PCI總線的高性能,而且將CPU從繁雜的I/O事務(wù)中解放出來。
文獻[12]針對數(shù)據(jù)采集系統(tǒng)中的高速數(shù)據(jù)傳輸需求,針對DSP芯片的PCI接口進行介紹,并通過其實現(xiàn)了PCI總線的DMA數(shù)據(jù)傳輸。
文獻[13]采用FPGA、雙端口RAM和PCI9054橋接芯片實現(xiàn)DMA傳輸。
2.6 基于PCI總線的系統(tǒng)功能實現(xiàn)
由于PCI總線為高速并行總線,可穩(wěn)定處理大量數(shù)據(jù)傳輸,因此常常被用于各種復(fù)雜系統(tǒng)當中。文獻[14]介紹了基于PCI總線的高精度數(shù)據(jù)采集系統(tǒng)的設(shè)計方法。文獻[15]設(shè)計了具有高精度、高穩(wěn)定性及高準確性的多通道信號采集傳輸系統(tǒng)。文獻[16]設(shè)計以數(shù)字信號處理器(DSP)為核心處理器,基于高性能PC機和PCI總線的數(shù)字場景仿真系統(tǒng)。文獻[17]采用PCI-1710數(shù)據(jù)采集卡的D/A輸出實現(xiàn)異步電動機變頻調(diào)速方法,對該方法的硬件和程序進行了設(shè)計和實驗。
1999年,Microsoft、Intel等公司,規(guī)定以后生產(chǎn)的個人計算機將不再使用ISA總線,取而代之的是PCI總線標準。但在工業(yè)控制領(lǐng)域仍然保留著大量的ISA接口的設(shè)備。文獻[18]研究了PCI-to-ISA的轉(zhuǎn)接技術(shù)。
軍用1553B總線是美國軍方為了軍用飛機的信號互聯(lián)制定的一種總線標準,在軍用航空航天領(lǐng)域得到了廣泛的應(yīng)用。文獻[19]設(shè)計實現(xiàn)了PCI總線與1553B總線的數(shù)據(jù)傳輸。
3 PCI多通道I/O卡、AIAO卡研究
3.1 研制原則
PCI總線接口對從器件要求最少47個引腳,主器件49個引腳,其中包括:數(shù)據(jù)、地址、接口控制、仲裁、系統(tǒng)功能。對某些器件PERR#、SERR#引腳為可選引腳,從器件要求最少45個引腳,主器件47個引腳。
AD[31:0]:地址和數(shù)據(jù)復(fù)用引腳。一個總線傳輸周期先進行一個地址段傳輸,后面跟著的一個或多個數(shù)據(jù)段,支持突發(fā)模式的讀寫。
C/BE[3:0]#:總線命令和字節(jié)使能復(fù)用引腳。在傳輸周期的地址段定義總線命令,在數(shù)據(jù)段用作字節(jié)使能。
FRAME#:由當前主設(shè)備驅(qū)動,表明一個訪問的開始和持續(xù)時間。FRAME#有效時表示總線傳輸開始。FRAME#處于有效狀態(tài)數(shù)據(jù)傳輸繼續(xù),F(xiàn)RAME#無效時預(yù)示傳輸結(jié)束,傳輸周期處于最后一個數(shù)據(jù)段。
IRDY#:表明主設(shè)備完成當前數(shù)據(jù)段傳輸?shù)哪芰Α?/p>
TRDY#:表明目標設(shè)備(被選中的器件)完成當前數(shù)據(jù)段傳輸?shù)哪芰Α?/p>
STOP#:表明當前目標設(shè)備要求主設(shè)備停止當前傳輸。
DEVSEL#:當被驅(qū)動時,表明驅(qū)動設(shè)備已經(jīng)將其地址解碼為當前訪問目標。作為輸入,表明總線上是否有設(shè)備被選擇。
IDSEL:配置讀寫事務(wù)時用作片選。
REQ#:通知總線裁決當前設(shè)備必須使用總線。
GNT#:表明總線訪問被允許。
PAR:AD[31:0]與C/BE[3:0]#的偶校驗位。
3.2 功能分析
本研究的主要目標是了解PCI總線的基本工作方式,基于橋芯片PCI9054構(gòu)建PCI總線模塊。通過PCI總線運用所研制模塊完成對數(shù)字信號、模擬信號的雙向傳輸、采集具有重要實用意義。綜上所述,這里對PCI總線模塊研究提出了以下具體需求:
3.2.1 研制基于PCI9054的多通道I/O卡
通過PCI協(xié)議芯片實現(xiàn)DMA傳輸,并將PCI并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),通過串行數(shù)據(jù)總線三路R422和一路RS232最終實現(xiàn)PCI總線數(shù)據(jù)與外界交互。
3.2.2 研制基于PCI9054的AIAO卡
通過PCI總線數(shù)據(jù),建立通訊協(xié)議,實現(xiàn)對數(shù)字量、模擬量轉(zhuǎn)換模塊的控制,達到通過數(shù)字量控制、采集模擬量的目的。
3.3 研究思路
3.3.1 為實現(xiàn)PCI接口功能,研制基于PCI9054的多通道I/O卡、基于PCI9054的AIAO卡,并給出硬件選型和設(shè)計。思路如下:
(1)對PCI接口模塊需求進行梳理,明確測試所需的資源,以及測試指標;
(2)根據(jù)PCI功能模塊,對PCI板卡模塊進行劃分,選擇制作基于PCI9054的多通道I/O卡、基于PCI9054的AIAO卡。根據(jù)功能選擇匹配的硬件資源,設(shè)計、開發(fā)板卡。
3.3.2 開發(fā)一套PCI板卡軟件,實現(xiàn)在Windows操作系統(tǒng)下,測試PCI板卡各模塊。軟件具體功能如下:
(1)多通道I/O卡將FPGA作為控制PCI9054協(xié)議接口芯片且完成串行數(shù)據(jù)輸出的處理器,基于Verilog HDL語言在可編程邏輯器件內(nèi)實現(xiàn)功能控制。
(2)AIAO卡將FPGA芯片作為控制PCI9054協(xié)議接口芯片且完成數(shù)模轉(zhuǎn)換的處理器,基于Verilog ?HDL語言在可編程邏輯器件內(nèi)實現(xiàn)功能控制。
(3)開發(fā)多通道I/O卡測試軟件,可在Windows操作系統(tǒng)下,完成PCI數(shù)據(jù)發(fā)送接收,以測試多通道I/O卡功能。
(4)開發(fā)AIAO卡測試軟件,可在Windows操作系統(tǒng)下,完成PCI命令發(fā)送接收,根據(jù)命令幀格式控制AIAO卡,以測試數(shù)模轉(zhuǎn)換功能。
3.4 研制方案
3.4.1 硬件方案
(1)多通道I/O卡硬件架構(gòu)
由于PCI接口信號較為復(fù)雜直接解析略顯繁瑣,所以本文設(shè)計的PCI多通道I/O卡并不直接采集PCI信號,而是采用PCI協(xié)議芯片獲取總線信號。
板卡通過PCI協(xié)議芯片獲得數(shù)據(jù)后由可編程門陣列(FPGA)進行接收、緩存,并轉(zhuǎn)換為串行數(shù)據(jù),通過串行數(shù)據(jù)總線三路R422和一路RS232最終實現(xiàn)PCI總線數(shù)據(jù)與外界交互。
(2)AIAO卡硬件架構(gòu)
PCI AIAO卡的PCI端口則同樣使用PCI協(xié)議芯片+FPGA架構(gòu)。外部器件則改為A/D轉(zhuǎn)換模塊與D/A轉(zhuǎn)換模塊,以便同時實現(xiàn)兩種功能。
3.4.2 軟件方案
1)FPGA邏輯
多通道I/O卡和PCI AIAO卡同時采用PCI協(xié)議芯片與PCI接口對接,所以兩塊板卡的可編程門陣列(FPGA)軟件將使用相同的時序控制模塊。根據(jù)總線規(guī)范PCI總線支持突發(fā)模式的DMA傳輸方式,且在DMA模式下的數(shù)據(jù)傳輸過程不需要CPU參與,大幅度提高CPU應(yīng)用效率。在PCI協(xié)議芯片時序控制部分,將控制協(xié)議芯片采用DMA傳輸模式。
(1)多通道I/O卡軟件架構(gòu)
該板卡硬件主要實現(xiàn)的功能為解析PCI端口數(shù)據(jù)、命令信號,并進行緩存,最終轉(zhuǎn)換為串行總線信號,根據(jù)命令信號選擇與外界通信的串行接口。所以可編程門陣列(FPGA)軟件主要部分為:PCI協(xié)議芯片時序控制、緩存FIFO、3路R422串行數(shù)據(jù)收發(fā)以及一路R232串行數(shù)據(jù)收發(fā)。
(2)AIAO卡軟件架構(gòu)
該板卡硬件主要實現(xiàn)的功能為解析PCI端口數(shù)據(jù)、命令信號,并進行緩存,控制A/D模塊進行數(shù)據(jù)采集,控制D/A模塊進行模擬量輸出。所以可編程門陣列(FPGA)軟件主要部分為:PCI協(xié)議芯片時序控制、A/D模塊時序控制以及D/A模塊時序控制。
2)上位機測試軟件
工控機中的上位機測試軟件主要是對PCI端口進行操作,需要包含PCI9054驅(qū)動PLX_SDK,以便通過接口配置協(xié)議芯片。通過驅(qū)動中的API函數(shù)完成PCI端口DMA傳輸?shù)牟僮鳌?/p>
4 結(jié)束語
本文通過分析PCI總線研究現(xiàn)狀,構(gòu)想了基于PCI9054的多通道I/O卡和AIAO卡的研制方案。希望通過PCI模塊的研制實現(xiàn)PCI總線對數(shù)字信號、模擬信號的雙向傳輸、采集。
【參考文獻】
[1]樊江鋒,陳帥,葉波,雷婉星.PCI總線技術(shù)的發(fā)展[J].電子測試,2017(11):88-89+71.
[2]程月平,劉帆.PCI總線數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計[J].儀表技術(shù),2017(10):14-16+43.
[3]王胡艦,吳瑞生,孫翔,李正平.利用接口芯片PCI9052制作PCI總線接口卡詳解[J].工業(yè)控制計算機,2004(12):25-27.
[4]謝利軍,陳瑜軒.一種基于總線協(xié)議芯片的PCI總線模塊的設(shè)計方法[J].電子設(shè)計工程,2014,22(19):137-138+142.
[5]韓雪峰,黃焱,楊濤.基于PCI總線的高速數(shù)據(jù)采集接口的設(shè)計與實現(xiàn)[J].微計算機信息,2005(12):71-73.
[6]Zhao J, Wang M, Fan Y. PCI9054 with the FPGA-based High-speed Low-voltage Differential Signal Receiver Design[J]. Modern Scientific Instruments, 2011.
[7]Peng J, Wang G Y, Zhang T X.Programmable Logic Design on PCI9054 Local bus Control[J].Computer Simulation,2003.
[8]鮑曼.關(guān)于使用PCI9054 SDK開發(fā)程序的中斷問題的研究[J].安徽電子信息職業(yè)技術(shù)學院學報,2013,12(02):10-11+46.
[9]彭會斌,姚潔.一種基于FPGA的PCI多功能設(shè)備IP核的設(shè)計[J].自動化應(yīng)用,2015(12):21-23+36.
[10]李柱.基于CPLD的PCI總線接口設(shè)計[J].信息通信,2014(06):67.
[11]單天昌,陸達.基于FPGA的PCI接口DMA傳輸?shù)脑O(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2010,20(04):215-219.
[12]閆改,郭曉光.基于DSP的PCI總線高速DMA數(shù)據(jù)傳輸[J].無線電工程,2013,43(08):19-21+32.
[13]滑偉.一種PCI總線接口的數(shù)據(jù)接收卡設(shè)計[J].無線電通信技術(shù),2013,39(04):53-55+92.
[14]Zhang L, Yonghong K, Fenglin F U. Implementation of Data Collection System Based on PCI9054[J]. Modern Electronics Technique, 2007.
[15]安震,張會新.基于PCI總線與FPGA多通道信號采集傳輸系統(tǒng)的設(shè)計[J].科學技術(shù)與工程,2013,13(03):625-629.
[16]許永輝,孫闖,李世斌.基于PCI總線的圖像目標模擬器設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2014,37(24):105-107+111.
[17]李小秋,張智明.基于PCI總線的異步電動機變頻調(diào)速[J].輕工機械,2014,32(06):61-62.
[18]侯金彪.PCI總線與ISA總線轉(zhuǎn)換設(shè)計研究[J].計算機應(yīng)用與軟件,2013,30(08):236-241.
[19]蔣偉.基于PCI總線的高速1553B總線通信卡的設(shè)計與實現(xiàn)[J].中國新通信,2017,19(14):32.