Buscar

VHDL - Linguagem de Descrição de Hardware

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 1/13
DI2022802 2023 2 AULA13
VHDL - Linguagem de Descrição de Hardware
Definições e Abreviaturas
Histórico
Vantagens do Uso
Ciclo de Projeto
Entidades e Arquiteturas
Corpo de Arquitetura
Descrição comportamental
Descrição por fluxo de dados
Descrição estrutural
Identificadores
Objetos de dados
Tipos de Dados
Tipos compostos
Exercícios
Referências
VHDL - Linguagem de Descrição de
Hardware
OBJETIVOS
O aluno será capaz de:
Saber sobre as definições da linguagem VHDL;
Conhecer o ciclo de projeto;
Diferenciar Entidades e Arquiteturas; e
Conhecer Identificadores e Tipos de Dados.
METODOLOGIA
A aula será expositiva (gravada), utilizando apresentação de texto base na Internet, onde será
apresentado uma introdução ao VHDL que uma linguagem utilizada para descrição de hardware
amplamente utilizada.
INTRODUÇÃO
VHDL ou (Very High Speed Integrated Circuits) é uma linguagem utilizada para descrever
hardware. Ela foi concebida pelo departamento de defesa dos Estados Unidos (DARPA) na
Índice
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 2/13
década de 80 para a documentação dos circuitos integrados vendidos às forças áreas
americanas. 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. [1]
NOTA
Este texto foi adaptado da Apostila Básica de VHDL do
Prof. Dr. Renato Giacomini e da Apostila de Dispositivos
Lógicos Programáveis dos professores: Caio Augusto de
Oliveira, Jéssica Azevedo de Aguiar e Mateus Galvão Said
Fontanini (UNESP).
ASIC (Application Specific Integrated Circuits) Circuito integrado de aplicação específica.
CPLD (Complex Programmable Logic Devices) Dispositivo lógico programável complexo.
FPGA (Field Programmable Gate Array) Arranjo de portas programável em campo.
VHDL (VHSIC Hardware Description Language). A sigla é derivada de outra abreviatura - VHSIC
(Very High Speed Integrated Circuits), já que seu objetivo inicial era voltado ao projeto de
circuitos integrados de altíssima velocidade.
VHSIC (Very High Speed Integrated Circuits) Circuito integrado de altíssima velocidade.
Nas décadas de 70 e 80 foi posto em prática um programa do Departamento de Defesa (DoD)
americano, para desenvolvimento de circuitos integrados de alta velocidade, denominado VHSIC e
originado da preocupação de domínio das tecnologias envolvidas. Desde o princípio, anteviu-se o
problema de representação dos projetos segundo uma linguagem que fosse comum às várias
empresas envolvidas e que permitisse uma documentação fechada e clara para projetos de
complexidade crescente. Nesta mesma época, já havia no mercado de computação a chamada crise do
software, caracterizada pela dificuldade de gestão, documentação e sistematização do ciclo de vida do
software (que envolve, em termos gerais, todas as atividades de relativas à sua criação e uso)[1]. O
problema surgiu inicialmente no software porque era no software que se desenvolviam as aplicações,
que tornavam o produto particular para um uso específico. Isso fazia com que um grande volume de
Definições e Abreviaturas
Histórico
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 3/13
projetos fossem conduzidos, quase sempre com muita complexidade e pouco método. No hardware a
questão era mais bem controlada, pois os projetos eram, em geral, mais genéricos, especialmente para
o hardware digital. Os projetos de microprocessadores, que eram os mais complexos, visavam na
maior parte dos casos o uso geral. Um mesmo microprocessador seria utilizado em várias aplicações,
seria reproduzido e testado aos milhões. Isso significava que o investimento em um único projeto
poderia ser muito maior, inclusive em termos de especificação e testes. A evolução da metodologia de
projeto de software foi então natural, em função dos argumentos sustentados pela crise. Hoje ainda é
grande o desenvolvimento de novos métodos e a busca por uma linguagem descritiva universal, como
o UML, para especificação e projeto de software orientado a objetos.
A questão preocupante quanto ao hardware, para o programa VHSIC americano, era que alguns fatos
indicavam para uma evolução do mercado que faria surgirem problemas semelhantes aos
apresentados pela crise de software. Entre estes fatos:
A fabricação de circuitos integrados deixava de ser exclusiva de alguns poucos fabricantes.
Surgiam empresas especializadas na fabricação de projetos de terceiros, o que permitiria, em
conjunto com o desenvolvimento de tecnologias de fabricação menos custosas, a criação de CIs
de uso específico para certas aplicações.
As novas tecnologias de fabricação (abaixo de 2mm, na época) permitiam um aumento de
densidade dos CIs, com conseqüente aumento de complexidade.
Surgiam componentes de lógica programável (PLDs e PALs), inicialmente de pequena
densidade, mas que poderiam evoluir para densidades muito maiores rapidamente. Tais
componentes poderiam criar, como de fato ocorreu posteriormente, um grande mercado de
projetos de pequena escala e aplicações específicas, muito parecido com o mercado de projetos
de software.
A criação de uma linguagem de descrição de hardware patrocinada pelo programa e, em paralelo
algumas outras linguagens criadas pela indústria, foi então uma decorrência natural. Em 1987, o
VHDL foi normalizado pelo IEEE, tornando-se um padrão mundial, ao lado do Verilog, uma
alternativa também expressiva no mercado de projetos de hardware. Hoje, praticamente todas as
ferramentas de desenvolvimento de hardware computadorizadas aceitam essas linguagens como
entrada, de forma que um projeto baseado em VHDL ou Verilog pode ser implementado com
qualquer tecnologia.
A alternativa para uso de uma linguagem formal de descrição de hardware como o VHDL é a
descrição por diagramas esquemáticos. O VHDL apresenta as seguintes vantagens:
Em sistemas sequenciais, o detalhamento da lógica de controle é realizado pelas ferramentas de
automação do projeto, o que evita a trabalhosa e limitada aplicação das técnicas manuais
tradicionais;
O objetivo do projeto fica mais claro que na representação por esquemáticos, nos quais a
implementação se sobrepõe à intenção do projeto;
O volume de documentação diminui, já que um código bem comentado em VHDL substitui com
vantagens o esquemático e a descrição funcional do sistema;
O projeto ganha portabilidade, já que pode ser compilado em qualquer ferramenta e para
qualquer tecnologia. É comum, na indústria, o uso de FPGAs e CPLDs para produções iniciais ou
de menores escalas em projetos que posteriormente possam ser implementados em ASICs.
Todas as implementações podem usar o mesmo código VHDL.
Vantagens do Uso
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 4/13
O projeto de um sistema digital auxiliado por ferramentas computadorizadas segue normalmente as
etapas descritas a seguir.
1. Especificação
Esta etapa visa determinar os requisitos e funcionalidade deprojeto, incluindo timing dos sinais e
definido completamente as interfaces. É uma etapa comum e necessária a qualquer projeto,
independentemente do uso do VHDL.
2. Codificação
Nesta etapa, o objetivo é descrever, de forma estruturada e bem documentada, em VHDL, todo o
projeto, segundo seus padrões de sintaxe. Assim, formaliza-se a especificação da etapa anterior, numa
implementação de alto nível, em que são descritos apenas os aspectos relevantes à solução do
problema.
3. Simulação de Código Fonte
Nesta etapa, procura-se simular o código em uma ferramenta confiável, a fim de verificar,
preliminarmente, o cumprimento da especificação. Esta simulação não considera ainda detalhes
tecnológicos de implementação.
4. Síntese Otimização e Fitting
Síntese - É o processo de “tradução” ou compilação de um código VHDL para uma descrição abstrata,
em linguagem mais próxima da implementação. Naturalmente, a síntese é ainda um processo
independente da tecnologia. Basicamente, o resultado obtido é o que se chama de RTL (register-
transfer level), em que se definem registros, suas entradas e saídas e a lógica combinacional entre
elas. Otimização - É o processo de seleção da melhor solução de implementação para uma dada
tecnologia. Logicamente, as ferramentas EDA (Engineering Design Automation) são preparadas para
aceitar diretivas de otimização, dependendo do resultado que se quer (minimização de área, consumo,
tempo de resposta, etc). Fitting - É o processo em que a lógica sintezada e otimizada é mapeada nos
recursos oferecidos pela tecnologia.
5. Simulação do modelo pós-layout
A simulação realizada com o resultado do fitting permite resultados mais apurados de
comportamento e timing, porque considera as características da implementação definitiva na
tecnologia, como, por exemplo, os tempos de propagação dos sinais.
6. Geração
É a fase de configuração das lógicas programáveis ou de fabricação de ASICs.
Entidades e Arquiteturas
O código abaixo representa um comparador binário para palavras de quatro bits:
Ciclo de Projeto
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 5/13
-- comparador de 4 bits
entity comp4 is
 port ( a, b: in bit-vector (3 downto 0);
 equals: out bit);
end comp4;
architecture arq1 of comp4 is
begin
 equals <= ‘1’ when (a=b) else ‘O’;
end arq1;
Uma entidade (entity) é uma abstração que descreve um sistema, uma placa, um chip, uma função ou,
até mesmo, uma porta lógica. Na declaração de uma entidade, descreve-se o conjunto de entradas e
saídas. No exemplo dado, a entidade comp4 possui duas entradas, a e b, e uma saída, equals, que
definem o port da entidade.
Os ports correspondem a pinos e são tratados como objetos de dados. Pode-se atribuir valores ou
obtê-los de ports. Cada entrada ou saída possui um modo (mode) de operação. Os modos possíveis
são:
in – entrada;
out – saída: os pinos definidos como saída não podem ser utilizados como entradas, nem seus valores
utilizados na lógica interna;
buffer - saída com possibilidade de realimentação;
inout - substitui qualquer um dos outros, mas seu uso deve ser limitado aos casos em que o pino
deva ser utilizado como entrada e saída, para clareza na descrição.
A arquitetura de uma entidade pode ser descrita de três formas distintas, mas que, em geral,
conduzem a uma mesma implementação.
A arquitetura (architecture) descreve as funções realizadas pela entidade. No caso do exemplo é
atribuído o valor ‘1 ‘ à saída equals, sempre que as entradas forem iguais e ‘0’, caso contrário.
Esta é a forma mais flexível e poderosa de descrição. São definidos processos concorrentes (process).
A cada processo é associada uma lista de sensibilidade, que indica quais são as variáveis cuja
alteração deve levar à reavaliação da saída. No simulador funcional, quando uma variável da lista é
modificada, o processo é simulado novamente. O código abaixo ilustra a aplicação deste tipo de
descrição ao comparador do exemplo.
-- comparador de 4 bits
entity comp4 is
 port ( a, b: in bit_vector (3 downto Æ);
 equals: out bit);
Corpo de Arquitetura
Descrição comportamental
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 6/13
end comp4;
architecture comport of comp4 is
begin
 comp: process (a,b) -- lista de sensibilidade
 begin
 if a = b then
 equals < = ‘1’ ;
 else
 equals < = ‘O’ ;
 end if;
 end process comp;
end comport;
Uma arquitetura pode ter mais de um processo e eles serão executados concorrentemente entre si.
Neste tipo de descrição, os valores de saída são atribuídos diretamente, através de expressões lógicas.
Todas as expressões são concorrentes no tempo.
-- comparador de 4 bits
entity comp4 is
 port ( a, b: in bit_vector (3 downto 0);
 equals: out bit);
end comp4;
architecture fluxo of comp4 is
begin
 equals < = ‘1’ when (a=b) else ‘O’;
end fluxo;
A descrição estrutural apresenta netlists e instanciação de componentes básicos, ou seja, é como se
fosse uma lista de ligações entre componentes básicos pré-definidos.
-- comparador de 4 bits
entity comp4 is
 port ( a, b: in bit_vector (3 downto 0);
 equals: out bit);
end comp4;
use work.gateskg.all;
architecture estrut of comp4 is
 signal x bit_vector (0 to 3);
begin
 U0: xnor2 port map (a(0), b(0), x(0));
 U1: xnor2 port map (a(1), b(1), x(1));
 U2: xnor2 port map (a(2), b(2), x(2));
 U3: xnor2 port map (a(3), b(3), x(3));
 U4: and4 port map (x(0), x(1), x(2), x(3), equals);
end estrut;
Os identificadores são usados como referência a todos os objetos declarados no código. As regras para
formação de nomes são:
Descrição por fluxo de dados
Descrição estrutural
Identificadores
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 7/13
O primeiro carácter deve ser uma letra.
O último não pode ser underscore.
Não são permitidos 2 underscores em sequência.
Maiúscula / Minúscula são equivalentes.
CONSTANTES
- Assumem apenas um valor em todo o código.
Exemplo:
constant largura: integer: = 8 ;
Podem ser declaradas no níveis de
package
entity
architecture
process
e valem apenas no contexto em que são declaradas.
SINAIS
- Representam ligações (fios) que interligam componentes. Ports são exemplos de sinais.
Exemplo:
signal valor-de-contagem: bit-vector (3 downto 0):
Podem ser declarados na entidade ou na arquitetura.
VARIÁVEIS
- São utilizadas em processos e subprogramas e devem ser declaradas neles. São atualizadas
imediatamente e não correspondem à implementação física, como no caso dos sinais.
Exemplo:
variable resultado: std-logic := ‘0’
VHDL é strongly typed: objetos de dados de tipos diferentes não podem ser atribuídos um ao outro,
sem conversão explícita.
Tipos escalares
Enumeration Types
Objetos de dados
Tipos de Dados
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 8/13
Lista de valores que o objeto pode assumir.
Exemplo:
type estado is (espera, erro, cálculo, transmitido);
Pode-se então declarar um sinal do tipo:
signal estado_atual: estado;
Os dados desse tipo são ordenados, ou seja
erro > = espera
Já definidos pela norma:
type boolean is (FALSE, TRUE);
type bit is (‘O’, ‘1’);
type std_ulogic is ( ‘U’, -- não inicializada
 ‘X’, -- desconhecida forte
 ‘0’, -- 0 forte
 ‘1’, -- 1 forte
 ‘Z’, -- alta impedância
 ‘W’, -- desconhecida fraca
 ‘L’, -- O fraco
 ‘H’, -- 1 fraco
 ‘-’, -- tanto faz
);
subtype std_logic is resolved std_ulogic
resolved -> Existe uma função de resolução para os casos em que existe + de 1 driver para o sinal.
NOTA:para usar std_logic e std_ulogic devem-se acrescentar as seguintes linhas antes da entidade:
library ieee;
use ieee.std_logic_1164.all;
[...]
Integer Types
Inteiros na faixa de valores possíveis: ( ) a ( )
Exemplo:
variable altura: integer range 0 to 255;
Flooting Types
Esse tipo vai de -1.0E38 a 1.0E38, porém são pouco utilizados, por envolverem grande quantidade de
recursos.
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 9/13
Physical Types
Exemplo:
type time in range - 2147483647 to 2147483647
units
 fs;
 ps = 1000 fs;
 ns = 1000 ps;
 us = 1000 ns;
 ms = 1000 us;
 sec = 1000 ms;
 min = 60 sec;
 hr = 60 min;
end units;
Este tipo relaciona-se diretamente a grandezas físicas
Array
Exemplo:
type ward is array (15 downto 0) of bit;
signal b: ward;
Record
Exemplo:
type iocell is record
 buffer_inp: bitvector (7 downto 0);
 enable: bit;
 buffer_out: bitvector (7 downto 0);
end record;
Exercícios
Parte 1
1. O que significa CPLD, FPGA e VHDL?
2. Quais as principais vantagens no uso do VHDL?
3. Quais as etapas de um ciclo de projeto de sistemas em VHDL?
4. Qual a diferença entre uma Entidade (entity) e uma Arquitetura (architecture)?
5. O que são os Ports?
6. Que tipo de pinos (ports) existem e onde são aplicados?
7. O que é uma Descrição comportamental?
8. O que é uma Descrição por fluxo de dados?
9. O que é uma Descrição estrutural?
10. Quais são as regras para a formação dos Identificadores?
11. O que é uma constante?
12. Qual a diferença de Sinais e de Variáveis?
Tipos compostos
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 10/13
13. Quais os tipos de dados disponíveis em VHDL?
Parte 2
1. Projetar e simular:
1. Biestável tipo JK com clock e borda de subida, com descrição comportamental.
2. Idem, com Preset e Clear assíncronos
2. Realizar o projeto de um contador síncrono, com uma sequência pré-definida em VHDL e
simular.
3. Comentar os códigos abaixo:
Código 1
 
library ieee;
use ieee.std_logic_1164.all;
entity FF_D is
port
(
D : in std_logic;
clk : in std_logic;
Q : out std_logic
);
end FF_D;
architecture Ex1 of FF_D is
begin
-- Update the register output on the clock's rising edge
process (clk)
begin
if (rising_edge(clk)) then
Q <= D;
end if;
end process;
end Ex1;
Código 2
 
library ieee;
use ieee.std_logic_1164.all;
 
ENTITY ff_jk is
 port(j,k,clk: in bit;
 q: out bit);
END ff_jk;
 
ARCHITECTURE teste of ff_jk is
BEGIN
process(clk)
variable temp : bit :='0';
begin
if( falling_edge(clk) ) then
if (j='1' and k='0') then
temp:='1';
elsif (j='0' and k='1') then
temp:='0';
elsif (j='1' and k='1') then
temp:= not temp;
else
temp:=temp;
end if;
q<=temp;
end if;
end process;
END teste;
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 11/13
[Ocultar]
Código 3
 
library ieee;
use ieee.std_logic_1164.all; 
use ieee.std_logic_arith.all;
entity CONTADOR is
port(
CLK: in std_logic;
 RESET: in std_logic;
ENABLE: in std_logic;
Q: out std_logic_vector (3 downto 0)
);
end CONTADOR;
architecture CONTADOR_arq of CONTADOR is 
begin
process(CLK,RESET)
variable X: integer range 0 to 15;
begin
if (RESET = '1') then
X := 0;
elsif (CLK'event and CLK='1') then
if (ENABLE = '1') then
X := X + 1;
end if;
end if;
Q <= conv_std_logic_vector(X, 4);
end process;
end CONTADOR_arq;
Outros Exemplos
Código 4: VIGIA
--1 - VIGIA
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY Vigia IS
PORT( clk : IN STD_LOGIC;
 SensorA, SensorB : IN STD_LOGIC;
 Multa_Vel, Multa_Comp : OUT STD_LOGIC);
END Vigia;
ARCHITECTURE Intuitiva OF Vigia IS
 TYPE STATE_TYPE IS (Espera,
 Verificando_Velocidade,
 Verificando_Tamanho,
 Multa_Velocidade,
 Multa_Tamanho, 
 Erro);
 SIGNAL Estado: STATE_TYPE;
 SIGNAL Cronometro: INTEGER RANGE 0 to 31;
BEGIN
 PROCESS (clk)
 BEGIN
 IF clk'EVENT AND clk = '1' THEN
 Multa_Vel <= '0';
 Multa_Comp <= '0';
 CASE Estado IS
 WHEN Espera =>
 IF SensorA = '1' THEN
 IF SensorB = '0' THEN
 Estado <= Verificando_Velocidade;
 ELSE
 Estado <= Erro;
 END IF;
 END IF;
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 12/13
 WHEN Verificando_Velocidade =>
 IF SensorA = '1' THEN
 IF SensorB = '0' THEN
 Cronometro <= Cronometro + 1;
 ELSE
 IF Cronometro < 8 OR Cronometro > 24 THEN
 Estado <= Multa_Velocidade;
 ELSE
 Estado <= Verificando_Tamanho;
 END IF;
 END IF;
 ELSE
 IF SensorB = '0' THEN
 Estado <= Espera;
 Cronometro <= 0;
 ELSE
 Estado <= Erro;
 END IF;
 END IF;
 WHEN Verificando_Tamanho =>
 IF SensorA = '1' THEN
 IF SensorB = '1' THEN
 Cronometro <= Cronometro -1;
 IF Cronometro = 0 THEN
 Estado <= Multa_Tamanho;
 END IF;
 ELSE
 Estado <= Erro;
 END IF;
 ELSE
 Estado <= Espera;
 Cronometro <= 0;
 END IF;
 WHEN Multa_Velocidade =>
 Multa_Vel <= '1';
 WHEN Multa_Tamanho =>
 Multa_Comp <= '1';
 WHEN Erro =>
 Multa_Vel <= '1';
 Multa_Comp <= '1';
 END CASE;
 END IF;
END PROCESS;
END Intuitiva;
Exemplo 5: RECEPTOR
--2 – RECEPTOR
-- Receptor serial
entity Receptor is
 port( data_in, clock, limpa: in bit;
 pronto, ocupado: out bit;
 data_out: buffer bit_vector(7 downto 0));
end Receptor
architecture Receptor of Receptor is
 TYPE STATE_TYPE IS ( Espera,
 Start_bit,
 Recebendo,
 Pronto);
 SIGNAL Estado: STATE_TYPE;
 SIGNAL Cronometro: INTEGER RANGE 0 to 7;
 SIGNAL Conta_bits: INTEGER RANGE 0 to 7;
process
begin
 if clock'event and clock = '1' then
 CASE Estado IS
 WHEN Espera =>
 IF Data_in = '0'then
 Cronometro <= 0;
 Ocupado <= '1';
 Estado <= Start_bit;
 ELSE
 Ocupado <= '0';
 END IF;
 WHEN Start_bit =>
28/11/2023, 08:11 DI2022802 2023 2 AULA13 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA13 13/13
 IF Cronometro < 4 then
 Cronometro = Cronometro+1;
 ELSE
 Cronômetro = 0;
 Conta_bits =0;
 Estado <= Recebendo;
 END IF;
 WHEN Recebendo =>
 IF Conta_bits < 6 then
 IF Cronometro < 3 then
 Cronometro = Cronometro+1;
 ELSE
 Cronômetro = 0;
 Conta_bits = Conta_bits+1;
 Data_out(0)<= Data_out(1);
 Data_out(1)<= Data_out(2);
 Data_out(2)<= Data_out(3);
 Data_out(3)<=Data_out(4);
 Data_out(4)<= Data_out(5);
 Data_out(5)<= Data_out(6);
 Data_out(6)<= Data_out(7);
 Data_out(7)<= Data_in;
 END IF;
 ELSE
 Estado <= Pronto;
 Pronto <= '1';
 END IF;
 WHEN Pronto =>
 IF Limpa = 0 Then
 Ocupado <= '0';
 Pronto <= '0';
 Estado <= Espera;
 END IF;
 END CASE;
 END IF;
end process;
end Receptor;
Referências
[1] https://www.embarcados.com.br/vhdl-basico-parte-1-entidade/
[2] http://www.embarcados.com.br/tutorial-de-modelsim-vhdl-fpga/
[3] https://www.altera.com/products/design-software/model---simulation/modelsim-altera-
software.html
[4] Videoaula VHDL (https://drive.google.com/file/d/1zVjHMsvCz-HFm3S2Vp0vWk1MSqTRHmq
K/view?usp=sharing)
 
Disponível em “https://wiki.sj.ifsc.edu.br/index.php?title=DI2022802_2023_2_AULA13&oldid=192113”
Esta página foi modificada pela última vez em 3 de novembro de 2023, às 15h42min.
https://www.embarcados.com.br/vhdl-basico-parte-1-entidade/
http://www.embarcados.com.br/tutorial-de-modelsim-vhdl-fpga/
https://www.altera.com/products/design-software/model---simulation/modelsim-altera-software.html
https://www.altera.com/products/design-software/model---simulation/modelsim-altera-software.html
https://drive.google.com/file/d/1zVjHMsvCz-HFm3S2Vp0vWk1MSqTRHmqK/view?usp=sharing
https://drive.google.com/file/d/1zVjHMsvCz-HFm3S2Vp0vWk1MSqTRHmqK/view?usp=sharing
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA12
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA12
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2#Aulas
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2#Aulas
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA14
https://wiki.sj.ifsc.edu.br/index.php/DI2022802_2023_2_AULA14
https://wiki.sj.ifsc.edu.br/index.php?title=DI2022802_2023_2_AULA13&oldid=192113

Continue navegando