基本逻辑电路: 组合逻辑电路、 时序逻辑电路...

88
1 基基基基基基基基基基基基基基基基基基 3.9.1 基基基基基基基基 基基基基基 基基基基 基基基基 、、、 基基基 基基基基基基 基基基基基 、、。 3.9 基基基基基基基基

Upload: allistair-alford

Post on 04-Jan-2016

334 views

Category:

Documents


0 download

DESCRIPTION

基本逻辑电路: 组合逻辑电路、 时序逻辑电路 3.9.1 组合逻辑电路设计 简单门电路、编码器、译码器、 加法器、多路选择器、三态门等。. 3.9 基本逻辑电路设计. 1 、基本门电路. 2 、编码器 设计一个 8 输入优先级编码器, y0 级别最低, y7 级别最高;输出为 3 位编码。. 方法 1 : 利用 if 多选择语句自顶向下的优先特性. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

1

基本逻辑电路: 组合逻辑电路、 时序逻辑电路

3.9.1 组合逻辑电路设计 简单门电路、编码器、译码器、 加法器、多路选择器、三态门等。

3.9 基本逻辑电路设计

Page 2: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

2

1 、基本门电路

Page 3: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

3

2 、编码器 设计一个 8 输入优先级编码器, y0 级别最

低,y7 级别最高;输出为 3 位编码。

Page 4: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

4

方法 1 :利用 if 多选择语句自顶向下的优先特性

Page 5: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

5

方法 2 :进程内为顺序语句,最先描述优先级最低,最后描述优先级最高,可实现优先级编码。

Page 6: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

6

方法 3 :利用条件赋值语句 architecture behavior of priority is begin vec <= “111” when y7 = ‘1’ else “110” when y6 = ‘1’ else “101” when y5 = ‘1’ else “100” when y4 = ‘1’ else “011” when y3 = ‘1’ else “010” when y2 = ‘1’ else “001” when y1 = ‘1’ else “000” when y0 = ‘1’ else “XXX”; end behavior;

Page 7: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

7

3 、译码器 译码器是编码器的逆过程。如 3-8 译码器:

Page 8: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

8

方法 1 :使用逻辑左移运算符 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity decoder is port(inp : in std_logic_vector(2 downto 0); outp : out std_logic_vector(7 downto 0)); end decoder; architecture rtl of decoder is begin outp<=“00000001” sll(conv_integer(inp)); end rtl;

Page 9: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

9

方法 2 :使用 process 语句 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity decoder is port(inp : in std_logic_vector(2 downto 0); outp : out std_logic_vector(7 downto 0)); end decoder; architecture rtl of decoder is begin process(inp) begin outp<=(others=>’0’); outp(conv_integer(inp))<=‘1’; end process; end rtl;

Page 10: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

10

方法 3 :使用 case 语句实现。

Page 11: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

11

译码输出低有效

Page 12: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

12

方法 4 :使用条件赋值语句

Page 13: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

13

3-8 译码器仿真结果:

译码输出低有效

Page 14: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

14

4 、加法器 带进位的 4 位加法器符号如下:

Page 15: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

15

方法 1 :用 for – loop 语句实现

Page 16: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

16

Page 17: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

17

方法 2 :直接使用加法“ +” 函数:

Page 18: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

18

Page 19: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

19

加法器仿真结果:

Page 20: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

20

5 、多路选择器 前面用 if 语句、 case 语句、条 件赋值语句、选择赋值语句分别描 述过 4 选 1 选择器。

6 、三态门及总线缓冲器 VHDL 语言通过指定大写的 Z 值表示高阻状态 a : std_logic; a_bus : std_logic_vector(7 downto 0); 指定高阻状态如下: a <= ‘Z’ ; a_bus <= “ZZZZZZZZ” ;

Page 21: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

21

1 )三态门电路描述

Page 22: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

22

三态门仿真结果:

Page 23: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

23

2 )单向总线缓冲器

Page 24: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

24

3 )双向总线缓冲器

Page 25: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

25

Page 26: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

26

3.9.2 时序逻辑电路设计

触发器、寄存器、计数器、分频器、 信号发生器等。

一、时序电路特殊信号的描述

时钟信号和复位信号

1 、时钟信号描述 常用的描述方式: 1 )进程的敏感信号是时钟信号,在进程内部 用 if 语句描述时钟的边沿条件。

Page 27: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

27

如: process (clock_signal) begin if (clock_edge_condition) then signal_out <= signal_in ; ┇ 其它时序语句 ┇ end if ; end process ;

Page 28: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

28

2 )在进程中用 wait until 语句描述时钟信号,此

时进程将没有敏感信号。如: process begin wait until (clock_edge_condition) ; signal_out <= signal_in ; ┇ 其它时序语句 ┇ end process ;

Page 29: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

29

注意: a. 在对时钟边沿说明时,一定要注明是上升沿 还是下降沿。 b. 一个进程中只能描述一个时钟信号。 c. Wait until 语句只能放在进程的最前面或 最后面。

3 )时钟边沿的描述 时钟上升沿: ( clock’event and clock = ‘1’ ) 时钟下降沿: ( clock’event and clock = ‘0’ )

Page 30: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

30

2 、触发器的复位信号描述 1 )同步复位:在只有以时钟为敏感信号的 进程中定义。如: process (clock_signal) begin if (clock_edge_condition) then if (reset_condition) then signal_out <= reset_value ; else signal_out <= signal_in ; ┇ end if ; end if ; end process ;

Page 31: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

31

2 )异步复位:进程的敏感信号表中除时钟信 号外,还有复位信号。如: process (reset_signal, clock_signal) begin

if (reset_condition) then

signal_out <= reset_value;

elsif (clock_edge_condition) then

signal_out <= signal_in ;

┇ end if ;

end process ;

Page 32: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

32

二、常用时序电路设计1 、触发器( Flip_Flop ) 1 ) D 触发器

Page 33: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

33

异步置位 / 复位 D 触发器

Page 34: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

34

同步复位 D 触发器

Page 35: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

35

比较:异步置位的锁存器( Latch )

Page 36: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

36

2 ) T 触发器 library ieee; use ieee.std_logic_1164.all; entity t_ff is port(t, clk : in std_logic; q : buffer std_logic); end t_ff; architecture rtl of t_ff is begin process(clk) begin if clk’event and clk=‘1’ then q<=not q; end if; end process; end rtl;

Page 37: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

37

3 ) RS 触发器 library ieee;

use ieee.std_logic_1164.all;

entity rs_ff is

port(r, s, clk : in std_logic;

q, qn : buffer std_logic);

end rs_ff;

architecture rtl of rs_ff is

begin

Page 38: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

38

process(r, s, clk) begin if clk’event and clk=‘1’ then if s = ‘1’ and r = ‘0’ then q<=‘0’; qn<=‘1’; elsif s=‘0’ and r=‘1’ then q<=‘1’; qn<=‘0’; elsif s=‘0’ and r=‘0’ then q<=q; qn<=qn; else null; end if; end if; end process; end rtl;

Page 39: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

39

2 、寄存器 8 位串行输入、串行输出移位寄存器:

Page 40: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

40

8 位移位寄存器描述(结构描述)

Page 41: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

41

8 位移位寄存器直接用信号连接描述

Page 42: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

42

Page 43: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

43

移位寄存器仿真结果:

Page 44: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

44

3 、计数器

计数器分为:同步计数器 异步计数器

( 1 )同步计数器

同步计数器指在时钟脉冲(计数脉冲)的控制下,构成计数器的各触发器状态同时发生变化的计数器。

Page 45: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

45

带允许端的十二进制计数器

Page 46: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

46

Page 47: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

47

可逆计数器(加减计数器)

Page 48: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

48

Page 49: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

49

可逆计数器仿真结果:

Page 50: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

50

例:六十进制(分、秒)计数器

Page 51: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

51

Page 52: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

52

60 进制计数器仿真结果:

Page 53: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

53

( 2 )异步计数器

异步计数器又称为行波计数器,它的低位计数器的输出作为高位计数器的时钟信号。 异步计数器采用行波计数,使计数延迟增加,计数器工作频率较低。 描述异步计数器与同步计数器的不同主要体现在对各级时钟脉冲的描述上。

Page 54: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

54

例:由 8 个触发器构成的行波计数器:

Page 55: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

55

基本元件 dffr 的描述:

Page 56: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

56

采用元件例化描述 8 位行波计数器 :

Page 57: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

57

8 位行波计数器仿真结果:

Page 58: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

58

4 、序列信号发生器、检测器 1 )“ 01111110” 序列发生器

Page 59: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

59

Page 60: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

60

Page 61: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

61

Page 62: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

62

仿真结果:

Page 63: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

63

2 )序列信号检测器,检测“ 01111110”

Page 64: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

64

Page 65: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

65

Page 66: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

66

Page 67: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

67

简洁的序列信号检测器:

Page 68: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

68

Page 69: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

69

3.9.3 存储器设计

1 、ROM

Page 70: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

70

Page 71: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

71

2 、 SRAM

Page 72: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

72

Page 73: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

73

Page 74: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

74

仿真结果:

Page 75: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

75

3.10 状态机的 VHDL 设计

状态机的分类: 摩尔型状态机( Moore ) 米勒型状态机( Mealy )

Page 76: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

76

3.10.1 摩尔状态机的 VHDL 设计

摩尔型状态机的输出仅与当前状态有关

次态

逻辑

状态

寄存器

次态

逻辑

复位信号

时钟信号

输入 次态 当前状态

输出

Page 77: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

77

摩尔型状态机真值表:

当前状态 下一状态 输出

X=0 X=1

S0 S0 S2 0

S1 S0 S2 1

S2 S2 S3 1

S3 S3 S1 0

Page 78: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

78

Page 79: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

79

Page 80: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

80

Page 81: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

81

Page 82: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

82

3.10.2 米勒状态机的 VHDL 设计

米勒型状态机的输出不仅是当前状态的函数,也是输入信号的函数。

次态

逻辑

状态

寄存器

次态

逻辑

复位信号

时钟信号

输入 次态 当前状态

输出

Page 83: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

83

米勒型状态机真值表:

当前状态 下一状态 输出

X=0 X=1 X=0 X=1

S0 S0 S2 0 1

S1 S0 S2 0 0

S2 S2 S3 1 0

S3 S3 S1 0 1

Page 84: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

84

Page 85: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

85

Page 86: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

86

Page 87: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

87

Page 88: 基本逻辑电路:                  组合逻辑电路、                  时序逻辑电路 3.9.1   组合逻辑电路设计

88

第 3 章 习题四 1 、给触发器复位的方法有哪两种?如果时钟进程 中用了敏感信号表,哪种复位方法要求把复位 信号放在敏感信号表中? 2 、设计一个任意 n 分频的分频器。 3 、设计一个用于时钟(分、秒)计数的 60 进制的 计数器(分个、十位)。 4 、设计一个用于时钟(小时)计数的 24 进制的计 数器(分个、十位)。 5 、给定一个参考晶振频率 f = 1MHz ,设计一个数 字电子表。