EDA实验-- 译码器与编码器的设计与仿真

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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码。译码器与编码器的功能正好相反。

逻辑框图

逻辑功能表

1

1 1 1 1 1 1 1 1 1 1 1

1

逻辑表达式和逻辑图:由你来完成。

2.74138:3-8译码器(3 to 8 Demultiplexer ),也叫3-8解码器

用途:用一组二进制代码来产生各种独立的输出信号,这种输出

信号可以用来执行不同的工作。显示器中的像素点受到译码器的输出控制。

逻辑框图:用逻辑符号(Symbol )来解释该电路输入与输出信

号之间的逻辑关系,既省事又直观。如下图所示。

逻辑功能表:用真值表来定量描述该电路的逻辑功能。这个表是

设计3-8译码器的关键;74138的逻辑功能表如下:

INPUT

OUTPUT

Select Enable C B A

G1  ̄G HA  ̄G 2B

 ̄Y  ̄7  ̄Y  ̄6  ̄ ̄Y  ̄5  ̄ ̄Y  ̄4  ̄Y  ̄3  ̄Y  ̄2  ̄Y  ̄1  ̄Y  ̄0 代码输入端

解码信号输出端

低电平有效

使能输入端

注:使能端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”按钮生成综合电路图如下:

(3)根据综合电路图生成如下功能仿真波形:

如仿真图可以看出当A=“10000000”时Y=“110”,同理当A取其他值时Y 也输出相应的值,满足译码器逻辑功能表。

(4)对应时序波形如下所示:

相关文档
最新文档