资源描述
实验九SIMULINK仿真
一、 实验目的
SIMULINK是一个对动态系统(包括连续系统、离散系统和混合系统)进行建模、仿 真和综合分析的集成软件包,是MATLAB的一个附加组件,其特点是模块化操作、易学易 用,而且能够使用MATLAB提供的丰富的仿真资源。在SIMULINK环境中,用户不仅可 以观察现实世界中非线性因素和各种随机因素对系统行为的影响,而且也可以在仿真进程中 改变感兴趣的参数,实时地观察系统行为的变化。因此SIMULINK己然成为目前控制工程 界的通用软件,而且在许多其他的领域,如通信、信号处理、DSP,电力、金融、生物系统 等,也获得重要应用。对于信息类专业的学生来说,无论是学习专业课程或者相关课程设计 还是在今后的工作中,掌握SIMULINK,就等于是有了一把利器。
本次实验的目的就是通过上机训练,掌握利用SIMULINK对一些工程技术问题(例如数 字电路)进行建模、仿真和分析的基本方法。
二、 实验预备知识
1. SIMULINK 快速入(1
在工程实际中,控制系统的结构往往很复杂,如果不借助专用的系统建模软件,则很难 准确地把一个控制系统的复杂模型输入计算机,对其进行进一步的分析与仿真。1990年, Math Worics软件公司为MATLAB提供了新的控制系统模型图输入与仿真工具,并命名为 SILfULAB,该工具很快就在控制工程界获得了广泛的认可,使得仿真软件进入了模型化图 形组态阶段。但因其名字与当时比较著名的软件SIMULA类似,所以1992年正式将该软件 更名为SIMULINK。SIMULINK的出现,给控制系统分析与设计带来了福音。顾名思义, 该软件的名称表明了该系统的两个主要功能:Simu (仿真)和Link (连接),即该软件可以 利用系统提供的各种功能模块并通过信号线连接各个模块从而创建出所需要的控制系统模 型,然后利用SIMULINK提供的功能来对系统进行仿真和分析.
■ SIMULINK的启动
首先启动MATLAB,然后在MATLAB主界面中单击上面的Simuluik按钮也或在命令 窗口中输入simulink命令。命令执行之后将弹出sunuliiik的模块库浏览溶,如图1所示。
■ SIMULINK的模块库
Simulink的模块库有两部分组成:基本模块和各种应用工具箱。
/系统提供的应用工具箱有:
Communications Blockset (通信模块集) Control System Toolbox (控制系统工具箱)
Dials & GaugesBlockset (面板和仪表模块集)DSP Blockset (数字信号处理模块集)
Fixed-Point Blockset
(定点模块集)
Fuzzy Logic Toolbox
(模糊逻辑工具箱)
NCD Blockset
(非线性控制设计模块集)
Neural Network Blockset
(神经网絡模块集)
RF Blockset
(射频模块集)
Power System Blockset
(电力系统模块集)
Real-Time Windows Target
(实时窗口目标库)
Real-Time Workshop
(实时工作空间库)
State flow (状态流程库)
Simuluik Extras
u Siwril ink I ibrnry BrtTOrr
Pile Edli Tie* BeIp
CooBCfily Used Bl ocks : siaulirfc/Couaiily
fit
& Co»only Used Blocks 方 Contlrucus
5 Hircorniiulties
6 BiEcrete ♦a Logic and Bit (iperiti 話,W I&Blej 冬 lath C|3erati<Mi5
le-del VerificBti^n Icdel-Vtde Utilities Porta ft Siiaa^steas 多 Slgr^l Attributes A Slcr^l Routing -也 Sliifct -也 Sowce®
» user-i>*ftnea Fun<ti<ci?
♦ ^iddliUr^l nth ♦ Mecrete Aer<'>psce Jlo<fc9ex CDIA ReferCT->ee Bloekeet Cowimicatims Blockset Central Sy?*« TooLSx DU A Ciuecs Slockaet Srlcddod Target for laflnecc EnX竝d fw 5m】*性| Entedded Taxed for Kotorol Erh-(Hed Target for OSEKAW fir»tedded Tu^ei for T1 C20U( Ertedied Target for T1 C60O( Fuzzy Loci c Tcolbox Lirtc fftr Lae抵如 /
snnuliiik
基本的
模块
小從领域卜
蚌再的工
群具箱
no
加Ilrw>:心
PlewiiLfwixJe
Discrete
常
iz奴no Tab! ef
"th CipertU©
Verllt
r«feWL<te U11
Peru &皿小
Sicn^l Attritu es
s】gnu rouum.
Sixits >
»A«Uy ffsetl I
end B11
ens
图1: Simuhnk模块库
(Simulink 附加库)
System ID Blockset (系统辨识模块集)
/ Simuhnk的基本模块按功能进行分类,包括以下8类子库:
Continuous (连续系统模块)
Discrete (离散系统模块)
Function & Tables (函数和平台模块)
Math (数学运算模块)
Nonlinear (非线性模块)
Signals & Systems (信号和系统模块)
Sinks (接收器模块)
Sources (输入源模块)
下面列出一些基本模块的功能说明,以供实际使用时査询。
表1:连续系统模块(Continuous)功能
模块名
功能简介
模块名
功能简介
Integrator
输入信号积分
Derivative
输入信号微分
State-Space
线性状态空间系统模
Transport Delay
输入信号延时一个固 定时间再输出
Transfer-Fen
线性传递函数模型
Vanable Transport
Delay
输入信号延时一个可 变时间再输出
Zero-Pole
以零极点表示的传递 函数模型
表2:离散系统模块(Discrete)功能
模块名
功能简介
模块名
功能简介
Discrete-time
Integrator
离散时间积分器
Discrete Filter
HR与FIR滤波器
Discrete State-Space
离散状态空间系统模 型
Discrete Zero-Pole
以零极点表示的离散 传递函数模型
Discrete Transfer-Fen
离散传递函数模型
Zero-Order Hold
零阶釆样和保持器
First-Order Hold
一阶釆样和保持器
Unit Delay
一个采样周期的延时
表3:函数和平台模块(Function & Tables)功能
模块名
功能简介 |
模块名
功能简介
Fen
用自定义的函数(表达 式)进行运算
MATLAB Fen
利用matlab的现有函 数进行运算
S-Function
调用自编的S函数的程 序进行运算
Look-Up Table
建立输入信号的査询 表(线性峰值匹配)
Look-Up Table(?-D)
建立两个输入信号的査 询表(线性峰值匹配)
表4:数学运算模块(Math)功能
模块名
功能简介 |
模块名
功能简介
Sum
加减运算
Product
乘运算
Dot Pi'oduct
点乘运算 1
Gain
增益模块
Matli Function
包括指数函数、对数函 数、求平方、开根号等常 用数学函数
Trigonometric
Function
三角函数,包括正弦、 余弦、正切等
MinMax
最值运算
Abs
取绝对值
Sign
符号函数
Logical Operator
逻辑运算
Real-Imag to Complex
由实部和虚部输入合成 复数输出
Complex to
Magnitude-Angle
由复数输入转为幅值 和相角输出
Magnitude-Angle to Complex
由幅值和相角输入合成 复数输出
Complex to Real-Imag
由复数输入转为实部 和虚部输出
Relational Operator
关系运算
表5:非线性模块(Nonlmear)功能
模块名
功能简介
模块名
功能简介
Saturation
饱和输岀,让输岀超过某 一值时能够饱和
Relay
滞环比较器,限制输出 值在某一范围内变化
Switch
开关选择,依据第二输入 端的值,选择输出第一或 第三输入端的值
Manual Switch
手动选择开关
表6:信号和系统模块(Signal & Systems)功能
模块名
功能简介 |
模块名
功能简介
Ini
输入端
Outl
输出端
Mux
将多个单一输入转化为 —个复合输出
Demux
将一个复合输入转化 为多个单一输出
Gi'ound
给未连接的输入端接地, 输出0
Terminator
连接到没有连接的输 出端,终止输出
Subsystem
空的子系统 1
Enable
使能子系统
表7:接收器模块(Sinks)功能
模块名
功能简介 1
模块名
功能简介
Scope
示波器
XY Graph
显示二维图形
To Workspace
输出到MATLAB的工作 空间
To File(.mat)
输出到数据文件
Display
实时的数值显示
Stop Simulation
输入非。时停止仿真
表&输入源模块(Sources)功能
模块名
功能简介
模块名
功能简介
Constant
常数信号
Clock
时钟信号
From Workspace
输入信号来自MATLAB 的工作空间
From File( mat)
输入信号来自数据文 件
Signal Generator
信号发生器,可以产生正 弦、方波、锯齿波及随意 波
Repeating Sequence
重复信号
Pulse Generator
脉冲发生溶
Sine Wave
正弦波信号
Step
阶跃波信号
注:在simulnk模块库浏览器的help菜单系统中可查洵以上各模块的样细功能和使用说明.
通常,用户创建的Simulink模型包含下列三部分“组件
• 输入信号源(Sources):可以是常数、时钟、白噪声、正弦波、阶梯波、扫频信号、 脉冲生成溶、随机数产生器等信号源或者是用户自定义的信号;
• 系统(System):即被模拟系统的SIMULINK方框图;系统模块作为中心模块是 Simuhnk仿真建模所要解决的主要部分。
• 接收器(即输岀、显示部分Sink):可以是示波器、图形记录仪(XY Graph)等。
源模块I 』系统模块I 』输出显示模块I
当然对于具体的SIMULINK模型而,不一定完全地包含这三大组件。例如:研究初始 条件对系统影响就不必包含信号源组件。
■ 创建SIMULINK模型
在simulink中创建系统模型的步膘:
① 新建一个空白的模型窗口(只有在模型窗口中才能创建用户自己的系统模型据方式是: 依次单击sinuihnk模块库浏览器的“File”菜单->New->Model,将弹出一个如图?所示 的模型窗口。
② 在simuhnk模块库浏览器中,将创建系统模型所需要的功能模块用鼠标拖放到新建的模 型窗口中,如图2所示。
③ 将各个模块用信号线连接,设置仿真参数,保存所创建的模型(后缀名mdl)o
④ 点击模型窗口中的上按钮,运行仿真。
图丄新建模型窗口
图3:振动位移的仿真结果
例1:己知某振动系统的振动速度X(t) = Sill(O ,初始条件x(0>0,利用simulink仿真该
系统的振动位移。
分析:要计算振动位移必须解上述微分方程,因此需要一个积分模块(Integrator),被积函 数是sin(t),因此需要一个正弦波输入源模块(Sine Wave),积分器的输出Ge.振动位移x(t)) 用示波器观察,因此需要一个显示输出模块Scope。所用各模块如下所示:
Sine Wave Integrator Scope
步骤1:如上所述新建模型窗口;
步骤2:从源模块库(Sources)中用鼠标拖放一个正弦波模块(Sine Wave)至模型窗口中, 然后从连续模块库(Continuous)中拖放一个积分模块(Integrator),再从输出显示模块库 (Sinks)拖放一个示波器模块(Scope)。
步骤3:将各模块的输入、输岀用信号线按如下所示依次连接(连接方法:将鼠标移动到模 块的输出端,此时鼠标箭头成十字形,按住左键,移动鼠标到另一个模块的输入端,当出现 两个十字形光标重影时,释放左键完成信号线的连接),然后保存模型。
H HXI
Sine Wave Integrator Scope
步骤4:运行仿真,然后双击示波器模块,可观察到仿真结果如图3所示。
2. Simulink功能模块的处理与修饰
下面介绍对模块的一些基本操作,包括模块的移动、复制、删除、转向、改变大小、模 块命名、颜色设定、参数设定等。操作模块前要先选定模块,鼠标左键点击模块即选中,此 时模块四角出现4个黑色标记,若要同时选中多个模块,则按住Sh谊键,同时点击想要选 中的模块即可。
■模块的移动
选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离信号线而移动,可按住 shift键,再进行拖曳。
■模块的复制
方法1:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。
方法Z:选中模块,Ctrl+C复制,Ctrl+V粘贴;
■模块的删除
选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift®,再用鼠标选 中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域 中的所有模块和线等全部删除。
■模块的旋转
为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。选中模块,在菜 单Format中选择Flip Block旋转180度,选择Rotate Block顺时针旋转90度。
■调整模块的大小
选中模块,对模块四角岀现的4个黑色标记进行拖曳即可.
■模块的命名
先用鼠标在需要更改的名称上单击一下,然后直接更改即可-名称在功能模块上的位置 也可以变换180度,可以用Format菜单中的Fhp Name来实现,也可以直接通过鼠标进行 拖曳・Hide Name可以隐藏模块名称。
■设定模块的颜色
Fonnat菜单中的Foreground Color可以改变模块的前景顔色,Background Color可以改 变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变。
■设定模块参数
用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。参数设 定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的help按钮。 通过对模块的参数设定,就可以获得需要的功能模块。
3. 信号线的处理与修饰
信号线也即功能模块之间的连接线。对simulink信号线的操作包括绘制信号线、移动线 段、移动节点、删除信号线、信号线分支、设定信号线的标签-
■絵制信号线
由模块的输出端口拖曳鼠标到另一模块的输入端口,或拖曳鼠标由输入端口到输出端 口,如下图所示。拖动模块还可以调整所绘信号线的弯折状态。
" —I
Gain Gain
■移动线段
若想移动信号线的某段,单击选中此段.移动鼠标到目标线段上,则鼠标的形状变为移 动图标。按住鼠标,并拖曳到新位置。放开鼠标,则信号线被移动到新的位置。
Integrator
■移动节点
单击选中某个节点,如图。按住鼠标左键拖曳节点到新位置,然后释放鼠标,则可将节
点移动到新的位置。
>
Integrator
Denvati/e
du/d
■删除信号线
同删除模块一样,删除信号线可以选中信号线,然后按Delete键,或者利用菜单 [Edit/Clear]或【Edit/Cut】选项进行删除。
■设定信号线的标签
每段信号线都可以有一个标签。双击要标注的信号线,则信号线的附近就会出现一个编 辑区,在编辑区内输入标签的内容即可,如左下图所示。
■给信号线加分支
若要给信号线加分支,只需将鼠标移动 到分支的起点位置,按住Ctrl谜+鼠标左键,拖动到目标模块的输入端,释放鼠标和Ctrl 键即可,如右上图所示。
4. 设置仿真参数(选读)
【说明:该部分属本次实验的进阶内容,如因时间关系可跳过不看。在一般情况下,如
无特殊要求,仿真参数无需特别设置,使用系统默认值即可。1
设置模型的仿真参数是Simuhnk仿真重要的一环。通常在完成建模之后就可以对模型 进行动态仿真了,但是在仿真前必须对模型的仿真参数进行相关的设置才能保证仿真的有效 性。在模型窗口中依次点击顶层菜单SimulationTConfigurationParameters,弹出设置仿真参 数的对话框如下:
仿真参数设置对话框主要包含以下五个选项卡:
① 解法设置(Solver)
它允许用户设置仿真的开始和结束时间,选择解法器,说明解法岩参数及选择一些输出 选项。
② 数据的输入/输出(Data IinportTExport)
它允许用户从MATLAB的工作空间(Workspace)输入模型所需参数或将运行结果输出到 工作空间。
③ 优化选项(Optimization)
主要是对仿真性能进行优化设置。
④ 诊断项(Diagnostics)
允许用户选择Sinuilink在仿真中显示的警告信息的等级。
⑤ 实时工具对话框诊断项(ReaHime Workshop)
主要用于与C语言编辑卷的交换,通过它可以直接从SIL1ULINK模型生成代码并且自 动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真。
—般情况下,主要使用前面2个选项卡,因此下面主要介绍1、2两个选项卡的参数设置:
■解法器(Solver)选项卡的参数设置
/ 仿真时间(Simulation time)
Start time和Stop time设置仿真的起始和停止时间,单位是秒。注意这里的时间概念与 真实的时间并不一样,因为实际的运行时间和计算机的性能、模型的复杂程度、解法、步长、 误差要求等等因素有关.
/ 解法器(Solver)选择
一般情况下,被模拟系统的工作过程都可以由一组微分方程来描述,因此用于系统动态 仿真的解法器和求解微分方程组的解法器相同。这些解法器分为两种:
变步长模式解法器:ode45. ode23. odellS. odel5s. ode23s, ode23t, ode23tb 和 discrete。 除discrete方法外,其他的解法在实验二中有介绍.Discrete方法使用于模型中没有连续状 态的情况,这时系统会自动选择这种方法。系统默认的变步长解法器是ode45o
固定步长模式解法器:ode5» ode4, ode3, ode2, odel 和 discreteo
ode5:系统默认的定步长解法器,是ode45的固定步长版本,适用于大多数连续,不适用于 刚性系统。
ode4:四阶龙格一库塔法,具有一定的计算精度。
ode3:固定步长的ode23解法。
ode?:改进的欧拉法.
odel:欧拉法。
discrete;是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统.
/仿真步长选择
Type选项中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step (固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。
固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。
/步长参数
对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动 地确定,它由值auto表示。
(a) Maximum step size (最大步长参数):它决定了解法器能够使用的最大时间步长,它的 缺省值为•'仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时 间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超 过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的, 每秒至少保证3个采样点。
Cb) Initial step size (初始步长参数):一般建议使用“auto”默认值即可。
,仿真精度(对于变步长模式)
(a) Relativetolei*ance (相对误差):它是指误差相对于状态的值,是一个百分比,缺省值为 le-3,表示状态的计算值要精确到0 1%。
(b) Absolutetolei*ance (绝对误差):表示误差值的门限,或者是说在状态值为零的情况下, 可以接受的误差。如果它被既成了 auto,那么simuhnk为每一个状态设置初始绝对误差 为 le-6。
■数据的输入,输出(Data IinportTxpoi-t)选项卡的参数设置
此页主要用来设置SIMULINK与MATLAB工作空间交换信息的有关选项,通过此页的 设置可以从MATLAB的工作空间(Workspace)获取模型所需参数或将SIMULINK运行结果 输出到工作空间。它包含三项(如图):
① 从MATLAB「作空间获得系统输入(Load workspace)
② 仿真结果输出到MATLAB的工作空间(Save to workspace)
③ 存備选项(Save option)
/ 从 MATLAB 工作空间加载(Load from workspace)
虽然Simuhnk提供了多种系统输入信号,但并不能完全满足需要。Simulink允许使用 用户自定义的信号作为系统输入信号。在Load from wodcspace框中,用户可以设置MATLAB 中的变量作为系统输入信号或系统状态初值,如下所述:
(1) Input:用来设置系统输入信号,其格式为[t.u],其中t、u均为列向量,t为输入信号 的时间向量,u为相应时刻的信号取值。可以使用多个信号输入,如[t,ul,u2]o输入信号与 Simuluik的接口由Inport模块(Ini模块)实现•例如:
CD
Integrator
Out1
Scope
cp ►日
Integratorl
Out2
在Matlab命令窗口输入:
» t=l:20;t=t1;u=[sin(t),cos(t)];xlnitial=[0 1];
后运行上述模型即可从Matlab的工作空间获得信号输入与结果输出。
(2) Initial state:用来设置系统状态变量的初始值。初始(fl xlnitial nJ为列向量。 注意:使用initial state所设置的状态变量初始值会自动覆盖系统模块中的没置。
, 仿真结果输出到MATLAB的工作空间(Save to workspace)
此选项可以将系统的仿真结果、系统仿真时刻、系统中的状态或指定的信号输出到 MATLAB的工作空间中,以便用户对其进行定量分析,如下所述:
< 1)Time:输出系统仿真时刻。
(2) States:输岀系统模型中的所有状态变量。
(3) Output:输岀系统模型中的所有由Output模块(即。讹1模块)表示的信号。
(4) Final state:输岀系统模型中的状态变量的最终取值,即最后仿真时刻处的状态值。
/ 存储选项(Save option)
(1) Lnmt data points to last:表小输出数据的长度(从信号的最后数据点i己起)。对于向量 而言即其维数,对于矩阵而言即其秩。
(2) Fonnat:表示输出数据类型。共有三种形式:Structure with Time (带有仿真时间变量 的结构体)、Structure (不带仿真时间变量的结构体)、An-ay (信号数组).
(3) Decimation:设定了一个亚采样因子,它的缺省值为1.也就是对每一个仿真时间点 产生值都保存,而若为2,则是每隔一个仿真时刻才保存一个值。
(4) Output options:输出选项,包含3个可选项
• Refine output (fil化输出):可以增加输出数据的点数,使得输出数据更加平滑。一 般当仿真输出太稀松时,使用此选项。与该选项配套的参数设置是refine factor <细 化因子),若细化因子定为?,则输出数据点数加倍,若为3则输出3倍的数据点 数,依次类推,默认值是1。通常要产生更光滑的输岀曲线,通过改变精细因子比 减小仿真步长更有效。精细输出只能在变步长模式中才能使用,并且在ode45效果 最好。
• Produce additional ou^)ut:它允许用户直接指定产生输出的时间点。一旦选择了该 项,则在它的右边出现一个output times编辑框,在这里用户指定额外的仿真输出 点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改 变仿真的步长・
• Pi'oduce specified output only:它的意思是让simulink只在指定的时间点上产生输 岀。为此解法器要调整仿真步长以使之和指定的时间点重合.这个选项在比较不同 的仿真时可以确保它们在相同的时间输出。
5.启动仿真
设置仿真参数和选择解法器之后,就可以启动仿真而运行。方法:选择Siniulink菜单 下的start选项来启动仿真,如果模型中有些参数没有定义,则会岀现错误信息提示框。如 果一切设置无误,则开始仿真运行。
下面给出一个实际的建模仿真的例子。
例2: 一个生长在罐中的细菌的简单模型
假定细菌的出生率和当前细菌的总数成正比,死亡率和当前的总数的平方成正比.若以 x代表当前细菌的总数,则细菌的出生率可表示为:
bu'th_rate = bx
细菌的死亡率可表示为:
death j'ate = px2
细菌总数的总变化率可表示为出生率与死亡率之差。因此系统可用如下微分方程表示:
x=bx-px2 (1)
假定,b=l/hour; p= 0 5/liour,当前细菌的总数为100,计算一个小时后罐中的细菌总数。 模型分析:
首先,这是一个一阶系统,因此用一个解微分方程的积分模块是必要的。积分模块的 输入为义(也即1式的右边项),输出为X:
Integrator
X
.V
其次,需要一个乘法模块(Product)以实现W,需要2个増益模块(Gain)来实现pW和bx (即分别将必和x增益p和b倍),需要一个求和模块(Sum)实现bx-px^o最后需要一个 示波器模块〈Scope)用于-显示输岀。所需各模块如下图所示:
Galn2 Product
o s a
Sum Integrator Scope
Gainl
步骤一:新建模型窗口
依次单击simuhnk库浏览器的“File”菜单TNew—Model,建立一个新的模型窗口;
步骤二:选择功能模块
从连续系统模块库(Continuous)中拖放一个积分模块到模型窗口,从数学库(Math) 中分别拖放一个乘法模块、一个增益模块、一个求和模块到模型窗口;最后从显示输出库 (Sinks)拖放一个示波器模块到模型窗口。在模型窗口中选中増益模块(Gain),按住Ctrl
键的同时拖动鼠标,在适当的位置释放,即可复制出第二个增益模块。最后将以上各模块进 行合理布局,如上图所示。
步骤三:信号线连接
按照前述的方法将各模块之间连接起来,如下图所示:
Gainl
步骤四:模块参数的设置
按下图所示设置模块的运行参数:
e □
分别双击增益模块1和2, 设置增益系数为1和0.5
其它的仿真参数采用系统默认值即可。仿真的起始时间默认为。,终止时间默认为10 0。
若需要改变仿真时间,可打开仿真参数设置对话框(Simulation->ConfigurationPai'ameters),
设置.[Star time]和【Stop time】即可。
步骤五:保存模型
步骤六:运行仿真
点击模型窗口中的七按钮,运行仿 真。仿真结束后,双击示波器模块,可 观察到仿真的结果曲线,如右图示。
6. 模型的注释
使用模型注释可以使模型更易读懂,其效果如同h询LAB程序中的注释行一样。对于 经常使用Simuhnk的用户,养成经常使用注释的习惯是非常重要的.
/增加注释的方法
在模型窗口中的任何想要注释的部位上双击鼠标,将会出现一个编辑框,在该框内输入 想要注释的内容即可。
/改变注释字体
要改变注释内容的字体,先选中注释,选择模型窗口菜单中的【Foi-matFont]选项,就 会岀现一个字体选择的对话框,选中认为合适的字体,然后按[OKlo
7. 模型拷贝到Word文档
在simuhnk中创建的模型要想复制到word文档,可依次点击模型窗口下的菜单 Edit—Copy Model to Clipboard,然后在word文档中粘贴即可。
三、实验内容
本次实验任务是学习使用Simuhnk对数字电路进行仿真和设计一一8线3线编码器的设 计。所谓8銭3线编码器是指有8个信号输入端和3个输出端的编码器,其功能是对输入的8个 信号进行编码,输岀3个二进制数。
8线3线编码器的真值表如下:
表一:8线3线编码器真值表
输入信号
输出信号
J0
J1
J2
J3
J4
J5
J6
J7
Y0
Y1
Y2
0
1
1
1
1
1
1
1
0
0
0
1
0
1
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
0
1
1
1
0
1
1
1
1
0
1
1
1
1
1
1
0
1
1
1
1
0
0
1
1
1
1
1
j
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
根据真值表写出输入输出间的逻辑函数如下:
Y0=J4 J5 J6 J7
Yl = J2J3J6-J7
Y2= J1J3 J5 J7
下面使用Simulink来实现这个数字电路系统,一共分三个步骤:
步骤一:添加模块
首先按照前述方法建立新的模型窗口,然后将本次仿真需要的模块添加到模型中.这里
—共需要三种模块:
① 逻辑运算模块——与非门<3个),用于实现编码器输入信号间的逻辑运算功能;
② 离散脉冲源(8个),用于8个端口的脉冲信号输入;
③ 示波器(3个),用于显示输岀的信号;
上述各模块在simuhnk模块库中的位置:
与非门模块(即Logical Opei-ator) : snnulink模块库-^Logic and Bit Operations子库;
离散脉冲源模块(Pulse Generator) : simuhnk模块库—Sources子库;
示波器模块(Scope) : simulink模块库—Sinks子库;
按照上述位置,找到相应模块,将其复制到模型窗口当中,如下图所示:
下面将模块的数量凑齐。
(a)单击逻辑运律模块(Logical Operator)的名称,将其更名为Y0,以方便识别,接着选中 该模块,按住Ctrl键,同时拖动鼠标到新的位置释放,此时将复制出一个名为Y1的逻辑 模块,按照此法,再复制出Y2,
3>)将脉冲源的名字改为J0,按后按住Ctrl键拖动7次,可得到8个离散脉冲源,名字分别是J0、 JI、 、J7;最后依次法将示波器复制3个,这样所需的模块数量都己备齐。再将这些模 块适当布局,如下图所示:
步骤二:修改模块参数
0)首先双击逻辑模块Y0,打开模块参数设置对话框,如下图所示。将参数Operator修改为
“NAND (与非)”,输入 节点数(Number of input ports)修改为4,然后单击 OK;其它两个逻辑模块Y1 和YC也做同样修改・
①)双击示波器模块 Scopel,在打开一个界面
中,点击Parameter图标(如左下图所示),可以打开示波器的参数设置对话框,将坐标轴 的数目(Number of axes)修改为3,这样做的目的是同时显示3幅图形(即3个与非门的输出
信号波形)o同样地,将另外两个示波器Scope?和Scope3的坐标轴数目修改为4。
点击该图标
Scopel5
ptix-auic t rrs
11 Data hidory]
Axes
Number of axes: 3
Time rang©:
Tick labels:
Sampling
auto
Tip- try right clicking on axes
O floating scope
boltom axis only ,
Decimation 二J | 1
I OK ]
Cancel
Help
Apply
(c)最后修改脉冲源的属性.双击脉冲源JO,弹出模块的参数设置对话框,如图所示。选择 脉冲类型(Pulsetype)为“基于采样(Samplebased) ”。接下来有5个参数需要设置,分 别解释如下:
Amp htude 脉冲信号的幅度
Period 脉冲信号的周期(以样本数为单位)
Pulse width 脉冲宽度(即电平为1的时间,以样本数为单位)
Pulse delay 相位延退(以样本数为单位)
S amp le time釆样时间长度
观察本例的真值表,注意到信号的长度为8,且J0到J7依次为低电平,所以将J0到 J7的周期设为8,脉冲宽度设为7,相位延迟依次设为-7到0,脉冲幅度和采样时间使用默认 值。这样在零时刻,J0为低电平,其余输入为高电平;经过一个釆样时间后,J1变为低电平, 如此持续下去,到第7个釆样时间,J7就变为低电平,实现了设计要求。
步骤三:连线及仿真
根据逻辑表达式,J4、J5、J6、J7连接到Y0的输入端,J2s J3、J6、J7连接到Y1的输 入端,JI、J3、J5、J7连接到Y2的
展开阅读全文