Neste tutorial de VHDL, discutiremos alguns dos conceitos básicos relacionados à tecnologia VHDL e alguns exemplos com codificação. O tutorial VHDL é segmentado da seguinte maneira:
TÓPICOS DA DISCUSSÃO
A. O que é VHDL?
B. História e padronização
C. Procedimentos de projeto VHDL
D. Algumas regras e informações básicas sobre VHDL
E. Sintaxes e alguns conceitos importantes para escrever códigos VHDL
F. Simuladores VHDL para Tutorial VHDL
VHDL || O que é VHDL?
A forma completa de VHDL significa Linguagem de descrição de hardware de circuito integrado de alta velocidade (VHSIC-HDL).
Como o nome sugere, VHDL é uma linguagem de descrição de hardware ou um tipo especial de linguagem de programação que descreve as implementações de hardware de sistemas e circuitos digitais. É uma linguagem fortemente tipada e deve-se lembrar que não é uma linguagem de programação.
História e Padronização
O Departamento de Defesa dos Estados Unidos tem uma contribuição significativa para o campo tecnológico moderno. Isso gerou muitas grandes ideias e inovações. A US Defense também desenvolveu o VHDL no ano de 1983. Ele foi desenvolvido para a documentação do comportamento dos circuitos integrados específicos da aplicação.
Posteriormente, algumas ideias foram implementadas a partir das linguagens de programação Ada. O VHDL foi padronizado pela primeira vez no ano de 1987. Ele foi adicionado a vários tipos de dados de vários tipos, incluindo strings e numéricos e lógicos.
estandardização
VHDL ou para linguagem de descrição de hardware de circuito integrado de velocidade muito alta (VHSIC-HDL) é padronizada pelo padrão IEEE 1076. Ele está sendo atualizado desde seu nascimento e passou por muitas revisões. Vejamos algumas das revisões padrão e atualizações principais.
Revisões | Atualizações |
IEEE 1076 - 1987 | Revisão e padronização da US Defense. |
IEEE 1076 - 1993 | Surgiu com o melhor lançamento, e é a versão mais usada. |
IEC 61691 -1 - 1- 1: 2004 | IEC adotou a versão IEEE 1076-2002 |
IEEE 1076-2008 | Atualizado com algumas mudanças importantes, como - Introdução de genéricos em pacotes e uso de nomes externos |
IEC 61691 -1 - 1- 1: 2011 | IEC adotou a versão IEEE 1076-2008 |
Projeto de VHDL
O projeto VHDL tem algumas unidades de projeto. Eles são conhecidos como - Entidade, Arquitetura, Configuração e Pacote.
Entidade: Entidade define vistas externas de um modelo que é um símbolo.
Arquitetura: A arquitetura define a funcionalidade de um modelo que é esquemático.
Configuração: A configuração é usada para associar a arquitetura a uma entidade.
Pacote: Pacote é a coleção de informações que podem ser referenciadas por módulos VHDL. Um pacote VHDL consiste em duas partes. Eles são - declaração do pacote e corpo do pacote.
Declaração de Entidade
A estrutura geral da declaração da entidade é fornecida abaixo -
ENTIDADE < nome da entidade > IS
Declarações genéricas
Declarações de porta
ENTIDADE FINAL <nome da entidade>;
- pode ser alfabético / numérico ou alfanumérico.
- Declarações genéricas serve para passar informações para um modelo.
- Port Declarations é para descrever os pinos de entradas e saídas.
- Uma entidade pode ser fechada de várias maneiras.
- ENTIDADE FINAL <nome da entidade>;
- ENTIDADE FINAL;
- END;
Declarações de porta
Uma estrutura geral para declarações de porto é fornecida abaixo -
ENTIDADE < nome da entidade > IS
Declarações genéricas
- Declarações de porta:
PORT (
SINAL CLK, CL: EM POUCO;
q: PARA FORA
- observe que não há ponto-e-vírgula na última linha das declarações.
);
ENTIDADE FINAL <nome da entidade>;
A estrutura da declaração do porto: object_name : ;
- Classe: Classe é o que pode ser feito com um objeto. Aqui, a classe é um sinal. Um ponto a ser lembrado que o SINAL não é escrito durante a escrita do programa; em vez disso, é assumido e não obrigatório.
- Nome_objeto: É o identificador.
- Modo: Ele especifica a direção.
DENTRO - Entrada
FORA - saída
ENTRADA - Bidirecional
AMORTECEDOR - Saída com feedback interno
- Tipo: O tipo especifica o que pode estar contido dentro de um objeto.
Declarações genéricas
Uma estrutura geral de declarações genéricas é fornecida abaixo -
ENTIDADEnome_da_entidade> IS
GENÉRICO (
CONSTANTE tplh, tphl: tempo := 5 ns;
tphz, tplz: TIME := 3ns;
valor_padrão: INTEIRO: = 1;
cnt_dir: STRING := "ACIMA"
- observe que não há ponto-e-vírgula na última linha das declarações.
);
Declarações de porta
END ENTITYnome_da_entidade>;
- Os valores genéricos podem ser substituídos durante a compilação.
- O genérico deve possuir a tenacidade a uma constante durante a compilação de um programa.
Observe que a palavra-chave CONSTANT é assumida e não necessária para a gravação.
Arquitetura
- Analogia-esquemática: A analogia esquemática fornece a descrição da funcionalidade de um modelo e o tempo associado a ele.
- A arquitetura de um modelo deve estar associada a uma ENTITY.
- Uma Entidade pode ter muitas arquiteturas associadas a ela.
- As declarações de arquitetura são executadas simultaneamente.
- Alguns estilos de arquitetura -
- Comportamental: o modelo comportamental descreve como os projetos operam.
RTL: RTL descreve como os projetos podem ser implementados usando registradores.
Funcional: não inclui tempo.
- Estrutural: Implementação de estrutura de nível de portão.
- Fluxo de dados: Implementação da tabela verdade.
- A arquitetura termina com -
- ARQUITETURA FINAL ;
- ARQUITETURA FINAL
- FIM;
Uma estrutura geral para escrever uma arquitetura:
ARQUITETURA <identificador> OF <entidade_identificador> IS
SINAL sinal_1: INTEIRO: = 1;
CONSTANTE cnst: = BOOLEANO: = verdadeiro;
O processo TYPE É (W X Y Z);
- Declarações de atributos
- Especificações de atributos
- Declarações de subprograma
- Corpo do subprograma
INÍCIO
Declarações de processo
Chamadas de procedimento simultâneas
Atribuição de sinal
Gerar declarações
ARQUITETURA FINAL <identificador>;
Configuração
Conforme discutido, um anterior configuration é usado para associar a arquitetura a uma entidade. A associação ou combinação é necessária porque uma ENTITY não pode funcionar até que a arquitetura seja associada a ela. Uma estrutura geral de configuração é fornecida abaixo.
CONFIGURAÇÃO < identificador > OF < nome da entidade > IS
PARA < arquitetura_nome >
PARA < nome da instância >: Nome do componente > USO < entidade > ( arquitetura >)
END PARA;
PARA < nome da instância >: Nome do componente > USO < nome_da_configuração >
FIM PARA;
FIM PARA;
FINALIZAR CONFIGURAÇÃO < identificador >;
PACK
Os pacotes VHDL são uma unidade completa de um sistema inteiro. É o principal objetivo da implementação do VHDL. Um pacote tem duas partes. Como dito anteriormente, as declarações e o corpo do pacote formam um pacote completo.
O VHDL oferece dois pacotes integrados.
Algumas regras e informações básicas sobre o Tutorial VHDL
Vamos discutir sobre dar uma olhada em algumas informações básicas antes de mergulharmos para explorar o tutorial de VHDL.
1. Palavras-chave reservadas: VHDL tem algumas palavras-chave reservadas (que não podem ser usadas para declarar uma variável).
2. Partes: O VHDL possui duas etapas ou partes para a criação de um modelo. Um é Simulação e o outro é síntese e simulação.
3. Linguagem que diferencia maiúsculas de minúsculas: VHDL não é uma linguagem com distinção entre maiúsculas e minúsculas (na maior parte).
4. Comentários: Para comentar uma declaração no editor de código VHDL, comece a frase com -, por exemplo:
- Este é um comentário em VHDL.
5. Rescisão: Os códigos VHDL e cada linha de códigos são encerrados com um ponto e vírgula (sempre que necessário).
6. Sensibilidade do Espaço: VHDL não é sensível a espaços em branco.
Sintaxes e alguns conceitos importantes do tutorial VHDL para escrever códigos VHDL
- Array com exemplos
- Processo com exemplos
- Implementação IF - THEN - ELSIF com exemplos.
- Declaração CASE
- PARA LOOP
A. Matriz
Array armazena valor. É um tipo de dado definido pelo usuário para armazenar valor. Uma matriz pode conter variáveis do tipo sinal, constantes.
Uma estrutura geral para declarar uma matriz é fornecida abaixo:
TIPO nome_array IS ARRAY (alcance) OF tipo de dados;
Por exemplo,
TIPO lambdageeks É ARRAY (0 a 9) DE std_logic_vector (0 ATÉ 9);
B. Declaração do Processo
O processo é uma instrução simultânea e sincronizada. Ele apresenta as declarações cronológicas. Vários processos são executados paralelamente se o modelo for necessário.
Um processo consiste em duas partes. Eles são a execução do processo e então aguardam a próxima condição.
SINTAXE:
processo sensibilidade_lista
declarações
começar
declarações_cronológicas;
fim do processo;
C. IF - THEN - implementação ELSIF
Essas instruções são usadas para implementar uma condição e seus resultados.
Uma condição if pode ter um número infinito de ramificações de acordo com o requisito. Um número considerável de condições elsif também é possível. Mas, em um loop if, só pode haver uma condição else. Um loop if é encerrado pela instrução end if. Se a condição fornecida for verdadeira, ele entrará no loop e executará a instrução. Se falhar, vá para a instrução else ou elsif.
A sintaxe das instruções é fornecida a seguir.
SINTAXE
if expressão_booleana condicional então
declaração 1
Elsif expressão_booleana condicional então
declaração 2
. . .
outro
declaração 3
final if;
D. Declaração CASE
A instrução Case descobre qual instrução será executada. Uma instrução case também pode ser ramificada como loops IF-ELSE.
SINTAXE
[rótulo]: casas < expressão condicional > is
quando < escolha> =>
declaração 1
quando <escolha> =>
declaração 2
...
quando <escolha> =>
afirmação
final casas [rótulo];
E. Loop FOR
Um loop for é uma execução contínua de instruções de acordo com as condições de limitação.
Para cada loop FOR, precisamos de um iterador que realizará as operações no loop for. Também é conhecido como identificador. É um número inteiro por padrão e não há necessidade de declarar o iterador. É um dos loops mais comumente usados para fazer modelos complexos. É mais familiar do que os loops while.
SINTAXE
[rótulo]: para iterador in alcance laço
Declaração 1
Declaração 2
...
Declaração n
laço final [rótulo];
Simuladores VHDL para Tutorial VHDL
Alguns dos famosos simuladores VHDL usados para a implementação de VHDL estão listados abaixo.
- Xilinx Vivado: O simulador mais famoso de VHDL é o Xilinx Vivado. Xilinx fornece dispositivos lógicos programáveis. Usaremos este simulador na próxima parte do Tutorial VHDL.
- Cadência incisiva: A versão anterior era conhecida como NC-VHDL.
- VHDL Simulação: Symphony EDA o desenvolve. É gratuito para os consumidores.
- GHDL: Um dos famosos simuladores VHDL gratuitos.
- Boot: A organização Freerangefactory desenvolveu o simulador.
- NVC: Nick Gasson desenvolveu o compilador VHDL de código aberto.
- Parque EDA: Outra versão gratuita baseada no navegador da web.
- Sinopse VCS-MX.
Faça seu primeiro projeto usando VHDL. Confira a próxima parte do Tutorial VHDL.
Para mais artigos relacionados à eletrônica, clique em aqui!
Olá, meu nome é Sudipta Roy. Eu fiz B. Tecnologia em Eletrônica. Sou um entusiasta da eletrônica e atualmente me dedico à área de Eletrônica e Comunicações. Tenho grande interesse em explorar tecnologias modernas, como IA e aprendizado de máquina. Meus escritos são dedicados a fornecer dados precisos e atualizados a todos os alunos. Ajudar alguém a adquirir conhecimento me dá imenso prazer.
Vamos nos conectar através do LinkedIn –