近年来,随着嵌入式系统的快速发展及其对硬件可靠性要求的提高,特别是带有多个运动控制卡的网络运动控制系统的发展,对运动控制卡提出了新的要求。运动控制卡应具有带热插拔功能的CompactPCI总线接口。在这样的运动控制系统中,采用可靠性高的嵌入式系统软件,上位机只需对被控对象实施总体的控制和管理;而位置反馈信号的采集、闭环控制的计算及控制量的输出则均可由以DSP为核心的运动控制卡完成,极大地提高了运算速度和控制响应速度。通过带热插拔功能的CompactPCI总线接口的上下机联接,使系统具有更高的可靠性和带电更换故障板卡的能力。
1 CompactPCI接口总线概述
CompactPCI接口总线定义了更加坚固耐用的PCI版本。在电气、逻辑和软件方面,它与PCI标准完全兼容。CompactPCI接口卡安装在支架上,并使用标准的Eurocard外型。CompactPCI虽然与标准PCI属同一标准,二者还是有很大的不同。CompactPCI相对PCI来讲具有很多优点:(1)具有更好的机械特性。它增强了PCI系统在电信或其它条件恶劣的工业环境中的可维护性和可靠性。(2)采用Eurocard封装,系统中气流均匀。(3)CompactPCI连接器的电源和信号引线支持热插拔规范,这对于容错系统是非常重要的,也是标准PCI所不能实现的功能。(4)总线易于扩展,可同时支持多达256个标准的PCI总线设备。(5)CompactPCI背板的连接器插针分为长针、中长针和短针。长针是一些电源针,最短的针是BD-SEL#,其它总线信号和部分电源信号是中长针。连接器插槽J1插孔有长针插孔、中长针和短针插孔,而J2插槽都是中长针插孔。
2 系统的硬件结构概述
开放式四轴DSP运动控制卡经12位DAC驱动四个伺服电机,并通过CompactPCI总线背板连接器与主机通信。其中DSP处理器与CompactPCI接口采用PLX公司的PCI9030接口芯片使之和双口RAM缓冲区进行通信。
PCI9030是业界首个支持热交换的PCI目标接口芯片,为CompactPCI接口提供了优秀的解决方案。它采用SMARTarget技术,可以保证高性能的热交换实施功能,可以支持具有热交换功能的PICMG2.1目标设备,并且符合PCIv2.2规范所规定的32位33MHz目标接口功能,可以获得高达132Mbyte/s的PCI突发传输速度,局部总线操作速度最高可达60MHz,支持5个局部地址空间到PCI总线地址空间的映射(空间0、1、2、3、4以及1个扩展的ROM),传输等待周期及总线宽度可编程。另外,PCI9030内含预充电BIOS、早期电源支持、热交换控制/状态寄存器(HS_CSR)和附加引脚资源,可利用这些资源以及ENUM#输出信号、弹出开关和表示用户插入/取出状态的LED灯实现运动控制板卡的带电热插拔的软硬件控制。
其硬件结构框图如图1所示。该系统由以下几部分组成:
· 核心处理器TMS320LF2407,主要完成位置速度PID控制、插补迭代运算、开关量输入和输出、PLC控制等对实时性要求高的任务,另外还完成程序和数据存储和上下机的通信任务。
· 模拟量控制电路,将数字量速度信号经四路12位数/模转换芯片DAC7725转换为-10V~10V的模拟信号,输出到电机伺服驱动模块。
· 反馈电路,由两片CPLD元件EPM7128SLC84构成四路12位可逆脉冲计数器,对差分光电编码器的编码脉冲进行循环计数,可实现编码器Z相点硬件中断。
· FLASH电路,用于存储数控参数和数控指令代码,也用于紧急情况下保护数据。
· 开关量电路,包括通用8/8 I/O点、4个电机使能输出、4个轴的左右极限输入和原点中断输入等电路。
· 通讯电路,通过PCI接口从模式使3.3V芯片PCI9030和双口RAM芯片70V24与PC机的CompactPCI总线相连,可以进行高速数据传输。
本系统是一个闭环多轴运动控制硬件系统,具有快速精确的计算能力以及较强的数据通讯能力,是良好的复杂数控系统平台。
3 CompactPCI接口的设计
CompactPCI接口的设计要点在于在硬件插拔过程中,不能对CompactPCI总线产生较大的冲击,不能影响CompactPCI总线上数据传输的正确。所以应具有良好的热电源切换控制电路和相应的总线电路以及便于软件处理热插拔过程的控制信号。
电源控制和PCI9030的接口原理框图如图2所示。
3.1 PCI9030芯片热插拔控制信号的作用
在Compact PCI规范中规定:(1)板卡插入后,硬件初始化过程中应点亮蓝灯;(2)板卡即将拔出,软件能获知板卡即将拔出,并做好善后工作后,点亮蓝灯。
PCI9030芯片有BD_SEIL# 输入信号引脚、ENUM#输出信号引脚、CPCISW输入信号引脚和LEDON# 输出信号引脚,均用作CompactPn接口热插拔控制信号。其功能分别如下:
PCI9030的BD_SEL# 输入信号引脚同运动控制卡CompactPCI接口的引脚BD_SEL#相连,当BD_SEL# 信号变高时,使PCI9030输出引脚成高阻态,保护芯片。PCI9030的ENUM# 信号是送到背板的带上拉的集电极开路信号;它通知背板主机CPU板卡是刚刚插入,还是即将拔出。并通知CPU系统配置改变,使CPU同时执行相关必要的软件操作(在板卡安装时,安装设备驱动程序;在移出板卡前,卸载设备9B动程序)。板卡的插入/拔出状态是由CPCISW信号送到PCI9030完成的,这时,PCI9030通过ENUM#信号通知背板主饥硬件配置改变情况,同时主机CPU执行相关必要的软件操作。当操作结束时,主机CPU通过PCI9030将CPCISW信号写入HS-CSR寄存器的相应位中,使LEDON# 信号变化,点亮或熄灭蓝灯,通知板卡可安全取出或已安全插入。另外,PCI9030将板卡插入/拔出的状态(即CPCISW信号)写入HS_CSR寄存器的相应位中,软件可以通过这些位来查询板卡插入/拔出状态,使软件可采取各种切换措施,也可以通过向寄存器的相应位写1来清除该位。
3.2 热插拔电源电路的原理设计
3.2.1 热插拔电源管理器的确定
热插拔电源电路需在插拔过程中和正常工作时,对CompactPCI接口板电源进行监控,按一定的速率及时地上电和断电,把该电源的情况及时通知背板系统以便通过软件进行处理;同时需对CompactPCI接口板的总线信号提供预充电电压,使CompaetPCI接插件的插针点的预充电电压达到1V,保证CompactPCI接口板在插拔过程中,对CompactPCI总线的冲击很小;另外需对背板的PCIRST信号和CompaetPCI接口板的电源好坏情况进行逻辑处理来产生该接口板上的LOCAL_PCI_RST信号。为此,热插拔电源电路采用了芯片LTCl646作为CompactPCI热插拔电源管理器。它能够使线路板在运行中的CompactPCI总线插槽内安全地插入和拔出。两个外部N沟道通路晶体管IRF7413控制3.3V和5V电源,使电源能在电流限制或可设置速率上电。电子电路断路器可保护两组电源不受过流故障情况的损害。
3.2.2 LTCl646芯片的主要引脚功能
· LTCl646的3.3V和5V输入主要来自中等长度的电源插针。3.3V和5V连接器长插针在CompactPCI插卡上与中等长度的3.3V和5V电源插针短接在一起,为LTCl646的预充电电路、VI/O上拉电阻和PCI9030芯片提供初期电源。
CompactPCI背板的连接器插针中有引脚BD_SEL#、HEALTHY# 用于热插拔电源电路。
· 芯片PWRGD# 信号引脚输出指示何时所有电源电压都在容许范围内,连接于PWRGD# 引脚的HEALTHY# 信号把板卡电源情况通知背板主机,当HEALTHY# 信号变高时,说明板卡电源情况出了问题。
· 芯片OFF/ON#输入信号引脚连接于板卡的BD_SEL#引脚,用来控制开关板卡电源或将电源断路器复位。而BD_SEL#信号应通过1.2kΩ电阻上拉至PCI9030的I/O工作电压VI/O。
· 芯片PRECHARGE引脚用于产生1V的预充电电压。可在板卡插拔过程中对总线I/O引脚施加偏置。板卡上需要进行预充电的CompactPCI总线引脚(即接插件J1、J2与CompactPCI接口器件PCI9030连接的引脚)包括:ADO~AD31、C/BEO#~C/BE3#、PAR、FRA ME#、IRDY#、TRDY#、STOP#、LOCK#、IDSEL、DEVSEL#、PERR#、SERR#。LTCl646产生的预充电信号经过较大的10kΩ电阻上拉至预充电电压(PRECHARGE OUT)。而BD_SEL#、ENUM#、INTA#信号应上拉至PCI9030的I/O工作电压VI/O。
· 芯片的RESETIN#引脚输入信号PCI_RST#,在片内与HEALTHY#信号进行逻辑结合,从而在引脚RESETOUT#生成LOCAL_PCI_RST#信号送到PCI9030芯片的PCI_RST#信号引脚,用来在任一组电源超出范围时对板卡和芯片PCI9030进行复位。
3.2.3在LTCl646芯片控制下CompactPCI接口板的上电顺序
当插卡插入时,长3.3V和5V连接器插针以及长GND插针首先接触。LTCl646预充电电路在插入阶段将总线I/O插针偏置为1V。3.3V和5V中等长度的电源插针在插入的下一个阶段接触,但只要OFF/ON#引脚被1.2kΩ上拉电阻拉到VI/O,线路板电源则被关断。在线路板插入的最后阶段,BD_SEL# 短连接器插针开始接触,OFF/ON# 引脚被拉低。这使得通路晶体管导通;并且在内部有一个5μA电流源与TIMER引脚连接。时每个通路晶体管的电流开始增加,直至增加到各自的电流限值;然后,3.3V和5V电源被允许按一定的速率上电,一旦两组电压都在容差范围之内,HEALTHY# 将拉低,LOCAL_PCI_RST#可自由跟随PCI_RST#。
3.2.4在LTCl646芯片控制下CompactPCI接口板的断电顺序
当BD_SEL# 被拉高时则开始一个断电过程。LTCl646内部开关被连接于每个输出电源电压引脚,使旁路电容器向地放电。TIMER引脚立即被拉低。GATE引脚被一个200μA的电流源拉低, 以防止3.3V和5V电源上的负载电流同时变为零从而对电源电压造成干扰。当任一输出电压跌落在门限以下时,HEALTHY# 引脚被拉高,LOCAL_PCI_RST# 将被确定为低。
一旦断电过程完成,插卡就可以从插槽内取出。在拔出期间,预充电电路继续将总线I/O插针偏置为1V,直到5V和3.3V长连接器插针分开。
3.3 CompactPCI接口设计的其它电气措施
· 热插拔板卡在带电拔插过程中,为了保护板卡免遭静电损坏,必须进行静电放电。所以,必须在板卡上设计放电条。
· 为了减小板卡上的CompactPCI总线的信号线分支对总线的影响,必须对CompactPCI总线信号进行串联电阻匹配。需要加串联匹配电阻的引脚包括:AD0~AD31、C/BE0#~C/BE3#、PAR、FRAME#、IRDY#、TRDY#、STOP#、LOCK#、IDSEL、DEVSEL#、PERR#、SERR# 以及 INTA#。根据CompactPCI规范,对CompactPCI的信号线长度和到预充电电阻的分支线的长度必须进行限制(PCB的布线特征阻抗应设计为65Ω±10%)。线的长度越短,对CompactPCI总线的冲击越小。在CompactPCI接口板上,对于预充电的信号,从接插件J1n或J2到PCI9030器件管脚,总的信号线长度应小于38.1mm。其中,从接插件插针到串联电阻的PCB连线长度应小于15.2mm,预充电电阻的分支长度最好是零,最长不能超过2.5mm。
· 为了减少插拔过程中由电容产生的浪涌电流并避免接插件烧损,必须限制滤波电容总量。
位置数控板卡的CompactPCI接口的设计是网络运动控制系统发展的必然要求,通过带热插拔的Compact-PCI接口总线的上下机联接,使网络运动控制系统具有更高的可靠性和带电更换故障板卡的能力。