PCI通信总线

2024-08-05

PCI通信总线(精选7篇)

PCI通信总线 第1篇

PCI总线标准是一种将系统外部设备连接起来的总线标准,它是PC机中最重要的总线。其他设备例如:USB总线、ISA总线等总线都挂接在PCI总线之上。如果时钟采用33 MHz,它的传输速率可达132 Mbyte/s(PCI 总线为32位),对于64位PCI总线,其吞吐率能达到264 Mbyte/s峰值[1];64位66 MHz PCI总线,数据吞吐率理论值为528 Mbyte/s。一般在PC机中,显卡、网卡都被设计成PCI总线设备,插于PCI插槽,有利于方便更换已坏设备。

本文设计的基于PCI总线的高速串口通信卡,采用PLX公司的PCI9054作为PCI总线与本地总线的桥接芯片,控制方便,实现简单。从硬件电路的设计,到软件的编写,再到驱动程序的撰写,本文将一一予以探讨。

1 系统硬件逻辑设计

基于PCI总线的高速串口通信卡的设计总体结构如图1所示,整个通信卡可分为三部分:信号采集单元、中心控制逻辑单元和PCI桥接电路。此卡插于PCI扩展槽中,与PC机进行通信。

信号收发单元包括光模块与LVDS高速接口电路。LVDS高速接口可以确保数据传输的快速性,光模块解决遥测系统的传输距离。本设计采用1对10位总线型低压差分信号应用芯片组DS92LV1023(串行器)与DS92LV1224(解码器)。其中DS92LV1023可以将10位并行CMOS或TTL数据转换为具有内嵌时钟的高速串行差分数据输出;DS92LV1224则将输入的差分数据转换成并行10位数据输出,同时内部锁相环可从串行数据中重建并行时钟。因LVDS芯片组的差分电压摆幅为0.7 V,不能直接与1.5~2.3 V电压差输入的光模块OCM3723直接相连,所以配合使用电缆驱动器CLC006与电缆均衡器CLC014。可将电压摆幅提高到2 V,这样能使信号良好地搭载在光模块,使传输距离得到极大改善[2]。

PCI接口电路使用PLX公司的PCI9054,也是目前主流的PCI总线接口芯片之一,其逻辑控制简单,无需复杂的固件编写,且PLX公司提供官方的驱动程序作为参考,可以大大缩短开发周期。此卡通过PCI总线与上位机通信,可以实时进行监测和高速的数据存取。

中心控制逻辑单元采用一片Xilinx公司的XC3S400作为逻辑控制器,其主要作用是作为本地总线的逻辑控制单元与PCI总线通信、数据缓存及信号采集模块的控制器,也是高速串口通信卡的主控芯片。FIFO存储器作为数据缓存器,本设计采用XC3S400的内置块RAM配置而成。系统采用40 MHz晶振,经FPGA内部的时钟管理模块倍频得到80 MHz时钟,使得传输数率可达80 Mbit/s。

1.1 信号收发单元

进行串口通信时,数据流在信号线上传输必然产生信号的畸变,波特率与传输距离成为一对矛盾体。为此,本文提出LVDS+光模块的设计,在一定程度上解决了传输速率与传输距离的瓶颈现象,可将高速通信距离提高到10 km以上。

LVDS是一种小振幅差分信号技术,使用低压(约350 mV)差分信号传输数据。允许单个信道传输速率达到数百兆比特每秒,其特有的低振幅及恒流源模式驱动只产生极低的噪声,消耗非常小的功率。其LVDS应用芯片组与电缆驱动器、电缆均衡器的连线图如图2所示。这里R5与R10为匹配电阻,大小为100 Ω。

而光模块的使用,利用其良好的光电转换作用,可以使传输距离提高到10 km以上。本设计选用LVPECL电平单模双纤光收发一体模块OCM3723,其特点为:1)SC/FC插拔式光接口;2)单+3.3 V/+5 V供电;3)接口电平兼容标准LVPECL电平;4)标准1×9管脚封装,引脚配置与Multi-source协议兼容;5)发射器件可选用工作波长为1 310 nm的FP激光器或1 550 nm DFB激光器;6)接收采用平面结构InGaAsP PIN探测器。

1.2 PCI接口电路

PCI9054的操作方式有M,C,J这3种模式,本设计采用时序控制相对简单的C模式。

PCI9054的工作方式有3种:主模式、从模式及DMA模式。本设计采用从模式的多周期传输方式。其中,主模式是由本地处理器作为主设备,发起PCI存储器或I/O对访问,PCI9054作为本地总线的目标设备;从模式是由PCI主设备发起整个数据传输,PCI总线可以对配置寄存器及本地总线内存进行访问,PCI9054作为PCI总线的目标设备;DMA模式是一种快速的数据传输机制[1],由PCI9054的DMA 控制器控制在不需要CPU的干预下,对本地总线的存储器或I/O与PCI总线的存储器或I/O之间的数据交换。考虑数据流不是非常大,使用从模式下的突发传输发式即可。

PCI9054的配置信息通过上电后从E2PROM中读取。这里选用Microchip Technology公司的93LC56。93LC56的接线图如图3所示。为了便于调试用,在EEDI/DO引脚上设计有上下拉电阻,需要配合PCI9054调试时,焊接下拉电阻,正常工作时接上拉电阻。

1.3 中心控制逻辑单元

中心控制逻辑单元控制着信号收发时序、搭建内部FIFO以及作为本地总线逻辑单元与PCI总线通信。这里选用XI-LINX公司的XC3S400,其具有4×105门的门电路,896个CLB和360 kbit的块RAM。符合其设计要求。

1) 内部FIFO的搭建

通过FIFO进行数据缓冲来解决数据匹配问题。因选用资源丰富的XC3S400,内部块RAM可达360 kbit,可以在内部搭建FIFO以减少设计成本。

如图4所示,采用8块双端口的块RAM RAMB_16_S4_S4搭建为4 k×32位FIFO。块RAM的A端口作为写端口,B端口作为写端口。它们的使能端都与VCC相连,不同的是,写使能一个接VCC,一个接地。需要注意的是,对块RAM读写操作时,不能同时进行,否则输出将是不定值,造成输出失败。

2) 本地总线逻辑单元

在FPGA中实现PCI9054的读写,即对本地总线总裁。包括本地总线请求信号LHOLD和本地总线应答信号LHOLDA的处理。在很多的设计中,都是将PCI9054的LHOLD和LHOLDA两个引脚直接相连接,或在FPGA/CPLD内部用连续赋值直接将LHOLD的值赋予LHOLDA,利用器件的引脚传输延迟配合总线仲裁电路来进行时序控制。因为当尖峰脉冲耦合进FPGA内部时会造成逻辑电路的误触发[4],所以采用这些方式将会导致计算机出现读数错误、死机等现象。PCI本地总线通信仿真图如图5所示,PCI9054进行量7个长字的突发传输模式。

2 设备驱动开发

PCI板卡插入PCI扩展槽,如果要正常工作,需要在Windows下撰写驱动程序。驱动程序主要有以下几个步骤:打开设备;设备初始化[5];设备读写;关闭设备。Windows系统下的驱动用的最多是DDK,driverstudio,windriver这机种工具。其中,DDK的效率最高,但编写起来难度太大,多数技术人员使用driverstudio,windriver这两种工具编写出来的程序也称为WDM(Windows Device Module)程序。本课题采用DriverStudio工具。

DriverStudio中的DriverWorks软件为WDM驱动程序提供了完整的框架,本设计利用其DriverWizard生成驱动程序框架,然后添加各功能函数。这里利用类KMemoryRange实现对BU-61585内部存储器的读写访问,类KIoRange实现对其寄存器的访问。下面是驱动程序中类实例KMemoryRange0的初始化及其对BU-61585内部存储器的写操作功能函数。

3 结束语

PCI总线满足现代设备传输数率越来越高的要求,PCI9054为PCI总线接口技术提供了较为简单的开发过程,其高速的传输数率将会被广泛应用。本文设计的高速串口通信板,已成功应用于图像数据的传输。当数据总线扩展到64位,数据传输模式采用DMA方式,对于数率的提高仍有较大的裕度。

摘要:介绍了一种基于PCI总线的高速串口通信卡的设计,采用PLX公司的PCI9054作为PCI总线桥接芯片,FPGA作为本地总线的控制器和系统主控单元,选用LVPECL电平单模双纤光收发一体模块OCM3723为串口传输介质。最后介绍了利用vis-ual C+++DDK进行设备驱动开发。该设计的高速串口通信卡,其通信速率可达80 Mbit/s,传输距离超过10 km。具有设计简单、速率快、可靠性高、传输距离远等特点,已经成功运用于某航天遥测系统。

关键词:PCI总线,高速串口通信,PCI9054

参考文献

[1]赵锡凯.PCI总线扩展技术研究[J].计算机工程与科学,1997(2):12-15.

[2]袁伟涛,张斌珍,刘文怡.箭载遥测变换器测试台的设计与实现[J].测控技术与仪器仪表,2008(2):87-90.

[3]荣思远,景新幸,陈用昌.基于PCI总线的视频采集卡研究[J].电视技术,2006,30(11):32-35.

[4]蔡祁鹏,王宏远.HDTV信号源中PCIDMA的WDM程序开发[J].电视技术,2001,25(4):17-20.

PCI总线与CAN总线通讯研究 第2篇

1 硬件电路设计

PCI总线和CAN总线之间的物理通路(见图1)。

在主机端使用的芯片是PLX9052,它是Plx Tech公司的PCI总线控制芯片,提供了与微机系统的数据总线和控制总线接口,同时支持对PCI-CAN适配卡端的控制。它用一块EEPROM作为初始化存储器,在设计中选用93LC46芯片。当主机端系统启动加载时,PCI9052先从该EEPROM存储器中加载初始化数据。

为了在PCI-CAN适配卡端对CAN总线进行控制,我们采用LPC2292和TJA1050t收发器,并采用74LVC4245进行光电隔离。LPC2292内部集成的2路CAN控制器符合CAN规范2.0B ISO 11898-1;可访问32位的寄存器和RAM;每个总线的数据速率为1MB/s;全局验收滤波器可识别所有总线的11位和29位Rx标识符;验收滤波器为选择的标准标识符提供有FullCAN-style自动接收功能。

TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口。TJA1050可以为总线提供差动发送功能,为CAN控制器提供差动接收功能。

在LPC2292和PLX9052间还连接有一块SRAM作为数据交换区。

2 静态随机存储器IDT7132介绍

本设计中采用IDT7132作为SRAM,它是美国IDT公司生产的高速2K×8的双口SRAM,外部电路简单,不需外加逻辑电路,就能应用于32位或更高位的存储系统。该芯片提供了两组独立控制逻辑、地址线,同步获取本地存储器的I/O引脚,用于片选信号CE引脚和用于忙控制的BUSY引脚。

因为两端口都允许对SRAM进行读写,所以当两边同时对SRAM上的一个地址单元进行写时就会产生冲突,这时IDT7132的仲裁逻辑单元就对其进行判断,将写信号晚来的那一端的BUSY引脚拉高,使其进入等待状态,另一端拉低,使其先写,待其写完再将原来拉高那一端拉低,使其进入写状态。

美国IDT公司生产的双口SRAM分为两种:一种是中断触发方式,一种是无中断轮询触发方式。至于采用哪种双口SRAM,我们有以下考虑。

本设计中处理器就有两种状态:空闲状态和数据处理状态。当处理器处于空闲状态时,就算不进行轮询处理器也无事可做,所以这时进行的是中断触发方式还是轮询触发方式对处理器来说都是一样的;而当处理器处于数据处理状态时,又有如下两种情况:

(1)对LPC2292下位机而言,它的晶振频率为11059200Hz,经过粗略的计算,它读写1KB的地址空间最多不会超过400us,而轮询的周期定为1ms一次,所以这样的速率足可以满足我们的需求。

(2)对上位机而言,因工控机的处理器更为强大,且它除了进行与CAN总线的交互以外不再有别的任务,所以轮询对上位机来说也不是问题。

基于以上两点,最终决定采用无中断的SRAM,即IDT7132,既降低了成本又可满足我们的设计要求。

3 数据交换区的设计

本设计方案中的SRAM,大小2K×8 bit,因其不带中断,所以采用基于地址位的方式来进行数据的读写。首先将其分为两个区域,每个区域的前两个地址单元为本区域的地址位,见图1所示。

主机端的发送区定义为Tarea,大小为1KB,它前两个地址单元000h和001h定义为Tarea的发送地址位;主机端的读取区定义为Rarea,大小为1KB,它的前两个地址单元400h和401h定义为Rarea的读取地址位。因为每个地址单元都指向一个字节,用两个地址单元,即两个字节就可以表示Tarea或Rarea内所有的地址单元。这两个字节的低10位用来表示所在空间的有效数据的最后一个地址(本论述中定义为后效地址)。

当主机端要往Tarea里写数据时,先读取发送地址位,得到后效地址,然后与本次要往Tarea中写入的字节数作比较,如果剩余空间的字节总数大于这次要写进去的字节数,就更新后效地址,然后再将要写入的数据写入Tarea中;如果小于就让后效地址置位为3ffh,将能写入的数据先行写入,不能写进Tarea的剩余部分数据字节等待PCI-CAN适配卡端读取后再写入(见图2)。

当PCI-CAN适配卡端要读取数据时,先读取地址位,得到后效地址,再读取数据,当读完数据以后,再读取一次后效地址,当此时的后效地址等于此时读取地址时,就更新后效地址为001h;当不等于时,就继续读取数据直到后效地址所指的地址(见图3)。

总结以上的操作,定义本设计的数据读写原则为area-addr原则:进行写操作时,先更新addr再写area;进行读操作时,先读area再更新addr。同理,PCI-CAN适配卡端对Rarea进行写、主机端对Rarea读时,也遵循area-addr原则,不过主机端和PCI-CAN适配卡端交换了一下读写方式,即主机端的写空间就是PCI-CAN适配卡端的读空间,主机端的读空间就是PCI-CAN适配卡端的写空间。PCI-CAN适配卡端的发送和主机端读取的流程完全可以参照以上两个流程。

4 本设计的特点

本设计原想采用较简单的置0-1标志位的存取方式,但为了减少延时,加快传输速率,充分发挥本卡上的硬件资源,加快数据的存取,从而决定采用area-addr原则,对比简单的置0-1标志位存取方式,area-addr原则具有以下特点:

(1)当一端正在往数据区写入数据或从数据区读出数据时,采用置0-1标志位存取方式,则只能在一端写完或者读完以后才置位标志位,所以此时当另一端有对应的读操作或写操作时,就只有等待,直到正在操作的那一端完成了操作,标志位被重新置位后另一端才可以进行对应的读写,这样就增加了延时;而采用area-addr原则,一端正在写或读时,另一端就可以进行相应的读或写,两端都可以进行操作。

(2)当采用0-1标志位存取方式时,即使只写一个数据,Taddr也置位为1,以后再有数据到来也不可以往数据区上写任何数据,不管数据区是否被填满,直到被读取后Taddr置位为0才可以继续往数据区里写入数据;而采用area-addr原则可以在数据区不满的任何时候往数据区中写入数据。

(3)当采用0-1标志位存取方式时,读取的一端读完数据区后,就退出数据区并置标志位,直到下一次再询问标志位才可以继续读取;而采用area-addr原则时,当在读的时候另一端有写操作时,读操作就可以不用退出数据区而直接继续往下读新到来的数据,直到读完刚写上去的数据为止。

有了以上的三个特点,就大大减小了时间延时,加快了数据传输的速率。

5 数据交换区的读写实现

5.1 编写Linux环境下的P CI驱动以读写S RAM

PCI是一组完全的规范,它定义了计算机的不同部分是如何交互的。PCI外设由一个总线号、一个设备号和一个功能号确定。

PCI设备有三个地址空间,分别是内存地址空间、I/O地址空间、配置地址空间。前两个地址空间由PCI总线上的所有设备共享,而配置空间则是设备私有的。每个PCI插槽有一个配置事务的私用使能线,PCI控制器一次只能访问一个外设,因此不会有地址冲突。在初始化阶段,外设的配置信息被Linux内核中的初始化程序从配置空间中读出,这样,一旦配置寄存器被读出,不需要探测,驱动程序就可以访问它的硬件了。

在PCI的EEPROM中地址空间的配置是整个驱动程序的关键部分,只有定义好了EEPROM中各个寄存器的内容才可以在驱动程序中访问SRAM上的地址单元,具体配置EEPROM可以使用PLX公司的PLXMON软件(见图4)。

在本设计中与PLX9052连接的IDT7132大小为2K×8 bit,且PLX9052的片选CS0连接到了IDT7132的CEL,所以在配制EEPROM时,我们将使用Local Space0,访问方式为I/O空间方式,所以我们配置片选0基址(CS0BASE)为01002001h,局部地址空间0地址范围(LAS0RR)为FFFFC001h。因为本地总线宽度为8位,采用非预取方式,再根据设计需要配置的总线状态,所以局部地址空间0总线区域描述寄存器(LAS0BRD)配置为D41148A0h。至于局部地址空间0局部基址(重映射)(LAS0BA)则要根据操作系统的地址分配来确定,采用一段空闲的地址空间作为LAS0BA的地址,在本设计中配置其值为01000001h。

配置好了EEPROM空间以后,就可以开始写在Linux底下的驱动程序了。

Linux驱动程序分为两类:字符设备驱动和块设备驱动。PCI设备驱动属于字符设备驱动,但是在Linux中设计了专门的针对PCI设备的PCI驱动架构,因此既可以使用字符设备的架构来编写PCI驱动程序,也可以使用PCI驱动架构来编写驱动函数,本设计在实验阶段编写了两套驱动程序,都可以正常运行,现为了节省篇幅,只列出以PCI驱动架构编写的驱动的主要部分以供大家参考:

5.2 编写LP C2292中的程序以读写S RAM

在本设计中SRAM连接到了LPC2292的CS0管脚上,它的数据线宽度为8位,对应连接的是LPC2292的D0-D7,地址线宽度为11位,对应连接的是LPC2292的A0-A10。

在LPC2292中,外部地址是从0x80000000开始的,我们选用的是CS0,它对应的地址空间为16M,从0x80000000到0x80FFFFFF,本设计中我们的SRAM为2K,空间范围为从0x80000000到0x800000FF。

部分参考代码如下:

从SRAM上接收到数据后,LPC2292就将其通过CAN控制器发送到CAN总线上。在发送上,LPC2292和其他所有的CAN控制器一样,但在接收方面,LPC2292采用的滤波方式是使用全局验收过滤器,跟现今流行的滤波方式不同,所以,为了保持PCI-CAN适配卡的兼容性,我们又编写了采用通用滤波方式(单滤波和双滤波)的文件,下载到LPC2292后,可以完成验收滤波功能。但CAN总线的接收和发送不是本文讨论的重点,限于篇幅,故在这里不再作更多的描述。

6 结束语

本论述提出了一种CAN总线的接入技术,利用PCI总线与CAN总线进行通讯,划分了在PLX9052与LPC2292之间的SRAM以加快两者之间数据传输,实验结果表明本设计的效果良好。同时,该技术也可以应用于其他现场总线接入技术的研究。

摘要:为了方便工业控制计算机接入控制器区域网络CAN总线,提出了一种基于PCI总线与CAN总线的通讯设计方案,划分了PLX9052与LPC2292之间的SRAM以加快两者之间数据传输,并实现了Linux系统下的PCI驱动和微控制器LPC2292上CAN总线的固件程序,为保持适配卡的兼容性,采用通用滤波方式(单滤波和双滤波)的文件,完成滤波功能,从而实现了工业控制计算机总线与CAN的高速连接。

关键词:CAN总线,PCI驱动,SRAM

参考文献

[1]Jonathan Corber,Alessandro Rubini Greg Kroah-Hartman,Linux设备驱动程序[M].北京:中国电力出版社,2005.

[2]周立功.ARM嵌入式实验教程(二)[M].北京:北京航空航天大学出版社,2005.

PCI通信总线 第3篇

在航电系统的研制初期,通常要先在地面以微型计算机为基础做各种仿真实验。这使得用于各仿真系统的接口板的研制和革新工作便同时成为航电系统发展的一个重点。接口板的主要任务是实现航电系统的数据总线与PC机的数据总线之间的通信功能,这使PC机可以模拟航电系统数据总线上所挂接的实际子系统。PCI(Peripheral Component Interconnect)总线,即外围部件互连总线,是一种先进的高性能32/64位地址数据复用局部总线,可同时支持多组外围设备。PCI局部总线不受制于处理器 ,为中央处理器及调整外围设备提供一座桥梁,更可作为总线之间的交通指挥员,提高数据吞吐量,具有支持线性突发传输、极小的存取延误、采用总线主控和同步操作、兼容性强等优点。本文设计了一种基于PCI总线的接口板,其服务对象是MIL-STD-1553B总线,并编写其在Windows下的驱动程序。

1 1553B总线协议

MIL-STD-1553B 是一个关于数据总线电器特性和协议规范的军事标准,这个标准规定了飞机内部数字式的命令/响应时分制多路数据总线的技术要求,也规定了多路数据总线的操作方式和总线上的信息流的格式以及电气要求。其作用是提供一个在不同系统之间的传输数据和信息的媒介。

1553B数据总线以异步、命令/响应方式执行数据信息的传输,是一种计双工通信方式,它有3种终端类型:总线控制器(BC)、远程终端(RT)和总线监视器(BM)。BC是总线上惟一被安排为执行建立和启动数据传输任务的终端,BC控制数据总线上所有数据信息的传输,任何时候总线上只有一个BC。RT是用户子系统到数据总线上的接口,它在BC的控制下提取数据或吸收数据。MT“监控”总线上的信息传输,以完成对总线上的数据源进行记录和分析,但它本身不参与总线的通信。各终端之间信息传输方式有:BC到RT,RT到BC,RT到RT,广播方式和系统控制方式。1553B数据总线上的信息流由消息组成,一个完整的消息包括命令字、数据字和状态字3种类型。 每个字的字长为20 b,其前3位为同步字头,有效信息位是16位,最后一位是奇偶校验位,采用奇校验,消息字采用曼彻斯特Ⅱ型码调制信号, 所有消息格式都是基于前面所述的3种字类型。

2 系统设计方案

系统设计分为2个部分:硬件电路的设计和软件驱动程序及应用程序的设计。

2.1 系统硬件设计

系统完整的硬件电路结构如图1所示,主要包括1553B总线接口模块、PCI总线接口模块和逻辑控制模块。系统设计主要实现1553B总线和PCI总线之间的通信,因为在1553B总线上传输的是双极性差分信号,所以要对发送或接收的信号进行电平转换和相应的调制解调,1553B总线接口模块即用来完成数据的组织和编码或解码。PCI总线接口模块完成接口卡与上位机的通信。双端口RAM作为2个模块的数据中继,逻辑控制模块则将这2个模块连接成为一个系统。上位机通过PCI总线接口模块将欲发送的数据存入双端口RAM中,逻辑控制模块根据通信协议将数据送到1553B总线接口模块,1553B总线接口模块将此数据进行组织和编码,发送到1553B主总线上;或1553B总线接口模块从主总线上接收到数据,进行解码并存放在存储器。然后通知上位机,上位机通过PCI总线接口模块从存储器中取出数据以及本次1553B总线操作的状态信息。

2.1.1 1553B总线接口模块设计

1553B总线接口模块主要包括1553B协议芯片、隔离变压器和时钟晶振。1553B协议芯片采用DDC公司的BU-61580,芯片包含2个低功耗的双端收发器、协议逻辑、存储器管理逻辑、处理器接口逻辑及4K×16 b内置共享静态RAM以及直接面向主处理器的缓存接口组成,最多可扩展64K×16 b的外部RAM。协议芯片通过短截线与1553B主总线相连。而在协议芯片与短截线之间需要设置隔离变压器,该隔离变压器将1553B主总线与接口卡直流隔离,防止接口卡上产生的噪声影响1553B主总线上的信号。

BU-61580功能上集成了BC/RT/BM一体化设计,可以编程设置BU-61580的配置寄存器来设定系统的工作方式,例如本系统中,通过软件编程BU-61580配置寄存器1的位15为逻辑“1”,位14为逻辑“0”,可使BU-61580工作于RT方式。内存管理模式可选是BU-61580的RT的一大特点。为了下位机处理器可以方便的存取从给定地址接收有效的、完整的数据块,保证为处理器提供最高程度的数据采样一致连贯性,RT方式的内存管理采用双缓冲模式,该模式下可以有选择地将接收的广播消息分解为非广播消息。具体实现方法是为每一个接收到的消息提供2个32位的数据字块,一个为激活的,另一个为停止的。当前命令结束后,BU-61580自动切换该子地址的数据块的激活区域与停止区域,这样,当向同一子地址发送命令时,如果数据有效并且双缓冲区允许,数据会保存到另一个数据块中,而不会使上一次的数据被覆盖。

与下位机连接方面,BU-61580的接口配置采用16位缓冲模式,它向下位机提供了一个直接共享RAM接口。在该模式下,BU-61580的数据、地址总线与主机的总线地址隔离,并且BU-61580的寻址空间限制在其内部RAM4K字的范围内。

2.1.2 逻辑控制模块设计

PCI总线接口模块与1553B总线接口模块之间的逻辑控制电路通过可编程逻辑器件和DSP实现。可编程逻辑器件采用了Altera公司的EP1C12B芯片,其主要实现地址译码、数据缓存、逻辑控制、握手连接和与BU-61580的协议转换等功能。EP1C12B芯片内部的RAM资源作为双端口RAM和BU-61580之间的数据通道。下位机主控单元DSP控制器采用TI公司的TMS320F2812,用于控制EP1C12B完成1553B总线接口模块对双端口RAM的数据吞吐。上位机对1553B协议芯片进行操作时,相应的数据信号、地址信号和控制信号通过PCI总线发送到双口RAM中。DSP控制FPGA从双口RAM中取出该地址信号和控制信号进行译码,产生对应的地址信号以及控制信号送到BU-61580。如果操作是向1553B主总线发送数据,则同时将数据信号送到BU-61580的数据线。一次读写操作结束时,BU-61580将输入FPGA的READY信号拉低,通知FPGA读写操作结束。如果有中断产生,则在输入FPGA的INT引脚上产生中断波形(下降沿或低电平)。根据BU-61580输入FPGA的中断信号、握手信号或数据信号等,FPGA相应产生上位机需要的中断信号、握手信号、插入等待信号和数据信号等,送到PCI总线上。

2.1.3 PCI总线接口模块

PCI总线接口模块包括PCI协议芯片及其配置电路。PCI协议定义了严格的电气特性和时序要求,其接口电路实现难度大,采用专用的PCI接口芯片,可以避开复杂的PCI协议的细节设计,大大缩短开发周期。本系统选用的是PLX公司生产的PCI9052接口芯片作为PCI总线控制器,实现接口卡与PCI总线的桥接。

在进行驱动编写前,需要根据功能需求对PCI9052芯片进行相应的配置操作。PCI9052芯片有2类寄存器:PCI配置寄存器和局部总线配置寄存器。PCI配置寄存器的内容反映配置空间的情况,它的配置空间的内容包括PCI设备号DID,制造商号VID、中断号、设备类型号、局部空间基地址、局部空间描述符、片选响应以及局部响应控制CNTRL等信号,这些配置信息在芯片复位时通过串行E2PROM加载。PCI9052会自动根据该E2PROM的状态决定其内部寄存器值。E2PROM中的配置信息的正确与否关系着整个板卡是否能够正常工作。当系统配置成功后,接口卡可被PC机识别,即可进行驱动程序的开发。

2.2 系统软件设计

2.2.1 驱动程序设计

设备驱动程序提供连接到计算机的硬件的软件接口,所要完成的任务是链接应用层和硬件层,使操作系统识别具体硬件,并使用硬件资源。微软公司提供了专门的驱动程序开发工具包Windows XP DDK,但是DDK开发难度较大,周期长,不容易掌握,Numga公司的开发工具Driver Studio可以大大简化驱动程序的开发过程,它制作的类库封装了DDK的函数,完全兼容所有的DDK函数,它封装了比较底层的繁复操作,减少了对简单接口的复杂操作,专门提供了的开发向导Wizard与微软的Visual C++紧密地集成,驱动程序代码框架只需要在DriverWorks工具向导程序的指引下,根据硬件的具体参数填写必要步骤即可完成。另外,Driver Wizard还能生成专为特殊设备定制的代码,比如PCI设备, ISA设备等。

驱动程序的基本功能是完成设备的初始化、对端口的读写操作、中断的设备和响应及中断的调用,以及对寄存器和内存的直接读写。在Driver Studio生成的程序框架上,根据具体的要求添加新的类对象和代码,结合接口卡的特点,编写一些特殊的驱动,在VC下编译后即可得到所需的驱动程序。

2.2.2 应用程序设计

Windows系统为用户提供了一些API函数,用于向WDM结构的驱动程序发命令以及进行数据交换,在内核区存在各种与之相对应的处理例程,见表1。

CreateFile用于获得驱动程序句柄,CloseHandle关闭驱动程序,而其余函数用于应用程序控制驱动程序或者与驱动程序交换数据,其中DeviceControl函数完成读取PCI配置空间内容的功能。在WDM中实现输入输出处理可以通过KIoRange类实现。应用层通过DeviceIoControl函数向设备句柄调用KIoRange类的成员函数,实现应用层对I/O空间的处理。

应用程序的流程如图2所示。

3 结 语

1553B作为一种高可靠性和稳定性的数据总线已在军事和工业领域得到越来越广泛的应用。本文设计了一种基于PCI总线的1553B总线接口卡,分别使用PCI9052和BU-61580作为PCI总线和1553B总线的协议芯片,使用FPGA进行总线逻辑控制,提高了系统的集成度,驱动程序方面,利用Driver Studio向导生成驱动程序的框架,极大简化了驱动程序的编制。实验证明,本文设计的接口卡可以为电子设备提供符合1553B标准的接口,完成可靠的数据交换,工作稳定,功能完善,多个板卡可组成一个1553B总线仿真测试系统,通过仿真设备可用于模拟航电设备进行仿真测试,对开发1553B总线通信系统具有重要的现实意义和应用前景。

摘要:根据1553B数据总线协议及其接口技术要求,设计了一种基于PCI局部总线的1553B总线接口卡。系统使用PLX公司的PCI9052和DDC公司的1553B协议芯片BU-61580,通过FPGA芯片EP1C12B进行PCI协议和1553B协议的转换,使用DSP控制器TMS320F2812作为下位机的主控单元,并编制了接口卡驱动程序,实现了1553B总线和PCI总线的转换。

关键词:PCI局部总线,1553B总线,总线接口卡,数据总线协议

参考文献

[1]支超有.机载数据总线技术及应用[M].北京:国防工业出版社,2009.

[2]ILC Data Device Corporation.ACE/Mini-ACE series BC/RT/MT advanced communication engine integrated1553B terminal user's guide[M].[S.l.]:ILC Data Device Corpo-ration,1999.

[3]ILC Data Device Corporation.MIL-STD-1553Bdesigner's guide[S].6th ed.USA:ILC Data Device Corporation,1998.

[4]PCI-SIG.PCI local bus specification draft[S].Revision2.2.[S.l.]:PCI-SIG,1998.

[5]史国庆.基于PCI总线的1553B总线接板设计[D].西安:西北工业大学,2004.

[6]李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.

[7]瞿朝兵,陈涛.基于PCI总线的1553B总线接口卡设计[J].仪器仪表用户,2007,14(4):95-97.

[8]夏宇闻.复杂数字电路与系统的Verilog HDL设计技术[M].北京:北京航空航天大学出版社,1998.

[9]Altera Corporation.CycloneⅡhandbook[M].USA:Al-tera Corporation,2006.

PCI总线硬件故障容错技术研究 第4篇

PCI总线(Peripheral Component Interconnect)是嵌入式计算机系统中最常使用的总线,但是由于PCI总线属于时分复用的双向应答总线,需要发起/应答信号间的相互配合,当PCI总线设备无响应的时候,PCI总线控制器就无法对其余的PCI设备进行正确的配置、读写等操作,会出现PCI总线时延较大,甚至总线瘫痪。

基于FPGA实现了一种硬件故障模式的PCI总线容错技术,通过可编程逻辑实现PCI桥的IP核,使得PCI总线控制器与其他PCI总线设备进行数据通信,解决了由于某个PCI总线设备无响应后,出现的PCI总线周期较长或将整个总线处于等待状态,并对故障设备进行隔离并恢复PCI总线数据传输功能。

1 PCI总线功能分析

1.1 PCI总线工作方式

PCI桥将CPU的数据与PCI设备的数据进行转换,并向PCI总线上的所有的PCI主设备(PCI总线的发送方,Master)和PCI从设备(PCI总线的接收方,Target)提供地址映射。

PCI总线是地址/数据线复用的非智能总线,也是一种时分复用双向应答总线[1]。PCI总线具有突发分组机制,总线传输协议步骤如下:

(1)在PCI总线的地址周期中,PCI总线控制器通过C/BE[3:0]这4条PCI总线控制信号确定总线工作方式:I/O空间读写、存储器空间读写、总线配置空间读写或总线信息广播等;

(2)通过REQ#和GNT#这2条PCI总线控制信号由仲裁机构确定总线的控制权;

(3)在PCI总线的数据周期,根据步骤(1)的命令方式完成数据传输。

传统的PCI总线结构如图1所示。通过图1的PCI总线拓扑连接方式,发现PCI总线属于开放式连接,并无终端端接设备,这样的连接方式,决定了PCI总线信号传输是通过反射波实现。

当PCI总线主设备的总线驱动器驱动总线信号,总线驱动器只是将该信号的电平驱动到协议要求的电平一半,当该信号传输到PCI总线从设备后,将该信号完全反射回来,完成该信号的电平叠加,达到PCI总线协议要求的电平[2]。

根据PCI总线的信号传输的工作方式,同一PCI总线的主设备和从设备的总线接口驱动器的输入/输出阻抗必须保持一致。

1.2 PCI总线信号分类

PCI总线主设备:获取PCI总线主控权,能驱动地址/数据信号和控制信号,支持传统方式的读/写操作,同时也能支持突发传输,执行DMA操作,峰值数据率为132 MB/s,至少需要49根,比从设备多出的两根信号线分别是REQ#和GNT#(用来进行总线仲裁)。

PCI总线从设备:不能获取PCI总线控制权,只能被PCI主设备控制,被动接受主设备的读写操作,同时不支持DMA操作,至少需要47根信号线。

PCI总线信号描述如图2所示[3]。

PCI总线信号线的长度有要求:所有信号(除CLK信号)的最大走线长度为1 500 mil(1 mil=25.4μm),CLK信号线的长度为(2 500±100)mil。REQ#和GNT#是点到点信号,与总线信号在输入建立时间和输出有效时延上有差别。

将32 b的PCI总线,设定的最高工作频率为33 MHz时,总线上的每一个信号在时钟的上升沿到来之前,都有一定的建立时间和保持时间,在这个时间段内不允许信号跳变。一旦过了时钟的上升沿,信号的值已经被设备采样,输入信号的建立时间<7 ns,输出信号[3]满足时钟上升沿至输出有效<11 ns,PCI总线主设备发出GNT#建立时间为10 ns,REQ#建立时间为12 ns。

2 PCI总线硬件故障模式分析

2.1 PCI总线硬件控制时序模式

PCI总线数据传输的整个过程是由主设备的FRAME#,IRDY#和从设备的TRDY#这三种信号相互配合完成,PCI总线数据传输分为3个阶段:

(1)FRAME#标明了一个完整的PCI总线数据传输的开始和结束,在其有效后的第一个时钟上升沿,主设备产生地址周期,分别在控制信号上传输总线命令和在地址/数据复用线上传输地址信息;

(2)当下一个时钟的上升沿时,标志为一个或多个数据周期,主设备的IRDY#有效,同时从设备的TRDY#有效,开始数据传输,若主从设备的这两个信号无效,则PCI总线上主从设备可加入等待周期,等待主从设备产生有效的Ready信号;

(3)最后一个数据周期开始时,在时钟的上升沿,首先主设备的FRAME#处于无效状态,保持主设备的IRDY#有效,等待从设备发出TRDY#无效,一旦TRDY#无效,标志着数据传输完成,同时主设备发出IRDY#无效,整个PCI总线数据传输完成,这时PCI总线的主设备释放总线控制权。

不管是主设备的数据写入从设备,还是主设备读出从设备的数据,都离不开FRAME#,IRDY#和TRDY#三种信号的相互配合,这三种信号任意信号无响应都会造成PCI总线的无限等待或者锁死,导致其他PCI设备无法正常响应,甚至PCI总线瘫痪。

PCI总线数据传输的终止过程要有主设备和从设备的相互配合,但是数据传输完成的最后一步需要由主设备发出IRDY#无效信号后完成。但是,不是任何一个开始或者即将开始的PCI总线数据传输都能够正常完成,在PCI总线协议设计之初,就涉及到了PCI总线数据传输中止情况,分为主设备主动发出的传输终止和从设备主动发出的传输终止:

(1)主设备发出的终止情况。当主设备的GNT#无效且其主设备内部延时计数器已满,主设备强制FRAME#无效,同时产生IRDY#有效,同时从设备判定主设备提出传输中止请求,发出TRDY#有效,紧接着IRDY#无效,同时主设备IRDY#无效,满足数据传输完成的条件(FRAME#和IRDY#都无效)。或者当从设备在FRAME#信号建立后的至少5个周期还没有建立起DEVSEL#信号时,主设备将认为从设备没有能力响应或者地址有误且不能重复,而提前终止数据传输。

(2)PCI总线的某从设备处于非空闲状态或者某设备处于互斥访问的锁定状态,使得PCI从设备无法进行正常的信号响应或者由于从设备在其后来的等待时间内不能对主设备作出响应等原因,从设备向主设备发出STOP#信号以示请求终止,放弃本次PCI总线数据传输。

2.2 PCI总线容错机制实现

根据PCI总线的传输中止和正常完成的特点,为了保证整个PCI总线不被主、从设备无法正常产生信号握手响应,而导致PCI总线挂死,在FPGA内部实现一个PCI的IP_Core,PCI错误控制状态机和PCI标准接口。将FPGA作为一个带有容错机制的二级PCI⁃PCI透明桥模式控制器完成CPU与PCI设备之间的数据操作。

如图3所示,在FPGA内部实现一个开放性的PCI_IP⁃Core,它内部的信号控制是受PCI错误控制状态机监控,在PCI总线正常传输完成时,PCI总线信号不受PCI错误控制状况干预,当PCI总线的传输没有信号响应的时候,PCI错误控制状态机接管FPGA内部主从设备的PCI_Interface接口的信号,模拟主从设备,给对方发出应该响应的信号,完成PCI总线传输中止的时序控制,同时在对应的FPGA内部寄存器(处理器PCI接口寄存器、PCI设备寄存器)中记录PCI设备或者处理器的错误代码,同时产生中断,上报处理器,处理器进入中断服务程序,并根据PCI设备的重要程度和PCI设备的主从特点,将按照以下三类情况,对PCI总线传输错误进行处理。

(1)从PCI设备错误

处理器将标明ID号的PCI设备错误,通知系统控制单元,同时控制FPGA内的PCI错误控制状态机,将此PCI设备的IDSEL信号进行无效处理,并把PCI设备状态寄存器进行故障标明,提示PCI总线控制器不再访问此PCI设备,以免造成PCI总线的二次挂死。

(2)主PCI设备错误

处理器将标明ID号的PCI设备错误,通知系统控制单元,同时控制FPGA内的PCI错误控制状态机,将此PCI设备的IDSEL信号进行无效处理,同时屏蔽该设备的GNT#,REQ#,IRDY#和FRAME#信号,并把PCI设备状态寄存器进行故障标明,提示PCI总线控制器不再访问此PCI设备,以免造成PCI总线的二次挂死。

(3)PCI总线控制器错误

FPGA内的PCI错误控制状态机释放主机的PCI接口信号,同时PCI_IPCore接管PCI总线控制器的角色,完成该次PCI总线操作,同时以高优先级的中断方式通知处理器,并将处理器的PCI接口故障以离散量的方式通知PCI总线主设备,并让其暂时接管PCI总线。

FPGA内部的PCI错误控制状态机的控制流程,如图4所示。

3 PCI总线容错机制验证

基于物理的故障注入方法(硬件注入)[4]结合软件故障注入方法[5],向正在运行的PCI总线中注入故障,观察FPGA内的PCI错误控制状态的运行情况,是否能够有效地处理3类型故障,并保证整个嵌入式设备不会因为PCI总线死等或者“挂起”,避免整个嵌入式系统瘫痪。PCI总线故障注入方式和PCI总线容错机制控制的响应时间的验证关系,如表1所示。

4 结语

具有容错处理能力的PCI总线能够暂时接管总线或者恢复PCI总线的部分功能,以加速执行高吞吐量、高优先级的任务,增加了PCI总线的任务监控,发现硬件故障和隔离,发起故障恢复操作,降低了整个嵌入式设备的PCI总线规划难度和电路复杂程度,增加了嵌入式设备的可靠性。

摘要:由于PCI总线属于并行总线,在数据传输的过程中,可能出现某个PCI设备故障或者无法产生响应信号,导致整个PCI总线系统瘫痪。为了解决这一难题,采用FPGA实现PCI总线硬件故障容错技术,保证PCI总线在总线设备偶发故障或者设备无响应信号情况下,能够恢复PCI总线传输功能,并有效地屏蔽故障的PCI设备。

关键词:PCI总线,硬件故障,容错技术,数据传输

参考文献

[1]Anon.PCI local bus specification draft:revision 2.2[EB/OL].(1998-06-08)[2012-05-30].http://www.wenku.baidu.com/view/213ba0146edb6f.

[2]杨东,余松煜.PCI总线规范及其接口[J].微型机与应用,1996(8):21-24.

[3]李贵山,陈今鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.

[4]唐志敏,董剑,吴智博,等.PCI总线故障注入器的研究与设计[J].计算机工程与设计,2012,33(1):173-179.

[5]李金锋,张展,左德承,等.Linux平台上软件实现的PCIE总线故障注入系统[J].工业控制计算机,2012,25(8):1-3.

[6]雷海鹏,刘久文.基于PCI的ARINC429总线适配器设计与驱动开发[J].测控技术,2005,24(1):43-46.

[7]樊江锋,徐连波,叶波,等.基于PCI总线的Power PC8245处理器嵌入式系统硬件的设计与实现[J].现代电子技术,2015,38(16):62-65.

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

PCI通信总线 第5篇

数据采集在测控领域里有广泛的应用,已成为计算机测控系统的一个重要组成部分,尤其在多设备数据采集系统中,由于各种设备的功能不同,数据格式多样性,从各设备来提取大量的、连续的数据作为状态信息,以此来分析、显示各设备的工作状态,这就需要高速、多通道的数据接收卡来保证接收数据的实时性及完整性;传统的单通道数据接收卡占去一个PCI接口插槽,在计算机空间有限时,难以实现同时接收多路数据,而多通道数据接收卡则可对此问题迎刃而解,利用FPGA、双端口RAM和PCI桥接芯片(PCI9054)等组成的硬件逻辑结构可轻松实现多路数据同时缓存及接收的功能,设计中采用DMA及突发方式相结合进行数据交互[1],保证了数据完整性及实时性,同时提高了PCI总线的传输效率。

1 工作原理

在系统应用中,利用多通道数据接收卡可实现对多设备的数据接收功能,外部设备可能有多种速率、多种帧格式的数据需进行后期处理[2],针对数据多样性考虑,在接收卡上将帧长及帧头等信息做成可参数配置化值,使接收卡有了更好的适应性。

针对系统对多路信号接收的实时性和同步性的要求,提出了一种FPGA+双端口RAM的结合设计,原理框图如图1所示。各通道的工作原理相同,时钟及数据通过RJ45接插件进入板卡接口芯片,经电平转换后输入至FPGA内部,由FPGA进行串并转换、帧头检索,检索到帧头后进行三帧保护入锁,将锁定后的数据按顺序写入双端口RAM中,每写完指定帧数(可参数配置值)后将当前的双端口RAM的写地址值写入双端口RAM的mailbox中,mailbox功能会自动启动,产生低电平,此电平接到PCI9054的中断LINT#端,上位机收到PCI中断后首先查询各通道的mailbox信息,若有地址更新则启动一次DMA,将双端口RAM中的新数据一次性读完,同时会对中断复位。

2 FPGA逻辑设计

2.1 设计思想

FPGA是整个电路的核心,它负责控制外部接入数据的接收和实现PCI协议与桥接芯片(PCI9054)进行通信,还有控制双端口RAM进行数据存储。

2.2 模块分类

根据以上设计思想,整个FPGA逻辑模块划分为:时钟逻辑模块、串并转换模块、存储控制模块和LocalBus接口控制模块。下面具体给出各模块的设计过程。

(1) 时钟产生模块

系统工作时钟为33 MHz,时钟精准度达到系统指标要求,用FPGA内部锁相环核对系统时钟进行倍频及分频,保证了时钟的周期、占空比、延时及抖动要求[3,4]。

(2) 串并转换模块

将输入的串行数据转换为并行数据,该模块主要采用移位寄存器来实现。把串行数据转换成32 bit的并行数据处理。

(3) 帧同步检测模块

当FPGA从串行输入数据中发现需要搜索的同步字后,每32个比特产生一个字同步信号。此信号作为双端口RAM存储器的写时钟信号(以字为单位写入),32位数据一路送到双端口RAM存储器输入;另一路输入5状态机进行帧同步的判断。同步字提取模块搜索到同步字后,向帧同步产生模块发送了一个复位信号,此后当在每一帧同步头处,帧同步产生模块都会输出一个高电平信号,通知状态机进行帧同步比对;而在非帧同步头处,帧同步产生模块输出一个低电平信号。

(4) 状态机

5状态机模块主要实现:连续三帧搜索到同步字,则认为锁定,并输出存储器使能,开始将数据写入RAM;连续三帧搜索不到同步字,则认为失锁,并无效存储器使能,停止写入数据。

(5) 地址产生模块

数据锁定后,字同步信号和32位数据输入至写RAM地址产生模块,字同步信号作为本地时钟,检测到第一个数据帧头时产生写RAM的第一个地址,然后写地址随本地时钟的产生继续累加,当写到RAM的最大容量值附近时,根据整帧传输原则,在整帧字倍数地址处回转至起始地址开始写入。在此,需保证双端口RAM的mailbox地址不被正常数据占用。

(6) 双端口Mailbox控制模块

双端口RAM的mailbox可存储32位的数据,当写时钟对mailbox地址进行写操作时,它会将同端的INT电平置位低,此引脚可作为中断使用,在RAM的另一端对本mailbox进行读取时INT电平会被复位。Mailbox为传递特殊信息的简洁且有效的途经。

在此设计中,mailbox用来存储当前的有效写地址,利用mailbox产生的INT功能对PCI局部总线的中断置位,这样可使PCI实时产生中断,通知上位机进行新数据读取,保证了数据的低延时传输。

(7) 存储控制模块

RAM采用CYPRESS公司的CY7C0853V,它包含32根数据线和18根地址线,以及少量控制线,容量为256K×32bits,合8 MBit储存量,满足当前的传输数据量的要求。同时,它还有自带的邮箱机制,当缓冲区里的数据量达到一定程度时,可以通过中断来通知各控制模块进行相应操作。它具有真正的双端口,可以同时对其进行数据存取,两端口具有独立的控制线、地址线及数据线。根据双端口RAM器件的读写时序来实现对双端口RAM的读写操作,已达到缓存数据的目的。

(8) LocalBus接口控制模块

该模块为LocalBus与双端口RAM交互的控制模块,将LocalBus的地址进行译码分辨上位机对通道的读取选择,根据ADS及BLAST信号利用局部总线逻辑状态机控制读写周期、双端口RAM读使能及时钟,实现了上位机对双端口RAM的数据读取操作。在本设计中运用了DMA与突发模式结合的传输方法实现了localbus与PCI总线的数据交互。

3 LocalBus与PCIbus的交互方式

《PCI9054-DataBook》中介绍了DMA和突发数据传输放在一起的时序图,这并不指定DMA和突发数据传输是等同的,是2个不同的传输概念[5]。实际应用中,既可利用单一周期的总线操作,也可以利用DMA方式进行数据传输[6]。

PCI9054中有2个DMA通道,可以独立工作。采用DMA方式传输数据时可以节省CPU的资源占用率;采用突发方式传输数据可以提高数据的传输率。因此,在大量高速数据传输和处理系统中,将DMA传输和突发数据传输方式结合在一起是一种高效率传输方式的[7]。

PCI9054在C模式下,采用单一周期和突发相结合的总线访问状态转换程序流程图如图2所示。

设计中PCI9054 局部总线控制可编程逻辑设计具体实现过程如图3所示。状态0 为等待状态,当检测到ADS #为0时表明需要访问本地空间,转到状态1,否则停留在状态0;状态1为本地访问开始状态,在此状态下,若BLAST #为0,转到状态2,若BLAST#为1,则转到状态4;状态2为单周期等待状态,在此状态下,数据在本地总线上保持稳定,从次状态转到状态3;状态3为单周期数据结束态,此状态下数据从本地总线上被取走,此状态时当ADS#为0,表明还需要访问本地空间,则转到状态1,否则转到状态0,完成单周期数据传送;状态4为突发等待状态,在此状态下数据在本地总线上保持稳定,从此状态转到状态5;状态5为突发重复状态,在此状态下,若BLAST#为0,转到状态6,否则重复此状态;状态6为最后数据突发传输完成状态,在此状态下当ADS#为0时,表明还需要访问本地空间,转到状态1,否则转到状态0,将上述状态机用VHDL硬件描述语言在可FPGA中实现,即可实现访问本地总线的控制逻辑[8]。

用该状态机转换思想设计出的逻辑电路,既可满足单一周期总线访问的时序要求,又可以满足突发方式传输数据的时序要求[9,10],因而具有很大的实用价值。

4 实验结果

三通道数据接收卡与单通道数据接收卡功能对比结果如表1所示。

根据表1中列出的数据结果可看出,三通道数据接收卡的各方面性能都优与单通道数据接收卡;在占用相同数量PCI槽位工作时三通道数据接收卡接收路数为单通道卡的3倍,节省了PCI插槽占用数。

local-bus与PCI-bus交互采用突发DMA模式[11],单位时间内的数据接收总量远远大于单通道卡的单步模式;三通道数据接收卡丰富了对外硬件接口,可在RS422、Mlvds及Lvds之间任选一种工作,配置灵活。

三通道数据接收卡已在某无人机数据链传输系统中得到应用,由于工程应用中各设备工作条件有所限制,实际应用中单个通道的接收速率达到了100 Mbit/s,3个通道可同时工作,工作状态稳定,数据接收完整。

5 结束语

采用了FPGA、双端口RAM及PCI9054桥接芯片相结合的设计方法完成高速、多通道、实时的数据采集。通过modelsim平台仿真验证了程序设计的合理性与时序状态的正确性。利用DMA与突发传输结合方法,传输效率远高于单通道的数据接收卡,且保证每路的数据完整性,对外硬件接口配置灵活,选用低功耗芯片,有了更强的适应能力。

参考文献

[1]王骐,王青萍.基于PCI9054的DMA和突发数据传输实现[J].物联网技术,2011(5):85-88.

[2]李艳军,郭正刚,张志新,等.基于FPGA多通道同步数据采集系统设计[J].微计算机信息,2007,23(9-2):212-213.

[3]王珊,程志洪,李光.同步数据转以太网的接口设计[J].无线电工程,2009,39(3):53-55.

[4]舒燕,李青平,孙桦.基于DDS内插PLL的设计分析[J].无线电工程,2009,39(8):45-47.

[5]PLX9054Data Book V2.1[S],2000.

[6]张丽,阔永红,傅丰林.基于PCI9054的数据采集系统的实现[J].现代电子技术,2007,30(6):151-153.

[7]林若波,陈旭文.基于PCI9054的高速数据接收卡的设计[J].测控技术,2011,30(5):58-60.

[8]潘松,黄继业.EDA技术与VHDL[M].北京:清华大学出版社,2007:213-239.

[9]张娜,秦蒙.信号完整性分析及仿真[J].计算机与网络,2012,38(13):38-40.

[10]纪淑波,曲北北.PCI9054接口芯片的应用设计[J].光电技术应用,2008,23(4):46-48.

PCI通信总线 第6篇

实现PCI总线协议目前主要有专用接口芯片和CPLD实现两种方式。专用接口芯片使用简单方便、工作稳定可靠,但往往具体应用中只用到部分功能,并且需要可编程逻辑配合使用,这样不仅浪费专用芯片的资源,而且也增加了电路板面积。采用Complex Programmable Logic Device(CPLD)实现突出的优点就在于其灵活的可编程性,这使得硬件电路的升级只需改进软件就可实现,大大提高了硬件平台的通用性;此外CPLD内部有丰富的逻辑资源,可将用户控制逻辑和PCI接口逻辑在同一块芯片中实现,这样不仅充分利用了逻辑资源,还能使系统设计显得更加紧凑[2]。

文中主要介绍了采用CPLD实现32 bit 33 MHz PCI从设备接口的设计方法,该从设备接口模块遵从PCI规范2.2版,实现了资源的自动配置,支持突发传输,并为用户提供了一个简单的接口。设计完成后配置到一块PCI开发板上的CPLD中,系统工作稳定、可靠,验证了该设计方法的工程可行性。

1 PCI总线协议简介

一个PCI系统中,如果某设备取得了总线控制权,就称其为主设备;而被主设备选中以进行通信的设备称为从设备或目标设备。PCI接口信号线共有100根,分为系统信号、仲裁信号、接口控制信号、地址/数据线、错误报告信号、中断信号等类型,其中作为从设备至少需要47条信号线。表1中列出了从设备接口设计必需的接口信号及说明。

一个完整的PCI总线交易过程如下:要发起数据交易的设备先置REQ#,在得到仲裁器的许可(GNT#)后,通过拉低FRAME#启动一个传输交易(TRANSACTION),并同时在AD[31:0]总线上放置地址,在CBE[3:0]总线上放置命令。PCI总线上所有的设备都对此地址译码,被选中的从设备要置DEVSEL#有效以声明自己被选中,同时对命令译码确定访问类型。在接下来的数据期中,IRDY#和TRDY#分别表示主、从设备准备好。两者同时有效,则在时钟上升沿传输数据;主从双方可以分别通过使IRDY#或TRDY#无效,在数据期中插入等待周期。数据传输结束前,主设备通过撤销FRAME#并建立IRDY#标明只剩最后一组数据要传输,并在数据传输完后放开IRDY#以释放总线控制权。从设备也可以通过有效STOP#信号来请求终止传输,从设备断开连接有RETRY、DISCONNECT和ABORT3种情况,RETRY是由于数据传输的起始字节超过16个PCI时钟周期引起的;DISCONNECT是由于在数据传输的非起始字节,从设备在8个时钟周期里不能对主设备做出反应引起的;ABORT是由于目标设备发现严重错误或者不能完成数据请求,而使STOP# 和DEVSEL#都无效来终止当前进程。传输终止后总线进入空闲状态,等待下个PCI总线交易开始。

表1中,#表示信号低电平有效,否则为高电平有效。IN表示标准的输入信号,OUT表示标准的输出驱动信号,T/S表示双向的三态输入/输出信号,S/T/S表示持续且低电平有效的三态信号,O/D表示漏极开路信号。

2 PCI从设备接口的CPLD实现

设计的32 bit 33 MHz PCI从设备接口的内部结构框图如图1所示,由结构图可以看出它主要由状态机、配置空间、译码模块、数据通道、奇偶校验和重试模块组成。PCI从设备接口实现的功能是将一个不符合PCI总线协议的设备桥接到PCI总线上,为计算机PCI总线和用户应用之间传输数据提供一个数据通道。该从设备接口为用户提供了一个简单的总线接口,特别适合PCI总线与32位SRAM或FIFO等高速存储设备的桥接。

2.1 状态机

状态机是整个PCI从设备接口设计的控制核心,它控制着PCI总线交易时序和控制信号的产生,文中结合PCI规范的要求,使用Verilog HDL语言[3]、采用One-hot编码[4]方式设计了全同步状态机,状态机由表3 所列的8个状态组成,状态机状态转移图如图2所示。

PCI目标状态机状态转移有以下几种情形:

(1)Idle→B_busy→Idle,地址译码设备未被选中,则处于B_busy总线忙状态等待总线交易结束,直到FRAME#失效当前总线交易结束才返回Idle。

(2)Idle→B_busy→Wait→Backoff→Turn_ar→Idle,设备未能在16个时钟周期内准备好第一个传输数据,超时重试(RETRY)断开连接,总线停留在Backoff等待总线撤消FRAME#,然后总线释放返回空闲态。

(3)Idle→B_busy→Wait→(R_wait)→L_data→(Backoff)→Turn_ar→Idle,从设备同时有效Ready和Term信号,表明从设备不支持突发传输或者没有更多的数据存储空间进行突发传输,只能进行最后一个数据交易。如果是读交易,则插入读等待状态R_wait。若访问为突发访问,当惟一的数据期完成以后,总线停留在Backoff状态等待主设备无效FRAME#,然后交易结束。

(4)Idle→B_busy→Wait→(R_wait)→Data→(L_data)→(Backoff)→Turn_ar→Idle,突发数据交易,读交易则插入读等待状态R_wait。若从设备提出终止,则插入L_data和Backoff状态与主设备断开连接;若是主设备提出终止则正常的结束总线交易。

在设计中,配置访问不支持突发传输,总线时序和情形(3)一致;而内存访问支持突发传输,情形(3)和(4)的时序均会出现。用户应用可以通过Ready和Term信号不同的输入组合来控制状态机的状态转移,如表4所示。但是在本设计中的顺序要么是先等待,然后正常数据交易、正常结束或者提出断开连接;要么是先等待,然后重试直接断开连接,只有这两种顺序,用户应用不能在正常数据交易期中再插入等待状态,这是不允许的。

2.2 配置空间

配置空间是容量为256 Byte并具有特定记录结构或模型的地址空间,包括头标区和设备有关区,前64 Byte是头标区,用来唯一的识别设备,并使设备能以一般的方法控制,是PCI设备必须实现的。

本模块实现了头标区所有的字段,可读可写字段中可写的位由触发器来实现,其它位和只读字段全部硬件连线接地或者接高。通过配置空间寄存器,配置软件可以确定设备的存在、功能以及资源请求。配置空间主要字段的设置及含义说明如表5所示。

2.3 译码

译码模块包括命令译码、地址译码。在总线交易的地址期,译码模块通过将 AD 信号线地址期的值与配置空间基址寄存器值相比较,确定访问是否落在本设备的地址空间范围内;或确定是否被选作配置访问的目标设备。同时对地址期C/BE信号线的值进行命令译码,确定总线访问的类型,本模块支持配置读、写和内存读、写4种PCI总线访问方式。若译码后设备被选中,则发送HIT信号通知状态机做进一步处理。

2.4 数据通道

在总线交易的地址期,数据通道锁存AD总线上的地址信号,并在IRDY#和TRDY#同时有效的时钟上升沿,将地址自动增加一个双字地址并提供给用户接口。在数据期,写交易时将AD总线上的数据写入配置空间或者用户设备,在读交易时数据通道负责将要读出的配置数据或用户设备数据锁存送到AD总线上,并产生偶校验值送给奇偶校验模块。数据通道为PCI访问配置空间和用户设备提供了一个地址和数据接口。

2.5 奇偶校验

奇偶校验主要用来确定主设备是否成功的寻址到它希望的目标设备,以及数据传输的正确与否,在总线交易中,任何设备驱动数据总线输出数据,就必须在相应的地址或者数据的下一个时钟周期驱动PAR线。设计中省去了奇偶校验值的检验电路,只实现了必须的偶校验值产生电路,计算出要输出数据和CBE的偶校验值后,在数据期的下一个总线时钟周期送给主设备检验。

2.6 重试模块

从设备接口如果承诺了一个数据交易,则必须在16个时钟周期内准备好发送和接受数据,否则超时重试。如果用户设备被选作交易的从设备,但没有准备好,无法开始起始字节的数据交易,则状态机一直处于等待状态,如果在规定的时间内用户设备仍没有有效Ready信号,该模块通知状态机超时重试,然后断开连接。

2.7 其他逻辑

该部分主要包括一个总线选择器和一个三态总线驱动器。总线选择器根据总线访问的类型,选通配置空间读数据或用户设备数据送至数据通道;三态总线驱动器对输出到用户设备的数据进行三态驱动。

3 时序仿真

文中采用Verilog HDL语言设计实现了上述模块,在Altera公司MAX+plusII10.0软件环境下,选用FLEX10K20RC208-3器件进行综合编译,占用341个逻辑单元,最高工作频率36 MHz,满足PCI总线的时序要求。图3是内存突发读访问的时序仿真波形,突发传输4个数据,在每个数据传输的下个时钟周期输出奇偶校验值,最后用户设备提出终止传输请求,最后一个数据传输完成后交易结束。图4是内存突发写访问的时序仿真波形,突发传输4个数据后,主设备插入等待周期,同时用户设备也有效Ready和Term请求终止传输,在第5个数据也是最后一个数据传输完成后,总线交易结束。这两个时序图属于传输最后一个数据并断开连接情形的两种不同情况。仿真波形的分析表明,从设备接口模块符合PCI规范的要求。

4 结束语

将一个FIFO模块连接到PCI从设备接口的用户总线组成测试平台,由FIFO的状态和控制信号提供同步的Ready和Term信号。这个测试平台在MAX+plusII下编译,并下载到PCI开发板上一片EPF10K20RC208-3芯片中,安装驱动程序后,PCI开发板正确识别、工作稳定、读、写数据准确无误;多组数据传输测试,测得数据突发传输率约可达到20 MB·s-1。

摘要:提出了一种PCI总线从设备的CPLD实现方法。该方法遵从PCI规范2.2版,实现了资源自动配置并且支持数据突发传输。试验证明该方法的有效性,其突发传输速率可达20 MB.s-1。

关键词:PCI总线,从设备接口,CPLD

参考文献

[1]李贵山,戚德虎.PCI局部总线开发者指南[M].西安:西安电子科技大学出版社,1997.

[2]曾哲昱,叶卫东.用CPLD实现PCI总线目标接口[J].测控技术,2002(1):54-58.

[3]张亮.数字电路设计与Verilog HDL[M].北京:人民邮电出版社,2000.

基于PCI总线的数据采集卡的设计 第7篇

PCI (Peripheral Component Interconnect)总线即外部部件互连总线,是一种高性能32/64位地址数据复用高速外围设备接口局部总线。随着微处理机的性能不断提高,人们对微机系统的I/0带宽不断提出新的要求,原有的标准总线,如ISA、EISA和MC已经逐渐不能胜任现代数据采集技术的要求。PCI局部总线的引入,打破了数据传输的瓶颈,以其优异的性能和适应性成为微机总线的主流,基于PCI总线的数据采集系统是高速数据采集系统的发展方向[1]。此外,由于数据信息量比较大,且对数据传输的实时性要求较高,故采用高速的PCI总线进行数据采集和传输是完全有必要的。

1 数据采集系统设计方案

本系统所设计的数据采集卡主要用于液压材料拉力试验机的改造,原有的液压材料拉力试验机的压力测量采用机械式测量即利用杠杆原理带动指针在刻度盘上显示,材料变形量也是由人工读取相应的变形刻度并记录,这样数据的读取的结果往往误差较大,直接影响了试验结果的准确度。现将压力(或拉力)采用压力传感器测量、材料的变形则采用位移传感器来测量,传感器回传的信号经PCI数据采集卡转换成数字信号,由拉力测试试验软件进行记录、分析、显示等等,这样得到的试验数据的误差大大的降低了,提高了试验的准确度。

1.1 系统方案选择

根据系统的要求、功能指标及传感器的型号选择,提出了两套基于PCI总线的数据采集卡的设计方案。一种是基于DSP和PCI总线接口的高速数据采集系统,由高速高精度A/D转换芯片、高性能DSP芯片、PCI总线接口组成;另一种由高速高精度A/D转换芯片、双口RAM、CPLD、PCI总线接口组成。第一种方案将数据采集系统完全搭建在一个DSP上,DSP不仅要完成复杂的算法,还要控制采集外部数据、输出控制信号和完成人机交互的工作,必然会降低系统的实时性。本系统采用第二种方案,其主要功能模块有:PCI总线控制器、双口RAM、采集控制芯片CPLD和高速高精度A/D芯片。本设计采用数据采集芯片ADuC812来实现数据的模数转换和存贮控制;用双口RAM实现高速A/D与微机接口的连接;CPLD对ADuC812和PCI总线控制器进行逻辑控制,防止它们由于同时对双口RAM的同一地址的读写而产生冲突。系统原理框图如图一所示。

1.2 PCI总线接口设计方案

本系统采用了PCI总线,其在33MHz的时钟频率下运行,采用32位数据总线,并能扩展到64位,可支持多组外围部件,数据传送速率高达132MB/s。由于PCI的总线规范十分复杂,有严格的时序要求,因此给PCI接口设计带来困难。目前主要有三种PC I总线接口方案[2]:

(1)基于IP模块的PCI总线接口设计及FPGA实现,此方法开发周期较长,开发者需掌握一定的PCI总线协议细节,且FPGA厂商提供的PCI总线的IP核价格较高。

(2)选用专用的PCI接口芯片,这种方案开发周期短,成本适中,开发者不需要掌握太多的PCI总线协议细节。

(3)针对特定的设计选用合适的带PCI接口的芯片,这些芯片在开发过程屮考虑到了其适用领域和应用前景,在芯片本身内部包含了一些标准接口电路,甚至有一些电路本身支持PC机的扩展环境和相关的板卡设计。

本系统采用的方法是使用专用的PCI接口芯片,目前可选用的PCI总线接口芯片主要是PLX公司和AMCC公司的,如美国PLX公司的PCI90XX系列产品已被广泛采用,这类芯片的通用性较强,但是同时也有成本高和开发周期稍长的问题。AMCC公司的S59XX系列芯片也比较贵,从降低开发成本、使用的方便性考虑,本系统选择南京沁恒电子有限公司生产的一种PCI总线接口I芯片CH365。通过使用这种专用芯片,设计者只需使用相关的地址线、数据线以及几个控制信号,就能实现PCI总线与PCI用户设备之间的连接。这种方法简单方便,已经被越来越多的设计者所采用。

2 系统硬件结构

数据采集系统的A/D转换器采用高性能的数据采集系统芯片ADuC812,采样频率为200KHz。由于程序控制A/D转换,A/D转换后实时把数据存储到双口RAM中。为了防止和CH365发生读写冲突,利用CPLD和双口RAM旗语功能来协调ADuC812的读写,保证数据正确地存储到双口RAM中。双口RAM采用IDT公司的IDT7005S,IDT7005S是一种高速低功耗CMOS型8K×8bit的双口静态RAM。它具有两套相互独立的地址线、数据线和控制线,允许两个CPU同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元,否则就会发生错误。设计时,将IDT7005S的8K存储空间均分为两个独立的容量为4K的存储区域,左端口用于接收采样信号经A/D转换后的数据,右端口用于读取采样数据。当数据采集开始时,左端口写入数据量达到4K后,由CPLD产生CH365寄存器读信号(MEM_RD),并通知计算机经右端口将数据取走,同时左端口继续向另一4K的存储区域写入转换数据。这样,计算机不需要在取一个数据后等待A/D转换完成送下一个数据,而是成批地读取,从而提高了整个数据采集系统的运行速度和性能,同时也避免了对同一存储单元进行读写误操作的情况。CH365是一个连接PCI总线的通用接口I芯片,支持I/0端口映射、存储器映射、扩展ROM以及中断。CH365将32位高速PCI总线转换为简便易用的类似与ISA总线的8位主动并行接口,用于制作低成本的基于PCI总线的计算机板卡,以及将原先基于ISA总线的板卡升级到PC[总线上。为了在不增加引脚的前提下提供更多可用功能,CH365对部分引脚进行复用,通过“工作模式设定”进行功能选择[3]。在连接两线串口的EEPROM时CH365的SCL信号线可以选用SYS_EX或者A15,系统复位后的默认选择是A15,通常在A15用作地址线时选用SYS_EX,否则选用A15。因为SDA信号线同时是数据线D7,为了防止在SCL高电平期间由于SDA变化而产生不必要的误操作,通常借助于工作模式设定使SCL信号(SYS_EX或A15)在系统复位后保持低电平。CPLD选用Atcra公司的EPM71 28,CPLD在系统中主要完成的工作;CH365地址译码及锁存,CH365管脚逻辑控制,ADuC812数据锁存和双口RAM的旗语操作逻辑控制。系统硬件结构框图如图二所示。

3 数据采集卡软件设计

在本系统中软件的设计主要包括对CPLD的编程和对CH365驱动程序的编写。

3.1 CPLD的编程

系统的主体部分用原理图输入方式,由于系统需要的功能较多,对库中没有提供的芯片用VHDL编程实现。在编程的过程中,由于在本系统中CH365工作在本地硬件定址的工作模式,所以要特别处理好初始上电状态的数据线的状态,一定将其设定为高阻态,否则会出现找不到PCI卡的情况。下面是一个计数器的设计:

3.2 CH365驱动程序的编程

南京沁恒公司提供了基于CH365的通用驱动程序WDM和动态链接库DLL,在系统找到设计的PCI卡后,安装通用的驱动程序即可。基于CH365的本地硬件定址功能,产品制造商可以很方便地将原有的ISA板卡直接升级到PCI总线上,并且仍然可以使用ISA板卡的原有I/0端口地址,从而不需要对应用程序作任何修改。若重新编写程序,只需调用提供的动态链接库中的函数和数据结构即可,如CH365ReadloBy tc ()、CH365Wr i te IoByte ()等。

4 结束语

ADuC812、双口RAM、CPLD、CH365组成的数据采集系统具有低成本、高性能、应用方便等优点。系统采用了可编程逻辑器件实现了数字硬件系统的逻辑控制,增强了系统设计和实现的灵活性,对于同类数据采集系统的研究具有一定的借鉴意义。实践证明,本系统能够较好地满足数据高速采集、传送和存储等要求,大幅度提高了拉力试验结果的准确度。本方法所设计实现的数据采集系统也可应用于通信、振动工程、语音处理、工业自动控制以及生物医学工程领域。

摘要:根据液压材料试验机的改造要求,提出了基于PCI总线的数据采集卡的设计方案,并对其进行了详细的论证,进而完成了系统硬件结构的设计,并对系统的软件编程作了简要的介绍。实践证明,数据采集卡其高性能、高稳定性、高可靠性在材料试验机改造系统中发挥高效的作用,大大提高试验结果的准确度。

关键词:数据采集,PCI总线,双口RAM

参考文献

[1]李贵山,戚德虎.PCI局部总线开发指南[M].西安:西安电子科技大学出版社,1997.

[2]李宇.PCI总线设备开发宝典[M].北京:北京航空航天大学出版社,2005.

[3]Tom Shanley,Don Anderson著.刘晖译.PCI系统结构[M].北京:北京大学出版社,2000.

[4]武安河,周利莉.Windows设备驱动程序开发务实[M].北京:电子工业出版社,2001.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【PCI通信总线】相关文章:

高速数据通信总线08-26

高速光纤串行总线光纤通信论文04-12

浅谈几种串行通信总线接口技术09-12

PCI总线控制器05-09

信息总线05-07

软件总线07-16

仪表总线07-30

高速总线08-18

总线控制08-29

PC总线05-08

上一篇:关注学生的人格养成下一篇:技术机制