Você está na página 1de 78

Tópicos da Aula

Ø Histórico
Ø Aspectos Gerais da Linguagem
Ø Síntese de Circuitos
Ø Entidade de projetos
Ø Classe de objetos
Ø Tipos (escalares e compostos)
Ø Operadores
Ø Exemplos de utilização
Introdução
VHDL é uma linguagem para descrever sistemas digitais utilizada universalmente.

Origem:
VHDL é proveniente de VHSIC Hardware Description Language, no contexto do programa
americano “Very High Speed Integrated Circuits” (VHSIC), iniciado em 1980.

Vantagens
a) facilidade de atualização dos projetos
b) diferentes alternativas de implementação, permitindo vários níveis de abstração
c) verificação do comportamento do sistema digital, através de simulação
d) redução do tempo e custo do projeto
e) eliminação de erros de baixo nível do projeto

Desvantagens
a) dificuldade para otimização no hardware gerado
b) necessidade de treinamento para lidar com a linguagem
Linguagens de Programação Adaptadas para FPGA
Características
A linguagem VHDL permite particionar o sistema em diferentes níveis
de abstração, quais sejam:
nível de sistema,
nível de transferência entre registradores (RT level),
nível lógico e
nível de circuito.

Permite três diferentes domínios de descrição:


comportamental,
estrutural e
físico.
Níveis de Abstração e Descrição
Nível de sistema:
descrição comportamental: algoritmos
descrição estrutural: processadores e memórias
descrição física: boards e chips

Nível RT:
descrição comportamental: transferências entre registradores
descrição estrutural: registradores, unidades funcionais e multiplexadores
descrição física: chips e módulos

Nível Lógico:
descrição comportamental: equações booleanas
descrição estrutural: gates e flip-flops
descrição física: módulos e células

Nível de Circuito:
descrição comportamental: funções de transferência
descrição estrutural: transistores e conexões
descrição física: células e segmentos do circuito
Histórico
Ø  Motivo do Desenvolvimento:
o  Necessidade de uma ferramenta de projeto e documentação;
o  Projeto VHSIC “Very High Speed Integrated Circuit” do Departamento de
Defesa Americano (DoD);

Ø  1981
o  DoD patrocina o 1º encontro de especialistas;
o  Objetivo: discutir métodos para descrição de circuitos;

Ø  1983
o  DoD define os requisitos de uma linguagem padrão;
o  Firmado contato com IBM, Texas e Intermetrics;
o  Objetivo: desenvolvimento da linguagem e programas;
Histórico
Ø  1985
o  Apresentação da versão 7.2;
o  Direitos autorais do manual transferidos para o IEEE (Institute of Electrical
and Electronic Engineer);
o  Incumbência do IEEE;
o  Definir um padrão para linguagem;
o  Manter futuros desenvolvimentos (novas versões, etc.);
Ø  1987
o  Após revisões propostas por:
o  Acadêmicos
o  Representantes de industrias
o  Governo dos EUA
o  Define o padrão IEEE 1076-1987
Histórico
Ø  Após 1987
o  Desenvolvidos os pacotes:
o  IEEE 1164 std_logic_1164;
o  IEEE 1076.3 numeric_std numeric_bit ;

o  O que são pacotes (packages)???


o  Local para armazenamento de informações de uso comum:
o  Novos tipos de dados;
o  Funções, etc.

o  Motivo do desenvolvimento:
o  Falta de um tipo de dados para modelar condições como:
o  Alta impedância;
o  Níveis lógicos indeterminados;
o  Operações aritméticas com vetores (arrays);
Aspectos Gerais da Linguagem
o A linguagem NÃO é case-sensitive
o Mas frequentemente são usadas
maiúsculas para as palavras reservadas;

o Comentários
o Iniciados por “ - - ”;
o Terminados pelo fim da linha;
Aspectos Gerais da Linguagem
o  Atribuição de sinal
o  A <= B
o  Comparação
o  “ = “, ” > ”, ” < “, etc.
o  Operação Boolena
o  AND, OR, NOT, XOR , etc.
o  Declaração Sequencial
o  CASE, IF, FOR
o  Declaração Concorrente
o  WHEN-ELSE
Aspectos Gerais da Linguagem
o Declaração ENTITY
o Descreve a interface do modelo:
Entradas e Saídas;
o Corpo ARCHITECTURE
o Descreve o comportamento do modelo;
o Podem existir várias ARCHITECTURE
para uma mesma ENTITY
Aspectos Gerais da Linguagem
o  Suporta diversos níveis de Hierarquia
o  Uma descrição pode ser: conjuntos de descrições interligadas;

o  Estilo de uma descrição


o  Um circuito pode ser descrito de diversas maneiras
o  Níveis de abstração

o  Uma descrição
o  Pode mesclar diferentes níveis de abstração (num mesmo código)

o  Ferramentas de Síntese
o  Suportam diferentes estilos de descrição
o  Normalmente: modos preferenciais devem ser empregados
Aspectos Gerais da Linguagem
o Linguagem Concorrente
o Ordem dos comandos: Não Importa
o Mudança de valor em um sinal:
o Acarreta a execução de todos os comandos
envolvidos
Concorrência: EXEMPLO

Ø  Alteração do valor em b:
•  Execução conjunta dos comandos nas linhas 8 e 9

Ø  Simulador
•  Internamente executadas sequencialmente
•  Necessário um mecanismo interno para as avaliações
•  A ordem da avaliação dos comandos é irrelevante
•  Resultado é sempre o mesmo
Ø  Comandos Sequenciais:
•  Somente em regiões delimitadas no código
•  Cada região é executada concorrentemente

Ø  Código Sequencial:
•  Delimitada em regiões específicas:
•  Subprogramas
•  Processos
•  Comandos próprios nestas regiões
Ø  Subprogramas: procedimentos (procedure) e função (function)
•  Empregados em:
•  Rotinas de conversão
•  Outras operações não ligadas a síntese

•  Síntese:
•  Subprograma corresponde a um circuito
•  Exemplo:

Multiplicador Paralelo (composto de várias células interligadas)


Cada célula distinta -> corresponde a um subprograma
Ø  Definição de biblioteca e pacote (library) (package)

•  Pacotes:
•  Armazenam:
•  Subprogramas, constantes, novos tipos, etc.
•  Evitam a repetição de definições comuns
•  Exceto o pacote padrão (standart package)
•  OBS: qualquer pacote deve ser declarado para se tornar
visível
•  Bibliotecas:
•  Local de armazenamento das informações compiladas
•  Biblioteca padrão de armazenamento: work
•  Diferentes locais podem ser definidos
•  Organização de projeto
•  Úteis para trabalhos em equipes (local comum de
armazenamento)
Síntese de Circuitos
•  Etapas em um projeto empregando uma linguagem de descrição de circuitos:

Especificação

Descrição VHDL

Compilador Simulador VHDL Ferramenta de Síntese

Rede de ligações

Ferramenta de posicionamento
& interligação

Construção
Etapas de Projeto (VHDL)
A partir da especificação de um
projeto, é gerada uma descrição
Especificação VHDL, que é submetida a um
simulador para a verificação da
correspondência entre a
Descrição VHDL especificação e o código.

Compilador Simulador VHDL Ferramenta de Síntese

Rede de ligações

Ferramenta de posicionamento
& interligação

Construção
Etapas de Projeto (VHDL)
A mesma descrição é interpretada
por uma ferramenta de síntese
Especificação que infere as estruturas
necessárias para um circuito que
corresponda à descrição.
Descrição VHDL

Compilador Simulador VHDL Ferramenta de Síntese

Rede de ligações

Ferramenta de posicionamento
& interligação

Construção
Etapas de Projeto (VHDL)
O resultado dessa etapa é um
arquivo contendo uma rede de
Especificação ligações de elementos básicos
disponíveis na tecnologia do
dispositivo empregado.
Descrição VHDL

Compilador Simulador VHDL Ferramenta de Síntese

Rede de ligações

Ferramenta de posicionamento
& interligação

Construção
Etapas de Projeto (VHDL)
Esse arquivo contendo a rede de
Especificação ligações é a base de dados para a
ferramenta que realiza o
posicionamento e a interligação
Descrição VHDL dos componentes, place and route.

Compilador Simulador VHDL Ferramenta de Síntese

Rede de ligações

Ferramenta de posicionamento
& interligação

Construção
Etapas de Projeto (VHDL)
A saída da ferramenta de
posicionamento e interligação é um
Especificação arquivo que contém os dados
necessários para confecção do
dispositivo.
Descrição VHDL

Compilador Simulador VHDL Ferramenta de Síntese

Rede de ligações

Ferramenta de posicionamento
& interligação

Construção
Síntese da Descrição VHDL
Descrição VHDL
n  Uma vez completada a descrição, dá-se
início ao processo de síntese. A
ferramenta de síntese, executa o
Nível RTL processo de inferência e interligação
das estruturas necessárias para o
circuito a ser gerado a partir da
Nível portas descrição.
n  É gerado então, o circuito no nível RTL
Otimização speed/área – Register Transfer Level, empregando
primitivas disponíveis na ferramenta
como: comparadores, somadores,
Ferramenta de registradores e portas lógicas.
síntese n  O circuito gerado nesta etapa não está
associado a nenhuma tecnologia de
fabricação em particular, e não está,
Rede de ligações necessariamente, otimizado.
Síntese da Descrição VHDL
Descrição VHDL
n  A próxima etapa do processo de
síntese é a geração de um novo
circuito a partir da estrutura do nível
Nível RTL RTL.
n  A diferença entre os dois circuitos
consiste nos elementos utilizados,
Nível portas enquanto no nível RTL são utilizadas
primitivas genéricas da ferramenta;
Otimização speed/área nessa etapa, o circuito contém
unicamente elementos disponíveis na
tecnologia empregada para a
Ferramenta de fabricação.
síntese n  Com isso, é necessário neste
momento especificar o dispositivo
empregado para a realização desta
Rede de ligações etapa.
Síntese da Descrição VHDL
Descrição VHDL
n  Uma minimização é executada nessa
etapa e considera dois parâmetros
geralmente conflitantes: otimização
Nível RTL de custo e otimização para
velocidade.
n  Como resultado desta etapa, tem-se
Nível portas um arquivo contendo uma rede de
ligações entre os elementos
disponíveis na tecnologia empregada.
Otimização speed/área

Ferramenta de
síntese

Rede de ligações
Síntese da Descrição VHDL
Descrição VHDL
n  O formato do arquivo resultante da
rede de interligações depende da
ferramenta de posicionamento e
Nível RTL interligação empregada; um
exemplo é o formato EDIF –
Electronic Design Interchange
Nível portas Format.

Otimização speed/área

Ferramenta de
síntese

Rede de ligações
Síntese da Descrição VHDL
Descrição VHDL
n  As ferramentas de síntese podem
fornecer, ainda, um arquivo VHDL
descrevendo a rede de interligações
Nível RTL sintetizada, e um outro arquivo
contendo informações referentes a
temporização considerando a
Nível portas tecnologia de fabricação empregada.

Otimização speed/área
Estímulos
Ferramenta de
síntese
Nova Descrição
temporização
VHDL

Rede de ligações
Simulador VHDL
Síntese da Descrição VHDL
Descrição VHDL
n  Estes arquivos podem ser submetidos
novamente a um simulador VHDL
excitado pelo mesmo conjunto de
estímulos para verificação do
Nível RTL
comportamento da estrutura
sintetizada com relação à
Nível portas temporização.

Otimização speed/área
Estímulos
Ferramenta de
síntese
Nova Descrição
temporização
VHDL

Rede de ligações
Simulador VHDL
Exemplo desses passos (Síntese)
C[2:0]
I0
VHDL I1
O
Nível Portas F2_LUT
ENTITY soma IS
PORT ( A , B : IN INTEGER RANGE 7 DOWNTO 0;
C : OUT INTEGER RANGE 7 DOWNTO 0; );
I0
END soma; B[2:0]
I0 O I0 I1 O
ARCHITECTURE teste OF soma IS
I1 I2
BEGIN I1 O
A[2:0] F3_LUT
C <= A + B; CARRY2 I2
END teste; CARRY3
I0
Nível RTL I1 O
I2
cin F3_LUT
cout
a[2:0] a[2:0]
b[2:0]
+ C[2:0]
C[2:0]
b[2:0]
Primeiro Contato com a Linguagem
Comentários e Notações em VHDL
Os comentários em VHDL ocorrem após dois traços “- -“.

Os caracteres maiúsculos e minúsculos não tem distinção em VHDL.

Os nomes de variáveis devem iniciar-se com letras alfabéticas, sendo


possível utilizar também dígitos numéricos e “_”.

O caracter “_” não pode ser usado duplicado, e nem no final de um nome.
Estrutura de um Programa VHDL
ü  A estrutura básica de um programa em VHDL é composta de três
elementos:

library (biblioteca)

entity

architecture
library (biblioteca)

Library entity

architecture

As primeiras informações contidas num programa VHDL é a declaração das bibliotecas


library (ies) usada no projeto.
Várias funções e tipos básicos são armazenados em bibliotecas. A biblioteca “IEEE” é
sempre incluída.
Ex:
Library IEEE;
Use IEEE.std_logic_1164.all;
Use IEEE.std_logic_unsigned.all;

Observações:
1.  a declaração Library IEEE é usada para definir a biblioteca IEEE;
2.  a declaração use IEEE.std_logic_1164.all é necessária para usar os dados
correspondentes à lógica padrão da biblioteca; e
3.  a declaração use IEEE.std_logic_unsigned.all é necessária para realizar a aritmética
não sinalizada.
library (biblioteca)

Entity entity

•  O entity define a interface(port) do projeto, através dos architecture


pinos de entrada (in) e saída (out) e o tipo do sinal
correspondente, no seguinte formato:
entity nome_da_entity is
port (
Declaração dos pinos
);
end [nome_da_entity] ;

Exemplo:
entity COMPARA is
port ( A,B: in std_logic; C: out std_logic);
end COMPARA;
A
COMPARA C
B

Interfaces definidas através do exemplo de entity.


Exemplo – Contador de 4 Bits
Modos do Sinal
Tipos de Sinal
library (biblioteca)

Architecture entity

n  A architecture define a lógica do circuito e pode architecture


ser composta dos seguintes elementos:
a) component
b) signal component
c) lógica

signal

lógica

sendo component e signal declarações de componentes e sinais intermediários opcionais.


O formato para a descrição da arquitetura é o seguinte:

Architecture nome_da_architecture of nome_da_entity is


Declarações opcionais (component e signal)
begin
end [nome_da_architecture];
PRÓXIMA
AULA

Você também pode gostar