基于DSP和CPLD的低功耗多路数据处理系统设计方案
扫描二维码
随时随地手机看文章
引言
随着电子技术的应用和发展,数字信号处理内容日益复杂,同时,很多情况下要求整个系统具有低功耗的特点。为满足这种要求,DSP芯片设计技术也在向低功耗、高性能的方向发展。从处理速度来看,TMS320VC5502的运算能力已经达到了600MMACS,即每秒钟可以完成6亿次乘加运算。从功耗来看,TMS320VC5502内核电压只有1.26V,整个芯片的功耗也大大降低了。本文介绍了基于TMS320VC5502和CPLD XC95144的低功耗多路数据处理系统。
模拟信号的输入经过50Hz陷波电路(滤除工频干扰)和信号预选频电路。经过预处理的模拟信号作为ADC的模拟输入进行A/D变换,最后由DSP实现对数字信号的滤波处理。将CPLD和DSP技术相结合,利用CPLD编程的灵活性,来控制6路ADC的启动和停止,简化了整个硬件电路的设计,达到动态地选择采样通道的目的。同时将DSP处理后的数据发送到PC ,在PC上利用MATLAB和VC等工具对处理后的数据进行后端分析。本文主要介绍基于低功耗TMS320VC5502和CPLD的前端数据采集和处理系统。
ADS7805简介
ADS7805是一款具有16位量化精度的A/D转换芯片。它的基本组成结构包括16位精度的基于电容网络的逐次逼近型ADC、采样保持电路、时钟、对微处理器的接口和三态输出。ADS7805的最高采样速率为100kHz,模拟信号输入范围为-10V~+10V,5V单电源供电,最大耗散功率为100mW。
ADS7805为5V单电源供电,输出的数据位为‘1’时,电平值为5V,而DSP芯片的I/O电压采用的是3.3V逻辑电平,因此,还需要在ADS7805的数据输出端加上电平转换芯片,设计时选用了74ALVC164245,它可以将5V电平转换为3.3V,也可以将3.3V转换为5V。
硬件接口电路设计
从硬件角度来看,DSP完成滤波运算的核心工作,而整个系统的控制核心是CPLD,DSP对6路A/D采样的操作是由CPLD产生控制信号,控制着ADS7805的采样触发信号、6个ADC的复用和解复用,以及5V转3.3V电压转换芯片74ALVC164245的选通等。CPLD和DSP的时钟输入采用30MHz有源晶振。CPLD、DSP、ADC和电平转换芯片之间的接口电路如图1所示。
图1 DSP、CPLD与ADC接口电路图
DSP利用片选信号、地址信号、读写使能信号向CPLD发出指令,CPLD根据DSP的指令向6个ADS7805发出控制信号,启动芯片进行采样并控制DSP完成对数据的读取。由于ADS7805输出的数据要通过电平转换芯片,CPLD还需要控制74ALVC164245芯片的选通和转换,就是图1中的OE[1:0]信号。因此,DSP必须向CPLD提供的控制信号包括CE2片选信号、ARE读使能信号和AWE写使能信号,当DSP读取A/D转换数据的时候,选通74ALVC164245进行电平转换,当ADC对模拟信号进行A/D转换时,不使能164245芯片,以免造成多路数据引起的数据总线冲突。由于有6个ADS7805,所以至少需要分配3根地址线信号(一般选为最低3位地址线引脚)区分这6个ADS7805,但3根地址线信号实际上可以用来表示8个地址,剩余的2个地址也可以利用起来,例如,对剩余的2个地址中的一个进行读操作可以视为DSP发出命令,用以启动ADS7805,这样就可以省去DSP和CPLD之间AWE信号的连接了。CPLD需要提供给ADS7805的信号包括片选信号CS[5:0]和数据读取/启动转换信号RC[5:0],此外,CPLD还要提供电平转换芯片的片选信号,并且需要接入一个时钟信号,用来给CPLD提供时序逻辑的同步时钟信号。
CPLD程序设计
根据ADS7805的工作原理和DSP读写特性,对CPLD进行编程来实现DSP对6个ADS7805的分时读取操作以及启动ADS7805的转换。
整个程序采用Verilog HDL语言设计。为了便于测试,增加了一个FLAG标志信号,当FLAG为低的时候,说明DSP正在读取ADS7805转换过的数据。当FLAG为高的时候,说明ADS7805正在进行新一轮的转换。程序设计的重点在于启动ADS7805的新一轮采样,而ADS7805启动采样需要CS和RC同时为低且保持40ns。当DSP读完6个ADC的数据后就要启动新一轮采样。当对第6个ADS7805的读取操作完成后,FLAG标志位被拉高并利用计数器进行记时,输入的时钟频率是30MHz。因此需要让RC[5:0]和CS[5:0]输出信号至少保持2个时钟周期的低电平才能成功地启动下一次A/D转换。根据系统的要求,CPLD程序主要分3个always块。
第一个模块利用DSP的CE2地址空间选择信号、地址线A[4:2]、ARE读信号以及定义的3位计数器cnt[2:0]作为触发信号。当CE2和ARE都为低时,根据DSP的A[4:2]选择6个中的一个进行读取,其他5个都被禁止,这时,RC[5:0]应该均为高。如果A[4:2]=000,那么CS[5:0]=111110,开始读第一个ADS7805的数据到DSP。为了防止数据丢失,在读数据的时候,RC[5:0]应该始终保持为高,因为如果CS[5:0]和RC[5:0]信号中同一位均保持为低超过40ns,就会启动一次新的采样,这样会造成没有被读的ADS7805产生一次新的采样而丢掉之前转换的数据,对整个系统的结果造成很大的影响。读完第6个ADC以后,在ARE的上升沿将FLAG标志拉高,这时计数器开始记数,根据记数器的数值,当2<cnt[2:0]<6的时候,将RC[5:0]和CS[5:0]同时拉低,这样有3个时钟周期的长度大概有100ns,保证了同时为低的时间不小于40ns,启动新一轮的采样。第二个always模块主要实现对FLAG标志位的判断和设定。当A[4:2]=000时,说明DSP开始读A/D采样数据,这时FLAG=0。当A[4:2]=101时,说明6个ADS7805数据已经被读完,需要进行新的采样,这时FALG=1。第三个always模块主要实现计数器的设计。记数时钟频率为30MHz。当FLAG为高且cnt[2:0]<7时,开始记数。当FALG为低时,对计数器进行复位。
根据以上设计思路,成功地做到了对6路信号的采样和读取控制,达到了预期的效果。仿真波形如图2所示。
图2 CPLD仿真波形图
DSP软件设计
在进行DSP程序设计之前,先利用MATLAB的FDATOOL工具设计数字滤波器,将滤波器系数以.h文件形式导出MATLAB,在CCS中定义一个数组存放滤波器系数,就可以成功地将滤波器系数导入CCS。
本文主要介绍DSP对多路信号读取并处理的软件设计方案。图3是整个程序的流程图。首先应该对DSP芯片进行初始化,主要包括对TMS320VC5502的PLL寄存器进行初始化、初始化系统中断向量表、EMIF的初始化和定时器的初始化。DSP通过EMIF接口对外围ADC的转换数据进行读取。整个数据读取和数字滤波工作是在定时器中断程序中进行的。定时器模块主要用来确定采样周期,即每来一个定时器中断就对信号进行一次采样并完成对信号的实时处理运算。因此,定时器的中断周期也就是采样周期,同时,也规定了DSP做一次信号处理运算所耗时间的上限,即必须在相邻两次的时钟中断之间完成一次处理所需要的运算和操作。然后初始化EMIF模块,这一部分比较重要,因为ADC转换好的数据是通过EMIF接口送进DSP芯片的。ADC芯片在本系统中被内存化了,也就是说,从DSP芯片的角度看,读写ADC芯片和读写异步SRAM没有差别,因此,要将ADC芯片也分配到片外存储空间里,本系统采用的方法是将ADC芯片分配到CE2空间0x400000~0x400005连续的6个地址,使用异步16位SRAM的配置方式来配置CE2空间的控制寄存器。当有中断请求时,DSP就进入频率为40KHz的定时器中断,进行读取和滤波工作。
图3 DSP程序流程图
系统功耗估计
通过查阅芯片手册可以知道,TMS320VC5502需要的1.26V核心电压供电能力为250mA,3.3V的I/O电压和锁相环I/O电压的供电能力为50mA, DSP芯片的功耗为480mW。ADS7805芯片的功耗典型值为100mW,6个共计600mW。CPLD的3.3V电源消耗电流的典型值为100mA,即330mW。这样,整个系统功耗大概为1.5W。在使用电池供电的情况下,这个功耗大小也是可以接受的。例如,使用一个12V输出、50Ah的蓄电池,理想情况下可以对系统供电400小时。即使考虑电压转换过程中的能量损耗,用上述规格的蓄电池对系统供电40个小时也是可行的。
结语
本文介绍了一种基于DSP和CPLD的低功耗多路数据采集系统。 CPLD简化了硬件设计,可以很方便地对系统进行在线编程,具有很高的灵活性。本系统已应用于军事等具有低功耗、高性能要求的领域。