系统级建模工具----Matlab

Download Report

Transcript 系统级建模工具----Matlab

系统级建模与仿真
浙江大学微电子所
2014.11.4
内容提要
一、集成电路设计的一般流程
二、系统级建模工具----Matlab
三、系统级建模工具----Veriloga
四、建模仿真实例
共 124 页
2
一、集成电路设计的一般流程
集成电路设计中不同的抽象级别:
结构或系统级(行为模型)
电路级(宏模型)
器件物理级(器件模型)
共 124 页
3
模拟集成电路设计
VLSI数字集成电路设计
共 124 页
4
为什么需要系统级设计?
随着集成电路工艺和数字信号处理技术的不断发展,
 电路的规模越来越大,系统构成越来越复杂。
 晶体管级电路仿真消耗很长时间,效率低下。
 采用行为级描述电路将降低仿真时间。
行为级模型足以表述各个电路模块的功能,通过行为
级仿真可以在功能上预先验证所设计的系统是否能够满足
要求,并给出其中各电路模块所需的指标,指导我们的电
路设计。
共 124 页
5
IC设计过程中系统工程师的地位
•
•
•
•
产品功能的定义和模块的划分
设计并验证系统的可行性
分配各个模块的性能指标
整个解决方案中芯片设计环节的组织者
系统工程师在IC设计中具有非常重要的地位,他们一般是工作经验丰富的
IC设计工程师,他们能够根据自己的经验积累恰当的选择系统架构,恰当
的选择建模原型来获得最接近真实情况的指标定义。
共 124 页
6
二、系统级建模工具----Matlab
•
•
•
•
•
Matlab语言简介
Matlab基本知识
Matlab编程简介
Matlab动态仿真工具simulink
基于simulink的系统建模
共 124 页
7
1.Matlab语言简介
• MATLAB 的名称源自 Matrix Laboratory ,它是
一种科学计算软件,专门以矩阵的形式处理数据。
• MATLAB 被广泛地应用于科学计算、控制系统、
信息处理等领域的分析、仿真和设计工作。
• Matlab最重要的特点是易于扩展,它允许用户自
行建立完成指定功能的.M文件,从而构成适合于
其他领域的工具箱。
• 包括Toolbox的各类应用问题的求解工具。
共 124 页
8
MATLAB语言的主要特点
具有丰富的数学功能
1. 包括矩阵各种运算,如:正交变换、三角分解、特征值等。
2. 包括各种特殊函数。如:贝塞尔函数、椭圆函数等。
3. 包括各种数学运算功能。如:数值微分、数值积分、插值、求极值、方
程求根、FFT 、常微分方程的数值解等。
具有很好的图视系统
1. 可方便地画出两维和三维图形。
2. 高级图形处理。如:色彩控制、动画。
3. 图形用户界面GUI制作工具,可以制作用户菜单和控件。使用者可以根据自己
的需求编写出满意的图形界面。
可以直接处理声言和图形文件
1. 声音文件。如: WAV文件。
2. 图形文件。如: bmp 、gif 、tif 、jpeg等文件。
共 124 页
9
MATLAB语言的主要特点(续)
具有若干功能强大的应用工具箱
如:SIMULINK、DSP、 SIGNAL等工具箱
使用方便,具有很好的扩展功能
1. 使用MATLAB语言编写的程序可以直接运行,无需编译。
2. 可以M文件转变为独立于平台的EXE可执行文件。
3. MATLAB的应用接口程序API是MATLAB提供的十分重要的组件 ,由
一系列接口指令组成 。用户就可在FORTRAN或C中 , 把MATLAB当
作计算引擎使用。
具有很好的帮助功能
1. 提供十分详细的帮助文件(PDF 、HTML 文件)。
2. 联机查询指令:help指令(例:help exp,help
simulink),lookfor关键词(例: lookfor fourier )。
共 124 页
10
共 124 页
11
共 124 页
12
2.Matlab 编程简介
共 124 页
13
共 124 页
14
• Matlab提供近20类基
本命令函数
包括:通用函数、基
本数学函数、矩阵操
作函数,绘图函数等
• 充分使用help
共 124 页
15
共 124 页
16
M文件应用实例(绘制bode图)
• 已知某一传输函数,要求观察其幅频特性
和相频特性,此时就需要绘制bode图。
• 绘制Bode图需要用到的函数是bode(H,P);
其中,H为传输函数,P为bode图的相关选
项,若省略,则按默认值处理。
共 124 页
17
在命令窗口输入
P=bodeoptions
坐标范围
频率单位
共 124 页
18
例如传输函数H如下:
4
4
(
s

3.496

10
)
(
s

5.56

10
)
H  2 104  3
s  3.8 104 s2  1.09 108 s  1.07 1012
共 124 页
19
共 124 页
20
3.Simulink仿真基础
• 工程中的控制系统需要专用的系统建模软件,准确地建模,
来对其进行进一步的分析与仿真。
• 1990年,Matlab加入新的控制系统模型图输入与仿真工
具 ,1992年正式将该软件更名为Simulink。
• Simulink的两个含义:Simu(仿真)和Link(连接),
可以在模型窗口上绘制出所需要的控制系统模型,然后利
用SIMULINK提供的功能来对系统进行仿真和分析。
共 124 页
21
Simulink仿真基础
 Simulink是Matlab软件的扩展,它是实现动态系统建
模和仿真的一个软件包,它与Matlab语言的主要区别在于,
其与用户交互接口是基于Windows的模型化图形输入,
其结果是使得用户可以把更多的精力投入到系统模型的构
建,而非语言的编程上。
 所谓模型化图形输入是指Simulink提供了一些按功能
分类的基本的系统模块,用户只需要知道这些模块的输入
输出及模块的功能,而不必考察模块内部是如何实现的,
通过对这些基本模块的调用,再将它们连接起来就可以构
成所需要的系统模型(以.mdl文件进行存取),进而进行
仿真与分析。
共 124 页
22
模块库
共 124 页
子模块单元
23
Simulink的公共模块库
•
•
•
•
•
•
•
•
•
•
信源模块(Source)
信宿模块(Sinks)
连续模块库(Continuous)
信号路由(Signal Routing)
离散模块库(Discrete)
数学运算模块库(Math operations)
端口及子系统库(Ports and Subsystems)
查表模块库(Look-Up Table)
用户定义函数模块(User-Defined Functions)
非线性模块库(Discontinuities)
共 124 页
24
simulink专业模块库
•
•
•
•
航空航天模块
控制系统工具
模糊逻辑模块
S参数模型
• More resource:
http://www.mathworks.
com/web_downloads/
共 124 页
25
共 124 页
26
共 124 页
27
共 124 页
28
Simulink特点
Simulink是一个进行动态系统建模、仿真和综合分析的集成软件包。它可
以处理的系统包括:线性、非线性系统;离散、连续及混合系统;单任务、
多任务离散事件系统。
在Simulink提供的图形用户界面上,只要进行鼠标的简单拖拉操作就可以
构造出复杂的仿真模型。它外表以方块图形式呈现,且采用分层结构。从建
模角度讲,这既适于自上而下的设计流程,又适于自下而上的设计流程。
在Simulink环境中,用户将摆脱理论演绎时必须做理想化假设的无奈,观
察到现实世界中各种参数对系统行为的影响。用户可以在仿真过程中改变感
兴趣的参数,实时观察系统行为的变化。
在Matlab 6.x以后版本中,可直接在Simulink环境中运作的工具包很多,
已覆盖通信、控制、信号处理、DSP、电力系统等诸多领域。
共 124 页
29
模型的创建
共 124 页
30
共 124 页
31
共 124 页
32
建立系统模型的步骤
1. 建立模型窗口
建立模型窗口的几种方式
(1)单击Simulink 主窗口下File菜单下的New/Model子菜单,
创建新的系统模型。
(2)单击model 窗口下Create a new model 按钮。
(3)单击MATLAB主窗口中File菜单下的New/Model子菜单
2. 将功能模块由模块库窗口复制到模型窗口
3. 对模块进行连接,从而构成需要的系统模型
共 124 页
33
模块操作
模块库中的模块可以直接用鼠标拖放到模型窗口中进行处
理。在模型窗口中,选中模块,则其4个角会出现黑色标记。此
时可以对模块进行以下的基本操作。
模块的基本操作,包括模块的移动、复制、删除、转向、改变大小、模
块命名、颜色设定、参数设定、属性设定、模块输入输出信号等。
1) 移动:选中模块,按住鼠标左键将其拖到所需的位置即可。
2) 复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能
模块。
3) 删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住
Shift键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标选取某
区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。
共 124 页
34
4) 转向:为了能够顺序连接功能模块的输入和输出端,功能模块有
时需要转向。在菜单Format中选择Flip Block旋转180度,选择
Rotate Block顺时针旋转90度。或者直接按Ctrl+R键执行Rotate
Block,按Ctrl+I执行镜像操作。
5) 改变大小:选中模块,对模块出现的4个黑色标记进行拖曳即可。
6) 模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更
改即可。名称在功能模块上的位置也可以变换180度,可以用
Format菜单中的Flip Name来实现,也可以直接通过鼠标进行拖
曳。Hide Name可以隐藏模块名称。
7) 颜色设定: Format菜单中的Foreground Color可以改变模块的前
景颜色,Background Color可以改变模块的背景颜色;而模型窗
口的颜色可以通过Screen Color来改变。
共 124 页
35
8) 参数设定:用鼠标双击模块,就可以进入模块的参数设定窗
口,从而对模块进行参数设定。参数设定窗口包含了该模块
的基本功能帮助,为获得更详尽的帮助,可以点击其上的
help按钮。通过对模块的参数设定,就可以获得需要的功能
模块。
9) 属性设定:选中模块,打开Edit菜单的Block Properties可以
对模块进行属性设定。
10)模块的输入输出信号:模块处理的信号包括标量信号和向量
信号;标量信号是一种单一信号,而向量信号为一种复合信
号,是多个信号的集合,它对应着系统中几条连线的合成。
缺省情况下,大多数模块的输出都为标量信号,对于输入信
号,模块都具有一种“智能”的识别功能,能自动进行匹配。
共 124 页
36
信号线操作
信号线:模块间的连线。在Simulink中,模块总是由输入口接收信号,由输
出口发送信号。信号线的基本操作包括:产生、分支、折曲、删除、彩色显
示、改变粗细、设定标识、标识传播。
线的分支:按住鼠标右键,在需要分支的地方拉出即可以。或者按住Ctrl键,
并在要建立分支的地方用鼠标拉出即可。
线的折曲:按住Shift键,再用鼠标在要折弯的线处单击一下,就会出现圆
圈,表示折点,利用折点就可以改变线的形状。
设定标识:只要在线上双击鼠标,即可输入该线的说明标签。也可以通过
选中线,然后打开Edit菜单下的Signal Properties进行设定,其中signal name
属性的作用是标明信号的名称,设置这个名称反映在模型上的直接效果就是
与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签。
共 124 页
37
系统的分类与特性
从系统不同的特性来考虑,系统可分为:
1. 动态系统(记忆系统):y(t0)与(-∞,t0)上的所有激励f(t)有关。凡具有记忆元
件(如电感L、电容C)与记忆电路(如延时器)的系统均为动态系统。
静态系统(无记忆系统): y(t0)仅与f(t0)有关。
2. 连续时间系统:f(t)、y(t)为连续时间信号。也称为模拟系统,如由R、L、
C等元件构成的电路。
离散时间系统: f(t)、y(t)为离散时间信号。数字计算机是典型的离散时
间系统的例子,因其数字化而被称为数字系统。否则为混合系统
3. 线性系统:同时满足齐次性与叠加性的系统。综合齐次性与叠加性,线性
系统满足如下线性性质:α1*f1(t) + α2*f2(t) ⇒α1*y1(t) + α2*y2(t)
非线性系统:不能同时满足齐次性与叠加性的系统
共 124 页
38
例:连续时间系统建模
满足如下条件的系统称为连续时间系统:
1. 系统输出在时间上连续变化,变化的间隔为无穷小量
2. 对系统的数学描述来说,存在系统输入或输出的微分
项
3. 系统具有连续的状态。连续系统的状态为时间连续量。
用于建模连续系统的模块大多位于Simulink模块组的
Continuous和Math Operations模块库中
共 124 页
39
共 124 页
40
名称
Abs
Bitwise Logical
Operator
Combinatorial
Logic
功能说明
求输入信号的绝对值
对输入信号进行位操作运算,包括与、或、非、异或、左移、
右移
根据制定真值表对输入信号进行组合逻辑运算
Dot Product
计算两个输入信号的内积
Gain
将输入信号乘上一个增益
Logical Operator 对多个输入信号进行逻辑运算,包括与、或、非、与非、或非、
异或
Math Function
对输入信号实现特定的数学函数运算,如开方、求模等
共 124 页
41
共 124 页
42
共 124 页
43
共 124 页
44
共 124 页
45
例:组合逻辑电路仿真
共 124 页
46
X7
X6
X5
X4
X3
X2
X1
X0
Z2
Z1
Z0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
1
1
1
共 124 页
47
在另一些版本中,logical operator位于logic and bit operations模块库中
共 124 页
48
共 124 页
49
共 124 页
50
共 124 页
51
共 124 页
52
共 124 页
53
共 124 页
54
共 124 页
55
X2
X1
X0
Z7
Z6
Z5
Z4
Z3
Z2
Z1
Z0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
1
1
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
0
0
1
1
0
0
1
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
共 124 页
56
共 124 页
57
共 124 页
58
子系统
随着所需建立的模型的规模和复杂性的增加,
再采用平面的结构来建立一个模型将是一个麻烦
的事情。此时,就像C语言中的函数、子程序,
Matlab的M语言中的M函数,Simulink中也提供
了子系统的概念,使用它的用户可以使搭建的模
型具有层次性的结构。
共 124 页
59
子系统的创建
直接选中模型中需要创建子系统的模块,执行Edit/Creat subsystem
例:创建太阳能电池模型的子系统
共 124 页
60
STC峰值功率
最佳工作电 最佳工作电
Rated
压
流 Current
组件型号
Maximum
Voltage at
at Pmax
Module Type
Power(Pmax) Pmax (Vmp)
(Imp)
(W)
(V)
(A)
HQ020P020W
20
17.1
1.21
短路电流
ShortCircuit
Current
(Isc)
(A)
开路电压
Open-Circuit
Voltage (Voc)
(V)
1.35
21.6
峰值功率(Pmax)温度系数
Power Temperature Coefficient
-0.47%/K
开路电压(Voc)温度系数
Open-Circuit Voltage Temperature Coefficient
-0.351%/K
短路电流(Isc)温度系数
Short-Circuit Current Temperature Coefficient
+0.035%/K
I  I ph  I sat {exp[
q (V  IRS )
V  IRS
]  1} 
AkT
Rp
共 124 页
61
共 124 页
62
共 124 页
63
封装子系统
对一个子系统进行封装,可以使这个子系统外在
表现的如同一个模块,它拥有以下优点:
• 双击该模块会出现一个统一的参数设置对
话框,而不再逐个对内部模块进行参数设
定;
• 可以给该封装子系统指定一个图标、模块
描述,甚至帮助文档;
• 利用封装子模块系统构建自己的模块库;
共 124 页
64
子系统的封装方法:
1.创建子系统
2.选中待封装的子
系统,执行
Edit/Mask
subsystem命令,弹
出封装子系统对话
框Mask editor
共 124 页
65
Parameters标签页
此页主要用来设计输入提示(prompt)以及对应的变量名称(variable)。
在prompt栏上输入变量的含义,其内容会显示在输入提示中。而variable是仿
真要用到的变量,该变量的值一直存于mask workspace中,因此可以与其他
程序相互传递。
共 124 页
66
Documentation标签页
此页主要用来针对完成的功能模块来编写相应的说明文字
和Help。
a) Mask type:在此处输入的文字作为封装模块的标注性说明,
在模型窗口下,将鼠标指向模块,则会显示该文字。当然必须先
在View菜单中选择Block Data Tips——Show Block Data Tips。
b) 在Mask description中输入的文字,会出现在参数窗口的说
明部分。
c) 在Mask help中输入的文字则会显示在单击参数窗口中的
help按钮后浏览器所加载的HTML文件中。
共 124 页
67
共 124 页
68
共 124 页
69
建立自己的模块库
 新建一个库文件
在模块库浏览器或模型编辑窗中执行File/New library命令,将新建一个模
块库。用户可以将自己建立的封装模块复制到这个模块库中,然后将这个
模块库以名字“MyLib”保存。需要使用该模块库中的模块时,在Matlab的
命令窗中键入MyLib命令,打开模块库窗口。
 向模块库中添加模块
用户可以把自己常用的系统模块也复制到该模块库中,从而建立真正的自
己的模块库,但需要注意断开链接的问题。例如,用户如果将Simulink
Extras节点下Flip-Flops模块库中的J-K Flip-Flop复制到自己的模块库中
,就需要断开链接。这是因为当用户将一个模块从一个模块库复制到另一
个模块库时,复制出来的模块(库模块)与原模块(参考模块)存在一个
链接,由于这个链接的存在,库模块的任何改变都会影响到参考模块。
断开链接的方法:选中目标模块,执行Edit/Link Options/Disable link命令,
暂时断开链接;执行Edit/Link Options/Break link彻底断开链接。
共 124 页
70
例:DC/DC的Simulink建模
DC/DC电路的simulink建模不同于spice
建模,它是基于行为级的一种建模方式,
它与spice建模的最大区别就在于不需要过
于关心器件的实际物理模型,从而可以将
更多的精力投入到系统动态特性的分析当
中。
共 124 页
71
DC/DC电路
共 124 页
72
boost
共 124 页
73
更实际的boost模型
共 124 页
74
开关位于“1”位置
开关位于“2”位置
diL (t ) 1
 (Vg  iL (t ) RL )
dt
L
dvC (t )
1 vo (t )

dt
C Ro
vo (t )  RC C
diL (t ) 1
 (Vg  iL (t ) RL )  vo (t ) 
dt
L
dvC (t )
vo (t ) 
1
  iL (t ) 

dt
C
Ro 
dvC (t )
 vC (t )
dt
dvC (t )
vo (t )  RC C
 vC (t )
dt
共 124 页
75
共 124 页
76
f S  5kHz,Vg  15V , D  0.25, L  500 H , C  200 F , RL  0.5, RC  0.25, RO  10
共 124 页
77
共 124 页
78
Simulink在电路系统中的应用
• 采用simulink仿真模型进行电路仿真时,可
以直接根据电路图,利用已有电子元件模
块直接搭建仿真模型。
• 电路仿真所需要的元器件都在SimPower
Systems模块集中,它是一个专用的电路仿
真模块库。
共 124 页
79
SimPowerSystem模块集
共 124 页
80
共 124 页
81
SimPowerSystem模块集(续)
共 124 页
82
共 124 页
83
SimPowerSystem模块集(续)
3.Measurements模块库:包含5种测量模块
4.Machines模块库:包含一些电机模块
共 124 页
84
例:直流电路仿真
求图中结点电压V1,V2,V3。
共 124 页
85
共 124 页
86
Powergui模块
Powergui模块是一个环境模块,这个
模块中存放的是电路模型对应的数学模型
。虽然我们调用的是电路模型,但matlab
只会解方程,它不认识这些电路模型,因
此,在任何一个含有SimPowerSystems中
元器件的系统中,必须添加一个powergui
模块,否则电路无法仿真。
共 124 页
87
Powergui模块的位置
共 124 页
88
三、系统级建模工具----Veriloga
•
•
•
•
Veriloga简介
Veriloga语法知识
Veriloga仿真简介
Veriloga建模实例
共 124 页
89
Veriloga简介
• Veriloga是一种高层次的模块化硬件描述语
言,它用模块的形式来描述模拟系统及其
子系统的结构和行为。
• Veriloga对模拟电路的描述可以分成两种类
型:行为描述和结构描述。
行为描述:用数学表达式和传输函数来描述目
标函数的行为。
结构描述:对各子模块在系统中的用途及连接
关系进行描述。
共 124 页
90
• Veriloga提供了许多用以描述模拟电路行为
模块的函数,包括微分运算、积分运算、
延时操作等。
• 通过对不同函数的设定和组合,可以定义
出许多常用的模拟电路模块,如运算放大
器、带隙基准源、比较器等。
共 124 页
91
采用Veriloga进行系统级仿真有两点优势:
可以在系统级对整个电路进行优化设计;
不需要考虑晶体管的实际模型,在仿真过程中
可以大大减少运算量,节省仿真时间,提高仿
真效率。
共 124 页
92
Veriloga语法简介
文件调用
模
块
定
义
(不能嵌套)
共 124 页
93
• 管脚类型
– input:输入管脚
– output:输出管脚
– inout:输入输出管脚
• 参变量
– parameter:定义参变量的类型、名称及默认值
• 定义节点类型
– electrical:定义节点的电学特性。电路中的所有节点都需要用
electrical来定义。
• 信号获取函数
– V(n1); V(n1,n2); I(n1); I(n1,n2)
• 赋值
– V(n1)<+expression;
– I(n1,n2)<+expression1;
共 124 页
94
Veriloga仿真简介
进入Cadence后,依次点击library manager, file, new, cell view
共 124 页
95
vi编辑器简介
• 进入vi编辑器后,将光标移动到需要输入文
字的地方后输入i,可进入输入方式,进行
文本编辑,按ESC键退回到命令方式。
• 在命令方式下输入冒号:进入末行方式,在
末行方式下输入wq保存退出,或是输入q!不
保存退出。
共 124 页
96
共 124 页
97
共 124 页
98
Veriloga建模实例
例:在Cadence中创建太阳能电池模型
I  I ph  I sat {exp[
q (V  IRS )
V  IRS
]  1} 
AkT
RSH
共 124 页
99
共 124 页
100
共 124 页
101
共 124 页
102
共 124 页
103
四、建模仿真实例
太阳能电池MPPT建模
共 124 页
104
开关电路
控制电路
共 124 页
105
共 124 页
106
附录1:SIMULINK仿真的运行
构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。
运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结
果分析。
一、设置仿真参数和选择解法器
设置仿真参数和选择解法器,选择Simulation菜单下的Parameters命令,
就会弹出一个仿真参数对话框,它主要用几个页面来管理仿真的参数。
Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解
法器参数及选择一些输出选项。
Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级。
构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。
运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结
果分析。
……
共 124 页
107
1、Solver页
‰
此页可以进行的设置有:选择仿真开始和结束的时间;选择解
法器,并设定它的参数;选择输出项。
1) 仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机
仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,
则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间
就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。总
的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程
度、解法器及其步长的选择、计算机时钟的速度等等。
2) 仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步
长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步
长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过
零检测。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和
过零检测。用户还可以在第二个下拉选项框中选择对应模式下仿真所采用
的算法。
共 124 页
108
变步长模式解法器有:ode45,ode23,ode113,ode15s,
ode23s,ode23t,ode23tb和discrete。
a) ode45:缺省值,四/五阶龙格-库塔法,适用于大多数连续或离散系统,
但不适用于刚性(stiff)系统。它是单步解法器,也就是,在计算y(tn)时,
它仅需要最近处理时刻的结果y(tn-1)。一般来说,面对一个仿真问题最好是
首先试试ode45。
b) ode23:二/三阶龙格-库塔法,它在误差限要求不高和求解的问题不太
难的情况下,可能会比ode45更有效。也是一个单步解法器。
c) ode113:是一种阶数可变的解法器,它在误差容许要求严格的情况下通
常比ode45有效。ode113是一种多步解法器,也就是在计算当前时刻输出时,
它需要以前多个时刻的解。
d) ode15s:是一种基于数字微分公式的解法器(NDFs)。也是一种多步
解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不
能使用ode45,或者即使使用效果也不好,就可以用ode15s。
共 124 页
109
e) ode23s:它是一种单步解法器,专门应用于刚性系统,在
弱误差允许下的效果好于ode15s。它能解决某些ode15s所
不能有效解决的stiff问题。
f) ode23t:是梯形规则的一种自由插值实现。这种解法器适
用于求解适度stiff的问题而用户又需要一个无数字振荡的解
法器的情况。
g) ode23tb:是TR-BDF2的一种实现, TR-BDF2 是具有两个
阶段的隐式龙格-库塔公式。
h)
discrtet:当Simulink检查到模型没有连续状态时使用它。
共 124 页
110
固定步长模式解法器有:ode5,ode4,ode3,ode2,
ode1和discrete。
a) ode5:缺省值,是ode45的固定步长版本,适用于大多
数连续或离散系统,不适用于刚性系统。
b) ode4:四阶龙格-库塔法,具有一定的计算精度。
c) ode3:固定步长的二/三阶龙格-库塔法。
d) ode2:改进的欧拉法。
e) ode1:欧拉法。
f) discrete:是一个实现积分的固定步长解法器,它适合于
离散无连续状态的系统。
共 124 页
111
3) 步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参
数,缺省情况下,步长自动地确定,它由值auto表示。
a) Maximum step size(最大步长参数):它决定了解法器能够使用的最
大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取
50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点
过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过15s的采
用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s
的,每秒至少保证3个采样点。
b) Initial step size(初始步长参数):一般建议使用“auto”默认值即可。
4) 仿真精度的定义(对于变步长模式)
a) Relative tolerance(相对误差):它是指误差相对于状态的值,是一个
百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。
b) Absolute tolerance(绝对误差):表示误差值的门限,或者是说在状
态值为零的情况下,可以接受的误差。如果它被设成了auto,那么simulink
为每一个状态设置初始绝对误差为1e-6。
共 124 页
112
5) Mode(固定步长模式选择)
a) Multitasking:选择这种模式时,当simulink检测到模块间非法的采样速
率转换,它会给出错误提示。所谓的非法采样速率转换指两个工作在不同采
样速率的模块之间的直接连接。在实时多任务系统中,如果任务之间存在非
法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却
无法利用的情况。通过检查这种转换,Multitasking将有助于用户建立一个符
合现实的多任务系统的有效模型。使用速率转换模块可以减少模型中的非法
速率转换。Simulink提供了两个这样的模块:unit delay模块和zero-order
hold模块。对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入
端口插入一个单位延时unit delay模块。而对于快速率到慢速率的转换,则可
以插入一个零阶采样保持器zero-order hold。
b) Singletasking:这种模式不检查模块间的速率转换,它在建立单任务系
统模型时非常有用,在这种系统就不存在任务同步问题。
c) Auto:这种模式,simulink会根据模型中模块的采样速率是否一致,自
动决定切换到multitasking和singletasking。
共 124 页
113
6) 输出选项
a) Refine output:这个选项可以理解成精细输出,其意义是在仿真输出太
稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。
用户可以在refine factor设置仿真时间步间插入的输出点数。产生更光
滑的输出曲线,改变精细因子比减小仿真步长更有效。精细输出只能在
变步长模式中才能使用,并且在ode45效果最好。
b) Produce additional output:它允许用户直接指定产生输出的时间点。
一旦选择了该项,则在它的右边出现一个output times编辑框,在这里
用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达
式。与精细因子相比,这个选项会改变仿真的步长。
c) Produce specified output only:它的意思是让simulink只在指定的时间
点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。
这个选项在比较不同的仿真时可以确保它们在相同的时间输出。
共 124 页
114
2、Diagnostics页
此页分成两个部分:仿真选项和配置选项。配置选项下的
列表框主要列举了一些常见的事件类型,以及当SIMULINK检
查到这些事件时给予的处理。仿真选项options主要包括是否
进行一致性检验、是否禁用过零检测、是否禁止复用缓存、是
否进行不同版本的SIMULINK的检验等几项。
除了上述2个页面外,仿真参数设置窗口还包括real-time
workshop页,主要用于与C语言编辑器的交换,通过它可以直
接从SIMULINK模型生成代码并且自动建立可以在不同环境下
运行的程序,这些环境包括实时系统和单机仿真。
共 124 页
115
二、启动仿真
 设置仿真参数和选择解法器之后,就可以启动仿真而运行。
 选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没
有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,
结束时系统会发出一鸣叫声。
 除了直接在SIMULINK环境下启动仿真外,还可以在MATLAB命令窗口
中通过函数进行,格式如下:
[t,x,y]=sim(‘模型文件名’,[to tf],simset(‘参数1’,参数值1,‘参数2’,
参数值2, …))
其中to为仿真起始时间,tf为仿真终止时间。[t,x,y]为返回值,t为返回
的时间向量值,x为返回的状态值,y为返回的输出向量值。simset定义了
仿真参数,包括以下一些主要参数:
AbsTol:默认值为1e-6设定绝对误差范围。
Decimation:默认值为1,决定隔多少个点返回状态和输出值。
Solver:解法器的选择。
共 124 页
116
MaxRows:默认值为0,表示不限制。若为大于零的值,
则表示限制输出和状态的规模,使其最大行数等于该数
值。
InitialState:一个向量值,用于设定初始状态。
FixedStep:用一个正数表示步阶的大小,仅用于固定
步长模式。
MaxStep:默认值为auto。用于变步长模式,表示最大
的步阶大小。如果知道模型文件名称,可以用以下命令
得到该模型的仿真参数:
simget(‘模型文件名’)
共 124 页
117
附录2:交互式滤波器设计工具FDATool
共 124 页
118
共 124 页
119
共 124 页
120
共 124 页
121
共 124 页
122
2.滤波器的实现
在实现滤波器之前,需要先考虑滤波器的实现结构。执行主菜单Edit/Convert
Structure命令可以对滤波器实现结构进行转换,从弹出窗口中用户可以选择将滤
波器实现结构转换到何种方式。这里选择直接II型结构(Direct form II)实现。
FDATool下半方的滤波器设计参数指定区域将变为滤波器实现的参数指定区域。
对各项参数进行设置后,即可将设计好的滤波器实现为一个Simulink模块。
共 124 页
123
作业
利用Simulink 模块搭建一个4线-16线译码器的仿真模型
实现方法:利用两个带使能端的3-8译码器构建4-16译码器
步骤1:创建具有使能端的3-8译码器
步骤2:具有使能端的3-8译码器子系统的建立
步骤3:子系统的封装
步骤4:自建用户模块库,将封装好的3-8译码器的模
块拷贝到该库中将该库文件命名为MyDigital.mdl
步骤5:4-16线译码器的搭建,仿真。
共 124 页
124