Baixe o app para aproveitar ainda mais
Prévia do material em texto
VHDL2 Prof. Rangel Arthur FT/UNICAMP 1 Primeiros Contatos com a Linguagem VHDL 1. Entidade de Projeto ....................................................................................................... 2 2. Declaração da Entidade ................................................................................................ 3 3. Declaração da Arquitetura ............................................................................................ 5 4. Exemplos de Classe de Objetos .................................................................................... 6 5. Tipos ............................................................................................................................. 9 5.1 Tipos Escalares ........................................................................................................ 9 5.2 Tipos Compostos ................................................................................................... 12 6. Operadores .................................................................................................................. 14 7. Prática de Laboratório................................................................................................. 19 VHDL2 Prof. Rangel Arthur FT/UNICAMP 2 1. Entidade de Projeto Pode representar: o uma simples porta lógica; o um sistema lógico completo. Composta de duas partes: o Declaração da entidade, que define portas de entrada e saída da descrição. É equivalente ao símbolo de um bloco em captura esquemática. o Arquitetura, que descreve as relações entre as portas. É equivalente ao esquema contido no bloco em captura esquemática. VHDL2 Prof. Rangel Arthur FT/UNICAMP 3 2. Declaração da Entidade A declaração da entidade é iniciada de acordo com algumas regras. o ENTITY: inicia a declaração; 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 o END: termina a declaração. VHDL2 Prof. Rangel Arthur FT/UNICAMP 4 Exemplo: declaração de uma entidade e um esquema da arquitetura: Com isso, pode-se ter duas arquiteturas diferentes e uma única descrição de entidade. VHDL2 Prof. Rangel Arthur FT/UNICAMP 5 3. Declaração da Arquitetura A palavra ARCHITECTURE inicia a declaração da Arquitetura e as linhas que seguem podem conter: o Declaração de sinais e constantes; o Declaração de componentes referenciados; o Descrição de subprogramas locais; o Definição de novos tipos. A palavra BEGIN inicia a descrição. A palavra END termina a descrição. VHDL2 Prof. Rangel Arthur FT/UNICAMP 6 4. Exemplos de Classe de Objetos Objetos são elementos que contêm um valor armazenado e podem ser divididos em quatro classes. o CONSTANT: valor estático; o VARIABLE: o valor inicialmente imposto pode ser alterado ao longo do código; o SIGNAL: valor imposto pode ser alterado ao longo de regiões de código seqüencial e concorrente. Exemplos de transferência de valores: constante e sinal. VHDL2 Prof. Rangel Arthur FT/UNICAMP 7 Exemplo de uma descrição completa: o Definidas três portas: uma entrada, duas de saída; o Tipo das portas: INTEGER; o Operações: transferência de valores; o Declarados: s1 sinal interno, e c1 constantes; o Concorrência no código. VHDL2 Prof. Rangel Arthur FT/UNICAMP 8 Exemplo de uma descrição completa para observação de concorrência. linha 10: y1<= s1 -- valor de s1 transferido para saída y1 linha 11: s1<= x1 -- s1 recebe o valor da entrada x1 VHDL2 Prof. Rangel Arthur FT/UNICAMP 9 5. Tipos Objetos devem ser declarados segundo uma especificação de tipo. Não é permitida a transferência de valores a objetos de tipos diferentes. Exemplo de tipos pré-definidos no pacote padrão VHDL: 5.1 Tipos Escalares São ordenados e representam um valor único. A eles podem ser aplicados operadores: maior, menor, etc. Classes: enumerado e numérico. VHDL2 Prof. Rangel Arthur FT/UNICAMP 10 Classe enumerado (pré-definidos): o BIT: empregado para representar níveis lógicos “0” e “1”. o BOOLEAN: empregado em declarações que executam uma decisão. o CHARACTER: qualquer caracter ASCII padrão. VHDL2 Prof. Rangel Arthur FT/UNICAMP 11 Classe numérico (pré-definidos): o INTEGER: representa um número inteiro entre -231 ≤ x ≤ 231- 1 em que é necessário uma linha de 32 bits para representação. É conveniente limitar a faixa de valores na declaração. o REAL: ponto flutuante. Não suportado pelas ferramentas de síntese. VHDL2 Prof. Rangel Arthur FT/UNICAMP 12 5.2 Tipos Compostos Classe vetor (pré-definidos): o BIT_VECTOR: vetor contendo elementos tipo bit. o STRING: vetor contendo elementos tipo caractere. VHDL2 Prof. Rangel Arthur FT/UNICAMP 13 Declarações de tipos compostos: limites definidos por TO e DOWNTO. Exemplos de declarações tipos: bit_vector e string: VHDL2 Prof. Rangel Arthur FT/UNICAMP 14 6. Operadores Divididos em classes: o As classes definem a precedência dos operadores. o Operadores de uma mesma classe: igual precedência. A classe diversos possui maior precedência, enquanto os operadores da classe lógicos possuem menor precedência. Assim, o operador “not” (operador lógico) está na classe diversos devido à precedência. Na maioria das operações os operadores serão sempre do mesmo tipo. No caso de operadores lógicos, usam-se operandos: tipos bit e boolean. Podem também ser empregados em vetores (arrays): Exemplo: bit_vector, em que os vetores devem ter o mesmo tamanho e as operações são executadas entre elementos de mesma posição. VHDL2 Prof. Rangel Arthur FT/UNICAMP 15 Operadores relacionais definem condições de igualdade e desigualdade (= /=): qualquer tipo. o a=b para escalares: a mesmo valor de b. o a=bpara compostos: cada elemento de mesma posição igual. o ordenação (> < >= <=): tipos escalares (bit, boolean, character, integer, real, time). VHDL2 Prof. Rangel Arthur FT/UNICAMP 16 Exemplo de valores tipo bit_vector iguais: Operadores adição: adição e subtração (+ -) de tipo numérico. Concatenação (&) de vetores unidimensionais e elementos (mesmo tipo). Exemplo: VHDL2 Prof. Rangel Arthur FT/UNICAMP 17 Exemplo: Atribuição de valores em sinais, tipos BIT_VECTOR: operação de atribuição do valor 1011 a todas as portas de saída em diferentes bases de representação: o tipos integer, real formato: 16#b# 16#b.0# o tipos bit_vector formato: X“B” Na linha 10 o caracter “_” como separador melhora a leitura do valor. Na linha 12 o valor é definido para cada elemento. A palavra reservada OTHERS especifica elementos restantes VHDL2 Prof. Rangel Arthur FT/UNICAMP 18 Pode-se também exemplificar os operadores da classe adição. As linhas 10 e 11representam operações de concatenação de dois vetores (tipo bit_vector). A linha 12 soma dois tipos inteiros. VHDL2 Prof. Rangel Arthur FT/UNICAMP 19 7. Prática de Laboratório 1. Usando o Quartus II, as dicas apresentadas na aula anterior e os conceitos apresentados aqui, apresente o código de uma entidade que descreva as quatro expressões lógicas a seguir. Nessas expressões, considere o operador de negação com maior precedência e o operador lógico “ou” com menor precedência. A entidade deve ter quatro portas de entrada, “a”, “b”, “c” e “d”, e quatro portas de saída, “s1”, “s2”, “s3” e “s4”, todas do tipo bit. a) bas 1 b) dcbas 2 c) dcbas 3 d) adcbas 4 VHDL2 Prof. Rangel Arthur FT/UNICAMP 20 2. Determine em função do código abaixo, sem o auxílio do simulador, qual o valor de cada porta de saída. Note que todos os comandos são concorrentes, e, portanto, a ordem das linhas do código não importa. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ENTITY std_yc IS PORT (a, b : OUT BIT_VECTOR (2 DOWNTO 0); c, d : OUT BIT_VECTOR (0 TO 2)); END std_yc; ARCHITECTURE teste OF std_yc IS CONSTANT x : BIT_VECTOR(0 TO 7) := B"1101_1001"; SIGNAL y : BIT_VECTOR(3 DOWNTO 0); BEGIN a <= x(1 TO 3); b <= y(3 DOWNTO 1); c <= x(5 TO 7); d <= y(2 DOWNTO 0); y <= x(2 TO 5); END teste; VHDL2 Prof. Rangel Arthur FT/UNICAMP 21 3. O código a seguir apresenta erros. Identifique, com a ajuda do simulador, as linhas com erro e proponha uma correção. 1 2 3 4 5 6 7 8 9 10 11 12 13 ENTITY errad_1 IS PORT (a, b, c, d : IN BIT; s : OUT BIT_VECTOR (5 DOWNTO 0)); END errad_1; ARCHITECTURE teste OF errad_1 IS BEGIN s(0) <= a AND b OR c AND d; s(1) <= a NOR b NOR c; s(2) <= a AND b OR c; s(3) <= NOT (a AND b) NAND c; s(4) <= a XOR b XOR c; END teste; .
Compartilhar