- 相关推荐
利用DSP和CPLD增强数据采集的可扩展性
在IC卡公用电话系统中,在线式公用电话由于其具有保密性高、可扩展性强等特点,已逐渐获得人们的青睐。这种公用电话系统被置于终端和交换机之间,对两者的信号进行调制、解调以及其它的运算,来完成诸如卡验证、终端维护、多媒体信号传输等工作。与软件无线电相类似,这种系统的硬件平台通用性很强,数字信号处理的算法将由专门的芯片来承担,所以这种系统可以兼容目前在电话线上应用的各种调制解调方法,也可以适应未来出现的其它调制解调标准。
由此可以看出,要实现这样一个系统,数据采集是一个非常重要的方面。为了节约成本和提高DSP芯片的利用率,在这个系统中,一片DSP要承担16个通道的运算。从数据采集的角度来说,由于通道同时对应着终端和交换机两端,故DSP需要高速采集32个通道的数据。另外,高速ADC的出现和DSP性能的不断提高也对系统将来的升级提出了要求。所以对数据采集部分来说,高速、可扩展性是两具非常重要的指标。实现的系统就是以这两个指标为指导的。
目前的高速多通道数据采集系统一般有以下几种实现方法:一是直接采用高速的多通道模/数转换芯片,这些芯片有专门设计的与DSP接口的部分,但是这些芯片一般价格都非常昂贵;二是直接用FPGA完成整个的采集过程,这将耗费FPGA巨大的资源;三是DSP和模/数转换芯片的地址以及数据总线直接相接,通过单片机控制转换等过程,这种方法虽然便宜,但是可扩展性太差。综上所述,提出一种通过CPLD实现接口,将模拟转换通道映射到DSP的I/O设备空间甚至内存空间的方法。这种方法大大提高了DSP可以访问的外设数目;同时由于DSP不直接与模/数转换模块接口,所以ADC芯片的升级或者替代都不会影响原来的数据采集;而且采用了时分复用方式读取转换完成的数据,因此这个系统数据采集速率可以达到所采用的ADC芯片输出的最高速率。
DSP虽然在算法处理上功能很强大,但其控制功能是非常弱的;而CPLD本身并不具有内部寄存器,虽然可以用CPLD的逻辑块来实现寄存器,但是这将耗费大量的CPLD资源。然而,CPLD的强项在于时序和逻辑控制。本文介绍的多路数据采集系统就是充分利用了DSP和CPLD的优点,将多个A/D转换单元通过CPLD映射到DSP的I/O地址空间,利用CPLD屏蔽A/D转换的初始化以及读写操作过程,使得DSP可以透过CPLD这个"黑匣子"快速、准确地获取数据。
1 数据采集系统框架
整个数据采集系统主要由DSP处理模块、CPLD接口模块和ADC阵列三个部分组成,如图1所示。透过这样一个结构,DSP可以在未知ADC的控制方式的情况下,定时地以访问外设的方式来获得总共32个通道的模/数转换后的数据。
这样的系统框图只是完成了一个完整的数据采集功能,至于数据的处理以及DSP需要完成的其它功能,此图并未涉及。但对于一个DSP系统来说,数据采集在硬件中占据了很大的比重,这也符合DSP芯片应用的原则:用软件完成大部分的数字处理算法。
2 各功能模块的实现
2.1 ADC阵列的实现
此数据采集系统的设计目标是完成32路信号的采样,并且要求每路的采样率为50kHz。所以,这样一个系统达到的整体采样率为32×50k=1.6MHz。
在模/数转换环节,采用的A/D芯片一片一次可以同时完成4路转换。为了达到设计目标,需要8片这样的芯片。但是,如果直接将8片模/数转换芯片的数据总线全部连接起来输入到CPLD中或者将CPLD出来的某条控制信号线直接连接到8片芯片上,那么在驱上就会出现总是。基于此种考虑,此系统将8片芯片分成两组,每组4片,然后从CPLD中引出两组数据总线以及两级控制总线分别对它们实现控制。这样就能很好地解决芯片的驱动问题。图2就是其中一组芯片的连接架构图。
从这个架构图可以看出,这4片A/D转换芯片除了片选控制信号以外,其它的数据总线以及控制总线全部是分别连在一起的。将片选控制与其它控制分开的原因在于:芯片的初始化以及转换过程需要同时完成,但是转换后数据的输出则分则完成。ADC控制时序框图如图3所示。
要实现这样的控制时序,各个阶段对芯片的片选控制如下:在初始化阶段,所以A/D芯片的片选信号有效,此时可以对每片芯片写入相同的模式选择信号,同时启动采样脉冲和转换脉冲;在转换阶段,所有片选信号全部无效,此时芯片本身在内部完成模/数转换,同时将转换完成的数据放置在芯片内部的寄存器中;在数据输出阶段,首先是第一片芯片的片选有效,此时若有一个脉冲下降沿到A/D芯片的RD端口,则芯片1的转换完成,第一路数据将浮出到数据总线上,而其它芯片由于片选信号无效,虽然有RD输入也不会有数据输出,不会造成总线冲突。对于芯片1而言,接下来的几个RD脉冲可以分别使得转换完成后的几路数据浮现在数据总线上。芯片1的数据全部输出完成后,片选1无效,此时可使芯片2的片选信号有效。依此类推,就可以完成4片芯片的转换及数据输出。
2.2 CPLD接口模块的实现
整个CPLD接口模块实际上就是一片ALTERA公司的7000系列的CPLD(外部时钟电路除外),它控制ADC模块的初始化,同时接收并分析DSP过来的I/O端口读取信号,为DSP和ADC之间搭起一个通道。
在DSP要求读取数据时,CPLD将DSP过来的IOSTROBE作为A/D芯片的RD信号,同时对I/O地址总线的第3位至第5位译码产生A/D芯片的片选信号,这样只要是地址按照每次递增1的方式读取数据,就可以使得8片A/D分时片选有效,完全符合上面提到的读取数据的要求。另外,还依靠最高位地址确定CPLD到DSP的数据输出总线是否定义成高阻态来避免总线冲突。
由于A/D芯片是采用5V供电的,所以其输出高电平将高于DSP输入高电平所能承受的范围。解决这个总是的方法之一是采用降压芯片(比如LVT系列)用
【利用DSP和CPLD增强数据采集的可扩展性】相关文章:
利用ColdFire uClinux实现数据采集和传输03-19
基于DSP和以太网的数据采集处理系统03-20
基于DSP的USB口数据采集分析系统03-18
换体DMA高速数据采集电路的CPLD实现03-18
高速DSP数据采集的信号完整性问题03-20
CPLD在DSP系统中的应用设计03-18