新闻中心

EEPW首页 > 测试测量 > 设计应用 > 用SP061A实现心电数据的FFT与压缩

用SP061A实现心电数据的FFT与压缩

——
作者:武汉工业学院计算机与信息工程系(430023) 管庶安时间:2007-02-06来源:电子技术应用收藏

摘 要:在 单片机上实现对ECG信号的。合理组织的硬件资源,并采取数据分段长度可选、避开高频分量的计算和简易的数据算法,使存储开销、运算速度和精度满足实用要求。
 
关键词     

在远程心电监护系统中,心电信号采集器是实现心电信号的现场采集、存储和传输的重要终端设备。对采集器的基本要求之一是:及时对采集到的心电信号进行和压缩等预处理,以减少存储器占用量和数据远程传输到头端服务器的开销。为降低成本,这些任务一般采用单片机完成。然而,限于单片机的资源、运算能力和运行速度,许多压缩算法,如周期压缩法、小波变换压缩法和神经网络方法等无法使用,一些缺乏快速算法的频域变换法也很难达到实用的程度[3]。高性价比的心电信号采集器的研制一直是一个热点问题。
 
通过研究(快速傅立叶变换)的算法结构和心电信号的特点发现,采用分段FFT,保留分析心电波形需要的谐波成分,巧妙地组织单片机的片内RAM资源,可使数据运算量和RAM开销大大减少,能实现数据滤波和压缩,且能达到实时采集与处理所需的运算速度。 

SP061A 是凌阳科技公司研制的一款16位超低功耗单片机[1],片内有2K字RAM、10位A/D转换器,CPU时钟高达49.152MHz,且价格低廉,还特别具有一套精简、高效的指令系统和类似于DSP的硬件内积运算功能。这些特点很适合心电信号的采集和处理。图1是作者研发的心电信号采集器中有关硬件的组成框图:多路ECG模拟信号送SP061A进行A/D转换,转换数据送NVRAM DS1265W暂存;待采集完成后,由SP061A进行FFT和滤波、压缩;压缩结果送回DS1265W,再适时通过电话线或计算机网络送到监护中心处理、诊断。

 

图1 硬件组成框图 

本文仅讨论用SP061A实现FFT[2]、低通滤波与压缩。设对心电信号的采样率为500次/秒,数据精度为10位。 

1 数据分段算法 

设采集到的原始数据存于片外RAM中,将这些数据分为若干段,逐段读入片内进行FFT。各段的变换结果及时送回片外RAM中保存。
 
按照FFT的要求,段中包含的数据个数必须为2N,N为FFT变换的层数。考虑到SP061A片内RAM为2K字,此处取N=9或N=10,即段中数据为512或1024,以保证RAM够用。显然,段头和段尾的数据大小相等时,以该段作为一个周期而无限重复的波形将无跳跃点。经过“FFT变换到频域”→“丢弃高频成分”→“IFFT(快速傅立叶反变换,在头端PC上进行)”一系列操作而重建的时域波形,段与段之间的结合点将是连续的。但实际上,按上述分段几乎不能做到段头和段尾的数据大小相等。取两种段长的目的就是提供两种可能的选择——选择首尾数据之差较小的段作FFT。尽管如此,段首尾数据之差仍存在,经处理、复原后的波形在段的结合部位仍将有间断点。而采用加窗、延拓等办法在单片机上又难以实现。解决问题的策略为:分段时,各段间的数据首、尾各覆盖10个数据。头端PC在完成重建后,应将首、尾各5个数据丢弃。 

2 时域数据的整序与加载
 
分段后,将该段加载到SP061A的RAM中,以实施FFT。原始数据以采集的时间先后顺序存放,加载时则应“整序”,即改变数据的先后顺序,以保证变换后的频域数据为正序。 

设RS为指向片外RAM的、待加载的段内数据的偏移地址,RS=0…2N-1;Rd为指向片内RAM的、待写入数据的偏移地址,如图2。将RS按N位二进制逐位高低互换就得到Rd。例如,当N=9时,若RS为011001011B,则Rd为110100110B。为加快计算速度,将N=9时Rd的值制表存于FLASH ROM,供整序时查询。当N=10时,取RS的B0~B9位查表获得Rd,再将RS的B10位传送到Rd的B15位,最后将Rd循环左移1位。

 

图2 整序与数据加载操作 

FFT变换是复数运算。在将原始数据加载到片内RAM的同时,应把实数转换为复数,即令虚部为0。于是,一个原始数据加载到RAM中要占用2个字。复数的存储格式为:实部字存于低地址,虚部字存于相邻的高地址。现在考察RAM需要量。N=9时,段长为512个数据,加载到RAM中要占用 512



评论


相关推荐

技术专区

关闭