MC 542 Organizao de Computadores Teoria e Prtica

  • Slides: 39
Download presentation
MC 542 Organização de Computadores Teoria e Prática 2006 Prof. Paulo Cesar Centoducatte@ic. unicamp.

MC 542 Organização de Computadores Teoria e Prática 2006 Prof. Paulo Cesar Centoducatte@ic. unicamp. br www. ic. unicamp. br/~ducatte MO 401 5. 1

MC 542 Circuitos Lógicos Circuitos Combinacionáis Blocos Básicos “Fundamentals of Digital Logic with VHDL

MC 542 Circuitos Lógicos Circuitos Combinacionáis Blocos Básicos “Fundamentals of Digital Logic with VHDL Design” - (Capítulo 6) MO 401 5. 2

Circuitos Combinacionáis: Blocos Básicos Sumário • Multiplexador • • • Decodificador Codificador de Prioridade

Circuitos Combinacionáis: Blocos Básicos Sumário • Multiplexador • • • Decodificador Codificador de Prioridade Conversores Comparador VHDL para Circuito Combinacional – Implementação de Funções Lógicas Usando Mux – – – Select Atribuição Condicional Processos » If-Then-Else » Case MO 401 5. 3

Multiplexador: 2 para 1 (2: 1) s w 0 w 1 0 1 f

Multiplexador: 2 para 1 (2: 1) s w 0 w 1 0 1 f s f 0 1 w 0 w 1 Tabela Verdade Símbolo Gráfico w 0 s f w 1 s w 1 Suma-de-produtos f transmission gates MO 401 5. 4

Multiplexador: 4 para 1 (4: 1) s 0 s 1 w 0 w 1

Multiplexador: 4 para 1 (4: 1) s 0 s 1 w 0 w 1 w 2 w 3 s s 1 0 00 01 10 11 f s 0 w 0 0 1 1 s 1 w f w 0 w 1 w 2 w 3 1 f w w 2 3 MO 401 5. 5

Mux 4: 1 a partir de Mux 2: 1 s s w w 1

Mux 4: 1 a partir de Mux 2: 1 s s w w 1 0 0 0 1 1 0 f 1 w w 2 0 3 1 MO 401 5. 6

Mux 16: 1 s 0 s 1 w w 0 3 4 s 2

Mux 16: 1 s 0 s 1 w w 0 3 4 s 2 s 3 7 f w w 8 11 12 15 MO 401 5. 7

Exemplo de Uso de Mux 2 x 2 crossbar switch s x 1 x

Exemplo de Uso de Mux 2 x 2 crossbar switch s x 1 x 2 y 1 y 2 x 1 0 1 y 1 s x 2 0 1 y 2 MO 401 5. 8

Síntese de Funções Lógicas Usando MUX w 1 1 0 0 w 2 0

Síntese de Funções Lógicas Usando MUX w 1 1 0 0 w 2 0 1 2 w 0 1 1 1 0 0 w f 0 0 w w f w 2 1 0 1 f 1 0 f 1 w 0 0 w 1 2 1 1 1 0 w 2 f MO 401 5. 9

Exemplo w 1 w 2 w 3 f 0 0 0 1 1 0

Exemplo w 1 w 2 w 3 f 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 w 2 0 0 1 1 w w 0 1 f 0 w 3 1 2 1 0 w 3 f 1 MO 401 5. 10

Exempo w 1 w 2 w 3 f 0 0 0 1 1 0

Exempo w 1 w 2 w 3 f 0 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 w 2 Å w 3 w w 2 w 1 3 f w 2 Å w 3 MO 401 5. 11

Exemplo w 1 w 2 w 3 f 0 0 0 1 1 0

Exemplo w 1 w 2 w 3 f 0 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 w 3 w w w 3 w 2 1 3 f 3 3 MO 401 5. 12

Exemplo Maioria de uns w 1 w 2 w 3 f 0 0 0

Exemplo Maioria de uns w 1 w 2 w 3 f 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 w f 1 0 w w 1 w + w w w 2 2 3 3 w 2 1 3 f MO 401 5. 13

Exemplo Maioria de uns MO 401 5. 14

Exemplo Maioria de uns MO 401 5. 14

Decodificador w y 0 0 n 2 inputs w Enable outputs n– 1 En

Decodificador w y 0 0 n 2 inputs w Enable outputs n– 1 En n y 2 n – 1 MO 401 5. 15

Decodicifador 2: 4 En w w 1 0 y y 0 1 2 3

Decodicifador 2: 4 En w w 1 0 y y 0 1 2 3 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 x x 0 0 w 0 y 0 w 1 y 2 w 0 w 1 En y 0 y 1 y 2 y 3 En MO 401 5. 16

Decodicifador 3: 8 Usando 2: 4 w 0 y 0 w 1 y 1

Decodicifador 3: 8 Usando 2: 4 w 0 y 0 w 1 y 1 y 2 En y 3 w 0 y 4 w 1 y 5 y 2 y 6 y 3 y 7 w 2 En En MO 401 5. 17

Decodicifador 4: 16 Usando 2: 4 w 0 w 1 En w 0 w

Decodicifador 4: 16 Usando 2: 4 w 0 w 1 En w 0 w 1 w 2 w 3 w 0 w 1 En En y 0 y 1 y 2 y 3 En w 0 w 1 En y 0 y 1 y 2 y 3 y 4 y 5 y 6 y 7 y 0 y 1 y 2 y 3 y 8 y 9 y 10 y 11 y 0 y 1 y 2 y 3 y 12 y 13 y 14 y 15 MO 401 5. 18

Address a 0 a 1 am– 1 m-to-2 mdecoder Memória 2 m x n

Address a 0 a 1 am– 1 m-to-2 mdecoder Memória 2 m x n read-only memory (ROM) Sel 0 0/1 0/1 Sel 1 0/1 0/1 Sel 2 0/1 0/1 Sel m 2 – 1 0/1 0/1 Read Data dn– 1 dn– 2 d 0 MO 401 5. 19

Codificador w 0 y 0 2 n n inputs outputs y w n– 1

Codificador w 0 y 0 2 n n inputs outputs y w n– 1 2 n-to-n binary encoder MO 401 5. 20

Codificador Binário 4: 2 w w 3 2 1 0 y y 1 0

Codificador Binário 4: 2 w w 3 2 1 0 y y 1 0 0 0 0 1 0 1 0 0 0 1 1 w w 0 1 y 0 2 y 3 1 MO 401 5. 21

Codificador de Prioridade w 3 w 2 w 1 w 0 y 1 y

Codificador de Prioridade w 3 w 2 w 1 w 0 y 1 y 0 z 0 0 d d 0 0 1 x 0 1 1 0 1 x x 1 0 1 1 x x x 1 1 1 Exercício: Qual o Circuito Lógico? MO 401 5. 22

Conversor BCD para Código Display de 7 segmentos a f e b g w

Conversor BCD para Código Display de 7 segmentos a f e b g w 0 w 1 w 2 w 3 c d a b c d e f g Display 7 -segmentos w w 3 2 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 a b c d e f g 1 0 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 MO 401 5. 23

Comparador de 4 bits a 3 b 3 i 3 a 2 b 2

Comparador de 4 bits a 3 b 3 i 3 a 2 b 2 i 2 a 1 b 1 i 1 a 0 b 0 i 0 Aeq. B Alt. B Agt. B MO 401 5. 24

Circuito Combinacional VHDL • Comandos de Atribuição: – Mux 2: 1 - Comando Select

Circuito Combinacional VHDL • Comandos de Atribuição: – Mux 2: 1 - Comando Select LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 2 to 1 IS PORT ( w 0, w 1, s : IN f : OUT END mux 2 to 1 ; STD_LOGIC ; STD_LOGIC ) ; ARCHITECTURE Behavior OF mux 2 to 1 IS BEGIN WITH s SELECT f <= w 0 WHEN '0', w 1 WHEN OTHERS ; END Behavior ; MO 401 5. 25

Circuito Combinacional VHDL • Mux 4: 1 – Comando Select LIBRARY ieee ; USE

Circuito Combinacional VHDL • Mux 4: 1 – Comando Select LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 4 to 1 IS PORT ( w 0, w 1, w 2, w 3 s f END mux 4 to 1 ; : IN : OUT STD_LOGIC ; STD_LOGIC_VECTOR(1 DOWNTO 0) ; STD_LOGIC ) ; ARCHITECTURE Behavior OF mux 4 to 1 IS BEGIN WITH s SELECT f <= w 0 WHEN "00", w 1 WHEN "01", w 2 WHEN "10", w 3 WHEN OTHERS ; END Behavior ; MO 401 5. 26

Circuito Combinacional VHDL • Mux 4: 1 - Como um Componente LIBRARY ieee ;

Circuito Combinacional VHDL • Mux 4: 1 - Como um Componente LIBRARY ieee ; USE ieee. std_logic_1164. all ; PACKAGE mux 4 to 1_package IS COMPONENT mux 4 to 1 PORT ( w 0, w 1, w 2, w 3 : IN STD_LOGIC ; s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; f : OUT STD_LOGIC ) ; END COMPONENT ; END mux 4 to 1_package ; MO 401 5. 27

 • Mux 16: 1 usando o Componente Mux 4: 1 LIBRARY ieee ;

• Mux 16: 1 usando o Componente Mux 4: 1 LIBRARY ieee ; USE ieee. std_logic_1164. all ; LIBRARY work ; USE work. mux 4 to 1_package. all ; ENTITY mux 16 to 1 IS PORT ( w : IN s : IN f : OUT END mux 16 to 1 ; STD_LOGIC_VECTOR(0 TO 15) ; STD_LOGIC_VECTOR(3 DOWNTO 0) ; STD_LOGIC ) ; ARCHITECTURE Structure OF mux 16 to 1 IS SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ; BEGIN Mux 1: mux 4 to 1 PORT MAP ( w(0), w(1), w(2), w(3), s(1 DOWNTO 0), m(0) ) ; Mux 2: mux 4 to 1 PORT MAP ( w(4), w(5), w(6), w(7), s(1 DOWNTO 0), m(1) ) ; Mux 3: mux 4 to 1 PORT MAP ( w(8), w(9), w(10), w(11), s(1 DOWNTO 0), m(2) ) ; Mux 4: mux 4 to 1 PORT MAP ( w(12), w(13), w(14), w(15), s(1 DOWNTO 0), m(3) ) ; Mux 5: mux 4 to 1 PORT MAP ( m(0), m(1), m(2), m(3), s(3 DOWNTO 2), f ) ; END Structure ; MO 401 5. 28

Decodificador Binário LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY dec 2 to

Decodificador Binário LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY dec 2 to 4 IS PORT ( w : IN En : IN y : OUT END dec 2 to 4 ; STD_LOGIC_VECTOR(1 DOWNTO 0) ; STD_LOGIC_VECTOR(0 TO 3) ) ; ARCHITECTURE Behavior OF dec 2 to 4 IS SIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO 0) ; BEGIN Enw <= En & w ; WITH Enw SELECT y <= "1000" WHEN "100", "0100" WHEN "101", "0010" WHEN "110", "0001" WHEN "111", "0000" WHEN OTHERS ; END Behavior ; MO 401 5. 29

Circuito Combinacional VHDL • Mux 2: 1 Comando Condicional LIBRARY ieee ; USE ieee.

Circuito Combinacional VHDL • Mux 2: 1 Comando Condicional LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 2 to 1 IS PORT ( w 0, w 1, s f END mux 2 to 1 ; : IN : OUT STD_LOGIC ; STD_LOGIC ) ; ARCHITECTURE Behavior OF mux 2 to 1 IS BEGIN f <= w 0 WHEN s = '0' ELSE w 1 ; END Behavior ; MO 401 5. 30

Circuito Combinacional VHDL • Processo (mux 2: 1) – Comando IF-Then-Else LIBRARY ieee ;

Circuito Combinacional VHDL • Processo (mux 2: 1) – Comando IF-Then-Else LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 2 to 1 IS PORT ( w 0, w 1, s f END mux 2 to 1 ; : IN : OUT STD_LOGIC ; STD_LOGIC ) ; ARCHITECTURE Behavior OF mux 2 to 1 IS BEGIN PROCESS ( w 0, w 1, s ) BEGIN IF s = '0' THEN f <= w 0 ; ELSE f <= w 1 ; END IF ; END PROCESS ; END Behavior ; MO 401 5. 31

Circuito Combinacional VHDL • Processo (mux 2: 1 – alternativo) LIBRARY ieee ; USE

Circuito Combinacional VHDL • Processo (mux 2: 1 – alternativo) LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 2 to 1 IS PORT ( w 0, w 1, s f END mux 2 to 1 ; : IN : OUT STD_LOGIC ; STD_LOGIC ) ; ARCHITECTURE Behavior OF mux 2 to 1 IS BEGIN PROCESS ( w 0, w 1, s ) BEGIN f <= w 0 ; IF s = '1' THEN f <= w 1 ; END IF ; END PROCESS ; END Behavior ; MO 401 5. 32

Exercício: Qual o Bloco implementado? LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY

Exercício: Qual o Bloco implementado? LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY priority IS PORT ( w : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) ; z : OUT STD_LOGIC ) ; END priority ; ARCHITECTURE Behavior OF xxxxxxx? IS BEGIN PROCESS ( w ) BEGIN IF w(3) = '1' THEN y <= "11" ; ELSIF w(2) = '1' THEN y <= "10" ; ELSIF w(1) = '1' THEN y <= "01" ; ELSE y <= "00" ; END IF ; END PROCESS ; z <= '0' WHEN w = "0000" ELSE '1' ; END Behavior ; MO 401 5. 33

Circuito Combinacional VHDL • Processo (Comando Case) LIBRARY ieee ; USE ieee. std_logic_1164. all

Circuito Combinacional VHDL • Processo (Comando Case) LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 2 to 1 IS PORT ( w 0, w 1, s f END mux 2 to 1 ; : IN STD_LOGIC ; : OUT STD_LOGIC ) ; ARCHITECTURE Behavior OF mux 2 to 1 IS BEGIN PROCESS ( w 0, w 1, s ) BEGIN CASE s IS WHEN '0' => f <= w 0 ; WHEN OTHERS => f <= w 1 ; END CASE ; END PROCESS ; END Behavior ; MO 401 5. 34

Decodificador de 7 segmentos LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY seg

Decodificador de 7 segmentos LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY seg 7 IS PORT ( bcd : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; leds : OUT STD_LOGIC_VECTOR(1 TO 7) ) ; END seg 7 ; ARCHITECTURE Behavior OF seg 7 IS BEGIN PROCESS ( bcd ) BEGIN CASE bcd IS -abcdefg WHEN "0000" => leds <= "1111110" ; WHEN "0001" => leds <= "0110000" ; WHEN "0010" => leds <= "1101101" ; WHEN "0011" => leds <= "1111001" ; WHEN "0100" => leds <= "0110011" ; WHEN "0101" => leds <= "1011011" ; WHEN "0110" => leds <= "1011111" ; WHEN "0111" => leds <= "1110000" ; WHEN "1000" => leds <= "1111111" ; WHEN "1001" => leds <= "1110011" ; WHEN OTHERS => leds <= "-------" ; END CASE ; END PROCESS ; END Behavior ; MO 401 5. 35

74381 ALU MO 401 5. 36

74381 ALU MO 401 5. 36

74381 ALU LIBRARY ieee ; USE ieee. std_logic_1164. all ; USE ieee. std_logic_unsigned. all

74381 ALU LIBRARY ieee ; USE ieee. std_logic_1164. all ; USE ieee. std_logic_unsigned. all ; ENTITY alu IS PORT ( s : IN STD_LOGIC_VECTOR(2 DOWNTO 0) ; A, B : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; F : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END alu ; MO 401 5. 37

74381 ALU ARCHITECTURE Behavior OF alu IS BEGIN PROCESS ( s, A, B )

74381 ALU ARCHITECTURE Behavior OF alu IS BEGIN PROCESS ( s, A, B ) BEGIN CASE s IS WHEN "000" => F <= "0000" ; WHEN "001" => F <= B - A ; WHEN "010" => F <= A - B ; WHEN "011" => F <= A + B ; WHEN "100" => F <= A XOR B ; WHEN "101" => F <= A OR B ; WHEN "110" => F <= A AND B ; WHEN OTHERS => F <= "1111" ; END CASE ; END PROCESS ; END Behavior ; MO 401 5. 38

74381 ALU MO 401 5. 39

74381 ALU MO 401 5. 39