• Nenhum resultado encontrado

TUTORIAL VHDL 01

N/A
N/A
Protected

Academic year: 2021

Share "TUTORIAL VHDL 01"

Copied!
9
0
0

Texto

(1)

1

VHDL – VHSIC HARDWARE DESCRIPTION LANGUAGE

Tutorial 01 - VHDL

Prof. Perci Ayres Antiqueira

Instituto Federal do Paraná - IFPR

(2)

2

TUTORIAL 01 – Conceitos básicos de VHDL

A linguagem VHDL foi criada para descrever circuitos complexos, na década de 1980. A sigla VHDL significa “VHSIC Hardware Description Language”, onde VHSIC significa “VERY HIGH SPEED INTEGRATED CIRCUITS”, ou seja, é uma linguagem de descrição de circuitos integrados de muito alta velocidade.

Fluxo de Projeto

O fluxo de projeto passa pelas etapas de Especificação, Codificação em VHDL, Analise e Síntese, Alocação física e Roteamento, Geração do código de programação e Gravação do dispositivo lógico programável (CPLD ou FPGA).

Durante as etapas de desenvolvimento são possíveis vários tipos de simulação para verificar o funcionamento correto do circuito antes da gravação do dispositivo.

Ferramentas Utilizadas

Para desenvolvimento com VHDL são utilizadas ferramentas EDA (Eletrônic Design Automation) que permitem a síntese e a simulação do circuito, além de interface de gravação.

Alguns exemplos de ferramentas EDA utilizadas são:  Quartus II da Altera

 ISE da Xilinx

(3)

3 Exemplo de código em VHDL – Porta XOR

Vemos abaixo um exemplo de código em VHDL, correspondente a um circuito de porta XOR (OU exclusivo). A linguagem VHDL não é “case sensitive”, ou seja, não diferencia letras maiúsculas e minúsculas.

Após a inclusão de algumas bibliotecas, aparece a entidade, que descreve os terminais de entrada e saída do circuito. Em seguida aparece a arquitetura, que descreve a lógica de funcionamento do circuito.

Após a compilação do código VHDL, são gerados vários arquivos que permitem a simulação funcional ou temporal do circuito.

Simulação funcional do circuito

Observa-se na simulação funcional do circuito, que a saída S é assume nível lógico alto quando exclusivamente uma das entradas A ou B estiver em nível lógico alto.

Na simulação funcional não são considerados os atrasos de propagação do sinal no circuito.

(4)

4 Representação de números e caracteres em VHDL Inteiros

Os números inteiros são normalmente representados na base 10 (decimais).

Binários

Os números binários são representados entre aspas simples para um único bit e entre aspas duplas para múltiplos bits.

‘1’ “0010”

Números sem sinal

Neste caso não existe representação para números negativos. Números com sinal

Neste caso os números são representados em complemento de dois, sendo que um número negativo tem o bit mais significativo com valor ‘1’ e um número positivo tem o bit mais significativo com valor ‘0’.

0111 = 7

1001 = -7 (Representação em complemento de dois) Caracteres

De forma similar à representação de números binários, os caracteres simbolizando seus códigos ASCII, são representados entre aspas simples para um único caractere e entre aspas duplas para uma sequência de caracteres.

‘A’ “mp3”

(5)

5 Estrutura do código VHDL

O código em VHDL contém três partes básicas  Declaração de bibliotecas

 Entidade

 Arquitetura Declaração de bibliotecas

Esta parte contém uma lista das bibliotecas e respectivos pacotes utilizados, sendo as bibliotecas mais comuns ieee, std e work, sendo as duas últimas visíveis mesmo quando não são declaradas.

As bibliotecas contém uma coleção de pedaços de código comumente utilizados, permitindo sua utilização em vários projetos. Normalmente, uma biblioteca é composta por vários pacotes “package” contendo definições de tipos de dados, funções e procedimentos.

Um circuito desenvolvido anteriormente pode ser colocado em uma biblioteca, para ser utilizado (instanciado) em outros projetos, utilizando-se a palavra chave “COMPONENT”.

Para se declarar uma biblioteca utiliza-se a seguinte sintaxe: LIBRARY nome_da_biblioteca;

USE nome_da_biblioteca.nome_do_pacote.all;

(6)

6 Entidade

A entidade “ENTITY” define o nome e os terminas de entrada e saído do circuito. Para escrever a entidade utiliza-se a seguinte sintaxe:

ENTITY nome_da_entidade IS PORT(

nome_da_porta: modo tipo_de_sinal; nome_da_porta: modo tipo_de_sinal ...);

END nome_da _entidade

O nome da entidade e das portas pode ser qualquer palavra, exceto algumas poucas palavras reservadas, como por exemplo, VHDL.

Os modos das portas podem ser IN, OUT, INOUT ou BUFFER. Os modos IN e OUT são unidirecionais, o modo INOUT é bidirecional e o modo BUFFER é utilizado como saída, mas cujo valor pode ser lido internamente.

Os tipos de sinal podem ser BIT, INTEGER, STD_LOGIC e assim por diante.

Na figura abaixo vemos um exemplo de entidade para um circuito contador de 4 bits, onde foram criadas duas entradas (clk e reset) e quatro saídas (Q0, Q1, Q2 e Q3). Tanto as entradas como as saídas são do tipo STD_LOGIC.

Como veremos posteriormente, o tipo STD_LOGIC é semelhante ao tipo BIT, que admite os valores ‘0’ e ‘1’, mas permite também outros valores como alta impedância ‘Z’ e irrelevante ‘-’.

(7)

7 Arquitetura

A arquitetura contém uma descrição de como o circuito deve funcionar, sendo que a partir dela , o circuito é inferido. Uma sintaxe simplificada da arquitetura é mostrada abaixo.

ARCHITECTURE nome_da_arquitetura OF nome_da_entidade IS [declarações de sinais e variáveis]

BEGIN

Definição da arquitetura END

O nome da arquitetura pode ser qualquer palavra, exceto algumas poucas palavras reservadas, como por exemplo, VHDL.

A parte de declarações de sinais e variáveis é opcional.

Na parte de definição da arquitetura é descrito o código para a criação do circuito, que pode ser expresso de forma comportamental ou estrutural.

Na figura abaixo vemos um exemplo de arquitetura para o contador de 4 bits.

(8)

8

O nome da entidade deve corresponder ao nome da entidade criada anteriormente. Neste caso, “contador_vhdl”.

Em seguida foi declarado um sinal chamado “cont” do tipo UNSIGNED com 4 bits (3 downto 0) , no qual será realizada a contagem de 0 (“0000”) até 9 (“1001”).

O tipo UNSIGNED é um inteiro positivo.

Na parte de descrição de funcionamento do circuito foi criado um “process”, o qual é utilizado para criação de circuitos digitais sequenciais, os quais utilizam flip-flops. Nos circuitos sequenciais os sinais de saída dependem dos sinais atuais de entrada e também do estado anterior de alguns sinais de saída, daí a necessidade de flip-flops para armazenar o estado anterior. Já nos circuitos combinacionais, os sinais de saída dependem apenas dos sinais atuais de entrada.

Cada processo possui entre parênteses, uma lista de sensibilidade onde aparecem os sinais que serão as entrada do circuito sequencial. Neste caso, (clk, reset).

O processo também possui um começo (begin) e um fim (end process).

Dentro do processo, verifica-se se o sinal “reset” tem nível baixo (‘0’) e em caso afirmativo, o contador é zerado (if reset = ‘0’ then cont <= “0000”).

Caso contrário verifica-se se ocorreu uma borda de descida do sinal de clock (elsif clk’event and clk = ‘0’) e, em caso afirmativo, podem ocorrer duas situações. Se contador já estiver no último valor de contagem (9), ele deve ser zerado (if cont = “1001” then cont <= “0000”). Caso contrário, o contador deve ser incrementado (else cont <= cont+1)

Desta forma, sempre que ocorrer uma borda de descida do sinal de “clock”, o contador será incrementado e quando já estiver no último valor de contagem, será zerado para começar uma nova contagem.

Após descrição do processo, cada bit do sinal cont é atribuído a um sinal de saída Q0 <= cont(0); Q1 <= cont(1); Q2 <= cont(2); Q3 <= cont(3);

É importante ressaltar, que a atribuição destes bits ocorre de forma combinacional, ou seja, representa simplesmente uma ligação elétrica entre os bits do sinal “cont” e as saídas. Assim, praticamente no mesmo instante em que o sinal “cont” muda, as saídas também mudam.

(9)

9

O código completo do contador em VHDL é mostrado abaixo.

Referências

Documentos relacionados

Após as análises dos dados, chegamos ao entendimento que as atividades de estudo de língua japonesa, para os participantes desta pesquisa, podem ser entendidas em dois contextos: o

O rastreio universal do diabetes gestacional deve ser realizado com o exame de glicemia de jejum na primeira consulta de pré-natal, e o teste oral de tolerância à gli- cose, com 75

&#34;PROCESSO DE RECICLO DE CATALISADORES HOMOGÊNEOS EM SISTEMAS LÍQUIDOS BIFÁSICOS CONTENDO POLÍMERO E SOLVENTES ORGÂNICOS&#34;, caracterizado 5 pelo fato de prever um meio

Drawings, paintings and installations in which line paths delimit and question what makes an artwork figurative or abstract underpin the oeuvre of Riccardo Baruzzi, whom the

O objetivo deste trabalho é servir como parâmetro de estudo através da identificação, possível prevenção e solução das manifestações patológicas encontradas em

Usado como um valor único para neggar um número, ou seja, tornar um número positivo em negativo e um número negativo em positivo, sejam eles números ou variáveis. Operador

Com os dados calibrados, simulou-se quatro cenários com o programa PCSWMM: um atual (2015), com as características da área de contribuição e dimensões atuais da biorretenção; e

O American College of Chest Physician (ACCP) (12) através do Consensus Statement on &#34;Assessment of Asthma in the Workplace&#34; propôs como critérios para a RADS: 1) ausência