VHDL Básico: Parte 1 – Entidade

entidade
Este post faz parte da série VHDL Básico. Leia também os outros posts da série:

Vou fazer uma série bem didática sobre VHDL para transmitir um pouco de conhecimento àqueles que pretendem ingressar no mundo de lógica digital.

VHDL ou (Very High Speed Integrated Circuits) Hardware Description Language é uma linguagem utilizada para descrever hardware. Ela foi concebida pelo departamento de defesa dos Estados Unidos (DARPA) na década de 80 para a documentação dos circuitos vendidos às forças áreas americanas. Desde então muita água correu, em 1987 ela foi padronizada pela IEEE como uma linguagem de descrição de hardware, o fato de ser padronizada e de domínio público ampliou e muito a sua utilização. A sua sintaxe é altamente tipada e lembra ADA e Pascal mas as semelhanças param por ai.

A descrição de um circuito difere completamente de um software e muitas pessoas quando saem de uma linguagem de software e vem para linguagens de descrição de hardware encontram muitas dificuldades. Sempre mantenha em mente que você está descrevendo hardware e não escrevendo um algoritmo que um processador vai executar sequencialmente. VHDL é utilizando tanto para concepção de circuitos ASIC (por exemplo um i7 da Intel), quanto para desenvolvimento em FPGA. O resultado de uma "compilação" de um vhdl não é um executável mas sim uma netlist com todos os fios, conexões, componentes combinacionais e sequências de um hardware.

ENTITY

Entity é uma keyword do VHDL que representa uma entidade, uma entidade em VHDL representa a interface do seu circuito com o mundo externo, a sintaxe é bastante simples.

  •  std_logic representa um bit que pode assumir os seguintes valores:
    • 'U': Não inicializada;

    • 'X': Desconhecido;

    • '0': Zero;

    • '1': Um;

    • 'Z': Alta impedância;

    • 'W': Sinal fraco;

    • 'L': Sinal fraco que provavelmente vai para '0';

    • 'H': Sinal fraco que provavelmente vai para '1';

    • '-': Não importa.

A maioria destes valores é utilizado somente para simulação, para simplificar o entendimento vamos supor que ele só é 0 ou 1.

  • std_logic_vector representa um vetor de bits ou um barramento.
    • (7 downto 0) representa um barramento de 8 bits onde o bit mais significativo (da esquerda) é o sétimo e o menos significativo é o zero;
    • Caso fosse declarado como std_logic_vector(0 to 7) o bit mais significativo (da esquerda) seria o zero e o menos significativo o sétimo.

É possível a utilização de outros sinais como interface de entidade mas não é recomendado, o recomendado é sempre utilizar std_logic ou std_logic_vector para manter a compatibilidade.

Esta declaração de entidade modelou o circuito abaixo, para simplificar não coloquei 8 setas para o DATA_IN e o DATA_OUT.

entidade
Circuito CPU

Para utilizarmos nosso circuito CPU no nosso projeto precisamos instanciá-lo! Cada instância do circuito é como se colocássemos outro circuito exatamente igual no nosso projeto, não confunda com orientação a objeto de software! Se instanciarmos 100 CPUs vamos ter 100 hardwares de CPUs rodando em paralelo e completamente independente. Para instanciar o nosso circuito vamos fazer da seguinte forma:

instancia_cpu é o nome da instância, entity work.cpu é como achamos o nosso cpu na biblioteca "work" que é a biblioteca padrão das ferramentas de desenvolvimento de hardware. O port map é a correspondência entrada/saída do circuito com fios existentes no projeto, para este projeto temos que ter declarado os fios de sysclk, reset_n, start_reg, entrada_simulacao, saida_simulacao e finish. Para fazer conexões em VHDL utilizamos a keyword signal, no exemplo acima precisaríamos dos seguintes signals conectados a nossa CPU:

Podemos por exemplo instânciar duas CPUs e conectar uma a outra! Vamos manter o clock e o reset comum às duas e jogar a saída de uma na entrada de outra com os sinais de controle:

 E foi isto que aconteceu (clique na figura para amplia-la):

entidade

Os projetos de hardware são hierárquicos, ou seja, temos um arquivo .vhd que é o topo de hierarquia e instância o restante do design. O arquivo topo de hierarquia é responsável por fazer a conexão com o mundo externo (pinos de I/O), os arquivos instanciados dentro do topo de hierarquia se conectam por fios.

O próximo tópico será a arquitetura, que é a funcionalidade da caixa preta "CPU" descrita neste artigo.

Outros artigos da série

VHDL Básico: Parte 2 - Arquitetura >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware » Sistemas Digitais » VHDL Básico: Parte 1 - Entidade
Comentários:
Notificações
Notificar
guest
10 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Matheus Quick
Matheus Quick
13/03/2017 00:58

Bom artigo.

Cesar Junior
Cesar Junior
26/11/2014 16:51

Bom artigo! Na espera do próximo tópico

Matheus Oleiro
Matheus Oleiro
28/10/2013 08:54

Legal, gostei!
To esperando a parte 2 já...
Uma duvida que sempre tenho é a organização dos arquivos (top, testbench, srcs), quem instacia quem e qual entity devo chamar na simulação. Acho que seria legal uma abordagem dessa organização.
Um abraço!

André Castelan
Reply to  Matheus Oleiro
28/10/2013 17:57

Valeu Matheus!

normalmente eu organizo assim (cada -- representa uma pasta)

--Projeto

----SYN

Arquivos de sintese do projeto, pasta do projeto na ferramenta de CAD

----RTL

------top.vhd

------processador

--------processador.vhd

--------sim

----------tb_processador.vhd

Sendo que cada entidade na pasta RTL necessariamente precisa de uma simulação dentro da pasta sim, o top.vhd que é o topo de hierarquia fica na raiz da pasta RTL junto com as constantes globais do projeto.

Abraço!

Chrystian
Chrystian
09/07/2016 15:10

Cade o OPEN na parte de "std_logic representa um bit que pode assumir os seguintes valores"

trackback
24/03/2015 12:19

[…] VHDL Básico: Parte 1 - Entidade [9]; […]

trackback
25/09/2014 23:15

[…] [12] VHDL Básico: Parte 1 – Entidade […]

trackback
26/07/2014 09:47

[…] Primeira parte de uma série de arti­gos sobre VHDL do André Caste­lan.VHDL Básico: Parte 1 — Entidade […]

trackback
07/11/2013 01:03

[...] vermos o que é a entidade em VHDL na Parte 1, vamos ver o que é a [...]

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
NVIDIA JETSON – A Inteligência Artificial na palma de sua mão

Data: 08/07 às 14:00h Apoio: Arrow | NVIDIA
 
INSCREVA-SE AGORA »



 
close-link

WEBINAR
 
Redes Mesh para Monitoramento
e Controle de Sensores

Data: 15/07 às 14:00h Apoio: Artimar| Microchip| Tecsus
 
INSCREVA-SE AGORA »



 
close-link