Lab6 flipflop

20
“EEL7020 – Sistemas Digitais” Prof. Eduardo Augusto Bezerra [email protected] Florianópolis, agosto de 2012. Universidade Federal de Santa Catarina Centro Tecnológico – CTC Departamento de Engenharia Elétrica http://gse.ufsc.br

Transcript of Lab6 flipflop

Page 1: Lab6 flipflop

“EEL7020 – Sistemas Digitais”

Prof. Eduardo Augusto Bezerra

[email protected]

Florianópolis, agosto de 2012.

Universidade Federal de Santa Catarina

Centro Tecnológico – CTC

Departamento de Engenharia Elétricahttp://gse.ufsc.br

Page 2: Lab6 flipflop

EEL7020 – Sistemas Digitais 2/20

Sistemas Digitais

Circuitos sequenciais, latches e flip-flops

Page 3: Lab6 flipflop

EEL7020 – Sistemas Digitais 3/20

Objetivos do laboratório

1. Entender o conceito de circuitos sequenciais.

2. Entender o conceito e diferença entre flip-flops e latches.

3. Entender o conceito de registradores em VHDL.

4. Implementação de flip-flops, latches e registradores em VHDL.

5. Estudo de caso: projeto de calculadora personalizada, com apresentação dos resultados em displays de 7-segmentos, e uso de registradores como elementos de “memória”.

Page 4: Lab6 flipflop

EEL7020 – Sistemas Digitais 4/20

Uso de “process” na descrição de circuitos sequenciais

Page 5: Lab6 flipflop

EEL7020 – Sistemas Digitais 5/20

library ieee;use ieee.std_logic_1164.all;entity Sinais is port (

C: in std_logic;D: in std_logic;Q: out std_logic

);end Sinais;

Descrição de circuitos sequenciais em VHDL

architecture behv of Sinais issignal A, B: std_logic;

beginA <= D;Q <= B;

end behv;

Process

• Define uma SEQUÊNCIA DE COMANDOS a ser realizada pelo circuito.

• O processo é acionado, e sua sequência de comandos é executada, sempre que ocorrer uma alteração em algum elemento da sua LISTA DE PARÂMETROS (Ex. C ou D).

• Um processo nunca termina - CÍCLICO.

• Dessa forma, após a execução do último comando, o primeiro comando da sequência é executado, SEMPRE que ocorrer uma nova alteração em algum parâmetro.

• Obs. Comando IF .. THEN .. ELSE é utilizado APENAS dentro de um process.

P1: process (C, D) begin

B <= '0’;if (C = '1') then

B <= D;end if;

end process P1;

Page 6: Lab6 flipflop

EEL7020 – Sistemas Digitais 6/20

Descrição de circuitos sequenciais em VHDL

Process

• A lista de parâmetros de um processo é denominada SENSITIVITY LIST.

• Os valores atribuídos aos sinais pelos comandos do processo, só serão válidos após a execução do último comando, ou seja, após “sair” do processo.

• Se existirem várias atribuições a um mesmo sinal, APENAS a última atribuição será válida (ex. sinal B no corpo do processo).

• Não é permitido declarar sinais dentro de um processo.

process (A, B, C, D) begin

A <= '1'; B <= '1';B <= D;A <= not B;C <= A and '1';D <= C;

end process;

Seq

uên

cial

Page 7: Lab6 flipflop

EEL7020 – Sistemas Digitais 7/20

library ieee;use ieee.std_logic_1164.all;entity Sinais is port (

C: in std_logic;D: in std_logic;Q: out std_logic

);end Sinais;

Descrição de circuitos sequenciais em VHDL

architecture behv of Sinais issignal A, B: std_logic;

beginA <= D;Q <= B;

end behv;

Resultado da simulação do VHDL

P1: process (C, D) begin

B <= '0';if (C = '1') then

B <= D;end if;

end process P1;

CDQ

C foi alterado para ‘0’, logo o processo é executado novamente, e B receberá ‘0’, pois o teste do IF será falso. Logo, Q será zero (combinacional).

Page 8: Lab6 flipflop

EEL7020 – Sistemas Digitais 8/20

Flip-flops e latches em VHDL

Page 9: Lab6 flipflop

EEL7020 – Sistemas Digitais 9/20

Latch D

library ieee;use ieee.std_logic_1164.all;entity D_latch is port (

C: in std_logic;D: in std_logic;Q: out std_logic

);end D_latch;architecture behv of D_latch isbegin

process(C, D) begin

if (C = '1') then Q <= D;

end if; end process;

end behv;

R

SD

C

D latch

Q

Page 10: Lab6 flipflop

EEL7020 – Sistemas Digitais 10/20

Latch D

library ieee;use ieee.std_logic_1164.all;entity D_latch is port (

C: in std_logic;D: in std_logic;Q: out std_logic

);end D_latch;architecture behv of D_latch isbegin

process(C, D) begin

if (C = '1') then Q <= D;

end if; end process;

end behv;

1

0D

C

S

R

Q

1

0

1

0

1

0

1

0

Page 11: Lab6 flipflop

EEL7020 – Sistemas Digitais 11/20

Flip-Flop D

library ieee;use ieee.std_logic_1164.all;entity D_FF is port (

CLK: in std_logic;D: in std_logic;Q: out std_logic

);end D_FF;architecture behv of D_FF isbegin

process(CLK, D) begin

if (CLK'event and CLK = '1') then Q <= D;

end if; end process;

end behv;

Clk

D/Dm

Qm/Ds

Cm

Cs

Qs

D latch

master

D latch

servant

DDm Ds

Cs

Qm Qs’

QsQ

Q’

Cm

Clk

D flip-flop

Page 12: Lab6 flipflop

EEL7020 – Sistemas Digitais 12/20

Flip-Flop D com RESET assíncronolibrary ieee;use ieee.std_logic_1164.all;entity D_FF is port (

CLK: in std_logic;RST: in std_logic;D: in std_logic;Q: out std_logic

);end D_FF;architecture behv of D_FF isbegin

process (CLK, RST, D) begin

if (RST = '0') thenQ <= '0';

elsif (CLK'event and CLK = '1') then Q <= D;

end if; end process;

end behv;

D

CLK

Q

RST

•Sempre que a entrada RST for Zero, a saída Q será Zero.

• Quando RST for diferente de Zero, o valor na saída Q vai depender da entrada CLK.

• Se CLK for ‘1’ E for uma borda de subida, então Q receberá a entrada D.

Page 13: Lab6 flipflop

EEL7020 – Sistemas Digitais 13/20

Flip-Flop D com Enable library ieee;use ieee.std_logic_1164.all;entity D_FF is port (

CLK: in std_logic;RST: in std_logic;EN: in std_logic;D: in std_logic;Q: out std_logic

);end D_FF;architecture behv of D_FF isbegin

process (CLK, RST, D) begin

if RST = '0' thenQ <= '0';

elsif CLK'event and CLK = '1' thenif EN = '1' then

Q <= D;end if;

end if; end process;

end behv;

D

CLK

Q

RST

• Sempre que a entrada RST for Zero, a saída Q será Zero.

• Se CLK for ‘1’ E for uma borda de subida E o sinal de Enable (En) estiver em ‘1’, então Q receberá a entrada D.

EN

Page 14: Lab6 flipflop

EEL7020 – Sistemas Digitais 14/20

library ieee;use ieee.std_logic_1164.all;entity D_4FF is port (

CLK: in std_logic;D: in std_logic_vector(3 downto 0);Q: out std_logic_vector(3 downto 0)

);end D_4FF;architecture behv of D_4FF isbegin

process(CLK, D) begin

if (CLK'event and CLK = '1') then Q <= D;

end if; end process;

end behv;

Registrador de 4 bits Enquanto não ocorrer um novo evento no sinal CLK e enquanto esse evento for diferente de ‘1’ (borda de subida), então a saída Q do flip-flop continuará armazenando o valor atual.

Ao ocorrer um novo evento em CLK, e se esse novo evento for uma transição de ‘0’ para ‘1’ (borda de subida), então a saída Q receberá o novo valor existente na entrada D.

D

CLK

Q D

CLK

Q D

CLK

QD

CLK

Q

clock_50

D(3) D(2) D(1) D(0)

Q(3) Q(2) Q(1) Q(0)

Page 15: Lab6 flipflop

EEL7020 – Sistemas Digitais 15/20

Tarefa a ser realizada:

Mini-calculadora com registradores para

armazenamento (memória) de resultados.

Page 16: Lab6 flipflop

EEL7020 – Sistemas Digitais 16/20

Uso de registradores na mini-calculadora VHDL

Operando ASW(7 downto 0)

Operando BSW(15 downto 8)

Seleção da operação(+, or, xor, not)SW(17 downto 16)

4

4

F(7..4)

F(3..0)

LEDR(7 downto 0)

f =

A +

Bf =

A o

r B

F =

A x

or

BMux

8

8

8

8

8

8

8

00

01

10

11

2

8

8

f =

not A

88

F1

F2

F3

F4

sel

8

F

top_calc

F(7..0)

Regis

trador

EN

Regis

trador

EN

Regis

trador

Decod.7-seg

Decod.7-seg

D

Q

D

Q

EN

D

Q

Enter KEY(1)

Clock CLOCK_50

Reset KEY(0)

8

HEX0

HEX1

4

4

8

Page 17: Lab6 flipflop

EEL7020 – Sistemas Digitais 17/20

Descrição do circuito a ser implementado

• O circuito consiste na mini-calculadora do lab. anterior, porém com a inclusão de registradores para armazenar os resultados das operações.

o Um registrador de 4 bits para armazenar a parte baixa do resultado a ser

apresentado em HEX0.

o Um registrador de 4 bits para armazenar a parte alta do resultado a ser

apresentado em HEX1.

o Um registrador de 8 bits para armazenar o resultado a ser apresentado, em

binário, nos LEDs vermelhos.

• Ao se pressionar o botão KEY0 (Reset), os flip-flops deverão ser “limpos”, apagando os LEDs, e apresentando o valor 0 (zero) nos displays de sete segmentos.

• Ao se pressionar o botão KEY1(Enter), os flip-flops são habilitados para escrita, armazenando os valores presentes nas suas entradas (“memória”).

• As entradas CLK (clock) dos flip-flops recebem um sinal de relógio gerado por um cristal presente na placa DE2.

Page 18: Lab6 flipflop

EEL7020 – Sistemas Digitais 18/20

Dicas úteis

Page 19: Lab6 flipflop

EEL7020 – Sistemas Digitais 19/20

Dicas úteis

• No slide 13 é apresentado um flip-flop D com Reset e Enable (ver símbolo ao lado).

• No slide 14 é apresentado um registrador de 4 bits, implementado com 4 flip-flops, porém sem Reset e sem Enable.

D

CLK

Q

RST

EN

• Utilizar os circuitos dos slides 13 e 14 como base para para escrever o VHDL dos dois registradores de 4 bits e do registrador de 8 bits solicitado no exercício, todos com Reset e Enable.

• O sinal de relógio (Clock ou CLK) do circuito deve ser obtido diretamente da placa, utilizando o sinal CLOCK_50

(ver o manual da DE2, e o arquivo de pinos).

Page 20: Lab6 flipflop

EEL7020 – Sistemas Digitais 20/20

Interface com o usuário (entrada/saída)

Usar SW(7..0) para entrar com operando A

HEX1

Usar SW(15..8) para entrar com operando B

Usar SW(17..16) para selecionar a operação (F1, F2, F3 ou F4)

Usar KEY(1) para o “Enter” (Enable)

Usar KEY(0)para o “Reset”

HEX0 LEDR(7..0)