APP下载

基于PCI总线技术的多通道I/O和AIAO卡研究

2019-09-02赵桂芳

科技视界 2019年10期
关键词:数据传输

赵桂芳

【摘 要】本文利用PCI总线规范及应用作为切入点,系统概述了目前PCI总线的研究现状。PCI总线因其优越的性能,高度的兼容性在计算机系统中广泛应用。通过PCI总线完成串行数据的通讯和数字量模拟量的转换具有重要实用意义。在掌握PCI总线架构及的前提下,我们希望运用桥芯片PCI9054搭建PCI多通道I/O卡、AIAO卡。本文主要通过研制原则、功能分析以及研究方案等方面叙述了研究思路。

【关键词】PCI总线;FPGA;PCI9054;数据传输

中图分类号: 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 前言

隨着计算机技术在各领域的不断应用,市场对计算机性能提高的需求从未停止。IO总线系统作为计算机中连接计算机处理器与外围设备的部分常被看作整个计算机的骨架。计算机内部的IO总线决定了计算机的架构,直接影响计算机的性能。PCI总线作为最常用的计算机IO总线其各自功能模块的研制自然也变成为研究的热点。

本文首先总结分析了PCI总线研究现状,然后分别从研制原则、功能分析以及研究方案等方面,系统的描述了研究总体思路,后续将对总线模块的开发做具体阐述。

1 PCI总线概述

PCI的含义为外围器件互联(Peripheral Component Interconnect)。PCI总线能够实现快速访问系统内存存储器,可以使处理器以接近自身最高速的速度访问外围设备。一个基于PCI总线构建的系统至少应包含两级桥结构。一是处理器至PCI的桥称为主桥(Host桥),其主要功能是将处理器接口的总线周期转换为PCI周期。二则是PCI至扩展总线的桥称为扩展总线桥,其主要功能是将为PCI总线提供如ISA、USB等扩展接口。

存在于PCI总线上的设备可以是主设备、从设备或既有主设备功能也有从设备功能。PCI总线主设备可以发起总线传输等事务,对PCI总线从设备进行访问。一个PCI总线的带载能力是有限的,总线上负载的增加会使电平信号趋于稳定的时间变长。故为使一个系统中尽可能多的加入负载常使用多级结构,运用PCI-PCI桥连接上一级、下一级PCI总线。

2 PCI总线研究现状

早期计算机架构中,系统存储和外围设备通过ISA总线与处理器连接。之后VESA总线的出现使得计算机系统第一次有了局部总线的概念。ISA总线和VESA总线便是IO总线系统的雏形。

之后出现了PCI总线是由Intel公司推出的一种总线标准。Intel公司使用VESA总线标准,当时的更新也只是针对VESA总线进行局部修补,并不能解决长期问题。VESA总线仅可有限的支持突发传输,考虑到之后五至十年的发展,Intel决定不再支持此总线,并统一定义了PCI总线规范,以解决不同处理器应用不同总线的问题。PCI总线是一个通用的,不受限与处理器的总线系统。在PCI总线系统中,不同的总线通过桥芯片进行转接。1992年6月,Intel正式发布了PCI总线技术规范1.0;1993年4月发布升级版的2.0。此时的PCI总线工作频率为33.3MHz。1995年发布的修改版的规范2.1支持66.6MHz工作频率,传输速率也得到了巨大提升。PCI总线也被专用于与外部设备互联,形成了我们所说的IO总线的概念。1998年完成规范2.2。1999年又发布了PCI-X总线规范,传输性能进一步提高,传输协议也得到了更多合理的改进。

再后来又演化出了PCI Express总线标准,并行传输被改进为串行传输,采用点对点的互联。

PCI总线兼容性能十分出色,功能全面,能够支持多种外围设备,并且数据传输速度迅速、延时短,所以可以很好的连接CPU设备。目前针对PCI总线的研究主要集中在以下几个方面:

2.1 PCI总线的发展历程

文献[1]详述了PCI总线自诞生以来经历的几个发展阶段:PCI、PCI-X、PCI EXPRESS。最早的PCI总线是是穿插在CPU和系统总线的一级总线,通过桥接电路完成了对它的管理工作,保证了上下接口的协调性,并对数据进行传输。PCI-X总线的工作频率更高,数据位数达到64位,支持更多通信协议,传输效率大大提高。PCI Express总线能够实现点对点的传输。传输方式分为两种,即双向传输模式和数据分通道。其中,数据的分通道传输是对x1、x2、x4、x8、x12、x16和x32等多通道的连接,x1单向传输带宽速度为250MB/s,双向传输带宽则为500MB/s。

2.2 PCI驱动及引用程序开发

文献[2]应用WDM(Windows Driver Mode)开发Windows操作系统PCI硬件的驱动程序,对硬件进行操作。WDM(Windows Driver Mode)属于操作系统的内核模式,它是Microsoft公司开发出的一种驱动程序开发模型,旨在进一步降低所需驱动程序复杂性,来简化驱动程序的开发,其驱动程序是由运行于内核模式的系统级代码组成。并在驱动程序的基础上开发对应的控制软件。

2.3 通过PCI接口协议芯片实现PCI数据与外部通讯

文献[3]应用协议芯片PCI9052解析PCI总线信号,实现其与ISA总线互联。文献[4]通过协议芯片PCI9054将PCI数据向EEPROM进行读写。文献[5]介绍了协议芯片PCI9054的内部架构,以及实现通信的原理。文献[6]基于“FPGA+PCI9054”架构开发了PCI通讯卡。文献[7]基于“PLD+PCI9054”架构制作PCI总线通信模块。文献[8]介绍了PCI9054配套的开发软件PLXSDK中有关协议芯片中断的运用方式。

2.4 通过可编程逻辑器件设计PCI接口

通过FPGA或CPLD利用硬件语言编写软核,实现PCI总线接口的功能。其内部的各功能模块采用电路图及Verilog HDL或VHDL语言等方式实现。需要完成的工作包括数据传输总线,中断总线,等总线模块功能。

文献[9]基于FPGA,从PCI协议的介绍、总体设计思路、各功能模块设计、电路仿真等角度设计PCI接口。通过有限状态机实现PCI接口时序。

文献[10]运用CPLD构成PCI接口系统,其具有洁、可靠等优点,是一种行之有效的设计途径。在接口的CPLD设计中,根据PCI总线传输时序来进行状态机构造,并使用VHDL语言进行功能模拟,从而达到预期目的。

2.5 基于PCI总线DMA传输实现

DMA技术是一种由DMA控制器控制的存储器与外部设备或存储器之间大数据量传输的方法,具有传输速度高,CPU额外开销小的优点。

文献[11]介绍了一种使用FPGA在32位PCI接口内实现DMA块模式传输的设计方法,硬件部分基于Xilinx Virtex-II Pro芯片,通过一个OPB-PCI总线桥芯片实现了PowerPC与主机间的PCI接口通信,不仅实现了PCI的突发式传输,发挥了PCI总线的高性能,而且将CPU从繁杂的I/O事务中解放出来。

文献[12]针对数据采集系统中的高速数据传输需求,针对DSP芯片的PCI接口进行介绍,并通过其实现了PCI总线的DMA数据传输。

文献[13]采用FPGA、双端口RAM和PCI9054桥接芯片实现DMA传输。

2.6 基于PCI总线的系统功能实现

由于PCI总线为高速并行总线,可稳定处理大量数据传输,因此常常被用于各种复杂系統当中。文献[14]介绍了基于PCI总线的高精度数据采集系统的设计方法。文献[15]设计了具有高精度、高稳定性及高准确性的多通道信号采集传输系统。文献[16]设计以数字信号处理器(DSP)为核心处理器,基于高性能PC机和PCI总线的数字场景仿真系统。文献[17]采用PCI-1710数据采集卡的D/A输出实现异步电动机变频调速方法,对该方法的硬件和程序进行了设计和实验。

1999年,Microsoft、Intel等公司,规定以后生产的个人计算机将不再使用ISA总线,取而代之的是PCI总线标准。但在工业控制领域仍然保留着大量的ISA接口的设备。文献[18]研究了PCI-to-ISA的转接技术。

军用1553B总线是美国军方为了军用飞机的信号互联制定的一种总线标准,在军用航空航天领域得到了广泛的应用。文献[19]设计实现了PCI总线与1553B总线的数据传输。

3 PCI多通道I/O卡、AIAO卡研究

3.1 研制原则

PCI总线接口对从器件要求最少47个引脚,主器件49个引脚,其中包括:数据、地址、接口控制、仲裁、系统功能。对某些器件PERR#、SERR#引脚为可选引脚,从器件要求最少45个引脚,主器件47个引脚。

AD[31:0]:地址和数据复用引脚。一个总线传输周期先进行一个地址段传输,后面跟着的一个或多个数据段,支持突发模式的读写。

C/BE[3:0]#:总线命令和字节使能复用引脚。在传输周期的地址段定义总线命令,在数据段用作字节使能。

FRAME#:由当前主设备驱动,表明一个访问的开始和持续时间。FRAME#有效时表示总线传输开始。FRAME#处于有效状态数据传输继续,FRAME#无效时预示传输结束,传输周期处于最后一个数据段。

IRDY#:表明主设备完成当前数据段传输的能力。

TRDY#:表明目标设备(被选中的器件)完成当前数据段传输的能力。

STOP#:表明当前目标设备要求主设备停止当前传输。

DEVSEL#:当被驱动时,表明驱动设备已经将其地址解码为当前访问目标。作为输入,表明总线上是否有设备被选择。

IDSEL:配置读写事务时用作片选。

REQ#:通知总线裁决当前设备必须使用总线。

GNT#:表明总线访问被允许。

PAR:AD[31:0]与C/BE[3:0]#的偶校验位。

3.2 功能分析

本研究的主要目标是了解PCI总线的基本工作方式,基于桥芯片PCI9054构建PCI总线模块。通过PCI总线运用所研制模块完成对数字信号、模拟信号的双向传输、采集具有重要实用意义。综上所述,这里对PCI总线模块研究提出了以下具体需求:

3.2.1 研制基于PCI9054的多通道I/O卡

通过PCI协议芯片实现DMA传输,并将PCI并行数据转换为串行数据,通过串行数据总线三路R422和一路RS232最终实现PCI总线数据与外界交互。

3.2.2 研制基于PCI9054的AIAO卡

通过PCI总线数据,建立通讯协议,实现对数字量、模拟量转换模块的控制,达到通过数字量控制、采集模拟量的目的。

3.3 研究思路

3.3.1 为实现PCI接口功能,研制基于PCI9054的多通道I/O卡、基于PCI9054的AIAO卡,并给出硬件选型和设计。思路如下:

(1)对PCI接口模块需求进行梳理,明确测试所需的资源,以及测试指标;

(2)根据PCI功能模块,对PCI板卡模块进行划分,选择制作基于PCI9054的多通道I/O卡、基于PCI9054的AIAO卡。根据功能选择匹配的硬件资源,设计、开发板卡。

3.3.2 开发一套PCI板卡软件,实现在Windows操作系统下,测试PCI板卡各模块。软件具体功能如下:

(1)多通道I/O卡将FPGA作为控制PCI9054协议接口芯片且完成串行数据输出的处理器,基于Verilog HDL语言在可编程逻辑器件内实现功能控制。

(2)AIAO卡将FPGA芯片作为控制PCI9054协议接口芯片且完成数模转换的处理器,基于Verilog  HDL语言在可编程逻辑器件内实现功能控制。

(3)开发多通道I/O卡测试软件,可在Windows操作系统下,完成PCI数据发送接收,以测试多通道I/O卡功能。

(4)开发AIAO卡测试软件,可在Windows操作系统下,完成PCI命令发送接收,根据命令帧格式控制AIAO卡,以测试数模转换功能。

3.4 研制方案

3.4.1 硬件方案

(1)多通道I/O卡硬件架构

由于PCI接口信号较为复杂直接解析略显繁琐,所以本文设计的PCI多通道I/O卡并不直接采集PCI信号,而是采用PCI协议芯片获取总线信号。

板卡通过PCI协议芯片获得数据后由可编程门阵列(FPGA)进行接收、缓存,并转换为串行数据,通过串行数据总线三路R422和一路RS232最终实现PCI总线数据与外界交互。

(2)AIAO卡硬件架构

PCI AIAO卡的PCI端口则同样使用PCI协议芯片+FPGA架构。外部器件则改为A/D转换模块与D/A转换模块,以便同时实现两种功能。

3.4.2 软件方案

1)FPGA逻辑

多通道I/O卡和PCI AIAO卡同时采用PCI协议芯片与PCI接口对接,所以两块板卡的可编程门阵列(FPGA)软件将使用相同的时序控制模块。根据总线规范PCI总线支持突发模式的DMA传输方式,且在DMA模式下的数据传输过程不需要CPU参与,大幅度提高CPU应用效率。在PCI协议芯片时序控制部分,将控制协议芯片采用DMA传输模式。

(1)多通道I/O卡软件架构

该板卡硬件主要实现的功能为解析PCI端口数据、命令信号,并进行缓存,最终转换为串行总线信号,根据命令信号选择与外界通信的串行接口。所以可编程门阵列(FPGA)软件主要部分为:PCI协议芯片时序控制、缓存FIFO、3路R422串行数据收发以及一路R232串行数据收发。

(2)AIAO卡软件架构

该板卡硬件主要实现的功能为解析PCI端口数据、命令信号,并进行缓存,控制A/D模块进行数据采集,控制D/A模块进行模拟量输出。所以可编程门阵列(FPGA)软件主要部分为:PCI协议芯片时序控制、A/D模块时序控制以及D/A模块时序控制。

2)上位机测试软件

工控机中的上位机测试软件主要是对PCI端口进行操作,需要包含PCI9054驱动PLX_SDK,以便通过接口配置协议芯片。通过驱动中的API函数完成PCI端口DMA传输的操作。

4 结束语

本文通过分析PCI总线研究现状,构想了基于PCI9054的多通道I/O卡和AIAO卡的研制方案。希望通过PCI模块的研制实现PCI总线对数字信号、模拟信号的双向传输、采集。

【参考文献】

[1]樊江锋,陈帅,叶波,雷婉星.PCI总线技术的发展[J].电子测试,2017(11):88-89+71.

[2]程月平,刘帆.PCI总线数据采集系统的软件设计[J].仪表技术,2017(10):14-16+43.

[3]王胡艦,吴瑞生,孙翔,李正平.利用接口芯片PCI9052制作PCI总线接口卡详解[J].工业控制计算机,2004(12):25-27.

[4]谢利军,陈瑜轩.一种基于总线协议芯片的PCI总线模块的设计方法[J].电子设计工程,2014,22(19):137-138+142.

[5]韩雪峰,黄焱,杨涛.基于PCI总线的高速数据采集接口的设计与实现[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]鲍曼.关于使用PCI9054 SDK开发程序的中断问题的研究[J].安徽电子信息职业技术学院学报,2013,12(02):10-11+46.

[9]彭会斌,姚洁.一种基于FPGA的PCI多功能设备IP核的设计[J].自动化应用,2015(12):21-23+36.

[10]李柱.基于CPLD的PCI总线接口设计[J].信息通信,2014(06):67.

[11]单天昌,陆达.基于FPGA的PCI接口DMA传输的设计与实现[J].计算机技术与发展,2010,20(04):215-219.

[12]闫改,郭晓光.基于DSP的PCI总线高速DMA数据传输[J].无线电工程,2013,43(08):19-21+32.

[13]滑伟.一种PCI总线接口的数据接收卡设计[J].无线电通信技术,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多通道信号采集传输系统的设计[J].科学技术与工程,2013,13(03):625-629.

[16]许永辉,孙闯,李世斌.基于PCI总线的图像目标模拟器设计与实现[J].现代电子技术,2014,37(24):105-107+111.

[17]李小秋,张智明.基于PCI总线的异步电动机变频调速[J].轻工机械,2014,32(06):61-62.

[18]侯金彪.PCI总线与ISA总线转换设计研究[J].计算机应用与软件,2013,30(08):236-241.

[19]蒋伟.基于PCI总线的高速1553B总线通信卡的设计与实现[J].中国新通信,2017,19(14):32.

猜你喜欢

数据传输
基于Ad Hoc的微震监测数据传输系统设计