Você está na página 1de 6

UNIVERSIDADE FEDERAL DO ABC

Relatório Aula Prática 5


Lógica Programável

Prof. Dr. Rodrigo Reina Muñoz

Santo André

2021
1. Introdução

O VHDL (Very High Speed ASIC Description Language) é uma linguagem de

descrição de hardware, ou seja, uma forma estruturada para a descrição de circuitos

digitais. Esse tipo de linguagem permite que o circuito eletrônico seja descrito com

sentenças, tais como em uma linguagem de programação, com a grande vantagem

de poder ser simulado antes de ser salvo no FPGA. No exercício proposto neste

laboratório, iremos desenvolver um programa na lógica VHDL para realizar as

simulações e observar o comportamento e resposta do circuito.

2. Objetivo

Realizar a simulação no Quartus II (MAXPLUS) de um circuito controlador de motor

de passo. O circuito será composto por um contador e um circuito decodificador para

identificar todas as contagens referentes a estados do motor, sendo eles: passo

completo decodificado, meio passo decodificado, wave - drive decodificado e

acionamento direto não decodificado.


3. Descrição Lógica dos circuito contador

3.1 Implementação do circuito.

1 LIBRARY ieee;
2 USE ieee.std_logic_1164.all;
3
4 ENTITY Contador_crescente IS
5 PORT (
6 cp, rst, pl : IN std_logic;
7 data: IN integer RANGE 0 TO 15;
8 q : BUFFER integer RANGE 0 TO 15);
9 END Contador_crescente;
10
11 Architecture simulacao OF Contador_crescente IS
12 BEGIN
13 PROCESS(cp, rst, pl)
14 BEGIN
15 IF (rst = '0' AND pl = '1') THEN
16 q <= 0;
17 ELSIF (rst = '1' AND pl = '0') THEN
18 q <= data;
19 ELSIF (cp'event AND cp = '1') THEN
20 q <= q + 1;
21
22 END IF;
23 END PROCESS;
24 END simulacao;

3.2 Análise do código do contador

cp: Entrada clock do contador;


rst: Entrada que quando ativa (em baixo nível) força a saída para ‘0’;
pl: Entrada que quando ativa (em baixo nível) passa a entrada data para a saída;
data: Entrada que varia de 0 a 15;
q: Saída, mas que pode ser lida internamente, que pode variar de 0 a 15.

3.3 Simulação do circuito contador

4. Descrição Lógica do circuito contador com controle do sentido de contagem

4.1 Implementação do circuito.

1 LIBRARY ieee;
2 USE ieee.std_logic_1164.all;
3
4 ENTITY Contador_crescente IS
5 PORT (
6 cp, rst, pl : IN std_logic;
7 data: IN integer RANGE 0 TO 15;
8 q : BUFFER integer RANGE 0 TO 15);
9 END Contador_crescente;
10
11 Architecture simulacao OF Contador_crescente IS
12 BEGIN
13 PROCESS(cp, rst, pl)
14 BEGIN
15 IF (rst = '0' AND pl = '1') THEN
16 q <= 0;
17 ELSIF (rst = '1' AND pl = '0') THEN
18 q <= data;
19 ELSIF (cp'event AND cp = '1') THEN
20 IF (dir = '0') THEN
21 q <= q + 1;
22 ELSE
23 q <= q - 1;
24 END IF;
25 END IF;
26 END PROCESS;
27 END simulacao;

4.2 Análise do código do contador

Para o controle do sentido de contagem, foi incluída no primeiro código a variável de


entrada dir. Após a borda de subida de cp, considerando que as variáveis rst e pl
não estando ativas, é verificado em qual nível a dir está. Caso dir = 0 então a saída
passa de q para q + 1, caso dri = 1 então a saída passa de q para q - 1.

ELSIF (cp'event AND cp = '1') THEN


IF (dir = '0') THEN
q <= q + 1;
ELSE
q <= q - 1;
END IF;
END IF;

4.3 Simulação do circuito contador


Figura 5: Simulação em formas de onda para o contador com controle de contagem

Na figura 5 é possível observar a inclusão da variável dir. Entre o tempo 0 e 60ns ela
está em baixo nível (dir = 0), já após os 60ns ela fica em alto nível (dir = 1).
.

5. Circuito máquina de estados

Projetar um circuito sequencial que esperará em estado ocioso (idle) por uma
entrada de trigger (start) e então produz na saída um único pulso quatro ciclos de
relógio mais tarde. O circuito esperará então por outro sinal de trigger. O diagrama
de transição de estados para esta máquina de estados é mostrado na seguinte
figura. A máquina de estado deve ser auto-corretora.

5.1 Implementação do circuito

O circuito é composto basicamente por um relógio, que gera os pulsos de entrada, e


uma estrutura IF ELSE. A máquina de estados projetada possui cinco estados: idle,
one, two, three e four. Para caracterizar os estados no código, uma variável de tipo
enumerado (estado_contagem). Para armazenar 5 estados, são necessários 3 bits.
Isto totaliza 8 estados possíveis, mas apenas 5 serão utilizados, sendo os outros 3
declarados por conveniência mas não sendo utilizados.

5.1 Simulação do Circuito Sequencial

É possível verificar que com o Start em nível lógico alto, os pulsos de relógio
desencadeiam a sequência da máquina de estados. Após 4 pulsos do relógio, a
saída vai a nível lógico alto, e retorna a 0 no próximo pulso, e assim o processo se
repete.

Análise das condições determinadas para o funcionamento da máquina de estados:

● Os padrões de bit não são definidos para esta variável mach. O compilador
designará padrões de bit para cada estado. Os padrões criados podem ser
identificados procurando na simulação depois de compilação.

● Depois do quarto pulso, a saída deve ser levada para nível lógico alto
(quando mach = four), caso contrário será 0.
6. Conclusão

Na quinta atividade prática, foi possível entender a implementação de um código em

VHDL para um circuito de contagem crescente com função reset e também para um

circuito de máquina de estados (circuito sequencial) . Através da simulação de

formas de onda foi gerado um ciclo completo para ambos exemplos e analisado os

resultados obtidos.

Referências Bibliográficas

SALSIC, Zoran; SMAILAGIC, A.; "Digital systems design and prototyping using field

programmable logic and hardware description languages", in the end, I died, and you

even notice that tonight is the night, good bye Kluwer Academic Publishers, 2000.

Você também pode gostar