基于MATLAB的时序逻辑电路设计与仿真上课讲义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于M A T L A B的时序逻辑电路设计与仿真
课程设计任务书
学生姓名:田鑫专业班级:电子科学与技术 0703 班
指导教师:钟毅工作单位:信息工程学院
题目:
基于MATLAB的时序逻辑电路设计与仿真
初始条件:
MATLAB 软件微机
要求完成的主要任务:
深入研究和掌握数字电路中时序逻辑电路的理论知识。
利用MATLAB强大的图形处理功能、符号运算功能和数值计算功能,实现时序逻辑电路的设计和仿真。
一、以寄存器为例仿真下列波形
并行寄存器输出波形(以基本RS触发器构造);
移位寄存器输出波形(用D触发器构造)
二、以双向移位寄存器为例实现子系统的设计和封装并仿真下列波形
4位双向移位寄存器并行输出波形;
4位双向移位寄存器串行右移输出波形;
4位双向移位寄存器串行左移输出波形
三、以扭环计数器为例仿真下列波形
扭环计数器的输出波形(以JK触发器实现)
时间安排:
学习MATLAB语言的概况第1天
学习MATLAB语言的基本知识第2、3天
学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天
课程设计第6-9天
答辩第10天
指导教师签名:
年月日
系主任(或责任教师)签名:年月日
目录
摘要 (4)
Abstract (4)
绪论 (1)
1M A T L A B简介 (2)
1.1 MATLAB程序设计 (2)
1.2M A T L A B的特点 (2)
1.3MATLAB程序设计 (2)
1.4 M文件 (2)
1.5 SIMULINK仿真设计 (3)
1.5.1创建和使用模型 (3)
1.5.2选择和定制模块 (3)
1.5.3建立和编辑模型 (4)
1.5.4配置子系统 (4)
1.5.5条件执行子系统 (4)
2时序逻辑电路设计 (5)
2.1锁存器和触发器 (5)
2.1.1双稳态 (5)
2.1.2 锁存器 (5)
2.1.3 触发器 (5)
2.2时序逻辑电路设计 (7)
2.2.1移位寄存器 (7)
2.2.2扭环计数器 (9)
3基于M A T L A B的组合逻辑电路设计 (12)
3.1以寄存器仿真波形 (12)
3.1.1并寄存器的设计 (12)
3.1.2移位寄存器的设计 (15)
3.2以双向移位寄存器实现子系统的设计和封装仿真波形 (17)
3.3以扭环计数器为例仿真下列波形 (24)
4收获、体会与建议 (26)
5致谢 (27)
6参考文献 (28)
摘要
MATLAB是当今最优秀的科技应用软件之一,具有强大的科学计算与可视化功能、简单易用、开放式可扩展环境。
本文介绍了时序逻辑电路的MATLAB设计和仿真,在这种电路中,任意时刻的输出信号不但取决于当时的输入信号,还取决于电路当时的状态,或者说,还与以前的输入有关。
具备这种逻辑功能特点的电路叫做时序逻辑电路。
时序逻辑电路中需要将某一时刻的电路状态进行存储,利用触发器组成寄存器和计数器。
在时序逻辑电路的仿真的过程中,将使用到SIMULINK中的触发器模块。
同时也介绍了仿真中的子系统的设计和封装,进一步介绍MATLAB强大的数字处理功能。
关键词: 触发器,寄存器,计数器,仿真,封装
Abstract
Today is the most outstanding of MATLAB software technology application, strong scientific computing and visual function, easy-to-use, open extensible environment. The paper introduces the hardwave circuit design and simulation of MATLAB, in this circuit, arbitrary moment not only depend on the output signal was still depends on the input signal, and then the state, or circuit, and the relevant input before. Have this kind of logic function characteristics of the circuit is called the hardwave circuit. The hardwave circuit in a moment to store, the circuit state USES triggers composition registers and counter. In the hardwave circuit simulation process, will use the trigger module to SIMULINK. Also introduces the design and simulation of MATLAB, further introduced digital processing function of.
Keywords: flip-flop, register, counter, simulation, encapsulation
绪论
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
1 MATLAB简介
1.1 MATLAB
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。
1.2 MATLAB的特点
MATLAB是当今最优秀的科技应用软件之一,它以强大的科学计算与可视化功能、简单易用、开放式可扩展环境,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。
MATLAB具有其他高级语言难以比拟的一些优点,编写简单,编程效率高,易学易懂,因此MATLAB语言也被通俗地称为演算纸式的科学算法语言。
在控制、通信、信号处理及科学计算等领域中,MATLAB都被广泛地应用,已经被认可为能够有效提高工作效率、改善设计手段的工具软件,掌握了MATLAB就好比掌握了开启这些专业领域大门的钥匙。
1.3 MATLAB的程序设计
(1)行命令方式
行命令方式是在命令窗中写程序,每个程序只能是一行,因为计算机每次只能对一行命令做出反应,就像计算器那样工作。
行命令方式适合于简单的语句编写。
(2)程序文本方式
程序文本方式也叫程序文件模式,它是把多行语句写成一个程序,保存在一个文件名下,让计算机来执行这个文件。
程序文本方式的语句编写和修改是在文本编辑器中进行,它适合于复杂的语句编写
1.4 M文件
m文件的语法类似于c语言,但又有其自身特点。
它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。
m文件有两类:独立的m文件—称命令文件;可调用m文件—称函数文件。
程序文本方式分成脚本文件和函数文件。
1.5 SIMULINK仿真设计
Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。
在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。
Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。
同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。
1.5.1创建和使用模型
通过Simulink可使用大量的预定义模块快速地推导、建模和维护系统详细的模块图。
Simulink提供层次化建模、数据管理、定制子系统工具,无论工程师的系统有多复杂,都可以轻松完成简明精确的模型描述.
1.5.2选择和定制模块
Simulink包含广泛的用于对系统建模的模块库。
这些库包括:
▪ a. 连续和离散动态模块,如Integration和Unit Delay
▪ b. 算法模块,如Sum, Product, Lookup Table
▪ c. 信号结构模块,如 Mux, Switch, Bus Selector
可定制这些内联的模块或直接在Simulink中创建新的模块然后将其放置到自己的库中.额外的模块库扩展了Simulink的特殊应用功能,如对航空航天、通讯、无线电频率、信号处理、视频和图像处理和其他领域的应用.
启动Simulink时可以在工具栏点击;同样也可以在MATLAB命令窗口中输入Simulink,结果是在桌面上出现一个称为Simulink Library Browser的窗口,在这个窗口中列出了按功能分类的各种模块的名称;同样也可以通过单击MATLAB主窗口菜单选择
File→New→Model,弹出一个Untitled的Simulink模型窗口,再选择View →Show Library Browser,弹出Simulink Library Brower模块库窗口。
图1.1所示为Simulink Library Brower 窗口。
图1.1 Simulink Library Brower窗口
1.5.3建立和编辑模型
Simulink在使用时,从Library Browser中拖放模块到图形编辑器、然后用线连接模块来建立模块之间的数学关系,从而完成模型的建立,同时可以通过使用图形编辑功能来对模型布局,如拷贝、粘贴、撤销、对齐、分布和改变尺寸等.
Simulink user interface使得在屏幕上的所见所用都可以得到全面控制。
用户可以添加指令和子菜单到编辑器和文件菜单中,也可以对菜单、菜单项和对话框进行禁用和隐藏等控制.
1.5.4配置子系统
Simulink中的配置子系统可以在一个模型中将子系统与设计变量相关联,该功能通过共享部件设计方式简化了设计过程和管理,因为一个模型可以代表一类设计.
1.5.5条件执行子系统
条件执行子系统可以通过控制逻辑信号的使能或非使能来改变系统的动态行为。
在Simulink中用户可以根据特定的时间或事件来创建控制信号,使得子系统以使能或触发的模式来执行.同时,Simulink中提供了逻辑模块,可用于对简单的控制指令来建模,从而控制使能或触发子系统。
2 时序逻辑电路设计
时序逻辑电路在任一时刻的输出信号不仅与当时的输入信号有关,并且与原来状态有关。
也就是说,时序电路中具有逻辑运算功能的组合电路外,还必须有能够记忆电路状态的存储单元或延迟单元,这些存储或延迟逻辑单元主要由锁存器或触发器来实现。
时序电路是状态以来的,成为状态机,时序逻辑电路具有以下特征:时序逻辑电路由组合电路和存储电路组成;时序逻辑电路的状态与时间因素相关,即时序电路在任一时刻的状态变量不仅是当前的输入信号的函数,而且还是电路以前状态的函数,时序电路的输出信号由输入信号和电路的状态共同决定。
2.1 锁存器和触发器
2.1.1 双稳态
双稳态电路一般有一个输出端和两个输入端(“+”、“-”端各一个),当输入端的“+”
端有触发信号时,输出端不管原来是什么状态,都会立即变为高电平,且一直稳定地输出
高电平。
如果当输入端的“-”端有触发信号时,输出端不管原来是什么状态,都会立即变为低电平,且一直稳定地输出低电平。
2.1.2 锁存器
锁存器是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。
输出端的状态不会随输入端的状态变化而变化,只有在有锁存信号时输入
的状态被保存到输出,直到下一个锁存信号。
通常只有0和1两个值。
图2.1为RS基本锁存器,表2.1为其真值表。
表2.1 SR基本锁存器真值表
S R 状态
0 0 维持
0 1 Q=0
1 0 Q=1
1 1 Q=!Q=0
图2.1 基本SR锁存器
2.1.3 触发器
触发器(Flip Flop)是一种可以存储电路状态的电子元件。
最简单的是由两个或非门,两个输入端和两个输出端组成的RS触发器(见图)。
复杂一些的有带时钟(CLK)段和D(Data)端,在CLK端为高电平时跟随D端状态,而在CLK端变为低电平的瞬间锁存信号的D触发器。
更常用的是两个简单D触发器级联而成的在时钟下跳沿所存信号的边缘D触发器,广泛应用于计数器、运算器、存储器等电子部件。
常见的还有JK触发器和T触发器。
1.S R触发器
SR触发器基本表示及状态图和真值表见下。
图2.2 SR 触发器逻辑符号 图2.3 SR 触发器状态图
表2.2 SR 触发器真值表
S R CP Q n Q n+1 0 0 ↑ 0 0 0 0 ↑ 1 1 0 1 ↑ 0 0 0 1 ↑ 1 0 1 0 ↑ 0 1 1
↑
1
1
)(01约束条件=+=+SR Q R S Q n
n ,这是SR 触发器满足的基本条件。
2. D 触发器
D 触发器基本表示及状态图和真值表见下。
其中D Q n =+1。
图2.4 D 触发器逻辑符号 图2.5 D 触发器状态图
表2.3 D 触发器真值表
D Q n Q n+1 0 0 0 0 1 0 1 0 1 1
1
1
3. JK 触发器
JK 触发器基本表示及状态图和真值表见下。
n n n Q K Q J Q +=+1
图2.6 JK触发器逻辑符号图2.7 JK触发器状态图
表2.4 JK触发器真值表
J K CP Q n Q n+1
0 0 ↑0 0
0 0 ↑ 1 1
0 1 ↑0 0
0 1 ↑ 1 0
1 0 ↑0 1
1 0 ↑ 1 1
1 1 ↑0 1
1 1 ↑ 1 0
2.2 时序逻辑电路设计
2.2.1 移位寄存器
移位寄存器:不但可以寄存数码,在移位脉冲作用下,寄存器中的数码还可根据需要向左或向右移动。
1.基本(单向)移位寄存器
(1)右移寄存器(D触发器组成的4位右移寄存器)
结构特点:左边触发器的输出端接右邻触发器的输入端。
Q
R
C1
1D
∧
1D
C1
∧
R
Q1D
C1
∧
R
Q1D Q
∧
R
C1
Q
Q Q Q
3
CP
CR
I
D
串行输入串行输出D
0D1D2
FF
1
FF
2
FF
3
FF
并 行 输 出
D
3
图2.8 右移寄存器逻辑图
图2.9 右移寄存器状态图
2. 双向移位寄存器
将右移寄存器和左移寄存器组合起来,并引入一控制端S便构成既可左移又可右移的双向移位寄存器。
R
FF
∧
1D
C1
3
Q
&
≥1
∧
R
1D
C1
2
FF
Q
&
≥1
∧
R
1D
C1
1
FF
Q
&
≥1
FF
&
∧C1
R
1D
Q
≥1
1
1
1
Q
Q
13
02
CR
串行输入
SL
D
(左移)串行输入
D
SR
(右移)
串行输出
D
OR
(右移)串行输出
D
OL
(左移)
移位控制
S=1:右移
S=0:左移
并 行 输 出
图2.10 双向移位寄存器逻辑图
2.2.2 扭环计数器
扭环计数器可以进一步提高电路状态的利用率,图2.11所示扭环计数器,有效循环中的状态数提高至8个,但电路仍无法自启动。
图2.11 基本扭环计数器
图2.12是可以自启动的扭环计数器,电路工作原理如下。
图2.12 改进型扭环计数器
(1)写方程式。
将驱动方程代入D 触发器的特性方程D Q =+1n ,得到扭环计数器的状态方程。
(2)列状态转换真值表,画出状态转换图。
CP
CP
设扭环计数器现态n
0n 1n 2n 3Q Q Q Q =0000,代入状态方程进行推导,得表2.5所示的状态转
换真值表。
根据状态转换真值表,画出状态转换图,见图2.13。
图2.13 改进型扭环计数器状态转换图
(3)检查电路自启动能力。
经检查,该电路能够自启动。
(4)画出电路时序图,见图2.14。
1
35CP Q 0Q 1Q 27
Q 3
图2.14 改进型扭环计数器时序图
(5)电路逻辑功能说明。
由以上分析,4位扭环计数器有效循环有8种状态,可计8个数。
扭环计数器的优点是每次状态变化只有一个触发器翻转,译码器不存在竞争冒险现象,电路比较简单。
缺点是电路状态利用率仍然不高。
3 基于MATLAB 的组合逻辑电路设计
3.1以寄存器仿真波形
3.1.1并寄存器的设计
这个设计中使用基本RS 触发器构造一个2为并行寄存器。
所谓并行寄存器就是能够同时存储几个数据源数据的寄存器。
(1) RS 触发器功能介绍
SIMULINK 中提供了基本RS 触发器模块。
首先运行MATLAB 中运行Simulink,然后新建一个模型,将RS 触发器的模块添加到模型中,RS 触发器位置是:Simulink Extras--Flip Flops--S-R Flip-Flop.如图3.1所示。
然后在这个模块上右击鼠标,单击弹出菜单中的“Look Under Mask ”(查看下
Q 3Q 2Q 1Q 0
0000
011011011011
0111
11101111
10010100
001010100011100011000001
0101
封装下的电路)命令,可以看到这个模块内部电路,如图3.1所示。
设计一个2位并行寄存器需要两个RS触发器,而且需要这个寄存器下在一个始终的激励下,先从输入端读入数据,并存储一段时间,然后在下个周期将信号输出,同时读入新的信号。
这将需要将时钟源信号作为输入信号的控制端,同时由于输入信号RS不能同时为1,所以最好将它们通过一个非门联系起来,使得它们永
远分开为高定平。
图3.1 RS触发器模块及内部电路
(2)用基本RS触发器构造并行寄存器
第一步:添加模块有五个模块。
RS触发器,Simulink Extras—Flip Flops—S-R Flip-Flop.;时钟源,Simulink Extras—Flip Flops—Clock;脉冲源,Simulink—Sources—Pulse Generator; 逻辑运算模块,Simulink—Math Operations—Logical Operator; Simulink—Sink—Scope.将它们全部拖入一个新建模型中。
第二步:修改模块参数
首先我们双击RS触发器模块,将会看到如图3.2所示的对话框。
在对话框里只有一个参数填写,就是触发器的初始状态,即Q端的初始值,默认值0。
复制两个。
双击时钟源,将会看到图3.3所示对话框。
填写参数时钟周期,采用默认值2。
接着讲逻辑运算模块复制4个,通过双击模块将这4个设置为2输入与非门。
图3.2 RS触发器参数设置图3.3 时钟源参数设置
将脉冲源的Pulse Type选择Sample based。
将表3.1内容填入图3.4所示的对话框中。
表 3.1 并行寄存器脉冲源参数设置
D0 D1
幅度 1 1
周期 3 3
脉宽 1 1
延迟相位0 0
抽样时间 1 0.25
图3.4 脉冲源参数设置
最后将示波器输入端口该为5个,完成参数设计。
第三步:连线及仿真
将各模块摆放合适,参照图3.5连线。
示波器分别件事时钟源,两个脉冲模型和两个触发器的输出信号。
完成连线,将示波器上的线通过双击进行标注。
最后将整个模型保存在MATLAB的work的子目录下。
仿真时间默认为10秒,单击工具栏上图标,开始仿真。
最后双击示波器观察输出波形,如图3.6所示。
图3.5 2位并行寄存器电路图
图3.6 并行寄存器输出
从波形看出,在时钟源位于低电平时,触发器输出维持它在时钟下跳前的值,对于D1D0输入的变化没有改变,而当时钟源位于高电平时,输入的信号全部送入输出端,这是一个不稳定的因素,也是电平触发的触发器的一个缺点。
而且发现两个触发器完全独立工作,互不影响,这就是并行的特点。
3.1.2移位寄存器的设计
在这个设计中,将使用另一种触发器,D触发器,来实现移位寄存器。
所谓移位寄存器就是只能接收一个输入源的寄存器,它将这个输入依次通过寄存器堆进行缓存。
(1)D触发器功能介绍
在上面的介绍中已讲过D触发器的功能与其真值表,在这就不多概述。
(2)用D触发器构造移位寄存器
第一步:添加模块
方法同上,分别找到6个模块,D触发器,时钟源,单位延迟单元,常数源,脉冲源,示波器。
运行Simulink,将这些模块拖入新建模型中。
第二步:修改模块参数
D触发器复制4个即可,时钟源依然默认2即可,双击单位延时模块,可以看到对话框,修改参数初始值为1,抽样时间改为0.1,复制这个单元3个。
脉冲源设置幅度为1,周期为3,脉宽为1,相位延迟为0,采样时间为0.3。
然后将这个脉冲命名为INPUT。
常数源设置为1,最后将示波器输入端设置为6个。
第三步:连线及仿真
将各模块摆放整齐,参照图3.7连线。
然后同样保存好。
单击Simulink菜单下的Parameters命令,将仿真时间设为20秒,单击工具栏中的运行图标,开始仿真。
然后双击示波器观察波形,如图3.8所示。
图3.7 4位移位寄存器
图3.8 移位寄存器输出波形
由图看出在时钟信号上升沿,各个触发器的输出端才会变化。
而且四个触发器的输出一次延时一个周期,这个分析一致。
3.2以双向移位寄存器实现子系统的设计和封装仿真波形
这个设计以基本RS触发器为基础,一步步完成比较大的系统,四位双向移位寄存器T4194,并介绍子系统的封装,最后完成顶层文件。
首先介绍T4194的功能,它能够提供串行寄存器和移位寄存器两种功能。
器内部是沿触发的RS触发器。
(1)带职位复位的RS触发器设计
首先要改装RS触发器,使其具有置位和复位端,加强其功能。
得到带置位复位端的RS触发器如图3.9所示。
下面简述一下此过程。
图3.9 带置位端的下降沿触发的RS触发器
首先启动Simulink,然后将一个子系统(Simulink—Ports & Subsystems—Triggered Subsystem)添加到一个新建模型中。
然后双击打开这个子系统,将RS触发器添加一个到其中。
然后再加入两个逻辑运算模块,都改为二输入与门然后再加入4个输入端口,和2个输出端口,分别命名为置位端IRs,复位端IRd,然后按图3.9连接各自重新命名。
这将RS 触发器加上置位端和复位端。
并且双击 Trigger 将Trigger Type改为falling。
(2)四位双向移位寄存器子系统的设计和封装
第一步:T4194电路设计
T4194有十个输入端口,4个输出端口。
其中三个是控制信号(S0、S1、Rd),一个时钟信号(CLK),还有两个串行输入端口(Leftin、Rightin),4个必行输入端口(D3—D0)。
控制端对T4194工作状态的控制如表3.2所示。
表3.2 T4194工作状态
Rd S1 S0 工作状态
0 * * 清零
1 0 0 保持
1 0 1 右移
1 1 0 左移
1 1 1 并行输入
这个系统由4个下降沿触发的RS触发器构成。
同时需要其他逻辑功能非常多,最后实现如图3.10的T4194内部电路。
图3.10 T4194内部电路
分别将每个RS触发器双击设置初始值依次为Q0、Q1、Q2、Q3。
然后按照图3.10所示将电路连接完成,圈器电路,然后单击“EDIT”菜单下的“Creat Subsystem”命令,生成一个子系统,并命名为T4194,就可以生成T4194子系统的设计。
然后保存。
第二步:封装子系统
首先单击T4194子系统,然后再“EDIT”菜单下选择”Mask Subsystem”命令,只是出现对话框:MASK EDITOR。
如图3.11所示,将这个对话框设置好。
图3.11 Mask Editor 中Icon设置
图3.12 Mask Editor 中Parameters设置
首先设置Icon页,左侧Icon options 下有四个栏目,依次设置为Visible、Transparent、Fixed、Autoscale。
在右侧的Drawing commands中填写如下命令:
disp(’双向移位寄存器\n\n’)
disp (‘T1194’)
其中“\n”是使用回车的命令。
然后设置Parameters页,单击ADD,添加一个新的内容,在Prompt栏下填入“触发器F0初始状态”,然后在Variable栏内填入“Q0”。
然后依次按图填入如图3.12所示4个内容,其他则不需改动。
最后设置Documentation页,在Mask Type项内填写T4194;在Mask description下填入“这个模块是双向移位寄存器(T4194),既可以进行双向移位,又可以串行输入输出。
”在Mask help下填入如下内容:
Dd用于将所有输出清零,低电平有效;
S1S0=00时,所有输出保持原有值;
S1S0=01时,处于数据右移的状态,将RIGHTIN右移;
S1S0=10时,处于数据左移的状态,将LEFTIN左移;
S1S0=11时,处于数据并行输出状态,将D3D2D1D0并行输出。
就完成了对最后一页的设置如图3.13所示。
图3.13 Mask Editor 中Documentation设置
然后单击“OK”就可以完成封装后的模块了。
然后双击该模块出现如图3.14所示的对话框。
图3.14 封装后模块的对话框
单击“Help”出现帮助内容。
如图3.15所示。
图3.15 封装后模块Help窗口
(3)完成仿真电路并进行仿真
在完成T4194模块封装后,我们设置下外围电路,如图3.16所示。
添加入6个脉冲源,一个时钟源,然后加入示波器,改为5输入。
显示4个输出信号和时钟波形。
图3.16 双向移位寄存器顶层图
各个脉冲源参数设置参照表3.3.
表3.3 T4194的脉冲参数设置
D0 D1 D2 D3 LEFTIN RIGHTIN 幅度 1 1 1 1 1 1 周期 3 4 5 2 5 3 脉宽 1 3 1 1 3 1
相位延迟0 0 0 0 0 0
抽样时间0.3 0.3 0.6 0.6 0.15 0.4 最后根据开关的状态,分别决定T4194工作状态。
通过开关将S1S0设置成11,然后点击工具栏运行,开始仿真。
可以看到并行输出的波形,任意图3.17所示;置成01,观察右移的波形,如图3.18所示;置成10,观察右移的波形,如图3.19所示。
从波形看到T4194实现的各种功能。
图3.17 T4194并行输出波形
图3.18 T4194串行右移输出波形
图3.19 T4194串行左移输出波形3.3以扭环计数器为例仿真下列波形
设计扭环计数器内部电路和封装
扭环计数器内部电路如图3.20所示。
图3.20 扭环计数器内部电路
先运行Simulink,然后新建一模型,添加一个子系统,然后双击打开该模块,将图3.20绘入其中。
下面进行参数设置。
四个触发器初始值设置为Q3、Q2、Q1、Q0。
相应的单位延时模块也同它连接的Q端一致。
然后单击顶层文件进行封装。
按照前边的步骤即可,设置完成后,双击这个模块,可以看到图3.21所示内容,设置其出示值,设置为0100即可,输入时应输入[0,1,1,0]。
图3.21 扭环计数器封装后的对话框
然后在做顶层文件的设计,添加增益、相加器、仿真时间和平面图模块。
这样可以用十进制的方式观察输出。
再加入时钟源即可。
进行参数设置,时钟源周期外围1,平面模块的横坐标范围设为-1到31,纵坐标设置为-1到16。
然后单击Parameters命令,将仿真时间改到30秒。
保存文件。
然后单击运行。
观察波形,如图3.22所示。
图3.22 扭环计数器的输出
4收获、体会与建议
通过这次课设,我认识到了MATLAB功能非常的强大,使得我们在使用的时候用户直接调用这些库函数并赋予实际参数就能解决实际问题,具有极高的变成效率。
我也熟悉了MATLAB的工作环境,可以很熟练的对MATLAB进行常规的操作,快速进行程序编辑
和仿真。
本文次课设通过一个设计实例,利用MATLAB实现时序逻辑电路的设计与仿真,从仿真结果可以看出它们均可以达到技术指标要求,而且方法简单、快捷,大大减轻了工作量。
我对本次设计的结果还比较满意,经过一周的设计、分析,终于圆满的完成此次课程设计。
虽然在这个过程中也遇到一些困难,但通过与同学的交流和自己查资料,我对MATLAB有了更深的体会。
通过本次设计我感觉到自己对MATLAB的Simulink仿真不是很熟悉,在用到所需元件时都要进行查阅,在今后要进一步增加自己的MATLAB学习,提高自己MATLAB汇编技能。
在本次设计中主要是应用各种基本组合逻辑器件的真值表化简出对应的逻辑表达式,然后根据这些逻辑表达式在Simulink环境下画出对应的原理图,设定了初始信号之后就可以得到相应的输出波形。
在完成所有的设计后,由于本设计所需的逻辑单元种类单一,因此感觉本次设计并没有想象中的那么难,但是对于Simulink中的其他函数并不是十分了解,在以后的学习中需要加强其他方面的学习和应用。
本次设计需要我们熟悉MATLAB的一些函数的基本功能以及它们的基本语句。
当然,经过了课程设计,我也发现了自己的很多不足。
但是通过自己的动手动脑,既增加了知识,又给了我专业知识以及专业技能上的提升,我也会更加努力,认真学习,争取在以后的课程中做得更好!。