EDA实验-- 译码器与编码器的设计与仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三译码器与编码器的设计与仿真
一、实验目的:
熟悉Quartus软件的基本操作,掌握用Quartus软件验证VHDL语言。熟悉译码器与编码器所实现功能及其应用,通过实验堆译码器与编码器有更深刻理解。一、实验内容:
1.参照芯片74LS138的电路结构,用逻辑图和VHDL语言设计3-8译码器;2.参照芯片74LS148的电路结构,用逻辑图和VHDL语言设计8-3优先编码器。
三、实验原理:
电路功能介绍
1.74148:8-3优先编码器(8 to 3 Priority Encoder)
用途:将各种输入信号转换成一组二进制代码,使得计算机可以识别这一信号的作用。键盘里就有大家天天打交道的编码器,当你敲击按键时,被敲击的按键被键盘里的编码器编码成计算机能够识别的ASCII码。译码器与编码器的功能正好相反。
逻辑框图
逻辑功能表
INPUTS OUTPUTS
EN 0N 1N 2N 3N 4N 5N 6N 7N A2 A1 A0 EO GS
1 × × × × × × × × 1 1 1 1 1
0 × × × × × × × 0 0 0 0 0 1
0 × × × × × × 0 1 0 0 1 0 1
0 × × × × × 0 1 1 0 1 0 0 1
0 × × × × 0 1 1 1 0 1 1 0 1
0 × × × 0 1 1 1 1 1 0 0 0 1
0 × × 0 1 1 1 1 1 1 0 1 0 1
0 × 0 1 1 1 1 1 1 1 1 0 0 1
0 0 1 1 1 1 1 1 1 1 1 1 0 1
0 1 1 1 1 1 1 1 1 1 1 1 1 0
逻辑表达式和逻辑图:由你来完成。
2.74138:3-8译码器(3 to 8 Demultiplexer),也叫3-8解码器
用途:用一组二进制代码来产生各种独立的输出信号,这种输出信号可以用来执行不同的工作。显示器中的像素点受到译码器的输出控制。
逻辑框图:用逻辑符号(Symbol)来解释该电路输入与输出信号之间的逻辑关系,既省事又直观。如下图所示。
代
码
输入端
解
码
信
号
输
出
端低
电
平
有
效
使能输入端
逻辑功能表:用真值表来定量描述该电路的逻辑功能。这个表是设计3-8译码器的关键;74138的逻辑功能表如下:
注:使能端G1是高电平有效;
使能端G2是低电平有效,G2 = G2A AND G2B。
四、实验步骤:
1、译码器:
(1)在Quartus软件中输入以下程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity lbz3 is
port (A : in std_logic_vector(2 downto 0);
Y : out std_logic_vector(7 downto 0));
end lbz3;
architecture art of lbz3 is
begin
Y<="10000000" when(A="111")else
"01000000" when(A="110")else
"00100000" when(A="101")else
"00010000" when(A="100")else
"00001000" when(A="011")else
"00000100" when(A="010")else
"00000010" when(A="001")else
"00000001";
end art;
在Quartus中对程序进行编译如下所示:
从编译界面可以看到程序运行无错误;通过“RTL viewer”按钮生成综合电路图如下:
(2)根据综合电路图生成如下功能仿真波形:
如仿真图可以看出当A=“001”时Y=“00000010”,同理当A取其他值时Y也输出相应的值,满足译码器逻辑功能表。
(3)对应时序波形如下所示:
2、编码器:
(1)在Quartus软件中输入以下程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity lbz31 is
port (A : in std_logic_vector(0 to 7);
Y : out std_logic_vector(0 to 2));
end lbz31;
architecture art of lbz31 is
begin
process(A)
begin
if (A(7)='0')then Y<="111";
elsif (A(7)='0')then Y<="111";
elsif (A(6)='0')then Y<="110";
elsif (A(5)='0')then Y<="101";
elsif (A(4)='0')then Y<="100";
elsif (A(3)='0')then Y<="011";
elsif (A(2)='0')then Y<="010";
elsif (A(1)='0')then Y<="001";
elsif (A(0)='0')then Y<="000";
end if;
end process;
end;
(2)在Quartus中对程序进行编译如下所示:
从编译界面可以看到程序运行无错误;通过“RTL viewer”按钮生成综合电路图如下: