Demonstração de imagens de auxílio didático. VHDL - Descrição e Síntese de Circuitos Digitais Roberto d Amore

Documentos relacionados
low): Descreve o que o sistema deve fazer utilizando expressões lógicas.

Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC

Introdução à Linguagem VHDL

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL.

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba

Introdução à Linguagem VHDL

Fundamentos de Sistemas Digitais. Lógica Sequencial. Prof. Dr. Alexandre M. Amory Prof. Dr Edson I. Moreno

Funções de Lógica Combinacional

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM)

LABORG. VHDL Máquina de estados finitos

Introdução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA

Introdução a Sistemas Digitais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva

Descreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA :

PDA de Sistemas Digitais em Circuitos Programáveis

Prof. Luiz Marcelo Chiesse da Silva VHDL. 1.Histórico

Introdução à Ciência da Computação

Projeto de Circuito Combinacional

Aula 7: Portas Lógicas: AND, OR, NOT, XOR, NAND e NOR

Projetos de Sistemas Digitais com VHDL - Parte I

Eletrônica Digital I TE050. Circuitos Seqüenciais

Laboratório 6 (Trabalho com Relatório) Semana 25 de Outubro a 29 de Outubro

Circuitos Seqüenciais

Descrição e Projeto de Circuitos Utilizando VHDL

II Escola Regional de Mato Grosso do Sul - II ERI-MS

Circuitos Seqüenciais

Biestáveis R S, J K e D

Lição 4 Fundamentos da programação

Circuitos Digitais. Tipos de circuitos digitais: Circuitos combinacionais Circuitos sequenciais

Plano de Ensino. Leandro Schwarz Endereço eletrônico:

Modelagem de Sistemas com VHDL

UFMT. Ministério da Educação UNIVERSIDADE FEDERAL DE MATO GROSSO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO PLANO DE ENSINO

PRÁTICAS PARA DESENVOLVIMENTO DE PROTÓTIPOS DE CIRCUITOS DIGITAIS COM O KIT EDUCACIONAL DE2

Calculadora Simples em VHDL

Curso Profissional de Técnico de Gestão de Equipamentos Informáticos 10º ANO

7 Operadores e Expressões

Paradigmas de Linguagens

EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

FPGA & VHDL. Tutorial Aula 1. Computação Digital

2. FLIP FLOP tipo D síncrono borda de descida e com entradas assíncronas preset e clear. PRE Q n F/F CLR

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

X Y Z A B C D

Programação com Acesso a BD. Programação com OO Acesso em Java

Introdução ao Fortran 90. Aula 3

Linguagem de Maquina II. Visão Geral

TÉCNICO DE INFORMÁTICA - SISTEMAS

Objetos em VHDL. * Há quatro tipos de objetos em VHDL: - Constantes - Sinais - Variáveis - Arquivos

Eletrônica Digital para Instrumentação

LABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans

Divisão de Engenharia Eletrônica Laboratório de ELE-20

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

Mensagens de Erro do Compilador

Plano de Ensino. Leandro Schwarz Endereço eletrônico:

Escola Politécnica de Pernambuco Departamento de Engenharia Elétrica PROGRAMA EMENTA OBJETIVOS

Circuitos Combinacionais Básicos

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

O que é uma variável?

CONCEITOS DE ALGORITMOS

Organização e Arquitetura de Computadores I

Uma Introdução às Linguagens de Descrição de Hardware

Linguagens de Programação. Marco A L Barbosa

CAP. VI ANÁLISE SEMÂNTICA

Como construir um compilador utilizando ferramentas Java

Capítulo 7. Expressões e Sentenças de Atribuição

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS UNIDADE DE ENSINO SUPERIOR CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA PLANO DE ENSINO

Orientação a Objetos e Java

Noções de algoritmos - Aula 1

Organização e Arquitetura de Computadores I

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Introdução. 17-out-08 Leandro Tonietto 2

UFJF FABRICIO CAMPOS

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Introdução a eletrônica digital, apresentação do curso, cronograma do curso.

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

LÓGICA DIGITAL - CONCEITOS. * Constantes. * Expressões: Aritméticas; Lógicas; Tabela Verdade; Relacionais; Booleanas. * Portas Lógicas.

LÓGICA DIGITAL CONCEITOS DE CLOCK RELÓGIOS (CLOCK) Prof. Celso Candido ADS / REDES / ENGENHARIA

Aula 7 SISTEMAS DIGITAIS. Linguagem de Descrição de Hardware VHDL Maquinas de Estados. Prof. Fernanda Gusmão de Lima Kastensmidt

Capítulo 5 - Flip-Flops e Dispositivos Correlatos

Sistemas de Numeração. Sistemas de Numeração. Sistemas de Numeração. RUIDO em Sistemas Computacionais. Arquiteturas de Computadores

Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Variáveis primitivas e Controle de fluxo

AULA 2 Implementação de Flip-Flops dos tipos JK e RS Livro Texto pág. 113 a 117 e 124 e 146 a 148 e 150 a 152.

CALCULADORA SIMPLES COM ULA

Ambiente de desenvolvimento

VHDL ENTIDADES DE PROJETO

EPUSP PCS 2011/2305/2355 Laboratório Digital SOMADORES DECIMAIS

PHP INTRODUÇÃO DELIMITADORES DE CÓDIGO EXTENSÃO DE ARQUIVOS

PHP: <?php echo("hello World");?> Printa Hello World na página do navegador, mais fácil do que no Java.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

SSC510 Arquitetura de Computadores 1ª AULA

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

Organização e Arquitetura de Computadores INTRODUÇÃO

Linguagens de Programação Conceitos e Técnicas. Amarrações

JSP Prof. Daniela Pires. VARIAVEIS... 2 Tipos de Dados... 2 String Float Integer Boolean... 3

Transcrição:

Demonstração de imagens de auxílio didático VHDL - Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Para imagens de um curso completo consulte: www.ele.ita.br/~damore/vhdl VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 1

Tópicos Aspectos gerais da linguagem Síntese de circuitos Entidade de projeto Classes de objetos: constante, variável e sinal Tipos Operadores Construção concorrente WHEN ELSE Construção concorrente WITH SELECT Processos e lista de sensibilidade Construção seqüencial IF ELSE Construção seqüencial CASE WHEN Circuitos síncronos VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 2

Aspectos gerais da linguagem Suporta diversos níveis de hierarquia - uma descrição pode ser: conjunto de descrições interligadas Estilo de uma descrição - diversos níveis de abstração são suportados - pode conter descrições com diferentes níveis de abstração Ferramentas de síntese: - suportam diferentes estilos de descrição - normalmente: modos preferenciais devem ser empregados Linguagem concorrente - ordem dos comandos: não importa - comandos seqüenciais: somente em regiões específicas VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 3

Síntese de circuitos VHDL: não foi concebida para síntese de circuitos - conseqüência: nem todas construções são suportadas Motivos da limitação: - falta de correspondência da construção / descrição com um circuito exemplo: flip flop com dois terminais de relógio - impossibilidade da síntese direta exemplo: multiplicação de dois números reais VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 4

Etapas gerais de um processo de síntese Simulador VHDL: - compilação / simulação do código especificação descrição VHDL Simulador VHDL Ferramenta de síntese rede de ligações Ferramenta de posicionamento & interligação construção VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 5

Ferramenta de síntese Síntese da descrição - (ilustração das operações) - descrição do circuito - circuito nível RTL sintetizado - circuito nível portas (final) Simulador VHDL especificação descrição VHDL Ferramenta de síntese rede de ligações Ferramenta de posicionamento & interligação construção descrição VHDL nível portas ENTITY soma IS PORT (a, b : IN INTEGER RANGE 7 DOWNTO 0; c : OUT INTEGER RANGE 7 DOWNTO 0); END soma; ARCHITECTURE teste OF soma IS BEGIN c <= a+b; END teste; nível RTL otimização velocidade / área VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 6

Ferramenta de posicionamento e interligação Posiciona e interliga as primitivas / componentes - dispositivo empregado na implementação: FPGA - dispositivo lógico programável ASIC - circuitos integrados de aplicação específica especificação descrição VHDL Simulador VHDL Ferramenta de síntese rede de ligações Ferramenta de posicionamento & interligação construção VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 7

Primeiro contato com a linguagem VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 8

Entidade de projeto Pode representar: uma simples porta lógica... a um sistema completo Composta de duas partes: - Declaração da entidade - define portas de entrada e saída da descrição (equivalente ao símbolo de um bloco em captura esquemática) - Arquitetura - descreve as relações entre as portas (equivalente ao esquema contido no bloco em cap. esquemática) interfaces Design Entity Entity Architecture relação entre as interfaces i0 i1 i2 s1 s2 VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 9

Declaração da entidade ENTITY: inicia a declaração PORT: define modo e tipo das portas modo IN : entrada modo OUT : saída modo BUFFER : saída - pode ser referenciada internamente modo INOUT : bidirecional END: termina a declaração Design Entity Entity Architecture interfaces relação entre as interfaces i0 i1 i2 s1 s2 ENTITY entidade_abc IS PORT (x0, x1 : IN tipo_a; -- entradas y0, y1 : OUT tipo_b; -- saidas y2 : BUFFER tipo_c; -- saida z0, z1 : INOUT tipo_d); -- entrada / saida END entidade_abc; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 10

Exemplo: declaração de uma entidade & esquema da arquitetura ENTITY entidade_abc IS PORT (x0, x1 : IN tipo_a; -- entradas y0, y1 : OUT tipo_b; -- saidas y2 : BUFFER tipo_c; -- saida z0, z1 : INOUT tipo_d); -- entrada / saida END entidade_abc; INOUT IN IN x0 x1 z0 y0 y1 y2 z1 OUT BUFFER INOUT VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 11

Declaração da arquitetura ARCHITECTURE: inicia a declaração linhas que seguem podem conter: Design Entity Entity Architecture interfaces relação entre as interfaces i0 i1 i2 s1 s2 - declaração de sinais e constantes - declaração de componentes referenciados - descrição de subprogramas locais - definição de novos tipos BEGIN: inicia a descrição END: termina a descrição ARCHITECTURE estilo_abc OF entidade_abc IS -- declaracoes de sinais e constantes -- declaracoes de componentes referenciados -- descricao de sub-programas locais -- definicao de novos tipos de dados locais -- BEGIN -- -- declaracoes concorrentes -- END estilo_abc; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 12

Exemplos de classe de objetos: constante sinal Objetos: são elementos que contêm um valor armazenado Exemplo: - CONSTANT: valor estático - SIGNAL: valor imposto pode ser alterado regiões de código seqüencial e concorrente Exemplos de transferência de valores: constante e sinal sinal_2 <= sinal_1; -- transferencia entre sinais sinal_4 <= constante_1; -- transferencia de constante para sinal VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 13

Exemplo de uma descrição completa - definidas três portas: uma entrada, duas de saída - tipo das portas: INTEGER - operações: transferência de valores - declarados: s1 sinal interno, e c1 constante - concorrência no código: (próxima imagem) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ENTITY atrib_1 IS PORT (x1 : IN INTEGER; -- porta entrada y1,z1 : OUT INTEGER); -- portas saida END; ARCHITECTURE teste OF atrib_1 IS SIGNAL s1 : INTEGER; CONSTANT c1 : INTEGER := 7; BEGIN y1 <= s1; s1 <= x1; z1 <= c1; END teste; -- declaracao de um sinal tipo inteiro -- declaracao de uma constante tipo inteiro -- regiao de codigo concorrente VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 14

Exemplo de uma descrição completa - observar concorrência no código: linha 10: y1<= s1 -- valor de s1 transferido para saída y1 linha 11: s1<= x1 -- s1 recebe o valor da entrada x1 Signal s1 : Integer; x1 : In Integer; x1 32 32 32 y1 s1 <= x1; y1 <= s1; y1, z1 :Out Integer; Constant c1 : Integer := 7; 7 32 z1 z1 <= c1; 5 6 7 8 9 10 11 12 13 14 ARCHITECTURE teste OF atrib_1 IS SIGNAL s1 : INTEGER; CONSTANT c1 : INTEGER := 7; BEGIN y1 <= s1; s1 <= x1; z1 <= c1; END teste; -- declaracao de um sinal tipo inteiro -- declaracao de uma constante tipo inteiro -- regiao de codigo concorrente VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 15

Tipos Objetos: - devem ser declarados segundo uma especificação de tipo Objetos de tipos diferentes: - não é permitida a transferência de valores Exemplo de tipos pré-definidos no pacote padrão VHDL: classes classes pré-definidos scalar tipos composite enumerated numeric array bit boolean character integer real bit_vector string VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 16

Tipos escalares scalar tipos composite enumerated numeric array São ordenados - podem ser aplicados operadores: maior, menor Classes: enumerado e numérico bit boolean character integer real bit_vector string classe tipo valor exemplos enumerado BIT um, zero 1, 0 BOOLEAN verdadeiro, falso TRUE, FALSE CHARACTER caracteres ASCII a, b, c, A, B, C,?, ( numérico INTEGER -2 31 x 2 31-1 123, 8#173#, 16#7B# 2#11_11_011# REAL -3.65 10 47 x +3.65 10 47 1.23, 1.23E+2, 16#7.B#E+1 VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 17

Tipos escalares scalar tipos composite enumerated numeric array bit boolean character integer real bit_vector string Classe enumerado (pré-definidos): - BIT: empregado para representar níveis lógicos 0 e 1 - BOOLEAN: empregado em declarações que executam uma decisão - CHARACTER: qualquer caracter ASCII padrão classe tipo valor exemplos enumerado BIT um, zero 1, 0 BOOLEAN verdadeiro, falso TRUE, FALSE CHARACTER caracteres ASCII a, b, c, A, B, C,?, ( VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 18

Tipos escalares scalar tipos composite enumerated numeric array Classe numérico (pré-definidos): bit boolean character integer real - INTEGER: representa um número inteiro entre -2 31 x 2 31-1 - necessário uma linha de 32 bits para representação! - conveniente limitar a faixa de valores na declaração - REAL: ponto flutuante - não suportado pelas ferramentas de síntese bit_vector string classe tipo valor exemplos numérico INTEGER -2 31 x 2 31-1 123, 8#173#, 16#7B# 2#11_11_011# REAL -3.65 10 47 x +3.65 10 47 1.23, 1.23E+2, 16#7.B#E+1 VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 19

Tipos compostos tipos scalar composite enumerated numeric array bit boolean character integer real bit_vector string Classe vetor (pré-definidos): - BIT_VECTOR: vetor contendo elementos tipo bit - STRING: vetor contendo elementos tipo character Classe tipo valor exemplos vetor BIT_VECTOR 1, 0 1010, B 10_10, O 12, X A STRING tipo character texto, incluindo_aspas VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 20

Tipos compostos tipos scalar composite enumerated numeric array bit boolean character integer real bit_vector string Declarações: - limites definidos por TO e DOWNTO Exemplos de declarações tipos: bit_vector e string: CONSTANT a: BIT_VECTOR(0 TO 7) := "10110011" CONSTANT b: BIT_VECTOR(7 DOWNTO 0) := "10110011" 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 a(0) a(1) a(2) a(3) a(4) a(5) a(6) a(7) b(7) b(6) b(5) b(4) b(3) b(2) b(1) b(0) CONSTANT c: STRING(1 TO 9) := "Alo mundo" CONSTANT d: STRING(1 DOWNTO 9) := "Alo mundo" A l o m u n d o A l o m u n d o c(1) c(2) c(3) c(4) c(5) c(6) c(7) c(8) c(9) d(9) d(8) d(7) d(6) d(5) d(4) d(3) d(2) d(1) VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 21

Exemplo de operadores Divididos em classes: - as classes definem a precedência dos operadores - operadores de uma mesma classe: igual precedência Maior precedência: classe diversos Menor precedência: classe lógicos Operador not : operador lógico, está na classe diversos devido a precedência classe operadores lógicos and or nand nor xor xnor relacionais = /= < <= > >= adição + & diversos not VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 22

Operadores Tipos envolvidos na operação - maioria das operações: operadores do mesmo tipo Operadores lógicos: - operandos: tipos bit e boolean - podem ser empregados em vetores (arrays): exemplo: bit_vector - vetores devem ter o mesmo tamanho - operação executada entre elementos de mesma posição operadores operando L operando R retorna not - bit bit - boolean boolean and or nand bit bit bit nor xor xnor boolean boolean boolean Nota: O operador not pertence a classe diversos VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 23

Operadores relacionais: - igualdade e desigualdade (= /=): qualquer tipo - a=b para escalares: a mesmo valor de b - a=b para compostos: cada elemento de mesma posição igual - ordenação (> < >= <=): tipos escalares (bit, boolean, character, integer, real, time) operadores operando L operando R retorna = /= qualquer tipo mesmo tipo de L boolean > < >= <= qualquer tipo escalar mesmo tipo de L boolean - exemplo de valores tipo bit_vector iguais: CONSTANT a: BIT_VECTOR(0 TO 3) := "1000" b(3) b(2) b(1) b(0) CONSTANT c: BIT_VECTOR(0 TO 3) := "1000" 1 0 0 0 1 0 0 0 1 0 0 0 a(0) a(1) a(2) a(3) CONSTANT b: BIT_VECTOR(3 DOWNTO 0) := "1000" c(0) c(1) c(2) c(3) VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 24

Operadores adição - adição e subtração (+ -): tipo numérico - concatenação (&): vetor unidimensional e elementos (mesmo tipo) operadores operando L operando R retorna + - tipo numérico o mesmo tipo de L mesmo tipo vetor unidimensional vetor unidimensional vetor unidimensional & vetor unidimensional elemento vetor unidimensional elemento vetor unidimensional vetor unidimensional elemento elemento vetor unidimensional Exemplo: a <= b & c; -- a bit_vector 8 elementos, b, c bit_vetor 4 elementos x <= y & 1 ; -- x bit_vector 5 elementos, y bit_vetor 4 elementos VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 25

Exemplo: Atribuição de valores em sinais, tipos BIT_VECTOR - operação: valor 1011 atribuído a todas as portas de saída - diferentes bases de representação: tipos integer, real formato: 16#b# tipos bit_vector formato: X B 16#b.0# - linha 10: caracter _ como separador (melhora leitura do valor) - linha 12: valor definido para cada elemento, palavra reservada OTHERS especifica elementos restantes 1 2 3 4 5 6 7 8 9 10 11 12 13 ENTITY std_a IS PORT (s1,s2,s3,s4,s5 : OUT BIT_VECTOR (3 DOWNTO 0)); END std_a; ARCHITECTURE teste OF std_a IS CONSTANT c1 : BIT_VECTOR(3 DOWNTO 0) := "1011"; -- constante BEGIN s1 <= c1; -- definindo atraves de constante s2 <= "1011"; -- definindo valor bit a bit s3 <= B"1_0_11"; -- binario default com separadores s4 <= X"B"; -- hexadecimal s5 <= (3 =>'1', 2 =>'0', OTHERS =>'1'); -- uso da palavara reservada "others" END teste; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 26

Exemplo: Operadores classe adição - linhas 10 e 11: operação de concatenação de dois vetores (tipo bit_vector) - linha 12: soma de dois tipos inteiros 1 2 3 4 5 6 7 8 9 10 11 12 13 ENTITY std_xc IS PORT (bv_a, bv_b : IN BIT_VECTOR(1 DOWNTO 0); int_a, int_b : IN INTEGER RANGE -32 TO 31; bv_c, bc_d : OUT BIT_VECTOR(3 DOWNTO 0); int_c : OUT INTEGER RANGE -64 TO 63); END std_xc; ARCHITECTURE teste OF std_xc IS BEGIN bv_c <= bv_a & bv_b; bc_d <= bv_a & '1' & '0'; int_c <= -int_a +int_b; END teste; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 27

Exercícios Compilar e simular as descrições: - std_a arquivo: std_a.vhd - std_xc arquivo: std_xc.vhd VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 28

Comandos concorrentes básicos Construção WHEN ELSE Construção WITH SELECT VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 29

Descrição de um circuito de seleção entradas: i0, i1, i2 e i3 saída: ot controle da seleção: s0 e s1 i0 i0 int0 i1 i2 i3 sel 4 / 1 ot s1 s0 ot i1 i2 int1 int2 ot s0 s1 0 0 0 1 1 0 1 1 i0 i1 i2 i3 i3 s0 s1 int3 VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 30

Exemplo: descrição do circuito de seleção descrição emprega uma única expressão observar: uso de parêntesis AND e OR igual precedência i0 i1 i2 i3 s0 s1 4 / 1 ot s1 s0 0 0 0 1 1 0 1 1 ot i0 i1 i2 i3 1 2 3 4 5 6 7 8 9 10 11 12 13 ENTITY mux_0 IS PORT (i0, i1, i2, i3 : IN BIT; -- entradas s0, s1 : IN BIT; -- selecao ot : OUT BIT); -- saida END mux_0; ARCHITECTURE nivel_logico OF mux_0 IS BEGIN ot <= (i0 AND NOT s1 AND NOT s0) OR (i1 AND NOT s1 AND s0) OR (i2 AND s1 AND NOT s0) OR (i3 AND s1 AND s0); END nivel_logico; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 31

Exemplo: - nova descrição do circuito de seleção emprega 5 expressões sinais internos: int0, int1, int2 e int3 observar concorrência do código: - valor de ot, determinado pelas expressões linhas 11, 12, 13 e 14 i0 i1 i2 i3 s0 s1 4 / 1 ot s1 s0 0 0 0 1 1 0 1 1 ot i0 i1 i2 i3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ENTITY mux_00 IS PORT (i0, i1, i2, i3 : IN BIT; -- entradas s0, s1 : IN BIT; -- selecao ot : OUT BIT); -- saida END mux_00; ARCHITECTURE teste OF mux_00 IS SIGNAL int0, int1, int2, int3 : BIT; -- sinais internos BEGIN ot <= int0 OR int1 OR int2 OR int3; int0 <= i0 AND NOT s1 AND NOT s0; int1 <= i1 AND NOT s1 AND s0; int2 <= i2 AND s1 AND NOT s0; int3 <= i3 AND s1 AND s0; END teste; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 32

Construção WHEN ELSE Transferência condicional de um sinal Contém: uma lista de condições e expressões Primeira condição verdadeira: define expressão transferida Formato da construção: sinal_destino <= expressao_a WHEN condicao_1 ELSE -- condicao_1 = verdadeira expressao_b WHEN condicao_2 ELSE -- condicao_2 = verdadeira expressao_c; -- nenhuma condicao verdadeira VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 33

Exemplo: - circuito de seleção - WHEN ELSE i0 nível de abstração mais elevado descrição mais próxima do comportamento do circuito i1 i2 i3 s0 s1 4 / 1 ot s1 s0 0 0 0 1 1 0 1 1 ot i0 i1 i2 i3 opção de escolha: linhas 10 e 11: operação AND entre s0 e s1 linha 12: s0 e s1 concatenados 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ENTITY mux_1 IS PORT (i0, i1, i2, i3 : IN BIT; s0, s1 : IN BIT; ot : OUT BIT); END mux_1; ARCHITECTURE teste OF mux_1 IS SIGNAL s1_s0 : BIT_VECTOR(1 DOWNTO 0); BEGIN ot <= i0 WHEN s1= '0' AND s0='0' ELSE i1 WHEN s1= '0' AND s0='1' ELSE i3; END teste; i2 WHEN s1_s0="10" ELSE VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 34

Construção WITH SELECT Transferência condicional de um sinal Contém: uma lista de opções e expressões Todas condições da expressão de escolha devem ser consideradas - não existe uma prioridade como na construção WHEN ELSE Opções pode ser agrupadas: - caracter equivale a ou - TO e DOWNTO delimitam faixas de opções Opções restantes: palavra reservada OTHERS Formato da construção: WITH expressao_escolha SELECT -- expressao_escolha = sinal_destino <= expressao_a WHEN condicao_1, -- condicao_1 expressao_b WHEN condicao_2, -- condicao_2 expressao_c WHEN condicao_3 condicao_4, -- condicao_3 ou condicao_4 expressao_d WHEN condicao_5 TO condicao_7, -- condicao_5 ate condicao_7 expressao_e WHEN OTHERS; -- condicoes restantes VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 35

Exemplo: circuito de seleção - WITH SELECT i0 nível de abstração mais elevado descrição mais próxima do comportamento do circuito i1 i2 i3 s0 s1 4 / 1 ot s1 s0 0 0 0 1 1 0 1 1 ot i0 i1 i2 i3 expressão de escolha: sinal sel = s1 e s0 concatenados 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ENTITY mux_9 IS PORT (i0, i1, i2, i3 : IN BIT; s0, s1 : IN BIT; ot : OUT BIT); END mux_9; ARCHITECTURE teste OF mux_9 IS SIGNAL sel : BIT_VECTOR (1 DOWNTO 0); BEGIN sel <= s1 & s0; WITH sel SELECT ot <= i0 WHEN "00", i1 WHEN "01", i2 WHEN "10", i3 WHEN "11"; END teste; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 36

Exercício Desenvolver uma descrição para um codificador de prioridade empregando a construção WHEN ELSE - três entradas denominadas p3, p2 e p1 - p3 a de maior privilégio - código da entrada: saídas c1 e c2 p3 p2 p1 codificador de prioridade c1 c0 p3 p2 p1 c1 c0 1 - - 1 1 0 1-1 0 0 0 1 0 1 0 0 0 0 0 - não importa Repita o exercício anterior empregando a construção WITH SELECT VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 37

Comandos seqüenciais básicos Processos Lista de sensibilidade em processos Construção IF ELSE Construção CASE WHEN VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 38

Comandos seqüenciais Comandos seqüenciais podem ocorrer em: - processos - subprogramas Processo - é um comando concorrente - delimita uma região contendo código seqüencial Uma descrição: composta de comandos concorrentes - todas são executadas concorrentemente execução das declarações abc:process BEGIN declaração 1 declaração 2... declaração n END PROCESS abc; declaração; xyz:process declaração; abc:process declaração; execução conjunta xyz:process BEGIN declaração 1 declaração 2... declaração n END PROCESS xyz; execução das declarações VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 39

Lista de sensibilidade em processos Após a palavra reservada PROCESS: - possível declarar a lista de sensibilidade Lista de sensibilidade: - define quais sinais causam a execução do processo Execução do processo ocorre se: - um sinal da lista tem valor alterado Iniciada a execução: - comandos são avaliados na seqüência - ao término da avaliação do último comando: - processo é suspenso (aguarda uma nova alteração de valor - sinais da lista) abc: PROCESS(sinal_a, sinal_b) BEGIN comando_1; comando_2;.. comando_n; END PROCESS abc; -- (lista de sensibilidade) VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 40

Construção seqüencial IF ELSE (similar: construção WHEN ELSE) Execução condicional de um ou mais comandos seqüenciais Teste: definido por uma lista de condições Primeira condição verdadeira: define as comandos executados Condição de teste: qualquer expressão que retorne BOOLEAN Início da construção: comandos IF Cláusulas ELSIF e ELSE: opcionais Formato da construção: IF condicao_1 THEN comando_sequencial; comando_sequencial; ELSIF condicao_2 THEN comando_sequencial; comando_sequencial; ELSIF condicao_3 THEN comando_sequencial; ELSE comando_sequencial; END IF; -- clausula ELSIF opcional -- clausula ELSE opcional VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 41

Exemplo: - circuito de seleção - IF ELSE Comando seqüencial: necessário definir um processo Lista de sensibilidade: sinais i0 i1 i2 i3 sel i0 i1 i2 i3 s0 s1 4 / 1 ot s1 s0 0 0 0 1 1 0 1 1 ot i0 i1 i2 i3 - remoção de um destes sinais: conseqüência? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ENTITY mux_4aa IS PORT (i0, i1, i2, i3 : IN BIT; -- entradas s0, s1 : IN BIT; -- selecao ot : OUT BIT); -- saida END mux_4aa; ARCHITECTURE teste OF mux_4aa IS SIGNAL sel : BIT_VECTOR (1 DOWNTO 0); BEGIN sel <= s1 & s0; abc: PROCESS (i0, i1, i2, i3, sel) BEGIN IF sel = "00" THEN ot <= i0; ELSIF sel = "01" THEN ot <= i1; ELSIF sel = "10" THEN ot <= i2; ELSE ot <= i3; END IF; END PROCESS abc; END teste; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 42

Construção CASE WHEN (similar: construção WITH SELECT) Execução condicional de um ou mais comando seqüenciais A execução dos comando: controlada pelo valor de uma expressão Todas condições da expressão de escolha devem ser consideradas - não existe prioridade (como na construção WHEN ELSE) Opções podem ser agrupadas: - caracter equivale a ou Opções restantes: palavra reservada OTHERS Formato da construção: - TO e DOWNTO delimitam faixas de opções CASE expressao_escolha IS -- expressao_escolha = WHEN condicao_1 => comando_a; -- condicao_1 WHEN condicao_2 => comando_b; comando_c; -- condicao_2 WHEN condicao_3 condicao_4 => comando_d; -- condicao_3 ou condicao_4 WHEN condicao_5 TO condicao_9 => comando_d; -- condicao_5 ate condicao_9 WHEN OTHERS => comando_e; comando_f; -- condicoes restantes END CASE; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 43

Exemplo : - circuito de seleção - CASE WHEN Comando seqüencial: necessário definir um processo Nota: s1 e s2 agrupados no sinal sel i0 i1 i2 i3 s0 s1 4 / 1 ot s1 s0 0 0 0 1 1 0 1 1 ot i0 i1 i2 i3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ENTITY mux_3aa IS PORT (i0, i1, i2, i3 : IN BIT; s1, s0 : IN BIT; ot : OUT BIT); END mux_3aa; ARCHITECTURE teste OF mux_3aa IS SIGNAL sel : BIT_VECTOR (1 DOWNTO 0); BEGIN sel <= s1 & s0; abc: PROCESS (i0, i1, i2, i3, sel) BEGIN CASE sel IS WHEN "00" => ot <= i0; WHEN "01" => ot <= i1; WHEN "10" => ot <= i2; WHEN OTHERS => ot <= i3; END CASE; END PROCESS abc; END teste; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 44

Estratégias de descrição de circuitos síncronos Registrador sensível a nível Registrador sensível a borda - inicialização síncrona Registrador sensível a borda - inicialização assíncrona Máquinas de estado finito VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 45

Inferência de um elemento de memória em VHDL Inferência de um elemento de memória: - um valor é atribuído a um sinal - variável em pelo menos uma condição e nenhum valor é atribuído a este objeto em pelo menos uma condição VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 46

Registrador sensível a nível Exemplo: d enb q enb d q Formato geral: empregando processo - sinal d: deve estar na lista de sensibilidade PROCESS (ena, d) BEGIN IF (ena = 1 ) THEN d <= q ; END IF ; END PROCESS; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 47

Registrador sensível a nível Exemplo: reset e set assíncronos (devem ser incluídos na lista de sensibilidade) Qual o comportamento da descrição se rst ou set forem removidos? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ENTITY latch3_1 IS PORT (en : IN BIT; -- habilita rst : IN BIT; -- rst=1 leva q=000 set : IN BIT; -- set=1 leva q=111 d : IN BIT_VECTOR(2 DOWNTO 0); q : OUT BIT_VECTOR(2 DOWNTO 0)); END latch3_1; ARCHITECTURE teste OF latch3_1 IS BEGIN PROCESS (en, d, rst, set) BEGIN IF (rst ='1') THEN q <="000"; -- q=000 independente de en ELSIF (set ='1') THEN q <="111"; -- q=111 independente de en ELSIF (en ='1') THEN q <=d; END IF; END PROCESS; END teste; -- condicao do sinal para habilitar VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 48

Registrador sensível a nível Resultado da síntese (nível RTL): VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 49

Atributos Informações adicionais - associadas: tipos objetos e unidades de projeto - um objeto: (num dado instante de tempo) - pode conter um único valor - pode possuir vários atributos Atributo pode ser referenciado na forma: prefixo nome_atributo - prefixo: corresponde ao item (por exemplo um sinal) - nome_atributo : atributo desejado do item - : separa o prefixo e o nome_atributo VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 50

Atributos - exemplos s STABLE - verdadeiro: não ocorreu uma troca de valor - falso caso contrario s EVENT - verdadeiro: ocorreu uma troca de valor - falso: caso contrario a b s <= a AND b event stable event stable stable 200 400 600 800 1000 1200 1400 1600 1800 t ns Atributos - aplicação - verificação de bordas de subida ou descida em sinais (ck'event AND ck ='1') (ck'event AND ck ='0') (NOT ck'stable AND ck ='1') (NOT ck'stable AND ck ='0') -- borda de subida -- borda de descida -- borda de subida -- borda de descida VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 51

Registrador sensível a borda - inicialização assíncrona - (exemplo) set d q ck rst ck set rst d Formato geral: empregando processo - sinais ck rst e set necessitam estar na lista de sensibilidade q PROCESS (ck, rst, set) BEGIN IF (rst = '1') THEN q <= 0 ; -- eventos assincronos ELSIF (set = '1') THEN q <= 1 ; --. --. --. ELSIF (ck'event AND ck ='1') THEN q <=d; -- detecta borda de subida do relogio END IF; END PROCESS; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 52

Registrador sensível a borda - inicialização assíncrona Exemplo: - 3 bits - reset e set assíncronos (é necessário inclusão na lista de sensibilidade) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ENTITY flip3_3 IS PORT (ck : IN BIT; -- relogio rst : IN BIT; -- rst=1 leva q=000 assincrono set : IN BIT; -- set=1 leva q=111 assincrono d : IN BIT_VECTOR(2 DOWNTO 0); q : OUT BIT_VECTOR(2 DOWNTO 0)); END flip3_3; ARCHITECTURE teste OF flip3_3 IS BEGIN PROCESS (ck, rst, set) BEGIN IF (rst = '1') THEN q <="000"; -- q=000 independente de ck ELSIF (set = '1') THEN q <="111"; -- q=111 independente de ck ELSIF (ck'event AND ck ='1') THEN q <=d; END IF; END PROCESS; END teste; -- condicao do sinal relogio VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 53

Registrador sensível a borda - inicialização assíncrona Resultado da síntese (nível RTL): VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 54

Máquinas de estado finito Construção do tipo IF ELSE detecta: - inicialização rst =1 - ocorrência de uma borda de subida no sinal de relógio Construção CASE WHEN: - definição das transições de estado - força a especificação de todos os estados PROCESS (ck, rst) BEGIN IF rst = '1' THEN estado <= estado_inicial; ELSIF (ck'event and ck ='1') THEN CASE estado IS WHEN estado_inicial => estado <= estado_1; --. WHEN estado_1 => estado <= estado_2; --. --. WHEN estado_x END CASE; END IF; END PROCESS; => estado <= estado_final; -- estado inicial -- /-- proximo estado -- ciclo de estados VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 55

Máquinas de estado finito - exemplo Contador Saída dos registradores corresponde ao valor de saída - código do estado = valor de saída - não é necessário decodificar rst=1 00 01 estado atual lógica combinacional estado futuro registradores saída 10 11 relógio rst reset VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 56

Máquinas de estado finito - descrição 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ENTITY maq_est1 IS PORT (ck : IN BIT; -- relogio borda subida rst : IN BIT; -- rst=1, q=00 q : BUFFER BIT_VECTOR (1 DOWNTO 0)); -- saida codigo Gray END maq_est1; ARCHITECTURE teste OF maq_est1 IS BEGIN abc: PROCESS (ck, rst) BEGIN IF rst = '1' THEN q <= "00"; ELSIF (ck'event and ck ='1') THEN CASE q IS WHEN "00" => q <= "01"; WHEN "01" => q <= "11"; WHEN "11" => q <= "10"; WHEN "10" => q <= "00"; END CASE; END IF; END PROCESS abc; END teste; -- estado inicial -- ciclo de estados VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 57

Máquinas de estado finito - descrição Resultado da síntese (nível RTL): VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 58

Exercício Implementar uma máquina de estados - contador crescente decrescente código GRAY - entrada sobe define sentido crescente / decrescente 0/00 1/01 3/10 2/11 estado atual sobe relógio lógica combinacional estado futuro reg. R lógica combinacional saída sobe=0 sobe=1 rst Simule e verifique a descrição VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 59

Fim VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 60

Codificador de prioridade: possíveis soluções - solução empregando a construção concorrente: WHEN ELSE 1 2 3 4 5 6 7 8 9 10 11 12 ENTITY pr_cod1 IS PORT (p : IN BIT_VECTOR(3 DOWNTO 1); c : OUT BIT_VECTOR(1 DOWNTO 0)); END pr_cod1; ARCHITECTURE teste OF pr_cod1 IS BEGIN -- p3 p1 p0 c1 c0 c <= "11" WHEN p(3)='1' ELSE -- 1 - - 1 1 "10" WHEN p(2)='1' ELSE -- 0 1-1 0 "01" WHEN p(1)='1' ELSE -- 0 0 1 0 1 "00"; -- 0 0 0 0 0 END teste; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 61

Codificador de prioridade: possíveis soluções - solução empregando a construção concorrente: WITH SELECT 1 2 3 4 5 6 7 8 9 10 11 12 13 ENTITY pr_cod2 IS PORT (p : IN BIT_VECTOR(3 DOWNTO 1); c : OUT BIT_VECTOR(1 DOWNTO 0)); END pr_cod2; ARCHITECTURE teste OF pr_cod2 IS BEGIN WITH p SELECT -- p3 p1 p0 c1 c0 c <= "11" WHEN "111" "110" "101" "100", -- 1 - - 1 1 "10" WHEN "011" "010", -- 0 1-1 0 "01" WHEN "001", -- 0 0 1 0 1 "00" WHEN "000"; -- 0 0 0 0 0 END teste; VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 62

Máquina de estado: possível solução 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ENTITY maq_est2 IS PORT (ck : IN BIT; -- relogio borda subida sobe : IN BIT; -- sobe=1, q=00,01,11,10,00... rst : IN BIT; -- rst=1, q=00 q : OUT BIT_VECTOR (1 DOWNTO 0)); -- saida codigo Gray END maq_est2; ARCHITECTURE teste OF maq_est2 IS SIGNAL estado : INTEGER RANGE 3 DOWNTO 0; BEGIN abc: PROCESS (ck, rst) BEGIN IF rst = '1' THEN -- estado inicial estado <= 0; ELSIF (ck'event and ck ='1') THEN -- ciclo de estados CASE estado IS WHEN 0 => -- s0 IF sobe = '1' THEN estado <= 1; -- s1 ELSE estado <= 3; -- s3 END IF; WHEN 1 => -- s1 IF sobe = '1' THEN estado <= 2; -- s2 ELSE estado <= 0; -- s0 END IF; WHEN 2 => -- s2 IF sobe = '1' THEN estado <= 3; -- s3 ELSE estado <= 1; -- s1 END IF; WHEN 3 => -- s3 IF sobe = '1' THEN estado <= 0; -- s0 ELSE END IF; END CASE; END IF; END PROCESS abc; WITH estado SELECT q <= "00" WHEN 0, "01" WHEN 1, "11" WHEN 2, "10" WHEN 3; END teste; estado <= 2; -- s2 VHDL Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Imagens curso rápido revisão 3.1 63