1 / 60
文档名称:

组合逻辑电路设计 (2).ppt

格式:ppt   大小:3,776KB   页数:60页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

组合逻辑电路设计 (2).ppt

上传人:文库新人 2021/10/31 文件大小:3.69 MB

下载得到文件列表

组合逻辑电路设计 (2).ppt

文档介绍

文档介绍:组合逻辑电路设计
第一页,共60页
有关VHDL电路设计语言的语法知识及电路设计的重要概念,都已在前面几章给了说明。本章将重心放在VHDL电路设计语言的实际运用上。本章中将有一些实际电路设计范例,如:译码器与编码器、数据选择器与解数据选择器、数码转换、比较器 、只读存储器等,说明如何使用VHDL电路设计语言,来设计一些经常会使用到的组合逻辑电路。
第二页,共60页
4-1 译码器与编码器
译码器与编码器的功能类似,它们都是用来做码和码之间的转换器,只是功能恰好相反。译码器是把输入的数码解出其对应的数码,如果有N个二进制选择线,则最多可以码转换成2N个数据。当一个译码器有N条输入线及M条输出线时,这时为N×M的译码器,如3×8译码器。
译码器也经常被应用在地址总线或用作电路的控制线。像只读存储器(ROM)中便利用译码器进行地址选址的工作。
第三页,共60页
4-1-1 译码器的设计
对于译码器,第一个想到的当然是输入数码和输出数码之间的对应关系,也就是说,“输入码和输出码之间的对应表”这应该算是设计译码器的必须条件。例如下面常见的3×8译码器的真值表:
A0 A1 A2
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
0 0 0
10000000
0 0 1
01000000
0 1 0
00100000
0 1 1
00010000
1 0 0
00001000
1 0 1
00000100
1 1 0
00000010
1 1 1
00000001
第四页,共60页
3×8译码器的VHDL设计。
3×8译码器,就表示它有3条输入线及8条输出线。另外为了方便译码器的控制或便于扩充之用,在设计时常会增加一个EN输入端。译码器的外部配置如图4-1所示。
Y0
A0
A1
A2
EN
Y1
Y2
Y4
Y3
Y5
Y7
Y6
图4-1 3×8译码器
第五页,共60页
有了真值表,就可以直接用查表法(look up table)来设计,在VHDL的语法中,“WITH…SELECT”、“CASE…WHEN”及“WHEN…ELSE”这类指令都是执行查表或对应动作的能手,使用前应确定需要的是顺序性语句还是并行同时性命令,否则程序在进行编译时,会发生错误。
第六页,共60页
程序范例(程序文件\EDA\)
LIBRARY IEEE;
USE ;
ENTITY ch4_1_1 IS
PORT
(
A : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
EN : IN STD_LOGIC;
Y : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);

END ch4_1_1;
接下页
第七页,共60页
ARCHITECTURE a OF ch4_1_1 IS
SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
SEL(0)<=EN;
SEL(1)<=A(0);
SEL(2)<=A(1);
SEL(3)<=A(2);
WITH SEL SELECT
Y<="00000001" WHEN "0001",
"00000010" WHEN "0011",
"00000100" WHEN "0101",
"00001000" WHEN "0111",
"00010000" WHEN "1001",
"00100000" WHEN "1011",
"01000000" WHEN "1101",
"10000000" WHEN "1111",
"11111111" WHEN OTHERS;
END a;
只要将真值表内的数据,依次填入语法中,便完成编码的动作。
最后一个位是EN
将EN、A2、A1、A0合并成序列,目的是将“EN”脚的功能,融入程序及电路中。当EN=1时,译码器工作正常,当EN=0时,译码器不动作。
第八页,共60页
程序说明:
(1)将EN、A2、A1、A0合并成序列的另一种写法是:     “SEL<=A&EN”。
(2)with…select是一种非常好用的并行同时语法,和 其它功能相同,属于顺序语法的是case…select, 两者都是执行这种查表动作的利器。
第九页,共60页
仿真结果:
当EN=1时,译码器工作正常,当EN=0时,译码器