Tutorial VHDL 17: Projete um flip-flop JK (com preset e clear) usando VHDL

Tutorial VHDL 17: Projete um flip-flop JK (com preset e clear) usando VHDL

Nota: é recomendado seguir esta série de tutoriais VHDL em ordem, começando com o primeiro tutorial.

No tutorial anterior – Tutorial VHDL 16 – projetamos um circuito flip-flop D usando VHDL.

Para este projeto, iremos:

  • Escreva um programa VHDL para construir um circuito flip-flop JK
  • Verifique a forma de onda de saída do programa (o circuito digital) com a tabela verdade do flip-flop.

O flip-flop JK com um circuito predefinido e claro:

Tabela verdade

  • Nota 1: quando J=1 e K=1, a saída Q alterna sempre (de 0 a 1 e 1 a 0)
  • Nota 2: quando J=0 e K=0, a saída Q mantém seu estado anterior

Agora vamos escrever, compilar e simular um programa VHDL. Então, obteremos a saída em forma de onda e a verificaremos com a tabela verdade fornecida.

Antes de começar, certifique-se de revisar o procedimento passo a passo fornecido em Tutorial VHDL – 3 projetar adequadamente o projeto, bem como editar e compilar o programa e o arquivo de forma de onda, incluindo a saída final.

Aqui. usamos um estilo de modelagem comportamental para escrever o programa VHDL e construir o circuito flip-flop porque é o modelo preferido para circuitos digitais sequenciais.

Programa VHDL

biblioteca ieee;
use ieee.std_logic_1164.all;

entidade JK_flip_flop é
porta (clk,J,K,prs,clr: em std_logic;
P: fora std_logic;
Qnot: fora std_logic);
fim JK_flip_flop;

arquitetura JKFF_arch de JK_flip_flop é
sinal nxt_state, prv_state: std_logic;
entrada de sinal: std_logic_vector(1 até 0);
começar
entrada <= J e K;
processo(clk, prs,clr) é
começar
se (clr='1′) então
nxt_state <= '0';
elsif (prs='1′) então
nxt_state <= '1';
elsif (clk'event e clk='1′) então
caso (entrada) é
quando “10” => nxt_state <= '1';
quando “01” => nxt_state <= '0';
quando “00” => nxt_state <= prv_state;
quando “11” => nxt_state <= não prv_state;
quando outros => nulo;
fim do caso;
fim se;
fim do processo;
Q <= estado_nxt;
Qnot <= não nxt_state;
prv_state <= nxt_state;
fim JKFF_arch;

Para refrescar sua memória sobre como isso funciona, leia os dois primeiros tutoriais do VHDL (1 e 2) desta série.

Em seguida, compile o programa acima, criando e salvando um arquivo de forma de onda com todas as entradas e saídas necessárias listadas (e certifique-se de aplicar todas as diferentes combinações de entrada). Em seguida, simule o projeto. Você deve obter o seguinte resultado…

Forma de onda de simulaçãoConforme mostrado nesta figura, há três casos destacados em vermelho, verde e azul:

  • Caso 1: quando prs=1 -> Q = 1 e Qnot = 0 (o flip-flop está setado)
  • Caso 2: quando clr=1 -> Q=0 e Qnot = 1 (o flip-flop está limpo)
  • Caso 3: quando J=1, K=0 e clk=1 – > Q = 1 e Qnot = 0

Certifique-se de verificar as diferentes combinações de entrada-saída com a tabela verdade fornecida.

No próximo tutorial, aprenderemos como construir um circuito flip-flop T usando VHDL.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.