基于CompactPCI总线数字隔离IO模块的实现

时间:2016年05月11日

摘 要:本文介绍了基于CompactPCI总线数字隔离I/O(Input/Output)模块的实现。通过硬件和驱动的设计,该模块可以实现数字信号传输和隔离的作用,在内场测试系统中起到了实际的作用。

 

关键词:输入/输出 PLX9030 隔离 驱动

1 引言

  1PCI总线一个重要的特点是其具有极高的数据传输速度,是新一代微机的标准总线,但是PCI的金手指插卡方式不能满足工业的高机械强度要求。CompactPCI规范是由PICMG制定的,在电气、逻辑和软件功能方面与PCI标准完全兼容(PCI规范请详见参考文献1),它制定了机械结构上更加坚固耐用的PCI版本,用于工业和嵌入式应用,是一种新的开放的工业计算机标准。本文介绍的基于CompactPCI总线的数字隔离I/O模块是应用于对抗震性能要求较高的内场测试系统上。

2 CompactPCI总线接口的设计

  目前CompactPCI接口卡的设计一般有两种方法,第一种是基于将PCI接口完全集成到ASIC中,这样做的好处是集成度高,量产的生产成本低,直接用成熟的核。另一种方法可以根据CompactPCI协议在FPGA中实现CompactPCI总线接口控制器,但是由于CompactPCI总线协议自身的复杂性,要想在短期内做到操作稳定,难度很大。综合项目需求、成本、开发难易及后续开发等几个问题考虑,选择了PLX9030芯片作为设计基于CompactPCI总线的接口芯片。

 

基于CompactPCI总线数字隔离IO模块的实现
图1 PLX9030控制原理示意图

 

  2.1 PLX9030实现CompactPCI总线接口设计

  如图2所示,设计主要由三个功能部分组成:一个是PLX9030与CompactPCI总线的接口控制逻辑,一个是它与局部总线的接口控制逻辑,还有一个即是与CompactPCI配置存储器串行EEPROM的接口控制逻辑。

 

基于CompactPCI总线数字隔离IO模块的实现
图2 PLX9030实现CompactPCI总线接口控制

 

  PLX9030接口控制芯片把CompactPCI总线和局域总线连接起来,把所有的CompactPCI接口信号做在芯片内部。本模块局域总线控制单元,用于输入输出选通控制,应用简单译码、琐存和缓冲,最终实现可分别一一控制的16位数据输入和16位数据输出,控制原理比较简单,为了节约板卡空间,用CPLD7128完成。设计方法请详见参考文献3。CompactPCI配置存储器串行EEPROM的接口控制逻辑是设计中的重点。

  2.2 配置寄存器

  PCI规范规定任何PCI设备必须实现一定数目的配置寄存器,以提供必要的配置信息。 9030对应的串行EEPROM容量需大于2Kbit(128words *16bit),并且需要有地址自增功能,在该课题中选用了93LC66芯片。PLX9030提供了与串行 EEPROM管脚—一对应的接口,只需对应连接即可,如图2。需要配置的寄存器请详见参考文献2。

  上电过程中,PLX9030的内部寄存器由PCI BUS的RST#信号复位,并给出响应信号RETRY,在LOCAL BUS上输出LRESET#信号,检查串行EEPROM是否存在。如果安装了EEPROM,PLX9030开始读串行EEPROM,若读出的第一个字非FFFFH,则PLX9030继续读操作,PLX9030用EEPROM中的值来配置片内的寄存器,否则认为EEPROM无效使用缺省值。对PLX9030来讲,EEPROM的前四个字节应该是30H、90H、B5H、10H,其中9030H为设备号,10B5H为厂商号。则PLX930用EEPROM中的值来配置片内的寄存器,否则使用缺省值。

3 模块隔离电路的设计

  隔离是指使用变压器、光电或电容耦合等方法在被测系统与测试系统之间传递信号,避免了直接的电气或物理连接。光电耦合器以光电转换原理传输信息,它不仅使信息发出端(一次侧)与信息接收端(二次侧)是电绝缘的,从而对地电位差干扰有很强的抑制能力,而且有很强的抑制电磁干扰的能力,且速度高,价格低,接口简单,因而得到广泛的应用。

  光电耦合器的一次侧都是发光二极管,但是二次侧有很多种结构,如光敏二极管、光敏晶体等,本卡选用光电耦合器的是高速CMOS型的,传输率可达10MHZ,型号为HCPL2630,原理说明请详见参考文献4。它的一次侧与二次侧的延迟时间只有28 ns,因此速度远远超过普通光电三极管型的光电隔离管。内部结构原理图如3。加装光电隔离电路的方法如图4。

 

基于CompactPCI总线数字隔离IO模块的实现
图3 HCPL2630内部原理


 

基于CompactPCI总线数字隔离IO模块的实现
图4 光电耦合器的连接图

 

  由于光电耦合器的前端是发光二极管,最大电流不能超过15mA,因此一定要加上限流电阻R。限流电阻R的阻值的大小,对光电耦合器的性能影响很大。R过大,会导致脉冲边缘延迟较大,R过太小,又很容易使光电耦合器前端发光二极管损坏而缩短光耦寿命。因此需要经过多次反复的实践才能最后确定。由于器件有个体的差异,在调试过程中,也遇到个别的光电耦合器在运行一段时间后才发现驱动能力不够,需要减小限流电阻、增大电流才能使发光二极管可靠导通的情况。

  光电耦合器输入端和输出端供电要使用不同电源,于是在板卡上应用了DC5V—DC5V电源隔离模块,自带∏型滤波器,在增加少量的外加电路后能达到很小的输出纹波。

4 模块的硬件原理

  如图5,当数字信号从CompactPCI的J2连接器输入到数字隔离I/O模块时,首先经过了光耦隔离器,保证了外部的信号不对板上其他信号造成电压冲击;当总线发出读操作命令时,PLX9030、CPLD接收了读操作命令,相应的控制位把隔离后的信号送给CompactPCI总线。

 

基于CompactPCI总线数字隔离IO模块的实现
图5 数字隔离I/O模块硬件原理

 

  当数字信号从CompactPCI总线向局部总线输出时,首先通过PLX9030把相应的控制位和数据送到CPLD中,CPLD接受了命令后,把相应的数据经光耦隔离器及驱动器送出。 外部设备可以通过CompactPCI J2自定义针脚根据需要进行控制。

5 WinDriver开发设备驱动程序

  (1)打开WinDriver应用程序后,出现Driver Wizard,选择创建新Driver,出现当前系统中所有的硬件卡的列表,如图6所示。

 

基于CompactPCI总线数字隔离IO模块的实现
图6 当前系统中所有的硬件卡的列表

 

  从列表中选择需要建立驱动程序的硬件设备,对于PCI设备,点击Generate.INF按钮建立安装信息文件1518.inf。然后对1518.inf中的部分内容按照板卡所需信息进行修改。

  (2)用Driver Wizard生成操作硬件的应用程序级API函数。存放于DIO.h文件中。

  (3)启动VC++6,建立一个DLL工程,将 Wizard产生的部分单元文件包含进工程中,在此基础上加入完成特定任务的代码,利用DIO.h中的API函数,完成DIO.c,并提供应用程序的调用接口。

  (4)编写接口单元文件DIO.def,将工程编译成动态链接库DIO.dll。应用程序就可以直接调用此动态链接库。在主测试程序中调用DIO.dll动态链接库,操纵数字隔离I/O模块配合其它模块运

文章热词:基于,总线,数字,隔离,模块,实现
延伸阅读:
分享按钮
网友评论

推荐文章