Baixe o app para aproveitar ainda mais
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
Compartilhar