CPCI总线[1] 是在PCI总线基础上改进的一种32/64 bit的局部总线,最高带宽可达512 MB/s,具有高开放性、高可靠性、可热插拔等优点。目前,基于CPCI总线的嵌入式系统架构已广泛应用于石油探测等领域,其系统通常由嵌入式单板计算机和各种接口模块组成。随着控制系统复杂程度和智能化程度的提高,数据传输速率也不断提高,对外围接口模块智能性和灵活性提出了更高的要求。通过采用高性能的数字信号DSP控制器进行接口模块的智能化设计,可以满足这种要求。本文以ADI公司的高性能ADSP-21262为核心处理器,为满足系统实时性和多路信号采集的要求,提出了一种基于CPCI总线的多路数据采集卡的设计方法,实现了3路石油勘测信号的实时采集和处理。
1 工作原理
CPCI总线与3颗DSP分别通过3个DPRAM实现交互,DSP微控制器作为核心处理器,进行数据的采集和处理。系统上电后,3路DSP中的程序同时运行等待主机中断(同一时刻只会有一路收到中断),DSP收到中断后,就会读取DPRAM指定位置的命令控制字(协议定义)并进行分析判断,假设命令控制字的意思是AD数据采集,DSP程序就控制进行数据采集,将采集到的数据经过一定的算法处理后写入DPRAM中,写完后给主机一个中断,主机收到中断后通过PCI9054访问DPRAM获取相关数据。该多路数据采集卡的原理框图如图1所示。
2 硬件设计
2.1 PCI9054与DPRAM接口电路
采集卡通过CPCI总线与主机进行通信,PCI9054[2]支持32 bit/33 MHz的PCI接口,最高带宽可达132 MB/s,支持两通道DMA突发传输,能够很好地满足采集卡带宽的要求。系统上电后,PCI9054读取EEPROM并对配置空间进行配置,可将PCI总线[3]指令(例如读写某个寄存器、memory空间、IO空间)翻译到本地地址空间,实现CPCI总线与Local总线的桥接。在Local bus端,有3颗DPRAM与9054通信,DPRAM采用32 k×16 bit的IDT70V27芯片,3颗DPRAM片选访问由9054地址线高位分配。PCI9054本地端采用C工作模式、PCI从模式,提供了非复用的地址线和数据线,Local bus工作在16 bit模式。PCI9054在CPCI端作为从设备,在Local bus端作为主设备,通过使能LHOLD请求使用Local bus,当得到LHOLDA后9054方可占用总线。在Local bus端没有其他主设备,因此总线的使用由9054独占,可以把LHOLD、LHOLDA下拉直连,只要有数据请求,9054就会立即得到总线控制权。其中中断、片选、读写控制信号、总线的申请和DMA功能扩展由CPLD0逻辑控制实现,具体实现见CPLD逻辑设计部分。PCI9054与DPRAM1的接口示意图如图2所示,PCI9054与DPRAM2、DPRAM3接口与图2相同。
2.2 DSP系统电路
根据系统性能指标要求,该智能数据采集卡选用ADI公司高性能的ADSP-21262[4] DSP为核心处理器。ADSP-21262 DSP是第三代SHARC可编程DSP系列中的第一成员,采用SHARC DSP内核,SIMD计算结构,同时集成了丰富的片上资源和外设接口,核心频率为200 MHz,处理速度可达1.2 GFLOPS。支持音频解码与后处理算法,内部包含了许多音频算法,在ROM里甚至包括多波段解码算法,在音频应用领域得到广泛的推广。
采集卡DSP的外部输入时钟为25 MHz,通过配置引脚CLKCFG1-0,使内部PLL将外部输入时钟8倍频,供给内核使用。工作电压为3.3 V,由背板提供,内核电压为1.2 V,由TPS54425电源转换芯片实现, DSP上电有4种BOOT方式,BOOT_CFC1-0选择初始化配置,本卡使用外部8 bit并口Flash加载,3颗DSP通过JTAG菊花链进行程序的在线下载和调试。本设计为DSP扩展了512 KB的SRAM和8 MB的Flash, DSP还外挂了一个CPLD,数据线宽度为16 bit,具体逻辑功能见CPLD逻辑设计部分。DSP有3个外部中断源IRQ0~2,IRQ0与IRQ1配置给AD/DA或者串口,IRQ2配置给DPRAM。DSP系统框图如图3所示。
2.4 其他电路
本采集卡板载3个频率分别为33 MHz、25 MHz和1.843 2 MHz的晶体振荡器,时钟输出经过SN74LVC244A斯密特整形和驱动后供给各电路使用,其中33 MHz时钟提供给各个AD/DA接口CPLD。该时钟可以用于AD和DA采样速率分频的源时钟,还提供给PCI9054的Local bus端时钟源;25 MHz是DSP外部时钟源;1.843 2 MHz作为CPLD中串口RS232通信时钟源。
根据本卡电路设计需要,除了使用背板提供的电源外, 还通过TPS54425将5 V转换为1.2 V供给DSP内核使用; 通过LT1763S8将12 V转换为5 V, LT1175S8将-12 V转换为-5 V,供给关于AD和DA的模拟电路部分使用,本采集卡对上电顺序没有要求。
复位电路主要通过CPLD和复位芯片实现,复位链如图5所示。
3 CPLD逻辑设计
本采集卡使用了4颗Altera的EPM1270逻辑器件,CPLD逻辑使用Verilog[5]代码实现,第一颗CPLD主要实现PCI9054 LOCAL端与3个DPRAM之间的一些逻辑控制,例如3个DPRAM的片选、复位、读写信号的产生,以及LOCAL端总线的申请和DMA功能的扩展等。其他3颗CPLD实现的功能基本相同,主要实现DSP处理器与周围扩展电路的粘合,例如DSP周围挂接的CPLD、Flash、DPRAM、SRAM片选信号的产生,FIFO模式的设置,AD、DA、串口时钟的产生,串口通信状态机的实现。除此之外,还映射了一些读写寄存器,这些寄存器主要实现FIFO数据的读写,FIFO中断阈值设定及状态读取,FIFO读写使能控制及复位,AD、DA分频系数设定(即采样时钟的设定),AD溢出和DA睡眠状态读取,板卡相关信息读取等。Flash在擦除和写之前首先需要向其发送擦除和写命令,读并不需要。而由于用DMA访问外部设备时有以4 B为单位进行数据传输的限制,故CPLD在此做了特殊处理,当DSP向Flash发送擦除和写命令时,DSP发送4 B,CPLD会滤除前3 B,Flash实际只收到最后一个字节。
4 DSP程序设计
通过ADI提供的Visualdsp++5.0集成开发环境[6]进行DSP软件的开发,充分利用DSP强大的信号处理优势,结合具体项目应用中所需的数据处理算法采用C语言进行编程。编译后的DSP程序通过JTAG链烧写到DSP外扩的Flash中,系统上电后一段512 B的boot kernel自动加载到DSP内存中运行,然后将应用程序引导到内存中运行。DSP程序主要包括系统初始化、系统自检、数据采集和处理以及数据存储4个部分,系统初始化主要完成DSP本身正常运行所需的环境配置;系统自检主要完成对DSP外接SRAM、双口RAM、Flash、CPLD和串口读写检测,并将检测后的状态放到双口RAM的指定位置供主机读取;数据采集和处理主要完成将AD转化后的数据读取到DSP内存中,并经过一定的算法处理;数据存储主要完成将采集到的数据写到双口RAM中,给主机一个中断,通知主机进行读取。DSP程序工作流程如图6所示。
该多路智能采集卡设计灵活,可以根据需要添加一些功能,在软硬件设计时充分考虑了系统的可靠性和稳定性,实现了对油井勘测数据的实时采集和处理,满足了项目的要求,达到了预期的性能指标。实际应用表明,该采集系统运行稳定可靠。
参考文献
[1] PIGMG. Compact PCI specification 2.0 R3.0[S]. October 1,1999.
[2] PLX.PCI9054 Data book version 2.1[Z].January,2000.
[3] 李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.
[4] ADI.ADSP-2126x SHARC processor hardware reference reversion 5.0[Z].August,2010.
[5] 夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2009.
[6] 罗勇江,刘书明,肖科.VisualDSP++集成开发环境实用指南[M].北京.电子工业出版社,2008.