基于SOPC的脑电信号实时处理
2012-02-15贾俊伟
贾俊伟
(上海海事大学 信息工程学院,上海 201306)
脑电信号是人体重要的生理信号,近年来,随着脑机接口的逐步兴起和使用,脑电信号的实时性处理要求也越来越高,脑电信号实时处理的应用,使人们可以直接通过脑来表达想法或操作其他设备,而不需要通过语言或肢体的动作,这对肢体残缺的人来说有着极其重要的意义。
目前,国内外对脑电信号的处理基本上都是基于上位机进行处理。文中提出了一种全新的设计方案:基于SOPC的脑电信号实时处理。SOPC(System on a Programmable Chip)称为可编程片上系统,是基于可编程逻辑器件(FPGA或CPLD)的可重构的SOC。利用FPGA的可编程逻辑资源,按照系统功能需求来添加接口功能模块,既能实现目标系统功能,又能降低系统的成本和功耗。这样就使得FPGA灵活的硬件设计与处理器的强大软件功能有机地结合在一起,高效地实现SOPC系统;同时,嵌入式NiosⅡ软核又可以方便的完成对数字信号处理模块的控制和数据的读写和存储。
1 系统结构
文中的设计系统主要有信号预处理模块、A/D转换模块和数据处理与存储模块3大部分组成。其中A/D转换模块和数据处理与存储模块是基于SOPC系统实现,是本文重点。核心控制芯片采用ALTERA公司生产的CycloneⅡ系列的FPGA,它实现对外围电路的控制和数据的处理与存储。系统总体结构如图1所示。
图1 系统总体结构图Fig.1 Overall system structure diagram
1.1 信号预处理
脑电信号是很微弱的差模信号,具有低频率,低幅度的特点。并且具有很强的背景噪声和干扰,因此在采集前必须经过必要的预处理,使其达到AD转换的精度要求。所以前端预处理模块有:前置放大器、50 Hz陷波器、高低通滤波器和主放大器等组成。人脑神经活动自发产生的生物电信号通过脑电极进入仪器的前置放大器,在经过低通滤波器滤波,50 Hz陷波器和固定增益放大,最终抑制50 Hz以上的干扰信号,提取脑电信号。
1.2 设置ADC采样率
本系统选用ADS1258作为模数转换器,ADS1258是TI公司推出的一款高精度、低功耗、低噪声的16通道(多路复用的)24位Δ-∑型模数转换器 (ADC),其内部集成了输入多路复用器、模拟低通滤波器、数字滤波器等功能。内部有多种控制寄存器,用户通过不同的配置得到不同的A/D采样速率、采样模式、A/D转换精度等。
ADSl258在自动通道扫描工作模式下最高转换速率可达每通道23.7 kSPS,是目前转换速率极高的模数转换器;转换时功耗仅42 mW,24位分辨率,可在5 V单电源条件下工作,参考电压可以设置为0~5 V。 模拟输入多路复用器可配置成8路差分输入或16路单极输入,多路复用器的输出可通过外部获得,这就能在ADC输入之前采用共享的信号调节通道。使用SPI接口进行功能配置和数据传输,实验证明它能满足信号采集与处理的系统需求 。
1.3 FPGA处理
脑电信号传统处理方法有Wigner分布、小波分析、神经网络、非线性动力学以及独立分量,而脑电信号通常还会产生基线漂移和50 Hz交流及高次谐波干扰,因此还需要对信号进行数字滤波,以增强抗干扰能力。与传统的DSP相比,FPGA具有可重构、低成本和低功耗的优势,尤其是在多通道数据的采集和处理上,FPGA利用天然的并行架构,将发挥出一个至几个数量级的优势。ALTERA公司的SOPCBuilder可以帮助开发者很容易完成系统的SOPC硬件平台。用户根据已有的硬件系统结构编写信号处理的算法程序,最终在FPGA上实现。
2 SOPC硬件结构
文中的核心控制芯片采用ALTERA公司的CycloneⅡ系列型号为EP2C8Q208I8N的FPGA芯片。该芯片有8 256个逻辑单元,内置 18个嵌入式 18×18乘法器,2个 PLLs,完全满足本设计的需要。此系列芯片支持NiosⅡ32位嵌入式软核处理器,该处理器系统包括一个可配置NiosⅡCPU软核、与CPU相连接的片内外设和存储器以及与片外存储器和外设相连的接口等。所有组件在一个FPGA芯片上实现。SOPC硬件系统结构如图2所示。
图2 SOPC硬件系统电路图Fig.2 SOPChardware system diagram
整个系统以 NiosⅡ软核处理器为主,Avalon总线为核心,各个外设端口挂接在Avalon总线上。通过Avalon总线,NiosⅡ主设备控制各从设备。Avalon总线支持多个总线主外设,允许在单个总线事务中在外设之间传输多个数据单元。这一多主设备结构为构建SOPC系统提供了极大的灵活性,并且能够适应高带宽的外设。
在设计过程中,充分考虑SOPC系统的特色,充分发挥了SOPC系统在数字信号处理中的并行运算优势和NiosⅡ自定义指令加快程序运行速度的优势。图3为本系统的SOPC builder组件列表图:主要是用SOPC Builder选取合适的CPU、存储器、及外围器件,外围器件包含系统自带的如定时器,SPI接口核等,也包含用户自定义的外设组件(AD,DA)。
3 软件设计
本系统的软件设计包括两个部分,一部分是基于Verilog的用户自定义外设组件,另一部分是基于NiosⅡIDE开发环境的各外设组件的驱动和配置程序,以及处理脑电信号的FFT算法程序。
用户自定义外设组件包括AD转换和DA转换模块,用Verilog语言编写AD和DA的控制模块,编译、综合后实现其功能并留下与Avalon interface的寄存器接口。
软件开发使用NiosⅡIDE,它是一个基于Eclipse IDE构架的集成开发环境,包括:
1)GNU开发工具(标准GCC编译器、连接器、汇编器和makefile工具等);
2)基于GDB的调试器,包括软件仿真和硬件调试;
3)提供用户一个硬件抽象层HAL(Hardware Abstraction Layer);
4)提供嵌入式操作系统MicroC/OS-Ⅱ和LwTCP/IP协议栈的支持;
5)提供帮助用户快速入门的软件模板;
6)提供 Flash下载支持(Flash Programmer和 QuartusⅡProgrammer)。
NiosⅡIDE可以完成NiosⅡ处理器系统的所有软件开发任务。SOPCBuilder生成系统后,可以直接使用NiosⅡIDE开始设计C应用程序代码。Altera提供外设驱动程序和硬件抽象层 (HAL),使用户能够快速编写与低级硬件细节无关的NiosⅡ程序。除了应用代码,用户还可以在NiosⅡIDE工程中设计和重新使用定制库。
基于C编写的算法程序是脑电信号数字处理的核心程序。该程序包括6个相关文件,分别是math.h,register.h,LF2407.CMD,RTS2XX.LIB,process.c和 cvectors.asm。 其中需要用到的数学公式库文件是math.h,CPU内部的寄存器及其相关定义文件是register.h,连接命令文件是LF2407.CMD,指示编译器如何进行程序空间和数据空间的分配,系统提供RTS2XX.LIB库文件,向量表文件cvectors.asm定义所需的复位和中断向量,process.c主要是完成用户期望的功能,是整个程序的核心部分。
FFT部分算法如下:
图3 SOPCbuilder组件列表图Fig.3 SOPCbuilder component list in figure
Fs=1000; %Fs是采样频率,值越大,得到的图像越清晰
Read X(1,1024); % 将要处理的脑电数据读入到X中,共1 024个数据
% 以下是对原始的脑电数据进行1 024点的快速傅里叶变换:
for m=1:Fs
w(m)=m*2*pi/Fs;
y(m)=0;
temp=0;
for n=1:1024
y(m)=temp+x(n)*exp(-j*(w(m)*(n-1)));
temp=y(m);
end % n循环结束
h(m)=abs(y(m));
end % m循环结束
fre=w*Fs/(2*pi); % 得到频率阵 fre(1,1000)
Am=h/max(h); % 得到原始信号的归一化谱幅度
相关算法的说明:
1)采样频率Fs根据实际情况调整,仿真时为1 000 Hz;2)快速傅里叶变换的计算公式为:
N是傅里叶变换的点数,此处为1 024点。
3)由于只计算相对功率,故在计算功率时没有除点数N;
4)本计算的步长取1 ms,将与采样频率对应,给计算带来方便。
系统软件流程图如图4所示。
图4 系统软件流程图Fig.4 System software flow chart
4 实验结果
脑电信号是一种低频且极其微弱的信号,一般为5~1 000μV。脑电信号的采集又常常伴随着很大的噪声干扰,尤其是50 Hz的工频干扰。实验结果如图5所示。
经实验结果分析,本设计可以有效完成对脑电信号的去噪及滤除50 Hz的工频干扰,并能精确提取脑电信号的特征,为脑电信号的进一步研究做准备。
5 结束语
图5 实验前后结果图Fig.5 Before and after the experiment results in figure
本设计的硬件实现都是在SOPC Builder环境下完成的,SOPCBuilder提供的图形化系统架构平台极为方便地给设计人员提供了系统构建的优越性。SOPCBuilder采用软件搭建硬件系统的方法,突破了硬件系统难裁剪,不易升级,开发周期长,维护困难等诸多缺陷。而且SOPC Builder可根据搭建的硬件系统自动生成对应的代码,可使各部件通过Avalon总线有序的连接和工作,将设计人员解放到系统框架的总体设计和用户程序的设计,大大地促进了开发效率,缩短了开发流程。此外SOPC中也极为方便的为设计人员提供了加入自己设计的组建和自己定制的指令的功能,这样可使开发人员可以通过自己定制的指令更加高效地完成设计。SOPC系统具有在硬件的可重构与可重配置,这是FPGA在硬件开发过程中独一无二的特点。
[1]肖志俊,朱国怀.基于DSP的脑电信号处理系统设计[J].微计算机信息,2007(10):3-5.XIAOZhi-jun,ZHUGuo-huai.Based on EEGsignal processing in DSP system design[J].Conrol and Automation Pubilcation Group,2007(10):3-5.
[2]方炜圆,陈亚光.基于SOPC的多通道动态脑电采集系统[J].现代科学仪器,2008(12):11-12.FANG Wei-yuan,CHEN Ya-guang.Multi-channel dynamic EEG acquisition system based on SOPC[J].Modern Scientific Instruments,2008(12):11-12.
[3]马登程.基于实时嵌入式系统的脑电信号采集仪器设计[D].山东:山东大学,2006.
[4]谢松云,张振中,杨金,等.脑电信号的若干处理方法研究与评价[J].计算机仿真,2007(2):15-17.XIE Song-yun,ZHANG Zhen-zhong,YANG Jin,et al.EEG and processing methods research and evaluation[J].Computer Simularion,2007(2):15-17.
[5]徐栋君.脑电信号采集系统设计与研究[D].江苏:江苏大学,2006.
[6]古良玲.基于可编程逻辑器件的脑电信号自适应滤波技术的研究[D].重庆:重庆大学,2006.