脑机接口BCI(Brain Computer Interface)是一种新颖的人机接口方式。它的定义是:不依赖于脑的正常输出通路(外周神经系统及肌肉组织)的脑-机(计算机或其他装置)通讯系统[1]。要实现脑机接口,必须有一种能反映人脑不同状态的信号,并且能够实时或短时对这种信号进行提取和分类[2]。瞬态视觉诱发电位与刺激之间具有严格的锁时同步关系,能比较准确地检测,而且它所需的视觉刺激频率比较低,不容易引起视觉疲劳。因此本研究采用瞬态视觉诱发电位来实现脑机接口。
脑机接口系统是由人和机器构成的闭环系统[3]。除人本身外, 脑机接口系统包括:信号采集、信号处理、外部设备及控制部分。本文的方案采用FPGA取代计算机,作为脑机接口的控制和信息处理器。主要包括脑电采集电路、基于FPGA的VGA视觉刺激器和FPGA开发板三部分,如图1所示。
电极帽和脑电采集电路组成了脑电信号采集部分。VGA视觉刺激器属于外部设备及控制部分。FPGA开发板是整个系统的核心,它不仅实现了信号处理,而且还实现了对脑电采集电路的控制和VGA控制器。FPGA开发板采用Cyclone II EP2C35 DSP开发板,FPGA芯片为Cyclone II EP2C35F672。
1 系统设计
1.1 脑电采集电路的设计
脑电信号比较微弱,而且淹没在很强的背景噪声和干扰中。必须设计合适的电路,在放大脑电信号的同时,通过滤波抑制噪声,提高信噪比,得到较好的模拟脑电信号,并通过AD转换为适合于FPGA处理的数字信号。
本文设计的脑电采集电路主要包括有源电极、右腿驱动电路、模拟电路、数字电路和电源。有源电极用来传导脑电信号,右腿驱动电路可以降低共模电压。模拟电路包括前置放大电路、高通滤波电路、放大滤波电路和电压抬升电路,实现模拟信号调理和信噪比的提高。数字电路包括AD转换电路和光耦隔离电路,主要功能是模拟信号到数字信号的转换。
1.2 基于FPGA的VGA视觉刺激器的设计
脑机接口视觉刺激器通常可以在计算机显示器或电视机上通过硬件和软件两种方式产生,也可以设计专门的图形显示电路[4]。采用硬件实现视觉刺激,最大优点是性能稳定,但修改和升级比较困难。
本文的方案是基于FPGA的VGA视觉刺激器,采用VGA显示器作为视觉刺激器,通过VHDL编程的方式产生图形刺激信号。FPGA是一种半定制电路,具有很强的在线修改能力,可以随时修改设计而不必改动硬件电路。因此,通过编程可以灵活地产生不同的刺激模式,修改和升级十分方便。按照VGA显示器逐行扫描的工作原理和VGA工业标准[5],在FPGA中设计了VGA控制器,包括分频模块、扫描时序产生模块、图像描述模块、刺激频率控制模块和光标控制模块,其框图如图2所示。
分频模块产生像素输出频率和刺激所需的频率。CycloneⅡEP2C35芯片具备4个增强型嵌入式锁相环(PLL),每个锁相环可以提供3个输出时钟,频率非常稳定,还可以分频和倍频。用锁相环IP核调用嵌入式锁相环,直接分频产生像素输出频率,保证了系统时钟的精确和稳定。计数器分频得到刺激所需的频率,可产生不同的刺激频率。
扫描时序产生模块提供VGA行扫描和场扫描的时序。对像素输出频率计数分频,产生行扫描频率,其频率为31.469 kHz。然后,对行扫描频率计数分频,得到场扫描频率,其场频为59.94 Hz。
图像描述模块描述需要产生的刺激图形,包括位于屏幕上下左右4个方向的4个方块和0、1、2、3数字。4个方块是实现多项目标选择的刺激目标,光标用来反馈选择的结果。通过行坐标和场坐标来描述方块和数字的位置及大小。在方块上标注数字,以区别不同的方块。图形的改变或运动可引起有效的诱发电位,因此,方块的颜色是黑色和白色交替变化的。为了使方块更显著,底色采用深石板灰色。
刺激频率控制模块设计了刺激的模式。采用同频次复合刺激方式,即在单位时间内各个视觉刺激模块闪烁的次数相同,但各个刺激模块闪烁的时刻相互错开。通过计数器分频产生模块闪烁的时钟。闪烁时刻的错开用相位延时实现,用系统时钟产生一个计数器,根据计数器的计数控制延时,达到精确定时的要求。当闪烁的时钟信号为低电平时,方块为黑色;为高电平时,方块为白色。在刺激模块黑变白的同时,发出触发信号。
光标控制模块描述光标的图形,控制光标的移动。通过改变光标的坐标和分频来控制光标移动的方向和速度。光标的颜色为红色。
基于FPGA的VGA视觉刺激器充分利用了FPGA半定制电路的特点,采用同步时序设计方式,不但性能稳定,而且能根据需要灵活地设计不同的视觉刺激器。它实现方便,功能强大,兼具用硬件或软件方式实现视觉刺激器的优点。
1.3 瞬态视觉诱发电位的提取与识别
累加平均方法是最经典的诱发电位信号处理方法,也是电生理测量中提高信噪比最常用的方法[2]。在FPGA中设计的累加平均算法的框图如图3所示,包括触发信号检测模块、RAM地址控制模块、异步双口RAM、累加器和除法器。
触发信号检测保证了刺激与视觉诱发电位的锁时同步关系。只有检测到最早闪烁的刺激模块的触发信号,才把脑电数据存储到RAM中。当达到要求的闪烁次数时,停止数据的写入。根据刺激模块之间的延时关系,可以确定与各个刺激模块相应的数据在RAM中的起始地址。然后,按照起始地址读出数据给累加器,累加的次数与闪烁次数相同。最后,用除法器除以累加的次数,得到累加后的平均结果.
知识产权(IP)核,是指己验证的、可重利用的、具有某种确定功能的IC模块。FPGA有大量各种用途的IP核。这些IP核对内核进行了参数化,通过头文件或图形用户接口(GUI)可以方便地对参数进行操作。通过异步双口RAM IP核调用片内RAM来缓存脑电数据,保证了数据接口的同步和数据处理速度。用累加器IP核和除法器IP核来实现算法中的累加器和除法器。
只采用累加平均的方法, 需要进行上百次才能得到可靠的诱发电位波形, 信号提取的时间太长。在少量次累加平均时,为了进一步提高信噪比,提取出较为理想的诱发电位波形,采用数字滤波的方法来减少噪声的影响。FIR滤波器具有严格的线性相位,稳定性好,而且通频带比较平坦。所以,采用FIR滤波器来实现数字滤波。用窗函数设计法设计一个15阶的低通FIR滤波器,窗函数为海明窗,截止频率为10 Hz。利用MATLAB工具箱中的FDATool设计滤波器,并转换为HDL代码,可以很方便地在FPGA中实现FIR滤波器。通过调用CycloneⅡ芯片中用于DSP运算的嵌入式乘法器来实现FIR滤波中的乘法运算。与基于逻辑单元的乘法器相比,嵌入式乘法器性能更高,占用逻辑单元更少。嵌入式乘法器能够与CycloneⅡ器件的M4K RAM块进行无缝集成,实现高效的DSP算法[6]。
瞬态视觉诱发电位的识别,就是要将诱发电位信号转换成一系列控制命令,从而实现人脑与外界的通信与控制。模板匹配是传统的模式识别方法之一。相关系数是变量之间相关程度的指标,可以用于判断曲线拟合程度。用相关系数来衡量模板与未知模式匹配的好坏,是一个有效且可行的方法。
首先,选定一个特征明显的瞬态视觉诱发电位波形,作为模板匹配的参考模板;然后,把实时提取诱发电位波形与参考模板做相关系数计算。若相关系数值大于设定的阈值时,就认为检测到了的诱发电位,发出控制命令,使光标移向相应的刺激模块,从而实现瞬态视觉诱发电位的识别。
相关系数的计算公式如下:
假定模板的数据为y,可以先离线计算出公式(1)中含y项的值,存在ROM中,从而提高实时计算的速度。只需要1个乘加器IP核,调用FPGA芯片中的嵌入式乘法器,就可以实现分子和分母中的乘加运算,节省了器件的资源。用开根号IP核来实现开根号运算。
FPGA运行速度快,内部程序并行运行,并且有DSP运算IP核和嵌入式乘法器,能够快速准确地完成脑电处理算法,满足信号处理的实时性要求。
2 实验结果
采用本文方案构建的脑机接口系统进行实验。脑机接口实验通常为一组实验,分别选择不同的4个刺激模块(包括全部目标的选择)。在实验中,受试者头戴电极帽,眼睛距屏幕70 cm左右,控制光标移向所注视的目标。每次实验时,4个刺激模块完成一轮闪烁后,然后停顿几秒,进行下一轮闪烁。4轮闪烁,即4个刺激模块都能被选中后,自动停止闪烁。
实验中提取的瞬态视觉诱发电位波形如图4所示。图4(a)中,已经可以看到视觉诱发电位的雏形,但视觉诱发电位的特征不是十分明显。图4(b)中,用FIR滤波对诱发电位信号进一步处理,得到了特征比较明显的视觉诱发电位。
脑机接口的实验结果如表1所示,受试者是5名健康男性。正确判断时,在刺激模块停止闪烁的同时,光标立刻移向受试者注视的模块。
基于瞬态视觉诱发电位的脑机接口实验表明,本文给出的基于FPGA的脑机接口实时系统的方案是可行的。基于FPGA的VGA视觉刺激器,刺激频率十分稳定,刺激界面易于接受,修改升级方便。基于FPGA的脑电信号处理算法,采用少量次累加平均结合FIR滤波来提取诱发电位,并通过模板匹配的方法加以识别,可以快速准确地把瞬态诱发电位信号转换为控制命令,实现了实时的脑机接口系统。基于FPGA的脑机接口系统,是一种新的方法,也是对脑机接口实现方法的有益探索。