基于fpga的ukf算法及其对大脑动力学模型的滤波的制作方法

文档序号:6552329阅读:252来源:国知局
基于fpga的ukf算法及其对大脑动力学模型的滤波的制作方法
【专利摘要】本发明公开了一种基于FPGA的UKF系统,该系统的处理器为Altera公司生产的FPGA,采用SOPC技术即片上可编程系统作为处理平台;所述的处理平台包括硬件和软件两个部分,硬件部分包括SDRAM控制器、Flash?Controler、System?ID、JTAG?UART、控制按键的PIO、控制液晶屏的PIO、PLL锁相环,各个部分通过Avalon总线连接,其中SDRAM控制器、Flash?Controler、JTAG?UART、控制按键的PIO、控制液晶屏的PIO均有各自的外围电路;软件部分包括硬件驱动程序和UKF算法程序两个部分,硬件驱动程序用来驱动SOPC平台中的硬件部分,UKF算法程序是核心部分。本发明从总体上给出了UKF的并行结构,提高滤波的速度;完成了大脑动力学模型的硬件实现,产生类似于正常和癫痫发病时的脑电信号。
【专利说明】基于FPGA的UKF算法及其对大脑动力学模型的滤波

【技术领域】
[0001] 本发明属于数字集成电路和神经动力学交叉的领域,涉及无迹卡尔曼滤波 (Unscented Kalman Filter, UKF)算法的现场可编程门阵列(Field Programmable Gate Array,FPGA)实现方法及其在大脑动力学模型中的应用,尤其涉及一种UKF算法及其对大 脑动力学模型滤波的FPGA实现的方法。

【背景技术】
[0002] 随着数字集成电路的不断更新,微电子技术的不断发展,现场可编程逻辑电路开 始广泛流行,其中现场可编程门阵列(Field Programmable Gate Array, FPGA)应用最为 广泛。它具有多方面的优点。首先,其单个芯片可容纳上百万的逻辑门,所以它能够实现的 功能非常强大,同时还可以实现系统的集成。其次,设计人员在自己实验室内就可以完成芯 片的功能设计,从而节省了许多潜在的花费,降低了生产成本。最后,用户可以反复编程、擦 除、使用或者在不改变外围电路的情况下利用不同软件实现不同的功能。基于上述优点,目 前FPGA已在通信、消费类、嵌入式等领域取代了 MCU的一些应用。在汽车、军事、工业和无 线通信等领域的性能优势超过独立DSP。
[0003] 对于FPGA使用硬件编程语言VHDL/Verilog HDL的好处在于易于理解、易于维护、 调试电路速度快,而作为目前应用最为广泛的C语言,其设计环境更为完整,语言灵活,功 能强大。Altera公司提出将Nios II软核处理器配置到可编程逻辑器件当中,实现了微处 理器与可编程逻辑器件的通信。
[0004] 脑电信号是大脑组织中大量神经元群突触后电流在大脑皮层或头皮表面的综合 表现,因而含有大量的脑电信息,是研究大脑内部功能及脑部疾病如癫痫等的发病原理的 重要依据。近年来,大量研究致力于大脑动力学模型的建立用以模拟真实的脑电信号。在 现实操作中,脑电信号的测量容易受到外界的干扰,如高频干扰,工频干扰等。考虑到干扰 的不确定性和难测量性,需要选择合适的滤波算法对其进行滤波控制。无迹卡尔曼滤波 (unscented Kalman Filter, UKF)算法能有效实现对非线性系统的滤波。UKF算法的硬件 实现可为进一步对大脑动力学模型状态估计和控制的硬件研究奠定一定的基础。
[0005] 中国专利申请号为:201120522483. 3,名称为:基于NIOS II系统的S0PC开发平 台,该申请案公开了一种基于NIOS II系统的S0PC开发平台,使用LED点阵屏进行图形显 示,而点阵显示屏存在显示单一的缺陷。
[0006] 中国专利申请号为:201010013568. 9,名称为:基于FPGA的无迹卡尔曼滤波系统 及并行实现方法,该申请案公开了一种基于FPGA的无迹卡尔曼滤波系统,主要解决现有无 迹卡尔曼滤波硬件实现难度大和实时性差的问题。


【发明内容】

[0007] 本发明的目的是针对上述问题,提供一种基于FPGA的UKF算法及其对大脑动力学 模型的滤波。
[0008] 为了解决上述存在的技术问题,本发明的目的之一是:一种基于UKF算法的UKF系 统,该系统采用Verilog HDL硬件描述语言作为编程语言,其UKF算法程序包括:
[0009] 协方差矩阵Cholesky分解模块,用于对对角协方差矩阵进行Cholesky分解,得到 下三角矩阵,得到m个有效数值,将有效数值输入到Sigma点产生模块;
[0010] Sigma点产生模块,用于接收上一时刻的状态估计值,并与由Cholesky分解得到 的m个有效数值结合,产生2m个Sigma点并分别输入到时间更新模块;
[0011] 时间更新模块,用于把接收到的Sigma点带入到系统模型的状态方程,得到状态 预测值,输入到观测预测模块;
[0012] 观测预测模块,用于把状态预测值代入观测模型的观测方程,得到观测预测值,并 将状态预测值和观测预测值输入到均值和协方差矩阵计算模块;
[0013] 均值和协方差矩阵计算模块,用于对状态预测值和观测预测值加权求和,分别计 算状态预测协方差矩阵、观测预测协方差矩阵和互协方差矩阵,并将观测预测协方差矩阵 输入到观测预测协方差矩阵求逆模块,将互协方差矩阵输入到增益计算模块,将状态预测 协方差矩阵和互协方差矩阵输入到状态估计和状态协方差矩阵估计模块;
[0014] 观测预测协方差矩阵求逆模块,用于对观测预测协方差矩阵进行求逆运算,并将 求逆结果输入到增益计算模块;
[0015] 增益计算模块,用于接收互协方差矩阵和观测预测协方差矩阵的逆矩阵,计算增 益,并将增益输入到状态量估计和状态协方差矩阵估计模块;
[0016] 状态估计和状态协方差矩阵估计模块,用于接收增益、状态预测均值、观测预测均 值、当前时刻的观测数据、状态预测协方差矩阵和互协方差矩阵,计算状态估计值和状态协 方差矩阵,并将状态估计值作为当前时刻的最终结果输出,将状态协方差矩阵输入协方差 矩阵Cholesky分解模块。
[0017] 本发明基于UKF算法的UKF系统要解决的UKF算法上的技术问题是:
[0018] (1)协方差矩阵Cholesky分解,对对角协方差矩阵进行Cholesky分解,得到下三 角矩阵,得到m个有效数值;
[0019] (2)Sigma点的产生,接收上一时刻的状态估计值,并与由Cholesky分解得到的m 个有效数值结合,产生2m个Sigma点;
[0020] (3)时间更新,把接收到的Sigma点带入到系统模型的状态方程,得到状态预测 值;
[0021] (4)观测预测,把状态预测值代入观测模型的观测方程,得到观测预测值;
[0022] (5)均值和协方差矩阵计算,对状态预测值和观测预测值加权求和,分别计算状态 预测协方差矩阵、观测预测协方差矩阵和互协方差矩阵;
[0023] (6)观测预测协方差矩阵求逆,对观测预测协方差矩阵进行求逆运算;
[0024] (7)增益计算,将互协方差矩阵和观测预测协方差矩阵的逆矩阵相乘得到增益;
[0025] (8)状态估计和状态协方差矩阵估计,对增益、状态预测均值、观测预测均值、当前 时刻的观测数据、状态预测协方差矩阵和互协方差矩阵进行计算,得到状态估计值和状态 协方差矩阵,并将状态估计值作为当前时刻的最终结果输出,将状态协方差矩阵返回(1) 进行下一时刻的计算。
[0026] 本发明的目的还在于提供了一种使用S0PC系统作为工作平台,在该平台上使用 软件程序构建大脑动力学模型以模拟脑电波信号,并与上述的基于UKF算法的UKF系统相 连接,实现UKF算法对该大脑动力学模型滤波的方法,该方法内容包括以下步骤:
[0027] 第一步,在Quartus II环境下创建工程,对工程命名,同时选定使用芯片型号 Cyclone IV EP4CE15F17C8 ;
[0028] 第二步,创建S0PC系统;
[0029] 第三步,建立系统的顶层模块;
[0030] 第四步,打开NIOS II EDS软件,建立新的工程及对应的一个BSP工程;
[0031] 第五步,编写程序;
[0032] 编写程序包括系统的初始化、按键的判定、显示屏显示、大脑模型建立等部分:
[0033] 首先,对程序进行初始化,并判断是否有按键按下,如果有,则根据按键调整模型 参数,并将参数信息显示在外接液晶显示屏上;如果没有按键按下,则显示系统默认的初始 参数值;进入大脑动力学模型后,利用四阶Runge-Kutta微分方法对之进行求解,因TFT屏 的分辨率为240 X 320,所以在本次仿真中循环计算320次,N从0依次增到320,以每次进行 循环状态时N的值为横坐标,以此次循环所得的模型输出为纵坐标,在TFT显示屏上画点, 并与N-1次循环时所得到的点用直线相连。显示屏共显示三条波形,第一条为模型不带噪 声输出,第二条为受输出噪声干扰的输出,第三条为经滤波后的输出;
[0034] 第六步,设置编译器,将S0PC系统与UKF系统连接
[0035] 利用基于UKF算法的UKF系统对基于S0PC系统构建的大脑动力学模型进行滤波 操作,在NIOS II软核系统中添加数据接收和发送端口,滤波结果接收端口和当前观测数据 输出端口,分别与UKF系统相连接,实现UKF系统对大脑动力学模型的滤波操作。
[0036] 由于采用上述技术方案,本发明与现有技术相比,具有以下的有益效果:本发明从 总体上给出了 UKF的并行结构,提高滤波的速度;完成了大脑动力学模型的硬件实现,产生 类似于正常和癫痫发病时的脑电信号,通过按键方便地实现参数调整;将UKF与大脑模型 结合,对受到噪声干扰的模型输出进行滤波操作;液晶屏的使用能更清晰地将结果显示出 来。本发明UKF算法及其对大脑动力学模型滤波的方法也可用于其它非线性系统的滤波。

【专利附图】

【附图说明】
[0037] 图1是本发明的总体结构图;
[0038] 图2是本发明UKF方法流程图;
[0039] 图3是本发明构建大脑模型S0PC设计流程示意图;
[0040] 图4是本发明硬件驱动程序结构图;
[0041] 图5是本发明构建大脑模型S0PC设计软件设计的流程图;
[0042] 图6是本发明S0PC系统与UKF系统之间的信号传递图。

【具体实施方式】
[0043] 下面结合附图对本发明的【具体实施方式】做进一步详细描述。
[0044] 图1为本发明的总体结构图,其中的FPGA由Altera公司生产,型号为 EP4CE15F17C8。在该FPGA上嵌入两个系统,即用硬件描述语言Verilog HDL编写的UKF系 统和以NIOS II为核心的S0PC系统,通过两个系统之间的联调,实现UKF系统中的UKF算 法对SOPC系统构建的大脑动力学模型的滤波,同时将滤波前的波形和滤波后的波形输出 到TFT液晶屏上,【具体实施方式】和过程如下。
[0045] 在UKF系统中实现的是UKF算法,UKF算法的流程图如图2所示,其中所涉及的 模块包括:协方差矩阵Cholesky分解模块、Sigma点产生模块、时间更新模块、观测预测模 块、均值和协方差矩阵计算模块、观测预测协方差矩阵求逆模块、增益计算模块、状态估计 和状态协方差矩阵估计模块。协方差矩阵Cholesky分解模块用于对对角协方差矩阵进行 Cholesky分解,其中要使用到开方操作,得到下三角矩阵,将下三角矩阵的m个有效数值与 接收到的上一时刻的状态估计值结合,产生2m个Sigma点,将Sigma点带入到系统模型的 状态方程,得到状态预测值,将状态预测值输入到系统模型的观测方程,得到观测预测值, 将状态预测值和观测预测值进行加权求和,分别计算状态预测协方差矩阵、观测预测协方 差矩阵和互协方差矩阵,将观测预测协方差矩阵进行求逆运算,求逆结果与互协方差矩阵 相乘得到增益,利用增益、状态预测均值、观测预测均值、当前时刻的观测数据、状态预测协 方差矩阵和互协方差矩阵,计算状态估计值和状态协方差矩阵,并将状态估计值作为当前 时刻的最终结果输出,将状态协方差矩阵输入协方差矩阵Cholesky分解模块。
[0046] S0PC系统包含两个部分,软件部分和硬件部分,图3为构建大脑模型S0PC设计流 程示意图。在S0PC系统开发过程中使用到的软件工具有:Quartus II--用于创建以FPGA 芯片为目标器件的NIOS II软核处理器系统及其外围模块,并进行下载及硬件系统调试等; SOPC Builder--用于完成NIOS II软核的配置及生成;NIOS II EDS用于软件的生成、调 试及运行。
[0047] 其中硬件部分包括 SDRAM 控制器、Flash Controler、System ID、JTAG UART、控制 按键的ΡΙ0、控制液晶屏的PI〇、PLL锁相环,各个部分通过Avalon总线连接,其中SDRAM控 制器、Flash Controler、JTAG UART、控制按键的ΡΙ0、控制液晶屏的ΡΙ0均有各自的外围电 路,具体的实施方式为:
[0048] (1)创建 S0PC 系统
[0049] 在SOPC Builder环境中建立NIOS II软核系统,根据外部的晶振频率设定软核时 钟,在本实施例中选为50MHz。
[0050] 添加 NIOS II CPU (单击 "Processors - Nios II Processor" 菜单),该处理器 具有3种不同的类型,即NIOS ΙΙ/e (经济型内核)、NI0S II/s (标准型内核)和NIOS II/ f (快速型内核)。不同的处理器内核具有不同的技术指标和性能。NIOS ΙΙ/e占用的逻辑 单元少,但其功能相对较少;NIOS II/s在性能和尺寸方面得到平衡,功能适中;NIOS Il/f 使用的逻辑单元最多,功能也是最强大的。在本实施例中选用快速型内核NIOS ΙΙ/f,并对 其进行指令和数据缓冲、CPU复位请求、额外校验以及JTAG调试等功能设置。
[0051] 添力口 SDRAM Controller (单击"Memories and Memory Controllers - SDRAM - SDRAM Controller" 菜单)根据硬件使用的 SDRAM 型号为 HY57V2562GTR,容量为 256MBit (4Banks X 4MX 16bits),数据宽度为 16 位,选择 custom并根 据数据手册进行相应的配置。SDRAM即同步动态随机存储器,是用于弥补片内的存储空间, 其同步性是指存储工作需要同步的时钟,内部数据的传输及命令的发送都是以这个同步的 时钟为基准的,它的动态性是指为了保证数据不易丢失,需要不断地刷新存储阵列,其随机 性是指数据在指定的地址进行读写而非线性依次存储的,由于SDRAM具有大容量和低成本 的特性,使之应用非常广泛。
[0052] 添加 EPCS Serial Flash Controler (单击 "Memories and memory Controllers -flash -EPCS Serial Flash Controler" 菜单),在窗口中选择默认设计 即可。添加了 EPCS控制器后可以使Altera的EPCS串行配置器件被NIOS II系统访问。
[0053] 添加 System ID (单击 "Peripherals - Debug and Performance" 菜单),它是一 种标示符,为了确保Quartus II所建的工程与NIOS II中的工程--对应。
[0054] 添加 JTAG UART (单击" Interface Protocols - Serial - JTAG UART,'菜单),按 照默认设置完成,实现NIOS系统与PC间的串口通信,它在NIOS II的开发与调试的过程中 起着非常重要的作用。
[0055] 添加 ΡΙ0(单击"Peripherals - Microcontroller Peripherals - ΡΙ0(Paralle 1/0)菜单")共添加十二组Pio,其中八组作为输出端口,分别为8位的lcd_d用于存放数 据,1位的lcd_e,lcd_rd,lcd_rs,lcd_rw,lcd_rst用于对TFT显示屏进行控制,8位X作为 模型的状态预测输出,8位的y作为受噪声干扰的观测输出;其他四组作为输入端口,keyO 控制兴奋性增益参数A以0. 15的幅度增加,key 1控制兴奋性增益参数A以0. 15的幅度减 小,Xa接收由无迹卡尔曼滤波模块产生的状态值,yhat用于接收无迹卡尔曼滤波模块的滤 波结果。
[0056] 最后对CPU的复位向量及异常所在存储器进行设置(双击CPU,在"Reset Vector : Memory" 选项中选择 EPCS_flash,在 "Exception Vector :Memory" 选项中选择 sdram),锁 定EPCS_flash地址线后对其它地址和中断进行自动分配(单击"System -Auto Assign Base Addersser" 菜单及 "System -Auto Assign IRQs,')。
[0057] (2)建立系统的顶层模块
[0058] 在Quartus II环境下创建工程的顶层文件,选择为图形输入方式。调用已生成的 NIOS II系统模块和UKF模块(在原理图的空白处双击,在Symbol选择刚刚生成的CPU模 块和已进行模块化的UKF模块)。
[0059] 添加PLL模块,由于本实施例中使用了 SDRAM存储器,NIOS II提供的时钟会产 生一定的延时,直接将NIOS II的系统时钟接到SDRAM是不行的,需要建立锁相环PLL模 块,对NIOS II时钟进行延时。添加PLL模块需要在原理图空白处双击,在Symbol下单击 "MegaWizard Plug-In Manager··· - Installed Plug-Ins -1/0 -ALTPLL",依据实验板 输入时钟设为50MHz,输出时钟CO为默认设计,频率为50MHz,相位差为0,作为NIOS II系 统时钟,C1的频率也为50MHz,相位差设置为-73deg,作为SDRAM的时钟信号,单击Finish, 生成PLL模块,并加入到原理图中。
[0060] 将PLL的输出时钟C0与在NIOS II下生成的CPU模块的elk相连,将CPU模块的 Xa、yhat、X和y与UKF模块相应端口相连接,对其它的输入输出加入引脚并利用Tel文件 分配引脚使设计的电路与实际的硬件能够连接起来。
[0061] 其软件部分包括硬件驱动程序和模拟脑电波并构建大脑动力学模型程序两个部 分,【具体实施方式】为:
[0062] (1)编写硬件驱动程序
[0063] 图4为硬件驱动程序包括液晶屏驱动程序和按键驱动程序,液晶屏驱动程序用于 驱动TFT液晶屏,使TFT液晶屏能够显示出运行结果;按键驱动程序用于驱动按键,使按键 能够使用。
[0064] (2)编写模拟脑电波并构建大脑动力学模型程序
[0065] 图5为构建大脑模型S0PC设计软件设计的流程图,该软件设计部分是在NIOS II EDS软件中用C语言编程完成的。它的工作过程为:当系统启动后对表征模型特征的参数 及TFT显示屏进行初始化;利用初值进入大脑动力学模型,依次计算出状态量的一阶导数, 利用四阶Runge-Kutta微分方法对之进行求解,并计算出单个神经群模型的输出。因TFT 屏的分辨率为240X 320,所以在本仿真中循环计算320次,N从0依次增到320,以每次进 行循环状态时N的值为横坐标,以此次循环所得到的输出为纵坐标,在TFT显示屏上画点, 并与N-1次循环时所得到的点用直接相连。显示屏共显示三条波形,第一条为模型不带噪 声输出,第二条为受输出噪声干扰的输出,第三条为经滤波后的输出,因所画出来的三条曲 线大体位置相符,所以为了更直观的看到波形图,则对第二、三条曲线之上各点的纵坐标加 一定的值使之分别向上平移一定的量。
[0066] (3)设置编译器
[0067] 为了编译出高效的代码,需要对编译器进行设置。首先在工程名旁点击右健,选 择 Properties - NIOS II Application Properties 在右侧 Optimization level 中选 择level3。同样需要设置BSP工程的属性,右键单击BSP工程名,Properties -NIOS II BSP Properties在右侧Optimization level中选择level3,同时还需要点击下面的BSP Editor对硬件进行相关的设置,标准的输入输出及错误都选择jtag_uart,各种数据都存 放在SDRAM中,并点击generate生成BSP设置。
[0068] 图6为S0PC系统与UKF系统之间的信号传递图,此为S0PC系统与UKF系统的连 接部分,通过两个系统之间的联调,实现UKF系统中的UKF算法对S0PC系统构建的大脑动 力学模型的滤波,并将滤波前后的结果显示到TFT液晶屏上,在TFT液晶屏上能够清楚的看 到原始的脑电波信号和滤波之后的脑电波信号。
【权利要求】
1. 基于UKF算法的UKF系统,其特征在于:该系统包括: 协方差矩阵Cholesky分解模块,用于对对角协方差矩阵进行Cholesky分解,得到下三 角矩阵,得到m个有效数值,将有效数值输入到Sigma点产生模块; Si gma点产生模块,用于接收上一时刻的状态估计值,并与由Cho 1 esky分解得到的m个 有效数值结合,产生2m个Sigma点并分别输入到时间更新模块; 时间更新模块,用于把接收到的Sigma点带入到系统模型的状态方程,得到状态预测 值,输入到观测预测模块; 观测预测模块,用于把状态预测值代入观测模型的观测方程,得到观测预测值,并将状 态预测值和观测预测值输入到均值和协方差矩阵计算模块; 均值和协方差矩阵计算模块,用于对状态预测值和观测预测值加权求和,分别计算状 态预测协方差矩阵、观测预测协方差矩阵和互协方差矩阵,并将观测预测协方差矩阵输入 到观测预测协方差矩阵求逆模块,将互协方差矩阵输入到增益计算模块,将状态预测协方 差矩阵和互协方差矩阵输入到状态估计和状态协方差矩阵估计模块; 观测预测协方差矩阵求逆模块,用于对观测预测协方差矩阵进行求逆运算,并将求逆 结果输入到增益计算模块; 增益计算模块,用于接收互协方差矩阵和观测预测协方差矩阵的逆矩阵,计算增益,并 将增益输入到状态量估计和状态协方差矩阵估计模块; 状态估计和状态协方差矩阵估计模块,用于接收增益、状态预测均值、观测预测均值、 当前时刻的观测数据、状态预测协方差矩阵和互协方差矩阵,计算状态估计值和状态协方 差矩阵,并将状态估计值作为当前时刻的最终结果输出,将状态协方差矩阵输入协方差矩 阵Cholesky分解模块。 2. S0PC系统模拟脑电波构建大脑动力学模型的方法,其特征在于:该方法内容包括以 下步骤: 第一步,在Quartus II环境下创建工程,对工程命名,同时选定使用芯片型号 Cyclone IV EP4CE15F17C8 ; 第二步,创建S0PC系统; 第三步,建立系统的顶层模块; 第四步,打开NIOS II EDS软件,建立新的工程及对应的一个BSP工程; 第五步,编写程序; 编写程序包括系统的初始化、按键的判定、显示屏显示、大脑模型建立等部分: 首先,对程序进行初始化,并判断是否有按键按下,如果有,则根据按键调整模型参数, 并将参数信息显示在外接液晶显示屏上;如果没有按键按下,则显示系统默认的初始参数 值;进入大脑动力学模型后,利用四阶Runge-Kutta微分方法对之进行求解,因FTF屏的分 辨率为240X320,所以在本次仿真中循环计算320次,N从0依次增到320,以每次进行循 环状态时N的值为横坐标,以此次循环所得的模型输出为纵坐标,在TFT显示屏上画点,并 与N-1次循环时所得到的点用直线相连。显示屏共显示三条波形,第一条为模型不带噪声 输出,第二条为受输出噪声干扰的输出,第三条为经滤波后的输出; 第六步,设置编译器。 3. UKF算法对大脑动力学模型滤波的方法,其特征在于: 在NIOS II软核系统中设定数据接收和发送端口,滤波结果接收端口和当前观测数据 输出端口,分别与UKF系统相连接,实现UKF系统对脑电波的滤波操作。
【文档编号】G06F17/50GK104143017SQ201410318085
【公开日】2014年11月12日 申请日期:2014年7月7日 优先权日:2014年7月7日
【发明者】刘仙, 朱波, 刘会军, 高庆 申请人:燕山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1