基于MATLAB的组合逻辑电路设计和仿真

更新时间:2023-03-19 16:48:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB课程设计报告说明书

课程设计任务书

学生姓名: 专业班级: 指导教师: 工作单位: 信息工程学院 题 目:

基于MATLAB的组合逻辑电路设计与仿真

初始条件:

MATLAB 软件 微机

要求完成的主要任务:

深入研究和掌握数字电路中组合电路的理论知识。利用MATLAB的强大的图形处理功能,符号运算功能和数值计算功能,实现组合逻辑电路的设计和仿真。 一、 以编码器和译码器为例仿真下列波形

1. 编码器输入输出波形(8线3线); 2. 译码器输入输出波形(3线8线);

3. 数据选择器输入输出波形(四选一数据选择器) 二、 以译码器的级联为例实现系统的封装并仿真下列波形 译码器的输入输出波形(4线16线)

三、 以七段数码管为例子完成数码管的图形输出显示

时间安排:

学习MATLAB语言的概况 第1天 学习MATLAB语言的基本知识 第2、3天 学习MATLAB语言的应用环境,调试命令,绘图能力 第4、5天 课程设计 第6-9天 答辩 第10天

指导教师签名:

年 月 日

系主任(或责任教师)签名:

年 月 日

MATLAB课程设计报告说明书

目 录

摘 要 ............................................................................................................................................... I Abstract.......................................................................................................................................... II 绪 论 ............................................................................................................................................ III 1 matlab 简介 ................................................................................................................................. 1

1.1 MATLAB程序设计 .............................................................................................................. 1 1.2 Simulink 仿真 ................................................................................................................. 1

1.2.1 Simulink 启动 ..................................................................................................... 1 1.2.2 Simulink 模块库及模块操作 ............................................................................. 2 1.3 子系统的创建与封装 ....................................................................................................... 2

1.3.1 子系统的创建 ....................................................................................................... 3 1.3.2 子系统的封装 ....................................................................................................... 3

2 组合逻辑电路及其设计 ............................................................................................................... 3

2.1 编码器 ............................................................................................................................... 3

2.2.2 显示译码器 ........................................................................................................... 2 2.3 数据选择器 ............................................................................................................... 3

3 基于MATLAB的组合逻辑电路仿真实现 ..................................................................................... 3

3.1以编码器和译码器为例的仿真 ........................................................................................ 3

3.1.1 8线3线编码器的仿真 ........................................................................................ 3 3.2.2 3线8线译码器的仿真 ........................................................................................ 5 3.3.3 4选1数据选择器的仿真 .................................................................................... 6 3.2 以译码器的级联为例实现系统的封装并仿真 ............................................................... 7

3.2.1 3线8线译码器的封装 ........................................................................................ 7 3.2.2 4线16线译码器的仿真 ...................................................................................... 8 3.3 以七段数码管为例子完成数码管的图形输出显示 ..................................................... 10 结束语 ............................................................................................................................................ 12 致谢 ................................................................................................................................................ 13 参考文献......................................................................................................................................... 14

MATLAB课程设计报告说明书

摘 要

MATLAB是当今最优秀的科技应用软件之一,具有强大的科学计算与可视化功能、简单易用、开放式可扩展环境。本文介绍了组合逻辑电路的MATLAB设计和仿真,在这种电路中,任意时刻的输出信号仅取决于当时的输入信号。具备这种逻辑功能特点的电路叫做组合逻辑电路。

本次课程设计利用MATLAB中的M文件与SIMULINK方式完成了对组合逻辑电路的设计与仿真,初步了解与掌握了这一技能。课程设计的主要内容包括了编码器、译码器、数据选择器的仿真及子系统的封装。

关键词: matlab,simulink,组合逻辑电路

MATLAB课程设计报告说明书

Abstract

MATLAB is the most outstanding of software technology application nowadays, it has strong scientific computing and visual function, and it is easy-to-use, it can be extend because of its extensible environment. This paper introduces the hardwave circuit design and simulation of MATLAB, in this circuit, arbitrary moment only depends on the input signal before,its current state dose not matter. This kind of logic hardware is called combinational logic circuit.

The purpose of our training is to strengthen the use of MATLAB to achieve the handling of the .M files and Simulink, including analyzing ,designing and emulating combinational logic circuit.Its content contains Encoder and decoder, data selector simulation and the encapsulation of the subsystems.

Keywords: matlab,simulink,combinational logic circuit

MATLAB课程设计报告说明书

绪 论

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

本设计利用MATLAB及Simulink仿真软件强大的图形处理功能,符号运算功能和数值计算功能,实现常见的组合逻辑电路如编码器、译码器、数据选择器等逻辑电路的设计及仿真。本设计通过Simulink仿真软件使用常见的与、或、非等基本逻辑单元,延时信号、时钟信号等信号源和示波器完成以上各种逻辑电路的设计和仿真,同时通过MATLAB汇编语言实现以上各基本组合逻辑电路的逻辑表达式,并在给定输入信号的情况下完成并验证各基本组合逻辑电路的功能。

MATLAB课程设计报告说明书

1 matlab 简介

1.1 MATLAB程序设计

用MATLAB语言编写的程序,称为M文件。M文件有两类:命令文件和函数文件。两者区别在于:命令文件没有输入参数,也不返回输出参数;而函数文件可以输入参数,也可以返回输出参数。命令文件对MATLAB工作空间的变量进行操作,而且函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。M文件可以使用任何编辑程序建立和编辑,而一般常用的是使用MATLAB提供的M文件窗口。

首先从MATLAB命令窗口的File菜单中选择New菜单项,在选择M-file命令,将得到的M文件窗口。在M文件窗口输入M文件的内容,输入完毕后,选择此窗口File菜单的save as命令,将会得到save as 对话框。在对话框的File 框中输入文件名,再选择OK按钮即完成新的M文件的建立。

然后在从MATLAB 命令窗口的File 菜单中选择Open对话框,则屏幕出现Open对话框,在Open对话框中的File Name 框中输入文件名,或从右边的directories框中打开这个M文件。在M文件所在的目录,再从File Name 下面的列表框中选中这个文件,然后按OK按钮即打开这个M文件。在M文件窗口可以对打开的M文件进行编辑修改。在编辑完成后,选择File菜单中的Save命令可以把这个编辑过的M文件报存下来。

当用户要运行的命令较多或需要反复运行多条命令时,直接从键盘逐渐输入命令显得比较麻烦,而命令文件则可以较好地解决这一问题。我们可以将需要运行的命令编辑到一个命令文件中,然后再MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。

1.2 Simulink 仿真

Simulink是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与MATLAB语言的主要区别在于,其与用户交互接口是基于Windows的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。

1.2.1 Simulink 启动

Simulink有四种启动方法:

(1)在MATLAB命令窗口中输入simulink,结果是在桌面上出现一个称为Simulink Library Browser的窗口,在这个窗口中列出了按功能分类的各种模块的名称;

(2)在MATLAB命令窗口中输入Simulink3,结果是在桌面上出现一

MATLAB课程设计报告说明书

个用图标形式显示的Library :simulink3的Simulink模块库窗口;

(3)可以通过单击MATLAB主窗口工具条上的Simulink图标打开; (4)可以通过单击MATLAB主窗口菜单选择File New Model,弹出一个Untitled的Simulink模型窗口,再选择View Show Library Browser,弹出Simulink Library Brower模块库窗口。

1.2.2 Simulink 模块库及模块操作

Simulink模块库按照功能分类可以分为:连续模块、离散模块、查表模块和用户定义函数模块、数学模块、非线性模块、信号通路模块、接收器模块、输入源模块、特别模块、其他常用方块组及工具箱。在模型窗口中,选中模块,则其4个角会出现黑色标记,此时可以对模块进行以下的基本操作:

(1)移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖曳。

(2)复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。

(3)删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。

(4)转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单Format Flip Block旋转180度, Format Rotate Block顺时针旋转90度。

(5)改变大小:选中模块,对鼠标移到角上出现 ,进行拖曳即可。

(6)模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换180度,可以用Format Flip Name来实现,也可以直接通过鼠标进行拖曳。Hide Name可以隐藏模块名称。

(7)颜色设定: Format Foreground Color改变模块的前景颜色,Background Color改变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变。

(8)参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。或点击鼠标右键,选择Block parameters 参数设定窗口包含了该模块的基本功能帮助。通过对模块的参数设定,就可以获得需要的功能模块。

1.3 子系统的创建与封装

在建立的Simulink系统模型比较大或很复杂时,可将一些模块组合成子系统,这样可使

1. 模型得到简化,便于连线; 2. 可提高效率,便于调试;

3. 可生成层次化的模型图表,用户可采取自上而下或自下而上的设计方法。 将一个创建好的子系统进行封装,也就是使子系统象一个模块一样,例如可以有自己的参数设置对话框,自己的模块图标等。这样就使子系统使用起来非常

MATLAB课程设计报告说明书

方便。

1.3.1 子系统的创建

1.通过子系统模块来建立子系统

在Simulink库浏览器,有一个子系统(Subsystems)的库模块(有的版本在Signals & Systems子库里),点击该图标即可看到不同类型的子系统模块。

2.组合已存在的模块来建立子系统

如果现有的模型已经包含了需要转化成子系统的模块,就可以通过组合这些模块的方式建立子系统。步骤如下:

确定需建立Subsystem的模型(被选中的均标记有黑块);

点击模型窗Edit菜单下的Create Subsystem 命令,则所选定的模型组合自动转化成子系统;

双击该图标,可打开该子系统窗口,改写输入输出符号; 关闭子系统编辑窗口,设置子系统标签。

1.3.2 子系统的封装

子系统可以建立自己的参数设置对话框,以避免对子系统内的每个模块分别进行参数设置,因此在子系统建立好以后,需对其进行封装。子系统封装的基本步骤如下:

a. 设置好子系统中各模块的参数变量; b. 定义提示对话框及其特性;

c. 定义被封装子系统的描述和帮助文档; d. 定义产生模块图标的命令。

2 组合逻辑电路及其设计

根据逻辑功能的不同,数字电路分为两大类:一类是组合逻辑电路,另一类是时序逻辑电路。在组合电路中,任意时刻的输出仅取决于该时刻的输入,与电路的原始状态无关。常见的组合逻辑电路有数据选择器、编码器、译码器、数据分配器、数据比较器等典型的中规模组合逻辑器件。在时序电路中,任意时刻的输出不仅取决于该时刻的输入,而且与该时刻之前电路的状态有关。常见的时序电路有触发器、锁存器等中规模时序器件。组合逻辑电路的结构具有以下特点:输出输入之间没有反馈延迟通路;电路中不含有记忆功能的元件。

2.1 编码器

用文字、符号或数码表示特定对象的过程叫做编码。实现编码操作的电路就是编码器。按照编码信号的不同特点和要求,常用的编码器件有二进制编码器、二-十进制编码器、优先编码器之分。

MATLAB课程设计报告说明书

所谓优先编码器,就是按优先级别的高低进行编码的电路。至于级别的高低,完全由设计人员根据各个输入信号的要求决定。

以8线3线优先编码器为例,其逻辑功能真值表如表2-1所示,从功能表中可以看出,该编码器有8个信号输入端,3个二进制输出端,输入和输出均以高电平作为有效电平,而且输入优先级别的次序依次I7 、I6 、I 5 、I 4 、I3 、I 2 、I 1 、I 0 。此外为方便多个芯片连接起来扩展电路的功能,还设置了高电平有效地输入使能端EI。

当EI=1时,编码器工作;而当EI=0时,禁止编码器工作,此时不论8个输入端为何种状态,3个输入端均为低电平。功能表中1和0分别表示高、低电平,画出8线3线编码器的卡诺图并推导出各输出端的逻辑表达式:

A2=EI&(~((~I7)&(~I6)&(~I5)&(~I4)));

A1=EI&(~((~I7)&(~I6)&(I5+I4+(~I3))&(I5+I4+(~I2))));

A0=EI&(~((~I7)&(I6+(~I5))&(I6+I4+(~I3))&(I6+I4+I2+(~I1))));

表2-1 8线3线优先编码器真值表

2.2 译码器

译码是编码的逆过程,它的功能是将具有特定含义的二进制编码进行分辨,并且转换成控制信号,具有译码功能的逻辑电路称为译码器。常用的译码器件有二进制译码器、3线-8线译码器、4线-16线译码器、BCD译码器、七段显示译码器件等。

2.2.1 二进制译码器

常见的集成二进制译码器有CMOS和TTL的定型产品,两者在逻辑功能上没有区别,只是电性能参数不同,用74x137表示两者中的任意一种。74x139是双线译码器,两个独立的译码器封装在一个集成片中。下面主要介绍74HC137的逻辑功能及应用。

功能表中1和0分别表示高、低电平,画出3线8线译码器的卡诺图并推导出各输出端的逻辑表达式:

Y7=EI&(~(A2&A1&A0)); Y4=EI&(~(A2&(~A1)&(~A0))); Y6=EI&(~(A2&A1&(~A0))); Y3=EI&(~((~A2)&A1&A0)); Y5=EI&(~(A2&(~A1)&A0)); Y2=EI&(~( (~A2)&A1&(~A0)));

MATLAB课程设计报告说明书

Y1=EI&(~((~A2)&(~A1)&A0)); Y0=EI&(~( (~A2)&(~A1)&(~A0)));

74HC137是3线8线译码器,其功能表如表2-2所示。

表2-2 3线8线译码器真值表

2.2.2 显示译码器

数码显示器就是用来显示数字、文字或符号的器件。七段显示器有两种,共阴极和共阳极电路,共阴极电路中,七个发光二极管的阴极连接在一起接低电平。共阳极显示器的驱动则刚好相反。

为了是数码管能显示十进制数,必须将十进制数的代码经译码器译出,然后经驱动去点亮对应的段。译码器的功能就是,对应于某一段数码输入,相应的几个输出端有有效信号输出。常用的七段显示译码器有两类,一类译码器输出高电平有效信号,用来驱动共阴极显示器,另一类输出低电平信号,以驱动共阳极显示器。下面介绍一种常用的CMOS七段译码器,其真值表如表2-3所示。

MATLAB课程设计报告说明书

2.3 数据选择器

数据选择器又称多路选择器(MUX)。每次在地址输入的控制下,从多路输入数据中选择一路输出,其功能类似于一个单刀双掷开关。常用的数据选择器有2选1、4选1、8选1、16选1等。

数据选择器的电路结构一般由与或门阵列组成,也有用传输门开关和门电路混合而成的。下面以4选1数据选择器为例进行分析,其真值表如表2-4所示。

当输入地址为00时,输出信号为D0;当输入地址为01时,输出信号为D1;当输入地址为10时,输出信号为D

2;当输入地址为11时,输出信号为D3。

根据功能表可以写出输出信号Y的表达式:

Y=((~S2)&(~S1)&D0)|((~S2)&S1&D1)|(S2&(~S1)&D2)|(S2&S1&D3);

表2-4 4选1数据选择器功能表

3 基于MATLAB的组合逻辑电路仿真实现

3.1以编码器和译码器为例的仿真

3.1.1 8线3线编码器的仿真

进入Simulink仿真界面后,按照8线3线编码器的逻辑表达式逐一拖入所需的原件,先摆置好基本位置,然后进行连接,最后得到的8线3线编码器的原理图如图3-1所示。

然后,设置好各输入脉冲后,点击

进行仿真,然后分别点击查看输入输

出信号的示波器查看波形,可观察得到8线3线编码器的输入输出波形如图3-2所示。

根据波形可知所设计的8线3线编码器,在一定输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。

MATLAB课程设计报告说明书

图3-1 8线3线编码器组合逻辑原理图

图3-2 8线3线编码器输入输出仿真波形

MATLAB课程设计报告说明书

进入Simulink仿真界面后,按照3线8线译码器的逻辑表达式逐一拖入所需的原件并进行连接如图3-3所示,设置好输入脉冲后,再仿真,然后分别点击查看输入输出信号的示波器查看波形,如图3-4所示,根据以下波形可以看出所设计的3线8线译码器,在给不同输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。

图3-3 3线8线译码器原理图

图3-4 3线8线译码器输入输出仿真波形

MATLAB课程设计报告说明书

进入Simulink仿真界面后,按照4选1数据选择器的逻辑表达式逐一拖入的原件先摆置好基本位置,然后进行连接,最后得到的4选1数据选择器的原理图如图3-5所示。

图3-5 4选1数据选择器原理图

设置好输入时钟脉冲后,点击进行仿真,然后分别点击查看输入输出信

号的示波器查看波形,如图3-6所示,其中信号D3是高电平信号,信号D2为周期是2的脉冲信号,信号D1是低电平信号,信号I0为周期是0.5的脉冲信号。

根据以下波形可以看出所设计的4选1数据选择器,在给不同输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。

MATLAB课程设计报告说明书

图3-6 4选1数据选择器输入输出仿真波形图

3.2 以译码器的级联为例实现系统的封装并仿真

3.2.1 3线8线译码器的封装

在设计完3线8线译码器后为了完成4线16线的设计,需要对3线8线译码器进行封装,下面将详细介绍,首先在3线8线译码器原理图上选中需要封装的部分,然后选择Edit菜单下的Create Subsystem。

在创建好一个新的系统后需要对其进一步封装,设置其有关属性,首先选中创建好的系统后选择Edit菜单下的Mask Subsystem命令,这是就会出现一个对话框:Mask Editor,将这个对话框设置好,模块就封装成功了。首先需要在Icon页设置封装模块的图标,在最顶部的是封装类型,中间的编辑框是用来写如图标绘制命令,这里可以填写MATLAB的绘图命令,但更常用的是显示文本的命令:disp、text、fprintf和port-label。

设置Icon页后还需要设置Documentation页,在该页中的三个编辑框可以分别为封装模块设置封装类型、秒数文件和帮助文件,封装类型我们已经设置好了,它将作为模块的标题出现在对话框的顶部,在模块的描述编辑框中,我们可以填入对模块的描述文本。

设置好Documentation页后对该模块点击OK键就可以看到封装后的模块了,如图3-7所示,模块的中间是输出了我们设置的文本,然后双击该模块,这次看到的不再是子系统的电路了,而是一个模块对话框,封装后的子系统如图3-7所示。

MATLAB课程设计报告说明书

图3-7 封装后的3-8译码器

3.2.2 4线16线译码器的仿真

4线16线译码器可以用2片3线8线译码器和一个反相器级联而成,其原

理图如图3-8所示,

图3-8 4线16线级联原理图

设置好输入时钟脉冲后,点击进行仿真,然后分别点击查看输入输出信

号的示波器查看波形,如图3-9、图3-10和图3-11所示,根据以下波形可以看出所设计的4线16线译码器,在给不同输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。

MATLAB课程设计报告说明书

图3-9 4线16线译码器输入波形

图3-10 低8位输出波形 图3-11 高8位输出波形

MATLAB课程设计报告说明书

3.3 以七段数码管为例子完成数码管的图形输出显示

进入Simulink仿真界面后,按照七段数码管的逻辑表达式逐一拖入所需的原件并进行连接如图3-12所示。

a=(B&C)|((~A)&C)|((~B)&(~D))|((~A)&B&(~C)&D)|(A&(~B)&(~C))|(A&B&(~C)&(~D));

b=((~A)&(~B))|((~B)&(~D))|(A&D&(~C))|((~A)&(~C)&(~D))|((~A)&C&D); c=(A&(~B))|((~A)&B)|((~C)&D)|((~A)&C&D)|((~A)&(~C)&(~D));

d=(A&(~C))|((~B)&C&D)|((~A)&(~B)&(~D))|(B&(~C)&D)|(B&C&(~D)); e=(A&B)|(A&C)|((~B)&(~D))|(C&(~D));

f=(A&(~B))|(A&C)|((~C)&(~D))|((~A)&B&(~C))|(B&C&(~D)); g=(A&(~B))|(A&D)|(C&(~D))|((~A)&B&(~C))|((~A)&(~B)&C);

设置好输入时钟脉冲后,点击

进行仿真,然后分别点击查看输入输出信

号的示波器查看波形,如图3-13和图3-14所示,根据以下波形可以看出所设计的七段数码管,在给不同输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。

图3-12 七段数码管原理图

MATLAB课程设计报告说明书

图3-13 七段数码管输入波形

图3-14 七段数码管输出波形

MATLAB课程设计报告说明书

结束语

在本次设计中主要是应用各种基本组合逻辑器件的真值表化简出对应的逻辑表达式,然后根据这些逻辑表达式在Simulink环境下画出对应的原理图,设定了初始信号之后就可以得到相应的输出波形。在完成所有的设计后,由于本设计所需的逻辑单元种类单一,因此感觉本次设计并没有想象中的那么难,但是对于Simulink中的其他函数并不是十分了解,在以后的学习中需要加强其他方面的学习和应用。

在这个过程中也遇到一些困难,但通过与同学的交流和自己查资料,我对MATLAB有了更深的体会。所以,在今后要进一步增加自己的MATLAB学习,提高自己MATLAB汇编技能。

本次设计需要我们熟悉MATLAB的一些函数的基本功能以及它们的基本语句。当然,经过了课程设计,我也发现了自己的很多不足。但是通过自己的动手动脑,既增加了知识,又给了我专业知识以及专业技能上的提升,我也会更加努力,认真学习,争取在以后的课程中做得更好!

MATLAB课程设计报告说明书

致谢

通过这次课设,我学到了不少东西,首先要感谢学校给我这个自己动手的学习机会,然后很感谢在这次报告中给予过我帮助的老师和同学。在搜集资料的时候遇到了一些困难,很感激那些为我这次报告提供的帮助的人。在这短短的几天中,我不仅学到了许多新的知识,而且也开阔了视野,同时还提高了自己的设计能力。

最后,我再次要感谢帮助过我的同学和老师,和为我们提供良好的做设计环境的学院,这次课设真的提高了自己自己动手学习与制作的能力,并从中得到了成长。

本文来源:https://www.bwwdw.com/article/sqvj.html

Top