Buscar

MAQUINA DE ESTADOS - MOORE

Prévia do material em texto

UNIVERSIDADE FEDERAL DE SÃO PAULO 
INSTITUTO DE CIÊNCIA E TECNOLOGIA 
 
 
 
MÁQUINA DE ESTADOS: MOORE 
 
LABORATÓRIO DE SISTEMAS COMPUTACIONAIS: 
CIRCUITOS DIGITAIS 
 
 
AMANDA RAZABONI 
RA: 133575 
 
 
 
 
 
 
 
 
 
 
 
SÃO JOSÉ DOS CAMPOS 
DEZEMBRO DE 2019 
2 
 
3 
 
AMANDA RAZABONI 
 
 
 
 
 
 
 
 
MÁQUINA DE ESTADOS: MOORE 
 
LABORATÓRIO DE SISTEMAS COMPUTACIONAIS: 
CIRCUITOS DIGITAIS 
 
 
Relatório apresentado à 
Universidade Federal de São Paulo 
como parte dos requisitos para 
aprovação na disciplina de 
Laboratório de Sistemas 
Computacionais: Circuitos Digitais 
 
Docente: Prof. Dr. Lauro Paulo da 
Silva Neto 
 
 
 
 
 
 
SÃO JOSÉ DOS CAMPOS 
DEZEMBRO DE 2019 
4 
 
SUMÁRIO 
1 INTRODUÇÃO .......................................................................................................... 7 
2 OBJETIVO ................................................................................................................. 8 
2.1 GERAL ............................................................................................................... 8 
2.2 ESPECÍFICO ..................................................................................................... 8 
3 FUNDAMENTAÇÃO TEÓRICA ................................................................................ 9 
3.1 Operações Lógicas ............................................................................................ 9 
3.1.1 AND ............................................................................................................ 9 
3.1.2 OR ............................................................................................................. 10 
3.1.3 NOT .......................................................................................................... 10 
3.2 Máquina de estado .......................................................................................... 11 
3.2.1 Máquina de estados finitos – Moore ........................................................ 11 
3.3 Divisor de Frequência ...................................................................................... 11 
3.4 Decodificador - Display de 7 segmentos ......................................................... 12 
3.5 FPGA................................................................................................................ 13 
3.6 VERILOG ......................................................................................................... 13 
4 DESENVOLVIMENTO DO TRABALHO ................................................................. 14 
4.1 Divisor de frequência ....................................................................................... 14 
4.2 Decodificador BCD para display (7 segmentos) ............................................. 15 
4.3 Sinais de entrada ............................................................................................. 16 
4.4 Máquina de Estados ........................................................................................ 17 
4.4.1 Diagrama de estados ............................................................................... 18 
4.4.2 Estados e saídas ...................................................................................... 19 
4.4.3 Transição de estados ............................................................................... 20 
4.5 Implementação dos circuitos ........................................................................... 21 
4.5.1 Circuito: Próximo estado .......................................................................... 21 
4.5.2 Circuito: Decodificador ............................................................................. 23 
4.5.3 Circuito: Máquina de Estados .................................................................. 24 
5 RESULTADOS OBTIDOS ...................................................................................... 25 
5.1 Máquina de estados......................................................................................... 25 
5.1.1 Decrescente .............................................................................................. 25 
5.1.2 Crescente ................................................................................................. 26 
5.1.3 Mantém ..................................................................................................... 26 
5.1.4 Blank ......................................................................................................... 27 
6 CONCLUSÃO .......................................................................................................... 28 
7 REFERÊNCIA BIBLIOGRÁFICA ............................................................................ 29 
 
 
 
5 
 
INDÍCE DE TABELAS 
 
Tabela 1 - Sequência do Contador .................................................................................. 8 
Tabela 2 - Tabela da verdade Porta AND........................................................................ 9 
Tabela 3 - Tabela da verdade Porta OR ........................................................................ 10 
Tabela 4 - Tabela da Verdade NOT ............................................................................... 10 
Tabela 5 - Display de 7 segmentos (representação de 0 a 9) ...................................... 12 
Tabela 6 - Tabela Verdade Decodificador BCD ............................................................ 15 
Tabela 7 - Sinais de entrada .......................................................................................... 16 
Tabela 8 - Estados representados em binário ............................................................... 17 
Tabela 9 - Tabela Verdade de Estados e Saídas (Moore)* .......................................... 19 
Tabela 10 - Parameter.................................................................................................... 20 
 
 
6 
 
INDÍCE DE FIGURAS 
Figura 1 - Porta AND ........................................................................................................ 9 
Figura 2 - Porta OR ........................................................................................................ 10 
Figura 3 - Esquemático de uma Máquina de Moore ..................................................... 11 
Figura 4 - Display de 7 Segmentos ................................................................................ 12 
Figura 5 - Placa KIT FPGA (Altera)................................................................................ 13 
Figura 6 - Divisor de frequência 1s ................................................................................ 14 
Figura 7 - Decodificador BCD (Display - Anôdo Comum) ............................................. 16 
Figura 8 - Diagrama de estados – Moore ...................................................................... 18 
Figura 9 - Saída S2 do circuito: Próximo estado ........................................................... 21 
Figura 10 - Saída S4 do circuito: Próximo estado ......................................................... 21 
Figura 11 - Saída S3 do circuito: Próximo estado ......................................................... 21 
Figura 12 - Saída S2I do circuito: Próximo estado ........................................................ 21 
Figura 13 - Saída S5 do circuito: Próximo estado ......................................................... 22 
Figura 14 - Saída S9 do circuito: Próximo estado ......................................................... 22 
Figura 15 - Saída S4I do circuito: Próximo estado ........................................................ 22 
Figura 16 - Saída S8 do circuito: Próximo estado ......................................................... 22 
Figura 17 - Saída S1 do circuito: Próximo estado ......................................................... 22 
Figura 18 - Saída blank do circuito: Próximo estado .....................................................22 
Figura 19 - Circuito: Decodificador................................................................................. 23 
Figura 20 - Circuito: Máquina de Estados (definições iniciais)...................................... 24 
Figura 21 - Waveform: Decrescente .............................................................................. 25 
Figura 22 - Waveform: Crescente .................................................................................. 26 
Figura 23 - Waveform: Mantém ..................................................................................... 26 
Figura 24 - Waveform: Blank.......................................................................................... 27 
 
 
 
file:///C:/Users/amand/Desktop/UNIFESP/CD%20lab/MAQUINA%20DE%20ESTADOS%20-%20MOORE%20_%20Amanda%20Razaboni.docx%23_Toc26562179
7 
 
1 INTRODUÇÃO 
 O mundo vem se globalizando a cada dia, com o desenvolvimento de novas 
tecnologias que são cada vez mais presentes na população, como os computadores e 
celulares. É de suma importância essa inovação tecnológica, que possibilitam uma 
facilidade e melhoria na vida das pessoas. 
 Os aparelhos eletrônicos são baseados em sistemas digitais para o seu 
desenvolvimento, visto que esses sistemas são processados de maneira mais eficiente 
e precisa do que os analógicos. O “digital” do computador implica aos circuitos lógicos 
e outros sistemas que usam elementos discretos de informações, fornecendo os termos 
circuitos digitais e sistemas digitais. O termo lógica é aplicada a circuitos que operam 
em um conjunto de apenas dois elementos com os valores True (1) e Falso (0). Como 
os computadores são baseados em circuitos lógicos, eles operam em padrões de 
elementos desses conjuntos de dois valores, que são usados para representar, entre 
outros coisas, os dígitos decimais. Hoje, o termo "circuitos digitais" é visto como 
sinônimo com o termo "circuitos lógicos" [1]. Um dos sistemas que pode ser 
desenvolvido utilizando circuitos digitais é a máquina de estados, que abrange diversas 
aplicações, como em sistemas de elevadores, por exemplo. 
 Nesse projeto, irá ser desenvolvida uma máquina de estados finitos, utilizando o 
conceito de Moore e implementando o circuito no FPGA (Field Programmable Gate 
Array) através da linguagem de descrição de hardware (Hardware Description Language 
- HDL) Verilog. Tal máquina deve funcionar como um contador de uma sequência não 
usual e deve ser capaz de realizar diferentes funções, como apagar o display, manter o 
valor e contar de modo crescente ou decrescente. Vale ressaltar que, para isso, é 
necessário dividir a frequência do clock nativo do kit FPGA, decodificar as saídas da 
máquina para aparecerem corretamente no display de 7 segmentos e implementar 
corretamente os estados da máquina. 
 
 
8 
 
2 OBJETIVO 
2.1 GERAL 
 
O objetivo geral do projeto é realizar o desenvolvimento de um contador numérico 
para a sequência apresentada na Tabela 1 abaixo: 
 
Tabela 1 - Sequência do Contador 
2 4 3 2 5 9 4 8 1 
Fonte: Autor 
 
Para isso, deve-se utilizar a máquina de estados finitos de Moore. Tal contador irá 
utilizar dois sinais de controle que, combinados, produzirão os quatro efeitos requeridos, 
ou seja: 
- “Up” (contagem crescente); 
- “Down” (contagem decrescente); 
- “Hold” (manter o estado atual); 
- “Reset” (desligar o display numérico e retornar ao início da contagem). 
 
2.2 ESPECÍFICO 
 
O objetivo específico do projeto pode ser descrito por: 
 
 Desenvolver os circuitos com o auxílio do software Quartus Prime. 
 Desenvolver e implementar um divisor de frequência no circuito para que 
ele realize a contagem aproximadamente a cada 1s. 
 Elaborar a lógica sequencial de estados para as quatro combinações de 
efeitos apresentados acima; 
 Converter os estados para um display numérico de 7 segmentos. 
 Implementar a Máquina de Moore, ou seja, desenvolver e combinar os 
circuitos de estado, de transição e de saída. 
 
 
 
 
9 
 
3 FUNDAMENTAÇÃO TEÓRICA 
Para uma melhor análise do projeto, serão explicitados os principais conceitos 
utilizados para a realização do mesmo. 
 
3.1 Operações Lógicas 
 
As operações lógicas ocorrem em circuitos lógicos (também chamados de portas 
lógicas), que são dispositivos que trabalham com sinais lógicos de entrada para produzir 
uma saída, dependendo da função que está implementada no circuito. Comumente 
utilizados em circuitos eletrônicos por questão da situação de sinais, ou seja, o sinal 
lógico do circuito varia entre 1 ou zero, indicando normalmente presença de sinal ou 
ausência, respectivamente. 
O comportamento das portas lógicas é descrito pela tabela verdade, que 
apresenta as possíveis variações de entradas e suas respectivas saídas. 
 
3.1.1 AND 
 
A porta lógica AND (E), também conhecida como multiplicação lógica, é 
representada normalmente pelo sinal de multiplicação (x). Tal operação só pode ser 
definida se houver no mínimo duas variáveis envolvidas. 
Abaixo encontra-se a tabela da verdade dessa porta lógica (variáveis 
representadas por A e B). 
 
Tabela 2 - Tabela da verdade Porta AND 
A B AB 
0 0 0 
0 1 0 
1 0 0 
1 1 1 
Fonte: Autor 
 
Analisando a tabela, é possível notar que a operação AND resulta 0 se pelo menos 
uma das variáveis de entrada é 0. 
Tal porta é representada no circuito conforme imagem abaixo: 
 
 
Figura 1 - Porta AND 
 
 
10 
 
3.1.2 OR 
 
A porta lógica OR (OU), também conhecida como adição lógica, é representada 
normalmente pelo sinal de soma (+). É importante destacar que, como se trata de 
variáveis Booleanas, não pode ser efetuada uma adição algébrica, mas sim uma adição 
lógica. Tal operação só pode ser definida se houver no mínimo duas variáveis 
envolvidas. 
Abaixo encontra-se a tabela da verdade dessa porta lógica (variáveis 
representadas por A e B). 
 
Tabela 3 - Tabela da verdade Porta OR 
A B A+B 
0 0 0 
0 1 1 
1 0 1 
1 1 1 
Fonte: Autor 
 
Analisando a tabela, é possível notar que a operação OR resulta 0 somente 
quando todas as variáveis de entrada são 0. 
Tal porta é representada no circuito conforme imagem abaixo: 
 
 
Figura 2 - Porta OR 
 
3.1.3 NOT 
 
A operação NOT (negação), também conhecida como complementação ou 
inversão, é a operação que resulta em um valor complementar ao que a variável 
apresenta, ou seja, pode-se dizer que é o inverso da entrada. 
Vale ressaltar que a complementação só é definida sobre uma variável, ou sobre 
o resultado de uma expressão. Sendo assim, o operador é dito unário. 
Abaixo encontra-se a tabela da verdade. 
 
Tabela 4 - Tabela da Verdade NOT 
A A’ 
0 1 
1 0 
Fonte: Autor 
 
 
 
11 
 
3.2 Máquina de estado 
 
As máquinas de estado são utilizadas para representar o funcionamento de 
circuitos sequenciais. Tais circuitos consistem em circuitos lógicos combinacionais, que 
ciclam através de uma série pré-determinada de estados, associados a uma rede de 
memória formada por elementos de armazenamento sequencial, sendo muito comum a 
utilização de flip-flops nessa última. Os estados operacionais da máquina podem ser 
traduzidos (decodificados) para saídas lógicas, conforme a necessidade. 
 Tais máquinas podem ser sequenciais ou combinacionais, o que difere uma da 
outra é que nas combinacionais o valor da saída depende apenas da combinação dos 
valores de entrada, enquanto nos sequenciais o valor da saída não depende apenas 
dos valores das entradas, mas também da sequência das entradas anteriores. É 
importante destacar que nem todos os projetos em sistemas digitais conseguem ser 
resolvidos utilizando circuitos combinacionais. Algumas vezes é necessário o 
conhecimento de um ou mais estados anteriores e também da sequência anterior para 
se calcular a saída do circuito. No caso presente, uma solução combinacional é 
satisfatória e poderá ser implementada. 
 
3.2.1 Máquina de estados finitos – Moore 
 
Na teoria da computação, uma máquina de Moore é uma máquina de estadosfinita cujos valores de saída são determinados somente pelo estado atual. Isso a torna 
diferente de uma máquina de Mealy, cujos valores de saída são determinados tanto pelo 
estado atual quanto por suas entradas. A máquina de Moore recebe o nome de Edward 
F. Moore, que apresentou o conceito em um artigo de 1956, entitulado “Gedanken-
experiments on Sequential Machines.” 
Abaixo encontra-se um esquema da estrutura de uma máquina de Moore: 
 
 
 
 
 
 
Fonte: Autor 
 
3.3 Divisor de Frequência 
 
O divisor de frequência é um circuito sequencial desenvolvido praticamente por 
Flip-Flops e que tem como objetivo diminuir a frequência de um clock. Normalmente ele 
é utilizado em projetos em que se deseja modificar o tempo de oscilação, buscando 
diminuir a velocidade do clock “original” e implementar um valor diferente. 
 
 
Circuito 
Combinacional 
Memória 
(Flip-Flops) 
Circuito 
Combinacional 
Entrada Saída 
Figura 3 - Esquemático de uma Máquina de Moore 
12 
 
3.4 Decodificador - Display de 7 segmentos 
 
O Display de 7 segmentos é muito utilizado para uma melhor representação visual 
dos dados digitais. Ele é composto por 7segmentos que podem ser acionados 
individualmente, representando assim algum valor no display, como números ou letras. 
Os LEDs são nomeados pelas letras a, b ,c ,d ,e ,f ,g denotando as entradas do 
display e organizados no sentido horário. Vale ressaltar que há dois tipos diferentes de 
display, o de anodo comum e o de catodo comum. 
Com isso, para converter um número binário em uma representação no display de 
7 segmentos, é necessário o desenvolvimento do circuito combinacional decodificador. 
Ou seja, tal circuito é responsável por receber um código binário arbitrário (por exemplo, 
o estado atual da máquina) e como saída deve ativar ou desativar os LEDs do display 
conforme o valor numérico que se deseja exibir. 
 
 
Figura 4 - Display de 7 Segmentos 
Fonte: Disponível em: <https://www.dobitaobyte.com.br/display-7-segmentos-com-74hc595/7segled-3/> 
 
Na tabela abaixo é possível verificar quais segmentos devem ser acionados 
conforme a representação do valor desejado (de 0 a 9): 
 
Tabela 5 - Display de 7 segmentos (representação de 0 a 9) 
Valor a 
serrepresentado 
Segmentoscorrespondentes 
0 a, b, c, d, e, f 
1 b, c 
2 a, b, d, e, g 
3 a, b, c, d, g 
4 b, c, f, g 
5 a, c, d, f, g 
6 a, c, d, e, f, g 
7 a, b, c 
8 a, b, c, d, e, f, g (todos) 
9 a, b, c, f, g 
Fonte: Autor 
 
https://www.dobitaobyte.com.br/display-7-segmentos-com-74hc595/7segled-3/
13 
 
3.5 FPGA 
 
 O KIT FPGA (Field Programmable Gate Array, em português "Arranjo de Portas 
Programáveis em Campo"), é um circuito integrado que pode ser configurado conforme 
o usuário deseja. Esses kits eles não são pré-programados, ou seja, para utilização do 
mesmo deve-se passar uma programação para ele exercer determinada função. Vale 
ressaltar que ele é um hardware reconfigurável, sendo possível implementar outras 
funcionalidades. 
 O FPGA é muito utilizado para processamento de informações digitais, composto 
basicamente de blocos de entrada e saída (input / output), blocos lógicos configuráveis 
e chaves de interconexões, o processo de escolha das interconexões é chamado de 
roteamento. 
 
Figura 5 - Placa KIT FPGA (Altera) 
Fonte: Disponível em: < https://www.intel.com.br/content/www/br/pt/products/programmable.html> 
 
 
3.6 VERILOG 
 
 O verilog nada mais é do que uma linguagem de descrição de hardware (do 
inglês, Hardware Description Language – HDL). Tal linguagem é utilizada para 
programar sistemas eletrônicos em relação aos circuitos. 
 Normalmente é utilizada em placas de desenvolvimento com circuitos 
integrados, sintetizando um circuito digital, sendo capaz de gerar portas lógicas 
combinacionais e sequenciais. 
 A sintaxe utilizada nessa linguagem é similar a linguagem de programação C, 
como na utilização de condições “if” e “while”. Sua estruturação é basicamente feita em 
blocos, com begin/end, sendo uma linguagem modular. 
 
14 
 
4 DESENVOLVIMENTO DO TRABALHO 
4.1 Divisor de frequência 
 
Nesse projeto foi definido que o contador deveria mudar de dígito a cada 1 
segundo aproximadamente, ou seja, 1Hz. Vale ressaltar que o kit FPGA utilizado já 
possui um clock, que trabalha na frequência de 50MHz. 
Sendo assim, como temos que cada flip-flop divide a frequência por 2, podemos 
utilizar a fórmula: 
 
Em que: 
 f: frequência desejada 
 F: frequência original 
 n: quantidade de flip-flops 
 
Sendo assim, o divisor foi desenvolvido com 26 variáveis de memória conforme o 
código abaixo: 
 
 
Figura 6 - Divisor de frequência 1s 
Fonte: Autor, software Quartus Prime. 
 
 
15 
 
4.2 Decodificador BCD para display (7 segmentos) 
 
Como o projeto iria mostrar valores decimais no display de 7 segmentos a partir 
dos estados da máquina, foi necessário desenvolver um decodificador específico para 
realizar a representação com uma sequência de LEDs no display. 
É importante destacar que, para o código de entrada “1111”, o display não deve 
acender, assumindo assim o estado blank. Outro ponto é que o display é Anôdo Comum, 
dessa maneira, foi desenvolvida a tabela verdade, considerando que o contador deve 
contar na seguinte sequência: 2 – 4 – 3 – 2 – 5 – 9 – 4 – 8 – 1. 
 
Tabela 6 - Tabela Verdade Decodificador BCD 
 INPUT OUTPUT 
W X Y Z A B C D E F G 
0 0 0 0 0 0 0 0 0 0 0 1 
1 0 0 0 1 1 0 0 1 1 1 1 
2 0 0 1 0 0 0 1 0 0 1 0 
3 0 0 1 1 0 0 0 0 1 1 0 
4 0 1 0 0 1 0 0 1 1 0 0 
5 0 1 0 1 0 1 0 0 1 0 0 
6 0 1 1 0 0 1 0 0 0 0 0 
7 0 1 1 1 0 0 0 1 1 1 1 
8 1 0 0 0 0 0 0 0 0 0 0 
9 1 0 0 1 0 0 0 0 1 0 0 
10 
(blank) 
1 0 1 0 1 1 1 1 1 1 1 
11 
(blank) 
1 0 1 1 1 1 1 1 1 1 1 
12 
(blank) 
1 1 0 0 1 1 1 1 1 1 1 
13 
(blank) 
1 1 0 1 1 1 1 1 1 1 1 
14 
(blank) 
1 1 1 0 1 1 1 1 1 1 1 
15 
(blank) 
1 1 1 1 1 1 1 1 1 1 1 
 
Fonte: Autor 
 
 
 
16 
 
Posteriormente, foi desenvolvida a programação do circuito: 
 
 
Figura 7 - Decodificador BCD (Display - Anôdo Comum) 
Fonte: Autor, software Quartus Prime. 
 
 
4.3 Sinais de entrada 
 
Em relação aos sinais de entrada, estabeleceu-se por projeto 4 comandos 
diferentes a serem realizados, sendo eles: 
- Manter o valor apresentado; 
- Realiza a contagem em ordem crescente; 
- Realiza a contagem em ordem decrescente; 
- Apagar o display (“blank”), reiniciando a contagem. 
Sendo assim, foram estabelecidas as entradas da máquina e o comando a ser 
realizado, estando dispostos na tabela abaixo. 
 
Tabela 7 - Sinais de entrada 
U D AÇÃO 
0 0 Mantém 
0 1 Decrescente 
1 0 Crescente 
1 1 Blank 
Fonte: Autor 
 
 
 
17 
 
4.4 Máquina de Estados 
 
Para o desenvolvimento da máquina de estados, foi necessário estipular qual seria 
a representação dos estados em binário. Estes, foram definidos sequencialmente como 
segue: 
Tabela 8 - Estados representados em binário 
Decimal Binário 
Estado A B C D 
0 0 0 0 0 
1 0 0 0 1 
2 0 0 1 0 
3 0 0 1 1 
4 0 1 0 0 
5 0 1 0 1 
6 0 1 1 0 
7 0 1 1 1 
8 1 0 0 0 
9 1 0 0 1 
10 1 0 1 0 
11 1 0 1 1 
12 1 1 0 0 
13 1 1 0 1 
14 1 1 1 0 
15 1 1 1 1 
 
(*): Os estados com fundo em cinza não são esperados, e devem migrar para um estado inicial válido caso ocorram. 
Fonte: Autor 
 
Foram realizados os próximos passos para a implementação da máquina de 
estados. 
 
 
18 
 
4.4.1 Diagrama de estados 
 
O circuito final deve respeitar o diagrama de estados, tal diagrama é de grande 
importância para o desenvolvimento do projeto, uma vez que ele irá definir o 
comportamento da mudança de estados. 
Seguindo a ordem que o contador deve funcionar, foi desenvolvido no software 
JFLAP o seguinte diagrama: 
 
 
Figura 8 - Diagrama de estados – Moore 
Fonte: Autor, software JFLAP 
 
 
 
 
 
19 
 
4.4.2 Estados e saídas 
 
A partir das definições de como irá funcionar a máquina de estados, é possível 
desenvolver a tabela verdade de próximo estado e saídas. 
 
Tabela 9- Tabela Verdade de Estados e Saídas (Moore)* 
 UP/DOWN 0 0 0 1 1 0 1 1 
 
 Atual Mantém Decrescente Crescente Blank 
# Q3 Q2 Q1 Q0 Q’3 Q’2 Q’1 Q’0 Q’3 Q’2 Q’1 Q’0 Q’3 Q’2 Q’1 Q’0 Q’3 Q’2 Q’1 Q’0 
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 
1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 
2 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 
3 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 
4 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 
5 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 1 1 
6 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 1 
7 0 1 1 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 1 
8 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 
9 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 
10 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 
11 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 
12 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 
13 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 
14 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 
15 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 
 
(*): Os estados com fundo em cinza não são esperados, portanto migram para um estado inicial válido caso ocorram. 
 
 
Fonte: Autor 
 
 
 
20 
 
4.4.3 Transição de estados 
 
 Com a tabela verdade montada, é possível definir como será o circuito. 
 Sendo assim, foi considerada a seguinte nomenclatura para representar os 
valores (no código – “parameter”): 
 
Tabela 10 - Parameter 
Representação Saída decimal Estado 
S2 = 4'd0 2 0 (Primeiro estado) 
S4 = 4'd1 4 1 
S3 = 4'd2 3 2 
S2I = 4'd3 2 3 
S5 = 4'd4 5 4 
S9 = 4'd5 9 5 
S4I = 4'd6 4 6 
S8 = 4'd7 8 7 
S1 = 4'd8 1 8 
blank = 4'd9 blank 9 
(*): Quando o valor se repete (caso do 2 e do 4), foi inserido um “I” para diferenciar as saídas. 
Fonte: Autor 
 
 Para o desenvolvimento dos possíveis estados, foi criado um caso (if) para cada 
saída, ou seja, basicamente foi realizada a seguinte lógica: 
 
[Saída que será programa, Ex.: S2]: 
 if (up_down == 2'b00) 
 estadoAtual <= [Mesmo estado, mantém]; 
 else if (up_down == 2'b01) 
 estadoAtual <= [Próximo estado, decrescente]; 
 else if (up_down == 2'b10) 
 estadoAtual <= [Próximo estado, crescente]; 
 else 
 estadoAtual <= blank; 
 
 
 
21 
 
4.5 Implementação dos circuitos 
 
Com a lógica definida e os parâmetros a serem utilizados, foi possível desenvolver 
a programação no software Quartus Prime. 
 
4.5.1 Circuito: Próximo estado 
 
O circuito de próximo estado foi desenvolvido para cada saída conforme as figuras 
abaixo: 
 
 
Figura 9 - Saída S2 do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
Figura 10 - Saída S4 do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
Figura 11 - Saída S3 do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
Figura 12 - Saída S2I do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
22 
 
 
 
Figura 13 - Saída S5 do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
 
Figura 14 - Saída S9 do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
Figura 15 - Saída S4I do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
Figura 16 - Saída S8 do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
Figura 17 - Saída S1 do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
 
Figura 18 - Saída blank do circuito: Próximo estado 
Fonte: Autor, software Quartus Prime. 
 
23 
 
4.5.2 Circuito: Decodificador 
 
 O circuito de saída para entrar no module do decodificador foi desenvolvido 
conforme a figura abaixo: 
 
 
Figura 19 - Circuito: Decodificador 
Fonte: Autor, software Quartus Prime. 
 
 
 Percebe-se que cada saída foi associada a uma entrada para o decodificador 
BCD. 
 
 
24 
 
4.5.3 Circuito: Máquina de Estados 
 
Por fim, todos os módulos desenvolvidos foram unificados, sendo possível 
executar a máquina de estados. 
O início do código ficou conforme a figura abaixo: 
 
 
Figura 20 - Circuito: Máquina de Estados (definições iniciais) 
Fonte: Autor, software Quartus Prime. 
 
 
 
 
 
25 
 
5 RESULTADOS OBTIDOS 
Após compilação do código, foram geradas diferentes formas de onda (waveform) 
para a realização de testes visando verificar se está funcionando conforme o esperado. 
 
5.1 Máquina de estados 
 
Foi gerada a forma de onda para o programa da máquina de estado, realizando 4 
testes distintos, ou seja, verificando os diferentes sinais de entrada que ela poderia 
receber (decrescente, crescente, mantém, blank). É possível perceber também o 
funcionamento do reset. 
 
5.1.1 Decrescente 
 
 
Figura 21 - Waveform: Decrescente 
Fonte: Autor, software Quartus Prime. 
 
 
26 
 
5.1.2 Crescente 
 
 
Figura 22 - Waveform: Crescente 
Fonte: Autor, software Quartus Prime. 
 
5.1.3 Mantém 
 
 
Figura 23 - Waveform: Mantém 
Fonte: Autor, software Quartus Prime. 
 
 
27 
 
5.1.4 Blank 
 
 
Figura 24 - Waveform: Blank 
Fonte: Autor, software Quartus Prime. 
 
 
 
28 
 
6 CONCLUSÃO 
 Nesse projeto foi possível visualizar o funcionamento de uma máquina de 
estados, que foi desenvolvida inteiramente no software Quartus Prime através do 
Verilog. Um ponto muito importante no projeto é a montagem do diagrama e da lógica, 
facilitando assim o desenvolvimento do circuito. 
 A máquina atuou conforme o esperado ao carregar no kit FPGA e, sua 
funcionalidade, também é possível visualizar nas waveforms. Tal projeto comparado 
com o desenvolvido por circuitos esquemáticos no Quartus demandou um tempo menor, 
uma vez que o código facilita a implementação das equações que definiam a máquina 
de estados. 
 Por fim, esse projeto agregou muito conhecimento e foi capaz de demonstrar o 
que é uma máquina de estados Moore na prática. A implementação através do HDLs 
(Hardware Description Language), simplificou o projeto e também a resolução de erros 
de lógica, uma vez que alguma alteração no projeto poderia ser implementada de forma 
rápida e assertiva. 
 
 
 
 
 
 
29 
 
7 REFERÊNCIA BIBLIOGRÁFICA 
o [1] Logic and Computer Design Fundamentals. M. Morris Mano e Charles L. 
Kime. Editora Prentice Hall, 2007 
 
o Máquina de Estados Finitos. Disponível em: 
<https://www.inf.pucrs.br/~emoreno/undergraduate/SI/orgarq/class_files/Aula07
.pdf> 
 
o Máquinas de EstadosDisponível em: 
<http://professores.dcc.ufla.br/~giacomin/Com164/MaqEst_V2.pdf> 
 
o TOCCI, J. RONALD. DIGITAL SYSTEMS: PRINCIPLES AND 
APPLICATIONS. Eleventhedition. Pearson, 2011. 
 
http://professores.dcc.ufla.br/~giacomin/Com164/MaqEst_V2.pdf

Continue navegando