DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - · PDF file10/03/2017 2...
Transcript of DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - · PDF file10/03/2017 2...
10/03/2017 1
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Prof. Alexandre - ELP1DLP1 / DEE
10/03/2017 2
Introdução à Linguagem VHDL
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Objetivos da Aula:
Prof. Alexandre - ELP1DLP1 / DEE
Plano de Ensino
3. Ferramentas de Desenvolvimento 3.4. Editor de texto (programação VHDL ou Verilog)
Conteúdo Programático
10/03/2017 3
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Referências Bibliográficas
Prof. Alexandre - ELP1DLP1 / DEE
D'AMORE, Roberto. VHDL: descrição e síntese de circuitos digitais . 2. ed. Rio de Janeiro: LTC, 2012. 292 p. * TOCCI, Ronald J; WIDMER, Neal S; MOSS, Gregory L. Sistemas digitais: princípios e aplicações. 11. ed. São Paulo: Makron Books, 2011. 817 p.
Livros (BU / CCT)
Apostilas e Guias (PDF)
Grupo Microeletrônica Universidade Federal de Itajubá. Tutorial VHDL. Peter J. Ashenden. The VHDL Cookbook. Dept. Computer Science. University of Adelaide. South Australia. HARDI Electronics AB. VHDL Handbook.
Altera
Altera. VHDL Basics. 92min Training.*
*Principais fontes para elaboração desta apresentação
10/03/2017 4
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
VHDL
Prof. Alexandre - ELP1DLP1 / DEE
O que significa:
VHSIC – Very High Speed Integrated Circuit
Hardware
Description
Language
10/03/2017 5
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Introdução
Prof. Alexandre - ELP1DLP1 / DEE
Hardware Description Languages são linguagens de programação usadas para modelar o hardware. Capazes de descrever sistemas digitais e utilizada universalmente nos mais diversos produtos que envolvem circuitos eletrônicos.
HDL
10/03/2017 6
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Um pouco de história...
Prof. Alexandre - ELP1DLP1 / DEE
- VHDL surgiu no contexto do programa americano “Very High Speed Integrated
Circuits” (VHSIC), iniciado em 1980 pelo Departamento de Defesa dos EUA.
- VHDL surgiu devido a necessidade de uma ferramenta para documentação
padrão da Descrição de Circuitos.
- Padrões Principais:
- IEEE 1164 – Pacote: Std_logic_1164 (tipos de dados)
- IEEE 1076.3 – Pacotes: Numeric_std e Numeric bit (numérica)
- Pacotes contem as informações de funções, tipos de dados, etc..
- Essas informações são utilizadas para traduzir a programação escrita para o nível
de circuitos nos PLDs (circuitos lógicos programáveis)
10/03/2017 7
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
VHDL
Prof. Alexandre - ELP1DLP1 / DEE
Vantagens
a) HDL padrão aprovada pela IEEE
b) HDL de alto nível usada para Simulação e Síntese.
c) diferentes alternativas de implementação, permitindo vários níveis de abstração
d) verificação do comportamento do sistema digital, através de simulação
e) redução do tempo e custo de desenvolvimento e manutenção do projeto
f) eliminação de erros de baixo nível do projeto
g) Velocidade de resposta entrada/saída
h) “Tell me how your circuit should behave and I will give the hardware that does
the job” - Altera
Desvantagens
a) dificuldade para otimização no hardware gerado
b) necessidade de treinamento para lidar com a linguagem
10/03/2017 8
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
VHDL
Prof. Alexandre - ELP1DLP1 / DEE
Síntese e Simulação
10/03/2017 9
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Níveis de Abstração e Descrição: Processo Síntese
Prof. Alexandre - ELP1DLP1 / DEE
Nível de sistema
RTL Nível Lógico e Circuito
Descrição desconhece o dispositivo É necessário conhecer o
dispositivo no qual a “lógica”
será implementada
10/03/2017 10
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Níveis de Abstração e Descrição: RTL Síntese
Prof. Alexandre - ELP1DLP1 / DEE
10/03/2017 11
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
VHDL: Ponto de partida
Prof. Alexandre - ELP1DLP1 / DEE
VHDL é formado por palavras-chave reservadas.
As linhas terminam por ponto-e-vírgula “;”
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.
Linguagem concorrente
- ordem dos comandos: não importa
- comandos sequenciais: somente em regiões específicas
Library IEEE;
Use IEEE.std_logic_1164.all;
Use IEEE.std_logic_unsigned.all;
10/03/2017 12
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
VHDL: Primeiro Contato
Prof. Alexandre - ELP1DLP1 / DEE
10/03/2017 13
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
VHDL: Design Units
Prof. Alexandre - ELP1DLP1 / DEE
• A estrutura de um programa em VHDL é composta pelos elementos:
1) Entity (símbolo)
2) Architecture (esquemático)
3) Configuration (múltiplas arquiteturas, associação)
4) Package (bibliotecas)
10/03/2017 14
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Package (Library)
Prof. Alexandre - ELP1DLP1 / DEE
A primeira informação contida 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; lib_name.pack_name.object 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
objetos 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.
• A entity define a interface (símbolo) do projeto, através dos pinos de entrada (in) e saída (out) e o tipo do sinal correspondente, no seguinte formato:
entity nome_da_entity is generic ( --Declaração de parâmetros <CONSTANT> nome : <type> := <valor> ); port ( --Declaração dos pinos <SIGNAL> nome : <mode> <type> ); end nome_da_entity ;
Exemplo: entity COMPARA is port ( A,B: in std_logic; C: out std_logic); end COMPARA;
Interfaces definidas através do exemplo de entity. 10/03/2017 15
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Entity
Prof. Alexandre - ELP1DLP1 / DEE
COMPARA
A
B
C
• Descreve a funcionalidade e temporização de um modelo • Deve estar associado à uma ENTITY • Uma ENTITY pode possuir várias ARCHITECTURES
• Arquiteturas com vetores de estímulo de teste diferentes • Uma arquitetura “simulável” e uma segunda “sintetizável”
• Estilos de modelagem / descrição • COMPORTAMENTAL: como se comporta o modelo
• RTL: modelo descrito em termos de registradores • Funcional: sem temporização
• ESTRUTURAL: conexões • Portas lógicas e componentes
• HÍBRIDA
10/03/2017 16
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
10/03/2017 17
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
ARCHITECTURE nome_da_architecture OF nome_da_entity IS --Declarações opcionais SIGNAL temp : INTEGER := 1; CONSTANT load : BOOLEAN := true; TYPE states IS (S1,S2,S3); --Component declaration --Subtype declaration --Attribute declarations and specifications -- Subprogram declarations and body BEGIN --Lógica -- Process statements -- Concurrent procedural calls -- Concurrent signal assignments -- Component installation statements -- Generic statements END nome_da_architecture;
10/03/2017 18
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
• O signal pode ser declarado em entity, architecture ou em package, e serve para a conexão entre os módulos, componentes e portas lógicas.
sintaxe:
signal identificador (es) : tipo [restrição] [:=expressão];
Exemplos:
signal cont : integer range 50 downto 1;
signal ground : bit := ´0´;
signal bus : bit_vector;
Declaração de Sinais
10/03/2017 19
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
• A declaração do componente, component, é feita como segue, sendo que o componente declarado deve ser projetado através de uma outra descrição VHDL, ou outra forma de projeto, respeitando as mesmas características de Entidade.
Component nome_do_componente port ( Clk : in std_logic; Rst : in std_logic; Din : in std_logic; Dout : out std_logic ); end component;
Declaração de Componentes
10/03/2017 20
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
Lógica: Descrição COMPORTAMENTAL
Usa a cláusula process, cujo formato é o seguinte:
Process ( lista de sensibilidade ) begin descrição lógica end process;
A lista de sensibilidade corresponde aos sinais que devem alterar a saída do circuito, e é composta de todos os sinais de entrada para os circuitos combinatórios.
Para os registradores assíncronos, a lista seria composta do clock e do
reset; e para os registradores síncronos, do clock.
10/03/2017 21
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
Lógica: Descrição COMPORTAMENTAL - PROCESS
10/03/2017 22
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
Lógica: Descrição COMPORTAMENTAL - EXEMPLO
Architecture COMPORTAMENTO of COMPARA is begin process (A,B) begin if(A=B) then C<=‘1’; else C<=‘0’; end if; end process; end COMPORTAMENTO; O comando process (A,B) indica que os sinais A e B formam a lista de sensibilidade. A saída C será igual a 1 caso as entradas A e B sejam iguais, e C será igual a 0, caso contrário.
COMPARA
A
B
C
10/03/2017 23
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
Lógica: Descrição ESTRUTURAL
Para a descrição estrutural é feita a associação dos pinos do componente com os sinais usados no projeto.
Exemplo:
BEGIN
U0: nome_do_componente
port map (
Clk => clk_top;
Rst => rst_top;
Din => din_top;
Dout => dout_top
);
END
No exemplo, U0 é um label.
10/03/2017 24
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
Lógica: Descrição ESTRUTURAL - EXEMPLO
COMPARA
A
B
C
10/03/2017 25
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP
Architecture
Prof. Alexandre - ELP1DLP1 / DEE
Lógica: Descrição ESTRUTURAL - EXEMPLO
architecture ESTRUTURA of COMPARA is component XOR_Gate port (I0, I1: in std_logic; O: out std_logic); end component; component NOT_Gate port (I0: in std_logic; O: out std_logic); end component; signal AUX: std_logic; begin U0: XOR_Gate port map (I0=>A, I1=>B, O=>AUX); U1: NOT_Gate port map (I0=>AUX, O=>C); end ESTRUTURA;