Escolar Documentos
Profissional Documentos
Cultura Documentos
VHDL
Origem: Wikipédia, a enciclopédia livre.
Índice
História
Sintaxe
Estrutura
Comentários
Entity
Architecture
Process
Package
Sinal
Constantes
Variáveis
Operadores e Expressões
Operadores Lógicos
Deslocamento
Operadores aritméticos
Atribuição e comparações
After e Wait
Constantes
Generic
Constant
Controles condicionais
If Then
If Then Else
Case
For Loop
Next
Test Bench
Exemplo de Código VHDL
O Uso da VHDL em Projetos de Circuitos
Ligações externas
História
https://pt.wikipedia.org/wiki/VHDL 1/11
03/09/2021 VHDL – Wikipédia, a enciclopédia livre
Uma vez que o projeto VHSIC era de alta prioridade militar e havia dezenas de fornecedores
envolvidos, o DoD estava preocupado principalmente com as questões de portabilidade,
documentação e compreensibilidade dos projetos. Cada um destes fornecedores atuava
desenvolvendo partes dos projetos ou mesmo fornecendo componentes que viriam a se encaixar
em outros sistemas maiores. Desta forma o DoD optou por buscar desenvolver uma linguagem que
servisse como base para troca de informações sobre estes componentes e projetos. Uma linguagem
que, independente do formato original do circuito, pudesse servir como uma descrição e
documentação eficientes do circuito, possibilitando os mais diferentes fornecedores e participantes
a entender o funcionamento das outras partes, padronizando a comunicação.
Após o sucesso inicial do uso da VHDL, a sua definição foi posta em domínio público, o que levou a
ser padronizada pelo IEEE (Institute of Electrical and Electronic Engineers) em 1987. O fato de ser
padronizada e de domínio público ampliou ainda mais a sua utilização, novas alterações foram
propostas, como é natural num processo de aprimoramento e a linguagem sofreu uma revisão e
um novo padrão mais atualizado foi lançado em 1993. Pequenas alterações foram feitas em 2000 e
2002. Em setembro de 2008 foi aprovado pelo REVCOM a mais recente versão, IEEE 1076-2008.
Sintaxe
A linguagem VHDL não é case-sensitive e tem uma sintaxe similar às linguagens Pascal e da
linguagem ADA.
E t t
https://pt.wikipedia.org/wiki/VHDL 2/11
03/09/2021 VHDL – Wikipédia, a enciclopédia livre
Estrutura
Comentários
Entity
O nome de uma entity deve identificar o sistema, podendo usar letras e números, porem deve
iniciar por uma letra.
Exemplo de entity:
entity ORGATE is
…
end ORGATE;
Architecture
Declarado como architecture nome of entidade is. Podem existir várias architecture para a mesma
entity.
Exemplo de architecture:
Process
Diretiva usada quando se quer fazer uma lista de operações a serem executadas. Implementada
dentro de architecture. Possui forma estruturada.
Exemplo de process:
atrib : process
begin
A ⇐ X;
B ⇐ Y;
end process atrib;
Package
Usado quando precisa-se usar um comando que não existe nas bibliotecas padrão. Deve ser
definido antes do inicio da entity. Para usar a package é necessário usar duas declarações: library
use. O package mais conhecido é o STD_LOGIC_1164 da IEEE por conter a maioria dos
https://pt.wikipedia.org/wiki/VHDL 3/11
03/09/2021 VHDL – Wikipédia, a enciclopédia livre
Exemplo de package:
library IEEE;
use IEEE.std_logic_1164.all;
Sinal
Transmite os dados internamente ou externamente ao sistema sendo que os sinais externos são
definidos em entity e usam a diretiva ports, já os sinais internos são definidos em architecture e
usam a diretiva signal.
Os sinais podem ser uma linha (bit) ou um barramento (bit_vector). No caso do bit_vector a
ordem é de suma importância, sendo que o primeiro sinal é o mais significativo e o último o menos
significativo. Estes dois tipos de sinais são nativos da linguagem VHDL, no entanto pode-se
adicionar mais tipos, usando bibliotecas apropriadas. Com isso, teremos tipos como: 'U' (Não
inicializado), 'X' (Força 0 ou 1), '0' (Força 0), '1' (Força 1), 'Z' (Alta Impedância), 'W' (0 ou 1 fraco),
'-' (Não interessa).
Em ports tem que especificar a direção do sinal: entrada(in), saída (out) ou bidirecional (inout).
Em signal não precisa especificar a direção devido ao fato do sinal ser interno.
Sendo assim, o exemplo a seguir define um port com dois vetores, sendo um vetor X (o bit10 é o
sinal mais significativo e o bit0 o menos significativo) e um vetor Y(sendo o bit0 o sinal mais
significativo e o bit5 o menos significativo).
signal a, b : bit;
Constantes
Exemplo:
Variáveis
Exemplo:
Operadores e Expressões
Operadores Lógicos
Os operadores and, or, nand, nor, xor e xnor exigem dois operandos, já o operador not exige
apenas um operando.
Deslocamento
Restrito a vetores. Exige dois operandos, um sendo o array e o outro um integer, que é o número
de posições a serem deslocadas.
Operadores aritméticos
+ → soma ou identidade;
- → subtração ou negação;
* → multiplicação;
/ → divisão;
mod → módulo;
** → exponenciação.
Atribuição e comparações
https://pt.wikipedia.org/wiki/VHDL 5/11
03/09/2021 VHDL – Wikipédia, a enciclopédia livre
<= → atribuição;
= → igual;
/= → diferente;
< → menor;
> → maior;
After e Wait
Exemplo de after:
x ⇐ '1' after 3s, '0' after 5s, '1' after 7s, '0' after 8s;
Exemplo de wait:
x ⇐ '0';
wait for 2s;
x ⇐ '1';
wait for 3s;
x ⇐ '0';
wait for 1s;
Constantes
Generic
Declarado na entity para definir uma constante. Composto pelo nome da constante seguido de
dois pontos, tipo de constante e valor da constante precedido de :=. Seu âmbito é global.
https://pt.wikipedia.org/wiki/VHDL 6/11
03/09/2021 VHDL – Wikipédia, a enciclopédia livre
Exemplo de generic:
Constant
Tem a mesma função que o comando generic porem constant é declarado na architecture. Seu
âmbito é local.
Exemplo de constant:
Controles condicionais
Existem cinco comandos condicionais: if then, if then else, case, for loop, next.
If Then
Exemplo de if then:
cmp : process
begin
if A /= B then
C ⇐ B;
end if;
end process cmp;
If Then Else
Se a condição for verdadeira será executado o que estiver dentro de then, caso contrário será
executado o que estiver dentro de else.
cmp : process
begin
if A = B then
C ⇐ 0;
else
C ⇐ 1;
end if;
end process cmp;
Case
Quando o teste de condição de uma variável poder assumir vários opções, é recomendado o uso do
case.
Exemplo de case:
https://pt.wikipedia.org/wiki/VHDL 7/11
03/09/2021 VHDL – Wikipédia, a enciclopédia livre
converte : process
begin
case Bin is
when "0000" ⇒ Dec ⇐ 0;
when "0001" ⇒ Dec ⇐ 1;
when "0010" ⇒ Dec ⇐ 2;
when "0011" ⇒ Dec ⇐ 3;
when others ⇒ Dec ⇐ -1;
end case;
end process converte;
For Loop
conta : process
begin
for i in 5 downto 0 loop
Num ⇐ Num + 1;
end loop;
end process conta;
Next
Quando se quer pular determinados comandos e ir diretamente para outro usa-se o comando next.
Exemplo de next:
soma : process
begin
aux : for i in 3 downto 0 loop
Num ⇐ Num + X;
if Num = 10 then
Num ⇐ 0;
next alfa;
end if
end loop aux;
end process soma;
Test Bench
Testa o projeto (no Test Bench, o projeto é chamado de design ou Unit Under Test) através de
sinais ou estímulos, monitorando suas respostas e com isso ter uma analise melhor do design. O
Test Bench consiste em: um soquete para o UUT, um gerador de sinais e ferramentas para
monitorar as suas respostas que por exemplo pode dizer se o circuito está ou não funcionando
corretamente e sob quais aspectos estão ocorrendo os problemas. O design não geram circuitos,
servindo apenas para a simulação.
entity ANDGATE is
port (
IN1 : in std_logic;
IN2 : in std_logic;
OUT1: out std_logic);
end ANDGATE;
architecture RTL of ANDGATE is
begin
end RTL;
Figura 1
Ciclo de vida de um projeto
Durante a etapa de Especificação de Requisitos, o projetista e o usuário (em muitos casos podem
ser a mesma pessoa), fazem um estudo e levantam todos os requisitos e características do sistema
e definem o seu funcionamento. Características tais como atraso máximo permitido para as saídas,
freqüência máxima de operação, consumo de potência, custo, temperatura de operação, tensão de
alimentação são relacionadas a fim de buscar projetar um circuito que atenda a estes requisitos,
que podem ser desejáveis ou necessários. Não é necessário especificar todas estas características,
isso sempre dependerá de cada projeto. Esta fase é de extrema importância porque uma vez
compreendido corretamente o funcionamento do sistema, evita-se a ocorrência de erros futuros. A
cada unidade de tempo avançada no ciclo de projeto, maior o custo de correção de um erro e maior
a dificuldade em encontrá-lo. Ou seja, além do prejuízo ser maior, maior também a probabilidade
de que o erro passe despercebido e seja incluído na produção do sistema.
https://pt.wikipedia.org/wiki/VHDL 9/11
03/09/2021 VHDL – Wikipédia, a enciclopédia livre
A Síntese de Alto Nível está para o hardware assim como a compilação está para o software. Na
síntese, o modelo descrito será convertido para estruturas de dados representando as conexões,
blocos, componentes e portas lógicas. Esta etapa é automática e dependente da ferramenta de
software utilizada. Em geral, certos cuidados podem ser tomados durante o modelamento a fim de
direcionar o algoritmo da síntese para que obtenha os melhores resultados para o circuito.
Durante a síntese são pré-avaliados os requisitos do sistema a fim de indicar se o circuitos irá
atendê-los adequadamente. Após a síntese ainda não está definido o circuito a ser implementado,
a especificação intermediária que é resultante é ainda bastante genérica e pode ser direcionada
para uma de muitas possibilidades de tecnologias de implementação.
Somente após o Mapeamento Tecnológico é que o circuito já está definido dentro da tecnologia em
que será implementado. Fazendo uma analogia com o software, essa etapa corresponderia à
geração de código executável que ocorre ao final da compilação de um código fonte. Só é possível
entender essa etapa adequadamente conhecendo-se as diferentes tecnologias disponíveis no
mercado, como full custom, gate array, FPGAs, entre outros. O projetista pouco consegue influir
no mapeamento, especificando apenas os parâmetros de otimização desejados. A etapa de
implementação/fabricação não há muito que ser explicada, nesse momento são criados os
primeiros protótipos, avaliadas as condições finais, detalhes de produção entre outros detalhes de
implementação final. Em seguida à fabricação, os circuitos são testados para que possam ser
entregues ao usuário com garantia de isenção de falhas.
A Simulação é uma etapa auxiliar, mas de grande relevância no ciclo de vida do projeto. Simular
consiste em avaliar o comportamento do circuito e validar o modelo produzido até aquele
momento. Durante a simulação, são apresentados amostras de entradas possíveis ao modelo do
circuito, e os valores das saídas, memórias e nós internos do circuito são analisados a fim de
comparar com o esperado na especificação. A Simulação gera uma realimentação para os
processos de modelamento, síntese e mapeamento, evitando a propagação de erros para etapas
posteriores. Muitos dos problemas encontrados na simulação não estão necessariamente ligados a
erros no projeto, mas ao não preenchimento dos requisitos necessários, principalmente no que se
refere aos tempos do circuito (atraso, setup/hold, freqüência de operação).
Na simulação, um recurso muito interessante a ser utilizado são os test benches já comentados
anteriormente.
Ligações externas
Introdução ao VHDL pelo Prof. Gabriel P. Silva do DCC-IM/UFRJ (http://www.dcc.ufrj.br/~gabri
el/circlog/vhdl.pdf)
Obtida de "https://pt.wikipedia.org/w/index.php?title=VHDL&oldid=52589346"
Esta página foi editada pela última vez às 16h38min de 6 de julho de 2018.
Este texto é disponibilizado nos termos da licença Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC BY-SA 3.0) da
Creative Commons; pode estar sujeito a condições adicionais. Para mais detalhes, consulte as condições de
utilização.
Política de privacidade
Sobre a Wikipédia
https://pt.wikipedia.org/wiki/VHDL 10/11
03/09/2021 VHDL – Wikipédia, a enciclopédia livre
Avisos gerais
Programadores
Estatísticas
Declaração sobre ''cookies''
https://pt.wikipedia.org/wiki/VHDL 11/11