利用simulink实现8线3线编码器的设计仿真

合集下载

8-3编码器,3-8译码器的verilog实现

8-3编码器,3-8译码器的verilog实现

8-3编码器,3-8译码器的verilog实现在数字系统中,由于采⽤⼆进制运算处理数据,因此通常将信息变成若⼲位⼆进制代码。

在逻辑电路中,信号都是以⾼,低电平的形式输出。

编码器:实现编码的数字电路,把输⼊的每个⾼低电平信号编成⼀组对应的⼆进制代码。

设计⼀个输⼊为8个⾼电平有效信号,输出代码为原码输出的3位⼆进制编码器。

化简逻辑表达式:由逻辑表达式可以得出,普通的8-3编码器⽤或门即可实现。

对应的verilog程序如下:module mb_83(x,y);input [7:0]x;output [2:0]y;reg [2:0]y;always@(x)begincase (x)8'b00000001:y=3'b000; //当当 x=8 ’b00000001,则则 y 输出为 3 ’b0008'b00000010:y=3'b001; //当当 x=8 ’b00000010,则则 y 输出为 3 ’b0018'b00000100:y=3'b010; //当当 x=8 ’b00000100,则则 y 输出为 3 ’b0108'b00001000:y=3'b011; //当当 x=8 ’b00001000,则则 y 输出为 3 ’b0118'b00010000:y=3'b100; //当当 x=8 ’b00010000,则则 y 输出为 3 ’b1008'b00100000:y=3'b101; //当当 x=8 ’b00100000,则则 y 输出为 3 ’b1018'b01000000:y=3'b110; //当当 x=8 ’b01000000,则则 y 输出为 3 ’b1108'b10000000:y=3'b111; //当当 x=8 ’b10000000,则则 y 输出为 3 ’b111default: y=3'b000;endcaseendendmodule上述编码器有⼀个缺点,即在某⼀个时刻只允许有⼀个有效的输⼊,⽽同时若⼜有两个或两个以上的输⼊信号要求编码,输出端⼀定会发⽣混乱,出现错误。

实验三-quartus-ii的设计处理(3-8译码器设计)

实验三-quartus-ii的设计处理(3-8译码器设计)

实验三-quartus-ii的设计处理(3-8译码器设计)
《可编程逻辑器件的设计与仿真》
实验报告
实验项目实验三Quartus II的设计处理(3-8译码器设计)
实验目的1.设计一个3-8译码器;
2.学习用VHDL进行逻辑描述。

实验器材PC机,Quartus II
授课形式集中训练任课教师:彭铁牛实验时间:2013-03-17
实验说明本设计实现一个3-8译码器,其逻辑功能如表所示
C B A Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
0 0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0 1
***********
0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 1 1 0 1 1 1 1
1 0 1 1 1 0 1 1 1 1 1
1 1 0 1 0 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1 1
本设计练习用VHDL语言描述仿真译码器。

要求编写3-8译码器的VHDL设计文件。

注意VHDL文件的结构和语法,并掌Quartus II 平台中文本编辑器的使用方法。

实验内容和体会
1
Ⅰ.VHDL源程序Ⅱ.仿真波形Ⅲ.元件符号Ⅳ.实验体会。

Simulink6

Simulink6

• 5)4-16线译码器的搭建 对于两个3-8线译码器,选择任意一个使 能端作为第4个译码输入端。 Ex22_4.mdl
• 3.数据选择器仿真 数据选择器又叫多路 X0 选择器或多路开关。它有 X 1 . m个输入端X0~Xm-1,一 . 个输出端D,n个地址端 . Xm-1 A0~An-1。输入端的个数 m与地址端的位数应满足: 2n=m。在地址码A0~An-1 的控制下,从多个输入中 选择一个,将其送到输出 端。
• 2.6.1 组合逻辑电路仿真 • 1.编码器的仿真 编码器是指用选定的一组0、1序列来识别 特定对象的过程。 设编码器有n个输入端X0,X1,…,Xn1,有m个输出端Z0,Z1,…,Zm-1。规 定在任何给定时间内,n个输入端中只有一 个输入出现,其余n-1个输入均不得出现。 为了建立输入输出之间一一对应的关系, 输出的位数应满足 m logn ,m取整数。
X2 X1 X0 Z0 Z1 Z2 Z3 Z4 Z5 Z6 Z7
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
逻辑表达式: Z2=X4+X5+X6+X7 Z1=X2+X3+X6+X7 Z0=X1+X3+X5+X7 • 2)模型搭建 Ex20.mdl
2.译码器的仿真 译码是编码的逆过程,它将被编成0、1序列的 某种代码还原成原来的对象。
例2.21 3-8线译码器的仿真模型 1)模型分析
3-8线译码器真值表

实验三 3-8译码器仿真及实现

实验三  3-8译码器仿真及实现

实验三3-8译码器仿真及实现一、实验目的和要求本次实验使用Verilog 硬件描述语言在DE1开发平台上设计一个基本组合逻辑电路3-8 译码器,并完成功能仿真和时序仿真。

二、实验环境1、PC机,Pentium 4 2.0G以上,内存1G以上,硬盘500G以上,1024×768彩显,USB接口,网络接口,串口。

2、友晶DE1开发板和相关配件。

3、软件:Windows XP或者Windows 7操作系统,DE1配套光盘。

三、实验内容1、编写3-8的Verilog程序。

2、构建仿真波形文件,实现QuartusII的功能仿真和时序仿真。

3、下载设计到DE1,观察译码输出。

四、实验步骤1、建立Quartus 工程:1)打开Quartus II 工作环境。

2)点击菜单项File->New Project Wizard 帮助新建工程。

3)输入工程目录、工程文件名以及顶层实体名。

自己起名字,例如学号加38等。

注意:输入的顶层实体名必须与之后设计文件的顶层实体名相同,默认的顶层实体名与工程文件名相同,本类实验均采用这种命名方法以便于管理。

不要使用Quartus II的根目录作为工程目录。

4)添加设计文件。

如果用户之前已经有设计文件(比如.v 文件)。

那么直接添加相应文件,如果没有完成的设计文件,点击Next 之后添加并且编辑新的设计文件。

5)选择设计所用器件。

由于本次实验使用 Altera 公司提供的DE1 开发板,用户必须选择与之相对应的FPGA 器件型号,如下图:6)设置 EDA 工具。

设计中可能会用到的EDA 工具有综合工具、仿真工具以及时序分析工具。

本次实验中不使用这些工具,因此点击Next 直接跳过设置。

7)查看新建工程总结。

在基本设计完成后,Quartus II 会自动生成一个总结让用户核对之前的设计,确认后点击Finish 完成新建。

8)培养良好的文件布局。

Quartus II 默认把所有编译结果放在工程的根目录,为了让Quartus II 像Visual Studio 等IDE 一样把编译结果放在一个单独的目录中,需要指定编译结果输出路径。

实验三+3-8译码器仿真及实现

实验三+3-8译码器仿真及实现

实验三3-8译码器仿真及实现姓名:学号:班级:日期:一、实验目的和要求本次实验使用Verilog 硬件描述语言在DE1开发平台上设计一个基本组合逻辑电路3-8 译码器,并完成功能仿真和时序仿真。

二、实验环境1、PC机,Pentium 4 2.0G以上,内存1G以上,硬盘500G以上,1024×768彩显,USB接口,网络接口,串口。

2、友晶DE1开发板和相关配件。

3、软件:Windows XP或者Windows 7操作系统,DE1配套光盘。

三、实验内容1、编写3-8的Verilog程序。

2、构建仿真波形文件,实现QuartusII的功能仿真和时序仿真。

3、下载设计到DE1,观察译码输出。

四、实验步骤1、建立Quartus 工程:1)打开Quartus II 工作环境。

2)点击菜单项File->New Project Wizard 帮助新建工程。

3)输入工程目录、工程文件名以及顶层实体名。

自己起名字,例如学号加38等。

注意:输入的顶层实体名必须与之后设计文件的顶层实体名相同,默认的顶层实体名与工程文件名相同,本类实验均采用这种命名方法以便于管理。

不要使用Quartus II的根目录作为工程目录。

4)添加设计文件。

如果用户之前已经有设计文件(比如.v 文件)。

那么直接添加相应文件,如果没有完成的设计文件,点击Next 之后添加并且编辑新的设计文件。

5)选择设计所用器件。

由于本次实验使用 Altera 公司提供的DE1 开发板,用户必须选择与之相对应的FPGA 器件型号,如下图:6)设置 EDA 工具。

设计中可能会用到的EDA 工具有综合工具、仿真工具以及时序分析工具。

本次实验中不使用这些工具,因此点击Next 直接跳过设置。

7)查看新建工程总结。

在基本设计完成后,Quartus II 会自动生成一个总结让用户核对之前的设计,确认后点击Finish 完成新建。

8)培养良好的文件布局。

Quartus II 默认把所有编译结果放在工程的根目录,为了让Quartus II 像Visual Studio 等IDE 一样把编译结果放在一个单独的目录中,需要指定编译结果输出路径。

实验四-编码器-和译码器电路仿真实验

实验四-编码器-和译码器电路仿真实验

实验四编码器、译码器电路仿真实验一、实验目的1、掌握编码器、译码器的工作原理。

2、常见编码器、译码器的应用。

二、实验原理数字信号不仅可以用来表示数,还可以用来表示各种指令和信息。

所谓编码是指在选定的一系列二进制数码中,赋予每个二进制数码以某一固定含义。

例如,用二进制数码表示十六进制数叫做二-十六进制编码。

能完成编码功能的电路统称为编码器。

74LS148D是常用的八-三优先编码器。

在八个输入线上可以同时出现几个有效输入信号,但只对其中优先权最高的一个有效输入信号进行编码。

其中7端优先权最高,0端优先权最低,其他端的优先权按照脚号的递减顺去排列。

~E1为选通输入端,低电平有效,只有~EI=0时,编码器正常工作,而在~EI=1时,所有的输出端均被封锁。

E0为选通输出端,GS为优先标志端。

该编码器输入、输出均为低电平有效。

译码是编码的逆过程,将输入的每个二进制代码赋予的含义“翻译”过来,给出相应的输出信号。

能够完成译码功能的电路叫做译码器。

74LS138D属于三-八线译码器,该译码器输入高电平有效,输出低电平有效。

三、实验步骤1、8-3线优先编码器:如下图所示连接电路:切换9个单刀双掷开关进行仿真实验,将结果记录入下表中,输入端“1”表示高电平,“0”表示低电平,“X”表示高低电平都可以。

输出端中的“1”表示探测器亮,“0”表示探测器灭。

该编码器输入、输出均为低电平有效。

2、3-8线译码器实验步骤如下图所示连接电路切换3个单刀双掷开关进行仿真实验,实验结果记录如下表中。

输入端中的“1”表示接高电平,“0”表示接地电平。

输出端中的“1”表示探测器亮,“0”表示探测器灭。

该译码器输入高电平有效,输出低电平有效。

四、思考题:(1)利用两块8-3线优先编码器74LS148D设计16-4线优先编码电路,然后仿真实验验证16-4线优先编码的逻辑功能。

实验线路如图:真值表如图所示:(2)利用两块3-8线译码器74LS138D设计4-16线译码器,然后仿真验证4-16线译码逻辑功能。

实验二 8线-3线编码器设计

实验二 8线-3线编码器设计

实验名称 8线-3线编码器设计指导老师尚丽娜成绩专业电科班级 1102 姓名汪磊学号31102333一、实验目的1、学习QuartusII软件,学习使用硬件描述语言设计电路。

2、学习DE1平台基本构成,能够使用DE1平台进行简单设计。

二、实验要求使用QuartusII文本输入法设计8线-3线编码器。

使用QuartusII软件进行文本输入,并对设计电路进行仿真,并下载到硬件平台,自行定义硬件平台使用端口。

三、实验设备PC机、DE1硬件平台四、实验原理根据8线—3线编码器的真值表原理进行实验,下表为8线—3线编码器的真值表五、实验过程library ieee;use ieee.std_logic_1164.all;entity bm8_3 isport(a:in std_logic_vector(7 downto 0);b:out std_logic_vector(2 downto 0));end bm8_3;architecture zhang of bm8_3 isbeginprocess(a)begincase a iswhen"00000001"=>b<="000";when"00000010"=>b<="001";when"00000100"=>b<="010";when"00001000"=>b<="011";when"00010000"=>b<="100";when"00100000"=>b<="101";when"01000000"=>b<="110";when others=>b<="111";end case;end process;end zhang;六、实验结果该程序还存在一些不足,当出现10000000是和非正常输入的时候是一样的输出,所以我们进行了一些修改,修改程序与结果如下:library ieee;use ieee.std_logic_1164.all;entity e isport(a:in std_logic_vector(7 downto 0);b:out std_logic_vector(3 downto 0));end e;architecture zhang of e isbeginprocess(a)begincase a iswhen"00000001"=>b<="0000";when"00000010"=>b<="0001";when"00000100"=>b<="0010";when"00001000"=>b<="0011";when"00010000"=>b<="0100";when"00100000"=>b<="0101";when"01000000"=>b<="0110";when"10000000"=>b<="0111";when others=>b<="1111";end case;end process;end zhang;思考题一:思考题二:entity e isport(a:in bit_vector(7 downto 0);b:out bit_vector(3 downto 0)); end e;architecture zhang of e isbeginprocess(a)begincase a iswhen"00000001"=>b<="0000";when"00000010"=>b<="0001";when"00000100"=>b<="0010";when"00001000"=>b<="0011";when"00010000"=>b<="0100";when"00100000"=>b<="0101";when"01000000"=>b<="0110";when"10000000"=>b<="0111";when others=>b<="1111";end case;end process;end zhang;七、心得体会对操作更加熟练,加深对其的认识。

8-3译码器实验报告

8-3译码器实验报告

实验报告
学院:专业:班级:
8'b0100_0000:led<=3'b110; //当输入信号是位宽为8位的二进制数据01000000时,输出信号为位宽
为3位的二进制数据110
8'b1000_0000:led<=3'b111; //当输入信号是位宽为8位的二进制数据时,输出信号为位宽为3位的
二进制数据111
default :led<=3'b000; //当输入信号是位宽为8位的二进制数据00000001时,输出信号为位宽
为3位的二进制数据000
endcase //结束分支语句
end //结束循环语句
endmodule //结束模块




上图为波形仿真。

如图可知,当输入信号为00000001时,输出信号为000;输入信号为00000010时,输出信号为001;
输入信号为00000100时,输出信号为010;输入信号为00001000时,输出信号为011;输入信号为00010000时,输出信号为100;输入信号为00100000时,输出信号为101;输入信号为01000000时,输出信号为
注:各学院可根据教学需要对以上栏木进行增减。

表格内容可根据内容扩充。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用simulink实现8线3线编码器的设计仿真
1 问题描述(8线3线编码的设计的数学建模)
在数字电路中,编码器、译码器的应用极为广泛。

所谓编码,就是在选定的一系列二值代码中赋予每个代码以固定的含义,执行编码功能的电路统称为编码器。

实现8线3线编码器,它的功能是对输入端的8个信号进行编码,输出三位二进制数。

要求输入信号每次只有一个事0,其余7个是1。

其中0值是待编码信号。

我们将用MATLAB 的simulink软件包实现这种常用的数字组合逻辑电路,并进行仿真。

2. 系统模型及建模分析
根据前面介绍的8线3线编码器的功能,可列出下面得真值表:
有了真值表之后,就可以写出输入输出间的逻辑函数式如下:
在写出逻辑表达式之后,我们就可以用与非门来实现这个表达式。

3. 仿真实现;
在进行仿真时,将在8个输入端依次加一个低电平,然后用3个示波器观察3个输出波形。

用simulink实现这个数学电路系统一共分三个步骤:
第一步:添加模块,在MATLAB中运行simulink,打开模块浏览器,然后新建一个模型。

接下来把本次仿真需要的模块添加到模型中。

这里共需要三种模块:与非门4个,离散信号脉冲源8个,示波器3个。

与非门位于simulink模块库中的logocal operater,离散信号源脉冲
精选
位于simulink—sources—pulse generator,示波器位于simulink—sinks—scope。

将这三种模块到拖到一个模型中。

点击与非门模块的名称,即写着Logical Operator 的区域,将名称改为Y0,接着点击选中与非门模块不要松开鼠标,按住Ctrl 键拖动这个模块到另一个位置,就会复制一个新的Y1模块。

用同样的方法得到Y2,类似地将离散信号脉冲源模块名字改为J0,同样得到J0,J1…J7。

最后将示波器复制三个。

这样一来就将所有模块添加到模型中了。

第二步:修改模块参数
首先双击Y0,打开属性对话框,将操作(Operator)修改为“NAND”,输入节点数改为4,然后点击OK确定。

Y1,Y2也做同样修改。

然后,通过双击示波器模块Scope,得到一个图形界面,在其工具栏上单击打印图标右边的Parameters图标,打开示波器属性设置对话框,将坐标轴改为3,同样地,将示波器Scope1,Scope2的坐标轴数改为4。

最后修改脉冲源的属性。

双击离散脉冲源J0,将看到关于它的属性对话框,可以从对话框中看到5个参数设置,分别为:
Amolititude:方波信号的幅度;
Period:方波信号的周期;
Pulse width: 脉冲宽度;
Sample Time:采样时间长度,以秒为单位。

针对这个例子中的要求,我们需要J0到J7依次为低电平,所以将J0到J7的周期调整为8,脉冲宽度设为7,相位延迟为-7到0,幅度和采样时间用默认值。

这样在零时刻,J0为低电平,其余输入为高电平;过一个采样时间,J1变为低电平。

这样下去,到第七个采样时间,J7变为低电平。

从而实现了设计要求。

第三步:联系及仿真
现在将各模块之间的连线上。

根据输入输出的逻辑表达式,将J1、J3、J5、J7接到Y0的输入,将J2、J3、J6、J7接到Y1的输入,将J4、J5、J6、J7接到Y2 的输入。

然后用示波器Scope监测Y2、Y1、Y0的输出,Scope1 用来监视J0到J3这4个波形,Scope2 用来监视J4到J7这4个波形。

这样我们就完成了连线、
在最后进行仿真之前,先保存结果到自己的工作目录里。

仿真结束后,可以从示波器Scope1,Scope2 上看到编码器的8个输入端的波形,在示波器Scope中看到编码器输出波形。

4. 实验过程中遇到的问题;
在初建立simulink模型时,我找不到simulink模块浏览器与题相匹配的仿真模块,开始以为是机房MA TLAB版本太低,准备要放弃这个课题。

后来通过对相似模块的研究发现,原题中需要的Discrete Pulse Generator 可以通过Pulse Generator 改变time 为Sample **就可以实现。

在设置离散脉冲源信号的时候,没有依次将Phase dalay(相位延迟)设置为-7—0,只是随便设定了一个数字,后来波形出现混乱,无法出现预期效果。

通过对8线3线编码器的研究和其逻辑功能的实现,我明白了其中的不妥,从而做出了改正。

由于对Simulink开始的不熟悉,造成了在连线过程中出现很多阻挠,比如,改变输入输出端口数目的操作,改变输入输出端口方向的操作,设定示波器时间的操作,这样使我开始在连线时,将整个仿真图连得很乱,没有清晰地方向,不能一目了然,通过同学的帮助,和对相关书籍的学习,我基本掌握了Simulink中的基本操作。

在建模过程中,开始也是毫无头绪,虽然有了课题,但是还是无从下手,但是通过研究,结果并没有我想象中那么复杂,只是利用最基本的仿真模块就可以达到预期效果,这让我对Simulink这门技术产生了好感。

5. 仿真结果分析
8线3线编码器仿真后,当输入J0到J7依次以1为单位的相移变化时,示波器的波形跟着变化,如果J0为低电平,则Y0.Y1.Y2的输出波形为低电平,表示0的二进制数,J4为低电平时,则Y0为低电平,Y1,Y2为高电平,表示4的二进制数,从而实现了编码的功能。

6. 总结
通过对具体模型的建立和利用Simulink的仿真实现,我体会到了实践的重要性,通常一
精选
个模型的建立在开始的时候都是看似很难的,其实,在仔细研究过后,才发现只要认真分析其中的每个细节都能个个攻破,最后达到预想结果,当然,我的这个模型只是具体实际应用中的一个小环节,没有用到太多高功能的技术,但是,我想只要对实际问题认真分析,就能建立一个有利于各种现实问题的解决。

通过对Simulink的学习,我对这门技术产生了兴趣,它能帮助我们更好的解决更多在现实中不可实现的仿真。

相关文档
最新文档