一种基于matlab的模糊控制器hdl代码自动生成方法

文档序号:6437656阅读:2066来源:国知局
专利名称:一种基于matlab的模糊控制器hdl代码自动生成方法
技术领域
本发明属于集成电路设计技术领域,特别涉及一种基于MATLAB的模糊控制器HDL 代码自动生成方法。
背景技术
本申请引用的文献包括如下,[l]http://zh. wikipedia. org/zh/MATLAB[2]http://baike. baidu. com/view/584919. htm[3]http://zh.wikipedia. org/wiki/Simulink[4]席爱民.模糊控制技术[Μ].西安西安电子科技大学出版社,2008 :98-108.[5]http://baike. baidu. com/view/2323253. html ? fromTaglist以下描述本发明涉及的一些术语和缩略语。MATLAB (矩阵实验室)MATLAB是MATrix LABoratory的缩写,是一款由美国The Mathfforks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB 还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。尽管 MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。另外还有一个配套软件包Simul ink,提供了一个可视化开发环境,常用于系统模拟、动态/嵌入式系统开发等方面[1]。Simulink (仿真和连接)Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink[2]。 Simulink提供了一个交互式的图形化环境及可定制模块库(Library),可对各种时变系统,例如通讯、控制、信号处理、视频处理和图像处理系统等进行设计、仿真、执行和测试[3]。模糊控制器模糊控制器由模糊化接口,推理机,规则库,反模糊化接口四部分组成。模糊化接口用于将控制器的输入转化为模糊控制器能识别的信息。推理机用于模仿专家作出决策, 根据模糊化接口接收的信息判断如何更好地控制对象。规则库则是将专家的控制经验量化,它由含if-then的规则语句构成。反模糊化接口是将推理机作出的决策信息清晰化,用于控制实际的被控对象。模糊控制器的基本工作原理是将输入的数字信号经过模糊化变成模糊量,送入含有模糊规则的模糊推理模块,经过近似推理得出结论——模糊集合,然后被清晰化模块变成清晰量,再输出到下一级去调节被控对象,使其输出满意的结果[4]。模糊控制器的结构如

图1所示。近些年模糊控制技术在理论上的发展主要表现在对模糊控制系统稳定性的分析方法的研究上,提出很多系统稳定性分析方法。而工程应用上,首先要考虑的是如何在硬件系统上实现模糊控制器,然后通过一定的仿真工具进行仿真实验,观察仿真结果是否稳定,而实现模糊控制器的方法最实用的还是查找表方法,即将输入变量的限定在一定的范围(论域),对于所有输入变量的任意组合对应的输出制成一张查找表,把这张表存储在硬件资源上,这样模糊控制器就相当于一张查找表,某一组输入对应一组输出,有了这张查找表,那么在软件上实现起来就容易多了。不过要制作出这张查找表,不是一件容易的事情, 尤其是在输入变量比较多。UFuzzy Logic ^Toolbox (模糊逻辑工具箱)Fuzzy Logic Toolbox利用基于模糊逻辑的系统设计工具扩展了 MATLAB的科学计算功能。通过图形用户界面工具可以完成模糊推理系统设计的全过程。工具箱中的函数提供了多种通用的模糊逻辑设计方法,例如模糊群(Fuzzy Clustering)、模糊自适应神经网络学习(AdaptiveNeuro-fuzzy Learning) 0通过该工具箱可以利用简单的模糊规则对复杂的系统行为进行建模,然后将这些规则应用于模糊推理系统。工程师可以将该工具箱作为一个独立应用的模糊推理引擎,或者在整个动态系统中使用Simulink中的模糊推理模块对其中的模糊子系统进行仿真。http://www. hirain. com/Product/Article, asp ? ArtClassID = 13982、Systemtest (系统测试工具)Systemtest是集成在MATLAB中的一个功能强大的系统测试和验证分析工具,为 MATLAB算法和Simulink模型的测试开发提供了一个软件框架,用户可以利用预定义的元件来搭建和维护标准的测试程序,还可以在整个开发项目的过程中进行测试的保存和共享以确保测试的可复用性。用户可以通过MATLAB的脚本语言和分析工具对大型数据集进行分析,并对系统的行为进行详尽的研究。3、Lookup Table (查找表或查询表)查找表是MATLAB组件Simulink中的一个模块库,库中包含各类查找表,如一维查找表、二维查找表、η维查找表等。主要是用于逼近一维、二维、η维函数。查找表是由同一类型的数据元素(或记录)构成的集合,由于“集合”中的数据元素之间存在着松散的关系, 因此查找表是一种应用灵便的数据结构。4、Stateflow (状态机)Stateflow是有限状态机(finite state machine)的图形工具,它可以用于解决复杂的逻辑问题,用户可以通过图形化工具实现在不同状态之间的转换。Stateflow可以直接嵌入到Simulink仿真模型中,并且在仿真的初始化阶段,SIMULINK会把Mateflow 绘制的逻辑图形通过编译程序转换成C语言,使二者有机地结合在一起。Stateflow 可以在SIMULINKExtra模块库中找到。Stateflow的仿真原理是有限状态机(finite statemachine)理论,有限状态机是指系统含有可数的状态,在相应的状态事件发生时,系统会从当前状态转移到与之对应的状态。在有限状态机中实现状态的转移是有一定条件的,同时相互转换的状态都会有状态转移事件,这样就构成了状态转移图。在SIMULINK的仿真窗口中,允许用户建立有限个状态以及状态转移的条件与事件,从而绘制出有限状态机系统,这样就可以实现对系统的仿真。Stateflow的仿真框图一般都会嵌入到Simulink 仿真模型中,同时实现状态转移的条件或是事件即可以取自Stateflow仿真框图,也可以来自Simulink仿真模型[5]。5、HDL Coder (HDL i吾言编码器)HDL Coder是Simulink下面的一个功能模块,它可以把Simulink模型、MATLAB代码和Mateflow框图生成位真(bit-true)、周期精确(cycle-accurate)、可综合的Verilog 和VHDL代码。通过使用工业标准化设计工具,可以对自动生成的HDL代码进行仿真和综合, 并进一步映射到FPGA和ASIC芯片上。SimulinkHDL Coder可以控制HDL的体系架构和实施,突出模型中的关键路径,生成硬件资源利用评估。Simulink HDL Coder还能够生成测试验证平台以及EDASimulator Link的仿真模型,并提供支持D0-2M工作流的代码跟踪能力,从而对生成的HDL代码进行快速验证m。为了说明现有技术中基于MATLAB的模糊控制器HDL代码自动生成方法,有以下例子说明。1利用MATLAB的Fuzzy Logic工具箱设计模糊控制器本实验的目的是要将设计的模糊控制器用MATLAB自动生成HDL代码,以用于 FPGA中。由于用Fuzzy Logic设计的模糊控制器tank, fis嵌入到simulink中的Fuzzy Controller元件中不能自动生成HDL代码,故这里采用LookupTable (LUT)来设计模糊控制器以便能用MATLAB内嵌的HDL Coder自动生成HDL代码。本实验是按照Demos中的例子Water Level Control in a Tank来设计模糊控制器的,这是一个标准二维mamdani (—类模糊控制器名称)模糊控制器。其输入变量有两个分量,偏差e和偏差变化率ec = de/dt,一个输出量U。偏差e为给定液位与实际输出液位的偏差,这里命名为level,偏差变化率就是偏差随时间的变化率,这里称为rate,输出量为阀门的开度,这里为valve。该模糊控制器有5条控制规则。对于输入变量level有三个模糊子集high、okay和low覆盖在模糊论域[_1, 1]上,输入变量rate同样有三个模糊子集negative、none和positive覆盖在模糊论域 [-0. 1,0. 1]上,输出变量 valve 则有五个模糊子集 close_fast、close_slow、no_change、 open_slow禾口 open_fast覆盖在模糊论域[_1,1]上。2用查找表设计模糊控制器替换原来水箱液位模糊控制器的步骤[7]2. 1制作输入输出变量的隶属度矢量表首先,从图4看出两输入变量level和rate的隶属函数都是高斯函数且high、 okay 和 low 参数分别为


,而 negative、none 和 positive 的参数分别为


,输出变量valve为三角形函数,它们的参数分别为[-1-0. 9-0. 8]、[-0. 6-0. 5-0. 4]、[-0. 1 0 0. 1]、

。这里高斯函数在相应点的隶属度是根据simulink里面Fuzzy Logic Toolbox中的函数模块 Gaussian MF按以上参数设置计算得到的。由以上分析可得三张输入输出变量隶属度矢量表如下。表1输入level的隶属度矢量表表2输入rate的隶属度矢量表
权利要求
1. 一种基于MATLAB的模糊控制器HDL代码自动生成方法,其特征在于,包括步骤 利用MATLAB的Fuzzy Logic工具箱获得模型的模糊控制器; 利用SystemTest工具制作模糊控制器查找表; 将制作好的模糊控制器查找表用状态机实现; 在MATLAB中自动生成所述模型的HDL代码,其中,所述的利用SystemTest工具制作模糊控制器查找表步骤又包括 对所述模型运行一次短时仿真,获得第一模型文件,新建第二模型文件,把第一模型文件的模糊控制模块复制到第二模型文件,在SystemTest中给Main Test添加一个Simulink测试元素,将第二模型文件作为待测试模型,构建测试向量和测试变量,测试向量的个数与第二模型文件的输入个数一致,测试向量的范围与各个输入的范围一致,并选择合适步长,测试向量作为模型测试的输入信号,模型测试的输出信号存放在建立的测试变量里,将建立的测试向量与第二模型文件的输入口建立映射关系,将建立的测试变量与第二模型的输出口建立映射关系,将测试变量和保存结果变量建立映射,使测试变量的结果能够得以保存, 运行测试,将所述测试生成的模糊控制表制成为一个查找表,然后用所述查找表替换所述模型中的模糊控制器模块并运行,查看和验证所述测试生成的模糊控制表控制效果。
全文摘要
本发明公开了一种基于MATLAB的模糊控制器HDL代码自动生成方法,其中,所述的利用SystemTest工具制作模糊控制器查找表步骤包括对所述模型运行一次短时仿真,获得第一模型文件,新建第二模型文件,把第一模型文件的模糊控制模块复制到第二模型文件,在SystemTest中给Main Test添加一个Simulink测试元素,将第二模型文件作为待测试模型,构建测试向量和测试变量,测试向量的个数与第二模型文件的输入个数一致,测试向量的范围与各个输入的范围一致,并选择合适步长,测试向量作为模型测试的输入信号,模型测试的输出信号存放在建立的测试变量里。
文档编号G06F9/44GK102393819SQ20111034929
公开日2012年3月28日 申请日期2011年11月8日 优先权日2011年11月8日
发明者许甜甜, 诸葛俊贵, 顾美康 申请人:上海师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1