CPCI总线简介
CPCI总线是一个开放式、国际性技术标准,由PCI总线工业计算机制造商组织PICMG(PCI Industrial Computer Manufacturer Group)负责制定和支持。CPCI总线具有严格的标准和规范,保证其具有良好的兼容性,支持多种处理器和操作系统,符合CPCI规范的扩展卡可插入任何CPCI系统并可靠地工作。CPCI标准将外设组件互连(PCI)标准特性与支持嵌入式应用的坚固机械外形完美结合在一起,其性能特征是专门针对工业环境而量身定制的。简单的说:CPCI总线=PCI总线的电气规范+标准针孔连接器+欧洲卡规范。CPCI基于ICMG2.0规范,其电气特性与PCI总线相同,因此用户的软件和普通PC机兼容,现有的PCI外围卡也可以很容易地移植到CPCI平台上。CPCI使用高密度针孔总线连接器,和使用金手指连接器的PCI卡相比,具有连接更可靠,完全气密的特点,模块的抗震性和抗腐蚀性高。CPCI还支持热插拔,即可在不关机状态下插入或取出板卡。热插拔的优点在于能增强系统性能或诊断系统故障而无需关闭系统,这对很多应用来说十分重要。
另外,CPCI在32位/33MHz系统中能够提供132MB/s的背板传输能力,在64位/66MHz系统配置情况下的性能为528 MB/s。在对带宽要求高的场合CPCI具有很强的优势。
除了上述所有的优点,CPCI还具有非技术性的优势,即经济实用、可快速推向市场以及高可靠性。所以,在当今的工控、通信、军事等诸多要求高可靠性领域中CPCI总线已经取代了ISA、STD等其它总线,成为主流总线形式。
C PCI系统硬件方案概述
CPCI系统由机箱、电源、总线背板和功能单元组成。一般而言,CPCI机箱内部就带有电源和总线背板,其中CPCI总线背板如图1所示。
在这个CPCI系统中,我们研制的实际上是一块功能单元板,其硬件框图如图2所示。
CPCI总线控制以及通信协议十分复杂,一般需要选用专门的处理芯片。我们这里选用了PLX公司的PCI9054芯片,而电源管理选用了凌力尔特公司的LTC4240芯片。
CPCI总线接口设计
PCI总线接口的实现
设计PCI接口的实现通常有两种方法:一种是用可编程器件FPGA或CPLD,另一种是用专用PCI接口芯片。二者各有优缺点:利用可编程器件自行设计PCI接口逻辑,可以根据具体的应用需要,优化接口逻辑,灵活性是该方法最大的特点,且接口逻辑也可获得较高的性能。但是由于PCI协议比较复杂,在具体的实现中也相当困难,并且各种逻辑关系验证起来也很麻烦,有时会得不偿失,把简单的设计变得复杂化了;而利用专用芯片来实现PCI总线接口是一种能够解决设计难点的有效方法。但是这种芯片必须具有较低的成本和通用性,而不限于插卡一侧的特定处理器总线,能够优化数据传输,提供配置空间,具备片内FIFO功能(用于突发性传输)等。目前,很多半导体器件公司提供这类专用芯片。如PLX开发的PCI9030、PCI9054 和AMCC开发的接口芯片S5933等。
比较以上两种实现PCI接口的方案可知,用可编程逻辑器件能够较灵活地实现所需要的功能,但为了达到PCI指标的苛刻要求,需要做大量的逻辑验证和时序分析工作。采用PCI专用芯片,可以比较容易地实现PCI接口,大大缩短开发时间,当然,由于厂家设计芯片时对通用性的考虑,在用户需要的某个方面可能不是最好的,但综合性能方面,采用专用芯片要比用可编程器件设计好得多。
我们最终选用了PLX公司的PCI9054芯片。
P CI9054是PLX公司生产的PCI总线通用接口芯片,采用先进的PLX数据管道结构技术,符合PCIV2.1和V2.2规范。提供了两个独立的可编程DMA控制器。每个通道均支持块和分散/集中的DMA方式:在PCI总线端支持32位/33MHz;本地端(local bus)可以编程实现8、16、32位的数据宽度,传输速率最高可达132MB/s。
PCI9054与DSP的接口
PCI9054作为一种桥接芯片在PCI总线和LOCAL总线之间提供传递消息,既可以作为两个总线的主控设备去控制总线,也可以作为两个总线的目标设备去响应总线。其本地总线可工作在M,C,J三种模式:M模式是专为Motorola公司的MCU设计的工作模式。C模式下9054芯片通过片内逻辑控制将PCI的地址线和数据线分开,很方便地为本地工作时序提供各种工作方式,一般较广泛应用于系统设计中。J模式是一种没有Local Master的工作模式。它的好处是地址数据线没有分开,严格仿效PCI总线的时序。
由于DSP我们采用了TI公司的C6202,考虑到与DSP的扩展总线进行接口,PCI9054的LOCAL总线选用了J模式。其连接如图3所示。
热插拔电路设计
CPCI总线不同于PCI总线的最大特点是支持热插拔(Hot Swap)。
热插拔技术概述
CPCI热插拔技术的基本目的是在系统正常工作的同时,CPCI总线上插入或拔出插件板,完成故障插件板的更换与计算机系统的重新配置。热插拔技术主要分为三种处理过程:
1)物理连接过程
热插入——在工作着
CPCI总线上加入插件板。
热拔出—— 在工作着
CPCI总线上移走插件板。
2)硬件连接过程
计算机系统在硬件上的电气连接与断开。
3)软件连接过程
计算机系统在软件上的连接与断开。
这 些连接过程在系统中虽属于不同的连接层,但是彼此相互关联。例如:当物理连接不存在时,硬件连接层就不能产生电气连接。而插件板从计算机系统的CPCI总线上拔出后,软件与硬件连接将自动断开。
LTC4240热插拔控制器是凌力尔特公司研制的针对CPCI总线的热插拔控制器,它使线路板能够在带电的CPCI总线插槽中安全地插入或拔出, 能控制全部4个CPCI电源,它使用两个外部N沟道晶体管控制3.3V和5V电源,而±12V电源则由两个片上开关管调节。电子断路器对所有4个电源进行过流保护,“电源良好”输出信号表明所有电源电压都在正常容限之内,另外,LTC4240有 个内置的I 2 C总线兼容接口,从而可用软件控制和监视器件功能及电源状态。它还使用户能够开启或关闭器件、置位RESETOUT、开启状态LED指示驱动器以及不受±12V电源故障的影响。这个器件还可为I/O引脚提供预充电偏压.以及通过将PCI_RST信号和HEALTHY信号整合来产生LOCAL_PCI_RST信号.并能满足PCI定时要求,且不需要外部逻辑电路。其典型应用如图5所示。
1)板卡插入过程
当板卡插入背板时,在CPCI接插件的防护地连接上,板卡上可能存在潜在的对地电压放电。该热插拔板将首先接触到背板插件的长针(+5V和地),即LTC4240的VCC管脚被加电,将对其后端电路进行复位以关断VGATE3/5输出,从而禁止外部MOSFET管工作,并输出1V参考电压,此1V参考电压对还未接触到背板的I/O管脚加电,同时PWRGD#的输出将被置高,接着I/O管脚接触到背板插针上,BD_SEL#管脚被主机置低,以确认板卡已经被正确的插入,此时LTC4240控制的上电顺序开始。LTC4240通过控制VGATE3/5的输出来打开外部的MOSFET功率管。板卡上的电路都保持在复位状态,直到5和3V电源电压稳定,而且内部复位时间计时器达到一定时间时,复位信号停止,板卡进入正常操作过程。
在 正常工作过程中,LTC4240将持续监控板卡的后端电压,一旦电压超过关断电压阈值,LTC4240将控制PWRGD#输出为低,以使主机检测到该信号并指示板卡电源有问题。
2)板卡拔出过程
板卡拔出时,首先将BD_SEL#与地断开,LTC4240则立即关断VGATE3/5输出,并改变PWRGD#的状态,同时将LOCAL_PCI_RST#输出置低,并将总线I/O接口电路置为高阻态,这时电源依旧对I/O脚加电,以使总线从激活状态平稳转为非供电状态。一旦I/O脚与背板插针断开,板卡上的电路和LTC4240将通过最后断开的长针进行最后的放电过程。
寄存器配置
设计好接口电路后,硬件设计工作还只完成了一半。由于PCI9054是通用PCI接口功能芯片,它的功能还不一定能够满足用户的需求,所 以还要进行功能寄存器设置以使接口电路具有特定的功能。寄存器的配置包括EEPROM初始化、LOCAL功能寄存器和PCI配置寄存器的配置。
1)EEPROM初始化
在计算机的加电自检期间,PCI总线的RST#信号复位,PCI9054内部寄存器的默认值作为回应。PCI9054输出本地LRESET#信号并检测串行EEPROM。如果串行EEPROM中的前33个比特不全为1,那么PCI9054确定串行EEPROM非空,用户可通过向PCI9054的寄存器CNTRL的29位写1来加载EEPROM的内容到PCI9054的内部寄存器,配置的信息(设备识别号、供应商代码号、Local总线三个空间的大小以及三个空间的基址等)事先要利用编程器写入配置存储器中,也可以在主机的专用程序中对EEPROM进行配置。
2)PCI配置寄存器的配置
配置PCI配置寄存器比较简单。主要是填写生产商ID号、器件ID号、类码子系统ID号和子系统生产商ID号。
3)本地配置寄存器的配置
对 于本地配置寄存器的配置就是对本地地址空间及其本地总线属性的配置。这些配置要根据实际开发的硬件板卡的硬件资源进行配置。
设备驱动程序的设计
在完成上述工作以后,还需在主控板(相当一台高性能计算机)上完成设备驱动程序。其关键是如何完成硬件操作,基本功能是完成设备的初始化、对端口的读写操作、中断的设置和响应及中断的调用,以及对内存的直接读写。在windows下有很多驱动程序开发环境,只需根据硬件的具体情况,很方便就能完成驱动程序的编制。
结束语
我们研制的设备实际上是一个通用硬件平台,通过加载不同软件,它需要完成很多复杂信号的检测、解调等功能,由于受到硬件运算速度、存储量等资源限制,这些信号处理仅靠底层的硬件电路(如DSP、FPGA)将很难满足要求,这就需要传给主控板处理;另外,考虑到应用的场合,CPCI总线系统很适合我们的要求,其接口设计就成为十分重要的部分,需要从软硬件两个方面全盘考虑、精心设计,才能达到预期目标。