VHDL

March 31, 2018 | Author: baladrito | Category: Vhdl, Scientific Modeling, Computer Programming, Notation, Software Engineering


Comments



Description

Demonstração de imagens de auxílio didático VHDL - Descrição e Síntese de Circuitos Digitais Roberto d’AmoreISBN 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 br Imagens curso rápido revisão 3.conseqüência: nem todas construções são suportadas • Motivos da limitação: .com.falta de correspondência da construção / descrição com um circuito exemplo: flip flop com dois terminais de relógio .Síntese de circuitos • VHDL: não foi concebida para síntese de circuitos .ltceditora.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.1 4 . ltceditora.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.1 5 .br Imagens curso rápido revisão 3.com.Etapas gerais de um processo de síntese Simulador VHDL: . b : IN c END soma.br Imagens curso rápido revisão 3.ltceditora.(ilustração das operações) . ARCHITECTURE teste OF soma IS BEGIN c <= a+b.com. Simulador VHDL especificação descrição VHDL Ferramenta de síntese rede de ligações Ferramenta de posicionamento & interligação construção nível portas 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.circuito nível RTL sintetizado . END teste.Ferramenta de síntese • Síntese da descrição .descrição do circuito . INTEGER RANGE 7 DOWNTO 0.circuito nível portas (final) descrição VHDL ENTITY soma IS PORT (a. : OUT INTEGER RANGE 7 DOWNTO 0).1 6 . Ferramenta de posicionamento e interligação • Posiciona e interliga as primitivas / componentes .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.com.dispositivo lógico programável ASIC .br Imagens curso rápido revisão 3.ltceditora.dispositivo empregado na implementação: FPGA .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.br Imagens curso rápido revisão 3.1 8 .com.ltceditora. ltceditora.. esquemática) interfaces Entity i0 Architecture s1 s2 i1 i2 Design Entity relação entre as interfaces VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.com..Declaração da entidade .Entidade de projeto • Pode representar: uma simples porta lógica ..descreve as relações entre as portas (equivalente ao esquema contido no bloco em cap.define portas de entrada e saída da descrição (equivalente ao símbolo de um bloco em captura esquemática) ..Arquitetura .1 9 .br Imagens curso rápido revisão 3. a um sistema completo • Composta de duas partes: . br Imagens curso rápido revisão 3. tipo_b. y1 y2 z0. : : : : IN OUT BUFFER INOUT tipo_a. tipo_c. tipo_d). x1 y0. ----entradas saidas saida entrada / saida Design Entity relação entre as interfaces VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.Declaração da entidade Entity interfaces i0 • ENTITY: inicia a declaração s1 s2 Architecture i1 i2 • PORT: define modo e tipo das portas modo IN : entrada modo OUT : saída modo BUFFER : saída .com.pode ser referenciada internamente modo INOUT : bidirecional • END: termina a declaração ENTITY entidade_abc IS PORT (x0.1 10 .ltceditora. z1 END entidade_abc. • Exemplo: declaração de uma entidade & esquema da arquitetura ENTITY entidade_abc IS PORT (x0.1 11 . z1 END entidade_abc. : : : : IN OUT BUFFER INOUT tipo_a. x1 y0. tipo_c. tipo_d). y1 y2 z0. tipo_b.br Imagens curso rápido revisão 3.ltceditora. ----entradas saidas saida entrada / saida x0 IN IN x1 INOUT z0 y0 OUT y1 y2 BUFFER INOUT z1 VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.com. declaracoes de componentes referenciados -.1 12 .declaracoes concorrentes -END estilo_abc.declaração de sinais e constantes .descricao de sub-programas locais -.Declaração da arquitetura • ARCHITECTURE: inicia a declaração • linhas que seguem podem conter: .definicao de novos tipos de dados locais -BEGIN --.com.declaração de componentes referenciados . VHDL Descrição e Síntese de Circuitos Digitais Design Entity interfaces Entity i0 Architecture s1 s2 i1 i2 relação entre as interfaces Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.descrição de subprogramas locais .declaracoes de sinais e constantes -.br Imagens curso rápido revisão 3.ltceditora.definição de novos tipos • BEGIN: inicia a descrição • END: termina a descrição ARCHITECTURE estilo_abc OF entidade_abc IS -. -.br Imagens curso rápido revisão 3.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.Exemplos de classe de objetos: constante sinal • Objetos: são elementos que contêm um valor armazenado • Exemplo: . <= constante_1.com.1 13 .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_4 <= sinal_1.CONSTANT: valor estático .transferencia entre sinais -. y1. s1 <= x1.portas saida -.regiao de codigo concorrente VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.com.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. duas de saída . END teste.porta entrada -.declarados: s1 sinal interno.operações: transferência de valores . CONSTANT c1 : INTEGER := 7. -.declaracao de uma constante tipo inteiro -.definidas três portas: uma entrada. z1 <= c1.declaracao de um sinal tipo inteiro -. END. e c1 constante .tipo das portas: INTEGER . BEGIN y1 <= s1.1 14 . ARCHITECTURE teste OF atrib_1 IS SIGNAL s1 : INTEGER.ltceditora.• Exemplo de uma descrição completa .z1 : OUT INTEGER).br Imagens curso rápido revisão 3. s1 <= x1.valor de s1 transferido para saída y1 linha 11: s1<= x1 Signal s1 : Integer.ltceditora.• Exemplo de uma descrição completa . x1 32 32 32 -. x1 : In Integer. 7 y1 <= s1. VHDL Descrição e Síntese de Circuitos Digitais -. 9 BEGIN 10 y1 <= s1.br Imagens curso rápido revisão 3. 5 6 ARCHITECTURE teste OF atrib_1 IS 7 SIGNAL s1 : INTEGER. 8 CONSTANT c1 : INTEGER := 7. 12 13 z1 <= c1. Constant c1 : Integer := 7.declaracao de um sinal tipo inteiro -.regiao de codigo concorrente Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.s1 recebe o valor da entrada x1 y1 y1. 32 z1 z1 <= c1.1 15 .declaracao de uma constante tipo inteiro -.observar concorrência no código: linha 10: y1<= s1 -. 14 END teste. 11 s1 <= x1.com. z1 :Out Integer. não é permitida a transferência de valores • Exemplo de tipos pré-definidos no pacote padrão VHDL: classes classes pré-definidos enumerated scalar numeric composite array tipos 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.Tipos • Objetos: .com.devem ser declarados segundo uma especificação de tipo • Objetos de tipos diferentes: .br Imagens curso rápido revisão 3.1 16 . B.65×1047 ≤ x ≤ +3.br Imagens curso rápido revisão 3. 16#7B# 2#11_11_011# REAL -3. C.23E+2. 0 TRUE. 8#173#.65×1047 1.1 17 . A. falso caracteres ASCII -231 ≤ x ≤ 231-1 exemplos 1.23. c.ltceditora.podem ser aplicados operadores: maior. 16#7.com. zero verdadeiro. menor • Classes: enumerado e numérico classe enumerado tipo BIT BOOLEAN CHARACTER numérico INTEGER valor um. FALSE a.Tipos escalares enumerated bit boolean character tipos scalar numeric integer real composite array bit_vector string • São ordenados . ( 123. ?.B#E+1 VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. 1. b. 1 18 . c.BOOLEAN: empregado em declarações que executam uma decisão . FALSE a. zero verdadeiro. falso caracteres ASCII exemplos 1.CHARACTER: qualquer caracter ASCII padrão classe enumerado tipo BIT BOOLEAN CHARACTER valor um.BIT: empregado para representar níveis lógicos “0” e “1” . ?.com. b. C.br Imagens curso rápido revisão 3. 0 TRUE.Tipos escalares enumerated bit boolean character tipos scalar numeric integer real composite array bit_vector string • Classe enumerado (pré-definidos): . B. ( VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. A.ltceditora. 1 19 . 1.br Imagens curso rápido revisão 3.Tipos escalares scalar enumerated numeric character integer real tipos composite array bit_vector string • Classe numérico (pré-definidos): bit boolean . 8#173#.65×1047 exemplos 123.B#E+1 VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.INTEGER: representa um número inteiro entre -231 ≤ x ≤ 231-1 .não suportado pelas ferramentas de síntese classe numérico tipo INTEGER REAL valor -231 ≤ x ≤ 231-1 -3.com.23.necessário uma linha de 32 bits para representação! .ltceditora.65×1047 ≤ x ≤ +3. 16#7B# 2#11_11_011# 1.conveniente limitar a faixa de valores na declaração .REAL: ponto flutuante . 16#7.23E+2. Tipos compostos scalar enumerated bit boolean character numeric integer real tipos composite array bit_vector string • Classe vetor (pré-definidos): . B”10_10”. O”12”. “0” tipo “character” exemplos ”1010”.com.1 20 .ltceditora.BIT_VECTOR: vetor contendo elementos tipo bit . X”A” ”texto”. ””incluindo_aspas”” VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.STRING: vetor contendo elementos tipo character Classe vetor tipo BIT_VECTOR STRING valor “1” .br Imagens curso rápido revisão 3. 1 21 .com.limites definidos por TO e DOWNTO • Exemplos de declarações tipos: bit_vector e string: CONSTANT a: BIT_VECTOR(0 TO 7) := "10110011" 1 0 1 1 0 0 1 1 CONSTANT b: BIT_VECTOR(7 DOWNTO 0) := "10110011" 1 0 1 1 0 0 1 1 a(0) a(1) a(2) a(3) a(4) a(5) a(6) a(7) CONSTANT c: STRING(1 TO 9) := "Alo mundo" A l o m u n d o b(7) b(6) b(5) b(4) b(3) b(2) b(1) b(0) CONSTANT d: STRING(1 DOWNTO 9) := "Alo mundo" 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.Tipos compostos tipos scalar enumerated bit boolean character numeric integer real composite array bit_vector string • Declarações: .ltceditora.br Imagens curso rápido revisão 3. ltceditora.br Imagens curso rápido revisão 3.com. está na classe diversos devido a precedência classe lógicos relacionais adição diversos and = or operadores nand /= + < – not nor <= & xor > xnor >= VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.Exemplo de operadores • Divididos em classes: .1 22 .operadores de uma mesma classe: igual precedência • Maior precedência: classe diversos • Menor precedência: classe lógicos • Operador “not”: operador lógico.as classes definem a precedência dos operadores . maioria das operações: operadores do mesmo tipo • Operadores lógicos: .com.vetores devem ter o mesmo tamanho .Operadores • Tipos envolvidos na operação .operandos: tipos bit e boolean .1 23 .podem ser empregados em vetores (arrays): exemplo: bit_vector .ltceditora.br Imagens curso rápido revisão 3.operação executada entre elementos de mesma posição operadores not and or nand operando “L” bit boolean operando “R” bit boolean bit boolean retorna bit boolean bit boolean nor xor xnor 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. 1 24 . boolean.a=b para compostos: cada elemento de mesma posição igual .br Imagens curso rápido revisão 3. integer.igualdade e desigualdade (= /=): qualquer tipo . real.ordenação (> < >= <=): tipos escalares (bit. time) operadores = > < /= >= <= operando “L” qualquer tipo qualquer tipo escalar operando “R” mesmo tipo de “L” mesmo tipo de “L” retorna boolean boolean .ltceditora.com.• Operadores relacionais: .a=b para escalares: a mesmo valor de b . character.exemplo de valores tipo bit_vector iguais: CONSTANT a: BIT_VECTOR(0 TO 3) := "1000" 1 a(0) 0 a(1) 0 a(2) 0 a(3) b(3) 1 b(2) b(1) 0 0 b(0) 0 CONSTANT c: BIT_VECTOR(0 TO 3) := "1000" 1 0 0 c(2) 0 c(3) CONSTANT b: BIT_VECTOR(3 DOWNTO 0) := "1000" c(0) c(1) VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. -.br Imagens curso rápido revisão 3.concatenação (&): vetor unidimensional e elementos (mesmo tipo) operadores operando “L” tipo numérico vetor unidimensional operando “R” o mesmo tipo de “L” vetor unidimensional elemento vetor unidimensional elemento retorna mesmo tipo vetor unidimensional vetor unidimensional vetor unidimensional vetor unidimensional + & - vetor unidimensional elemento elemento • Exemplo: a <= b & c.”x” bit_vector 5 elementos.com.adição e subtração (+ -): tipo numérico .ltceditora. x <= y & ’1’.1 25 .”c” bit_vetor 4 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. -.• Operadores adição .”a” bit_vector 8 elementos. ”b”. ltceditora.br Imagens curso rápido revisão 3. real formato: 16#b# tipos bit_vector formato: X”B” 16#b. 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.hexadecimal s5 <= (3 =>'1'. OTHERS =>'1').diferentes bases de representação: tipos integer.s5 END std_a. -. -. tipos BIT_VECTOR .s3.0# .linha 12: valor definido para cada elemento.s2.com.definindo valor bit a bit s3 <= B"1_0_11".1 26 VHDL Descrição e Síntese de Circuitos Digitais .definindo atraves de constante s2 <= "1011".linha 10: caracter “_” como separador (melhora leitura do valor) .operação: valor 1011 atribuído a todas as portas de saída . : OUT BIT_VECTOR (3 DOWNTO 0)). -. -.s4. Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. ARCHITECTURE teste OF std_a IS CONSTANT c1 : BIT_VECTOR(3 DOWNTO 0) := "1011".constante BEGIN s1 <= c1. -.Exemplo: Atribuição de valores em sinais. 2 =>'0'.uso da palavara reservada "others" END teste. -.binario default com separadores s4 <= X"B". ARCHITECTURE teste OF std_xc IS BEGIN bv_c <= bv_a & bv_b. bc_d <= bv_a & '1' & '0'.Exemplo: Operadores classe adição .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. VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. BIT_VECTOR(3 DOWNTO 0).ltceditora. int_b bv_c.1 27 . END teste. bv_b int_a. int_c <= -int_a +int_b.br Imagens curso rápido revisão 3. : : : : IN IN OUT OUT BIT_VECTOR(1 DOWNTO 0).linhas 10 e 11: operação de concatenação de dois vetores (tipo bit_vector) . INTEGER RANGE -64 TO 63).com. INTEGER RANGE -32 TO 31. bc_d int_c END std_xc. br Imagens curso rápido revisão 3.ltceditora.std_a .com.std_xc arquivo: std_a.Exercícios • Compilar e simular as descrições: .vhd VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.vhd arquivo: std_xc.1 28 . 1 29 .ltceditora.br Imagens curso rápido revisão 3.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.com. 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 i1 i2 i3 4/1 s1 s0 s0 s1 0 0 1 1 0 1 0 1 ot i0 i1 i2 i3 i3 s0 s1 int3 i2 int2 ot sel ot i1 int1 i0 int0 VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.1 30 .br Imagens curso rápido revisão 3.ltceditora.com. VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. -. -. -.entradas IN BIT.saida 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).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 0 0 1 1 ot s1 s0 ot 0 1 0 1 i0 i1 i2 i3 1 2 3 4 5 6 7 8 9 10 11 12 13 ENTITY mux_0 IS PORT (i0. i2. i3 s0.1 31 .br Imagens curso rápido revisão 3. i1. : : : IN BIT. END nivel_logico. s1 ot END mux_0.ltceditora.selecao OUT BIT).com. com.Exemplo: . -. -.sinais internos BEGIN ot <= int0 OR int1 OR int2 OR int3.ltceditora. int3 <= i3 AND s1 AND s0.selecao OUT BIT). i1. int0 <= i0 AND NOT s1 AND NOT s0.br Imagens curso rápido revisão 3.1 32 . 13 e 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ENTITY mux_00 IS PORT (i0. END teste. i2.valor de ot. -. int2 e int3 • observar concorrência do código: . int2 <= i2 AND s1 AND NOT s0.saida ARCHITECTURE teste OF mux_00 IS SIGNAL int0. int3 : BIT. i0 i1 i2 i3 s0 s1 4/1 0 0 1 1 ot s1 s0 ot 0 1 0 1 i0 i1 i2 i3 : : : IN BIT. int1.nova descrição do circuito de seleção • emprega 5 expressões • sinais internos: int0.entradas IN BIT. -. int2. VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. int1. i3 s0. s1 ot END mux_00. int1 <= i1 AND NOT s1 AND s0. determinado pelas expressões linhas 11. 12. ltceditora.nenhuma condicao verdadeira VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.com.1 33 .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 expressao_b WHEN condicao_2 ELSE expressao_c.condicao_2 = verdadeira -.br Imagens curso rápido revisão 3.condicao_1 = verdadeira -. -. 1 34 VHDL Descrição e Síntese de Circuitos Digitais .Exemplo: . BEGIN ot <= i0 WHEN s1= '0' AND s0='0' ELSE i1 WHEN s1= '0' AND s0='1' ELSE i2 WHEN s1_s0="10" ELSE i3.ltceditora. i3 s0.WHEN ELSE i0 i1 i2 i3 s0 s1 4/1 0 0 1 1 ot s1 s0 ot 0 1 0 1 i0 i1 i2 i3 • nível de abstração mais elevado • descrição mais próxima do comportamento do circuito • 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.com. s1 ot END mux_1. END teste. OUT BIT). Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. ARCHITECTURE teste OF mux_1 IS SIGNAL s1_s0 : BIT_VECTOR(1 DOWNTO 0). i2. i1.circuito de seleção .br Imagens curso rápido revisão 3. IN BIT. : : : IN BIT. condicao_1 condicao_2.condicoes restantes VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.não existe uma prioridade como na construção WHEN ELSE • Opções pode ser agrupadas: . -.condicao_5 ate condicao_7 OTHERS.expressao_escolha = condicao_1. -.br Imagens curso rápido revisão 3.ltceditora. -.com.TO e DOWNTO delimitam faixas de opções • Opções restantes: palavra reservada OTHERS • Formato da construção: WITH expressao_escolha SELECT sinal_destino <= expressao_a expressao_b expressao_c expressao_d expressao_e WHEN WHEN WHEN WHEN WHEN -.caracter | equivale a “ou” . -.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 .1 35 .condicao_2 condicao_3 | condicao_4.condicao_3 ou condicao_4 condicao_5 TO condicao_7. -. ltceditora.1 36 VHDL Descrição e Síntese de Circuitos Digitais . s1 ot END mux_9.br Imagens curso rápido revisão 3. i3 s0.WITH SELECT i0 i1 i2 i3 s0 s1 4/1 0 0 1 1 ot s1 s0 ot 0 1 0 1 i0 i1 i2 i3 • nível de abstração mais elevado • descrição mais próxima do comportamento do circuito • 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. i2 WHEN "10".Exemplo: circuito de seleção . : OUT BIT). i1 WHEN "01". END teste. i2. : IN BIT. WITH sel SELECT ot <= i0 WHEN "00". i1. i3 WHEN "11". ARCHITECTURE teste OF mux_9 IS SIGNAL sel : BIT_VECTOR (1 DOWNTO 0).com. : IN BIT. Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. BEGIN sel <= s1 & s0. p3 a de maior privilégio .⇒ 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.três entradas denominadas p3.ltceditora. p2 e p1 .código da entrada: saídas c1 e c2 p3 1 0 0 0 p2 1 0 0 p1 1 0 c1 1 1 0 0 c0 1 0 1 0 p3 p2 p1 codificador de prioridade c1 c0 .br Imagens curso rápido revisão 3.com.1 37 .Exercício • Desenvolver uma descrição para um codificador de prioridade empregando a construção WHEN ELSE . ltceditora.1 38 .br Imagens curso rápido revisão 3.com.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. .todas são executadas concorrentemente abc:PROCESS BEGIN declaração 1 declaração 2 . declaração n END PROCESS xyz. . execução das declarações execução das declarações execução conjunta VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. xyz:PROCESS declaração.Comandos seqüenciais • Comandos seqüenciais podem ocorrer em: .br Imagens curso rápido revisão 3.1 39 . . declaração n END PROCESS abc. .com.subprogramas • Processo . declaração.processos .ltceditora.delimita uma região contendo código seqüencial • Uma descrição: composta de comandos concorrentes . abc:PROCESS declaração. xyz:PROCESS BEGIN declaração 1 declaração 2 .é um comando concorrente . com.(lista de sensibilidade) Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.comandos são avaliados na seqüência . . comando_2.um sinal da lista tem valor alterado • Iniciada a execução: .ltceditora.1 40 .processo é suspenso (aguarda uma nova alteração de valor .ao término da avaliação do último comando: .Lista de sensibilidade em processos • Após a palavra reservada PROCESS: . sinal_b) BEGIN comando_1. comando_n..sinais da lista) abc: PROCESS(sinal_a. END PROCESS abc.possível declarar a lista de sensibilidade • Lista de sensibilidade: . VHDL Descrição e Síntese de Circuitos Digitais -.define quais sinais causam a execução do processo • Execução do processo ocorre se: .br Imagens curso rápido revisão 3. comando_sequencial. ELSIF condicao_2 THEN comando_sequencial.1 41 .clausula ELSE opcional VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. comando_sequencial.clausula ELSIF opcional -. END IF.Construção seqüencial IF ELSE • Teste: definido por uma lista de condições (similar: construção WHEN ELSE) • Execução condicional de um ou mais comandos seqüenciais • Primeira condição verdadeira: • Condição de teste: • Início da construção: define as comandos executados qualquer expressão que retorne BOOLEAN comandos IF opcionais • Cláusulas ELSIF e ELSE: • Formato da construção: IF condicao_1 THEN comando_sequencial.ltceditora. -. ELSIF condicao_3 THEN comando_sequencial.br Imagens curso rápido revisão 3.com. ELSE comando_sequencial. i0 i1 i2 i3 s0 s1 4/1 0 0 1 1 ot s1 s0 ot 0 1 0 1 i0 i1 i2 i3 : : : IN BIT. abc: PROCESS (i0. -.selecao OUT BIT). s1 ot END mux_4aa. BEGIN sel <= s1 & s0.1 42 VHDL Descrição e Síntese de Circuitos Digitais . END PROCESS abc. ELSIF sel = "01" THEN ot <= i1.saida ARCHITECTURE teste OF mux_4aa IS SIGNAL sel : BIT_VECTOR (1 DOWNTO 0). i1. i3. ELSE ot <= i3.IF ELSE • Comando seqüencial: necessário definir um processo • Lista de sensibilidade: sinais i0 i1 i2 i3 sel .entradas IN BIT. sel) BEGIN IF sel = "00" THEN ot <= i0.br Imagens curso rápido revisão 3.Exemplo: . i2. ELSIF sel = "10" THEN ot <= i2.ltceditora. Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. i1. i3 s0.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.com. -. i2.circuito de seleção . END teste. -. END IF. não existe prioridade (como na construção WHEN ELSE) • Opções podem ser agrupadas: .expressao_escolha = comando_a.caracter | equivale a “ou” . -. -.condicao_1 comando_b.com.condicao_2 comando_d. -.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 .condicao_5 ate condicao_9 comando_e.condicoes restantes VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. -.TO e DOWNTO delimitam faixas de opções • Opções restantes: palavra reservada OTHERS • Formato da construção: CASE expressao_escolha IS WHEN condicao_1 WHEN condicao_2 WHEN condicao_3 | condicao_4 WHEN condicao_5 TO condicao_9 WHEN OTHERS END CASE. => => => => => -.condicao_3 ou condicao_4 comando_d.br Imagens curso rápido revisão 3.1 43 . comando_c.ltceditora. comando_f. -. i1.ltceditora.1 44 VHDL Descrição e Síntese de Circuitos Digitais . i2. END PROCESS abc. BEGIN sel <= s1 & s0. sel) BEGIN CASE sel IS WHEN "00" => ot <= i0. i1. i0 i1 i2 i3 s0 s1 4/1 0 0 1 1 ot s1 s0 ot 0 1 0 1 i0 i1 i2 i3 : : : IN BIT. WHEN "10" => ot <= i2.Exemplo : .br Imagens curso rápido revisão 3. ARCHITECTURE teste OF mux_3aa IS SIGNAL sel : BIT_VECTOR (1 DOWNTO 0). abc: PROCESS (i0. s0 ot END mux_3aa. IN BIT. END CASE.CASE WHEN • Comando seqüencial: necessário definir um processo • Nota: s1 e s2 agrupados no sinal sel 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. OUT BIT). i2. i3. Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.com. END teste.circuito de seleção . i3 s1. WHEN "01" => ot <= i1. WHEN OTHERS => ot <= i3. 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.inicialização síncrona • Registrador sensível a borda .com.1 45 .br Imagens curso rápido revisão 3.Estratégias de descrição de circuitos síncronos • Registrador sensível a nível • Registrador sensível a borda .ltceditora. 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.br Imagens curso rápido revisão 3.ltceditora.1 46 .um valor é atribuído a um sinal .Inferência de um elemento de memória em VHDL • Inferência de um elemento de memória: .com. com. END PROCESS.1 47 . d <= q .br Imagens curso rápido revisão 3.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. VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora. d) BEGIN IF (ena = ’1’) THEN END IF . 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 rst : IN set : IN d : IN q : OUT END latch3_1; BIT; -- habilita BIT; -- rst=1 leva q=000 BIT; -- set=1 leva q=111 BIT_VECTOR(2 DOWNTO 0); BIT_VECTOR(2 DOWNTO 0)); ARCHITECTURE teste OF latch3_1 IS BEGIN PROCESS (en, d, rst, set) BEGIN IF (rst ='1') THEN q <="000"; ELSIF (set ='1') THEN q <="111"; ELSIF (en ='1') THEN q <=d; END IF; END PROCESS; END teste; -- q=000 independente de en -- q=111 independente de en -- 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 br .falso: caso contrario a b event s <= a AND b 200 stable 1000 event stable 1200 1400 1600 1800 stable 400 600 800 t ns Atributos .aplicação .falso caso contrario • s’EVENT .com.verdadeiro: não ocorreu uma troca de valor .ltceditora.Atributos .verdadeiro: ocorreu uma troca de valor .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') VHDL Descrição e Síntese de Circuitos Digitais ----- borda borda borda borda de de de de subida descida subida descida Imagens curso rápido revisão 3.exemplos • s’STABLE .1 51 Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.sinais ck rst e set necessitam estar na lista de sensibilidade PROCESS (ck.Registrador sensível a borda .eventos assincronos THEN q <= ’1’. set) BEGIN IF (rst = '1') ELSIF (set = '1') THEN q <= ’0’.detecta borda de subida do relogio END IF. -.ltceditora.(exemplo) ck d set set q rst ck rst d q • Formato geral: empregando processo .inicialização assíncrona . rst.com. ELSIF (ck'EVENT AND ck ='1') THEN q <=d.1 52 . END PROCESS. -. -. -.br Imagens curso rápido revisão 3. -. condicao do sinal relogio END IF.3 bits . BIT_VECTOR(2 DOWNTO 0)). END teste.set=1 leva q=111 assincrono BIT_VECTOR(2 DOWNTO 0).relogio BIT.br Imagens curso rápido revisão 3. -. set) BEGIN IF (rst = '1') THEN q <="000". -.ltceditora. ARCHITECTURE teste OF flip3_3 IS BEGIN PROCESS (ck. BIT. -. rst. -. VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.q=111 independente de ck ELSIF (ck'EVENT AND ck ='1') THEN q <=d. END PROCESS.inicialização assíncrona • Exemplo: . -.com. -.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 rst : IN set : IN d : IN q : OUT END flip3_3.q=000 independente de ck ELSIF (set = '1') THEN q <="111".1 53 .rst=1 leva q=000 assincrono BIT.Registrador sensível a borda . 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.1 54 .br Imagens curso rápido revisão 3.ltceditora.com. ltceditora. WHEN estado_1 => estado <= estado_2.com. -. => estado <= estado_final. rst) BEGIN IF rst = '1' THEN estado <= estado_inicial. Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.proximo estado -.ocorrência de uma borda de subida no sinal de relógio • Construção CASE WHEN: . WHEN estado_x END CASE.força a especificação de todos os estados PROCESS (ck. -.1 55 .inicialização rst =1 . VHDL Descrição e Síntese de Circuitos Digitais -. END IF.estado inicial -... ELSIF (ck'EVENT and ck ='1') THEN CASE estado IS WHEN estado_inicial => estado <= estado_1.br Imagens curso rápido revisão 3. END PROCESS..ciclo de estados -.Máquinas de estado finito • Construção do tipo IF ELSE detecta: .definição das transições de estado .__/-. exemplo • Contador • Saída dos registradores corresponde ao valor de saída .1 56 .código do estado = valor de saída .br Imagens curso rápido revisão 3.Máquinas de estado finito .com.não é necessário decodificar rst=1 00 01 estado atual lógica combinacional relógio 10 11 rst estado futuro registradores reset saída VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora. END teste.br Imagens curso rápido revisão 3. END PROCESS abc. -.rst=1. ELSIF (ck'EVENT and ck ='1') THEN CASE q IS WHEN "00" => q <= "01".ltceditora. WHEN "10" => q <= "00".com. -. ARCHITECTURE teste OF maq_est1 IS BEGIN abc: PROCESS (ck. rst) BEGIN IF rst = '1' THEN q <= "00". -. q=00 q : BUFFER BIT_VECTOR (1 DOWNTO 0)).estado inicial -. WHEN "11" => q <= "10".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.1 57 .saida codigo Gray END maq_est1. END CASE.Máquinas de estado finito .relogio borda subida rst : IN BIT. WHEN "01" => q <= "11". -. END IF.ciclo de estados VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. com.1 58 .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.br Imagens curso rápido revisão 3. 1 59 . R lógica combinacional saída 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.Exercício • Implementar uma máquina de estados .contador crescente decrescente código GRAY .ltceditora.entrada sobe define sentido crescente / decrescente 0/00 1/01 estado atual sobe relógio sobe=0 sobe=1 3/10 2/11 lógica combinacional estado futuro reg.com.br Imagens curso rápido revisão 3. 1 60 .com.Fim VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.br Imagens curso rápido revisão 3. p3 p1 p0 c <= "11" WHEN p(3)='1' ELSE -.0 0 0 END teste.com.Codificador de prioridade: possíveis soluções ."10" WHEN p(2)='1' ELSE -.1 .0 1 "01" WHEN p(1)='1' ELSE -. -.0 0 1 "00". c : OUT BIT_VECTOR(1 DOWNTO 0)).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).1 61 . ARCHITECTURE teste OF pr_cod1 IS BEGIN -. END pr_cod1. c1 c0 1 1 1 0 0 1 0 0 VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.br Imagens curso rápido revisão 3. br Imagens curso rápido revisão 3. ARCHITECTURE teste OF pr_cod2 IS BEGIN WITH p SELECT c <= "11" WHEN "111"|"110"|"101"|"100".0 1 -. END teste. "00" WHEN "000".1 62 .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).0 0 1 -.Codificador de prioridade: possíveis soluções .ltceditora. -.0 0 0 c1 c0 1 1 1 0 0 1 0 0 VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www.-. "10" WHEN "011"|"010". "01" WHEN "001". END pr_cod2.1 .p3 p1 p0 -.com. c : OUT BIT_VECTOR(1 DOWNTO 0)). s0 ELSE estado <= 2. IN IN IN OUT BIT. WHEN 2 => -. -. ELSIF (ck'EVENT and ck ='1') THEN -. -.s3 IF sobe = '1' THEN estado <= 0. q=00 saida codigo Gray ARCHITECTURE teste OF maq_est2 IS SIGNAL estado : INTEGER RANGE 3 DOWNTO 0. WITH estado q <= "00" "01" "11" "10" END teste. END PROCESS abc. rst=1. -.00. SELECT WHEN 0. -. WHEN 3.ciclo de estados CASE estado IS WHEN 0 => -. -.s3 END IF.com.01. BEGIN abc: PROCESS (ck.s1 END IF. WHEN 2. WHEN 1.11. WHEN 1 => -. BIT.estado inicial estado <= 0. -.s0 IF sobe = '1' THEN estado <= 1.s3 ELSE estado <= 1. ----relogio borda subida sobe=1.s2 ELSE estado <= 0. WHEN 3 => -. BIT_VECTOR (1 DOWNTO 0)).s1 IF sobe = '1' THEN estado <= 2.br Imagens curso rápido revisão 3. BIT.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 : sobe : rst : q : END maq_est2.ltceditora.s2 IF sobe = '1' THEN estado <= 3. END IF. VHDL Descrição e Síntese de Circuitos Digitais Roberto d’Amore ISBN 85-216-1452-7 Editora LTC www. END CASE.1 63 . -. q=00. -.s0 END IF.s2 END IF..10..s1 ELSE estado <= 3. rst) BEGIN IF rst = '1' THEN -.
Copyright © 2024 DOKUMEN.SITE Inc.