Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de...
Transcript of Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de...
![Page 1: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/1.jpg)
1
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDLVHDLIntroduçãoIntrodução
Paulo C. [email protected]
março de 2005
![Page 2: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/2.jpg)
2
VHDL Introdução
http://www.lsc.ic.unicamp.br
Introdução
• Vantagens do Uso de HDLs e Ferramentas de Sínteses – Aumento da produtividade, diminuindo o ciclo de
desenvolvimento– Redução dos custos NRE (NonRecurring Engineering)– Reusabilidade – Facilidade em introduzir alterações nos projetos– Exploração de alternativas de arquiteturas– Exploração de alternativas tecnológicas – Geração de circuitos testáveis automaticamente – Facilidades na verificação do projeto
![Page 3: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/3.jpg)
3
VHDL Introdução
http://www.lsc.ic.unicamp.br
Introdução
• Dispositivos ASICs e FPGAs– ASIC ApplicationSpecific Integrated Circuits– FPGA FieldProgrammable GateArray
• ASIC– Parcialmente manufaturado pelo fabricante– Gate Arrays
• Channeled gate array • Channelless gate array (seaofgates)
– Standard Cell• Fabricante fornece uma biblioteca de hadmacros e softmacros
(70% a 90% do # de gates disponíveis são efetivamente usados)
![Page 4: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/4.jpg)
4
VHDL Introdução
http://www.lsc.ic.unicamp.br
Introdução
• FPGA– Completamente manufaturado pelo fabricante– Blocos programáveis interconectados por matrizes de
chaves programáveis
• FPGAs são muito utilizadas para pequena produção e prototipagem de sistemas
ASIC x FPGA
ASIC
FPGA
NRC
$20,000 a $500,000
Por unidade
$10
$150 a $250
![Page 5: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/5.jpg)
5
VHDL Introdução
http://www.lsc.ic.unicamp.br
Introdução
• Metodologia de Projeto
– Descrição do sistema completo em um nível de abstração usando uma linguagem de descrição de hardware (HDL Hardware Description Language) e uso de ferramentas automáticas para particionamento e síntese.
– A descrição do hardware deve ser independente da tecnologia a ser usada na implementação.
• PCB ou MCMs (multichip modules)• IC, ASICs, FPGA, PLD, fullcustom
![Page 6: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/6.jpg)
6
VHDL Introdução
http://www.lsc.ic.unicamp.br
Hardware Description Languages (HDLs)
• HDL Linguagem de programação usada para modelar a operação de um hardware– VHDL, Verilog, SystemC, AHDL, ...
• VHDL História– 1980
• USA Department of Defense (DOD)– Documentação– Metodologia de Projeto comum– reusável com novas tecnologias
• O DOD, dentro do programa “Very High Speed Integreted Circuit” (VHSIC) criou um projeto com a finalidade de criar uma linguagem de descrição de hardware
– VHSIC Hardware Description Language ( VHDL)
![Page 7: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/7.jpg)
7
VHDL Introdução
http://www.lsc.ic.unicamp.br
Hardware Description Languages (HDLs)
– 1983• Início do desenvolvimento de VHDL
– IBM, Texas Instruments e Intermetrics
– 1987 • Todo projeto de eletrônica digital ligado ao DOD deveria ser
descrito em VHDL• IEEE Institute of Electrical and Electronics Engineers
– IEEE Standard 1076 (http//www.vhdl.org)• F22
– Todos os subsistemas eletrônicos descritos em VHDL– O desenvolvimento dos subsistemas foram distribuídos em
diversos subcontratos– Estabeleceu um marco no uso de VHDL e da metodologia de
projeto TopDown
![Page 8: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/8.jpg)
8
VHDL Introdução
http://www.lsc.ic.unicamp.br
Hardware Description Languages (HDLs)
– 1993• Revisão de VHDL IEEE 1076’93
– 1996• Ferramentas comerciais para Simulação e Sínteses para o
padrão IEEE 1076’93• IEEE 1076.3 VHDL package para uso com ferramentas
de sínteses • IEEE 1076.4 (VITAL) padrão para modelagem de bibliotecas
para ASICs e FPGAs em VHDL– 2000
• Revisão de VHDL – IEEE 1076a– 200x
• Próxima revisão de VHDL
![Page 9: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/9.jpg)
9
VHDL Introdução
http://www.lsc.ic.unicamp.br
Ferramentas para Automação de Projetos
• Computer Aided Design (CAD) e Computer Aided Engineering (CAE)
– Simulação– Fault Simulation– Register Transfer Level Synthesis
• Otimizações no nível RTL• Otimizações no nível lógico
– Síntese de Teste
![Page 10: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/10.jpg)
10
VHDL Introdução
http://www.lsc.ic.unicamp.br
Síntese e Otimizações
• Restrições
– Global Aplicada igualmente a todo o projeto• Exemplos: Biblioteca do fabricante; tensão e temperatura de uso.
– Específica por circuito Aplicada a um particular circuito• Exemplos:
– Área área máxima (# gates equivalentes, # transistores)– Timing input e output loading, máx. fanout, capacidade
de driving das entradas, mínima freqüência do clock, etc.
– Potência máxima potência consumida– Testabilidade tipo das células para scan, scan parcial ou
full, boundary scan.
![Page 11: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/11.jpg)
11
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Uma visão Geral
• Característica– Adequada à descrição de hardware
• programação seqüencial e paralela
– Permite descrição em diferentes níveis de abstração• Comportamental • RTL• Estrutural (portas lógicas)
– Simulável– Sintetizável– Padrão
![Page 12: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/12.jpg)
12
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Uma visão Geral
• Conceitos:
– time step: É o menor intervalo de tempo do simulador, em algumas ferramentas é definido pelo usuário. Para VHDL timestep é o tempo gasto para a resolução de uma iteração de todos os comandos concorrentes
– Concorrência: A cada timestep do simulador todos os comandos são executados concorrentemente. Também os processos (conjunto de comandos seqüenciais) ocorrem em concorrência com o restante dos comandos de um modelo VHDL
– Tipo: A linguagem VHDL é fortemente dependente dos tipos dos dados.
![Page 13: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/13.jpg)
13
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL uma visão geral
• 5 tipos de unidades
– Entity define a interface do projeto, módulo, etc.– Architecture descreve funcionalmente a entidade. Pode
haver mais de uma arquitetura para uma mesma entidade.
– Package declarações comuns a todo o projeto. Exemplo: constantes, tipos de dados e subprogramas.
– Packge Body contém o corpo dos subprogramas definidos no Packge
– Configuration Faz a ligação de uma entidade com uma particular arquitetura, formando um componente.
![Page 14: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/14.jpg)
14
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL uma visão geral
• Packages: Assim como em linguagens de programação são utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc), em VHDL isto é feito com a utilização de Packages e Bibliotecas de componentes.
• Entidades: Define a interface de um componente: nome, tipo dos sinais de entrada e/ou saída, ...
• Arquiteturas: Define a funcionalidade de um componente e a temporização. Uma mesma entidade pode possuir múltiplas arquiteturas e para efeito de simulação e síntese é usada a última arquitetura compilada.
![Page 15: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/15.jpg)
15
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL uma visão geral
• Processo: É uma porção de código delimitada pelas palavras Process e End Process que contém comandos seqüenciais (são simulados em deltadelay que somados resultam em zero). Todos os processos de um modelo VHDL de um componente são executados concorrentemente em um timestep.
• Função: Uma função em VHDL tem comportamento similar as funções em outras linguagens, contudo funções em VHDL não afetam os parâmetros de entrada, simplesmente retornam um valor com tipo definido.
![Page 16: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/16.jpg)
16
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL uma visão geral
• Procedimento: Um procedimento em VHDL tem comportamento similar aos procedimentos de outras linguagens e distinguemse das funções pela possibilidade de alteração nos parâmetros de chamada.
• Bloco: O comando BLOCK pode ser utilizado tanto para definir hierarquia de circuitos como também em conjunto com expressões GUARD definindo condições de uso de sinais de escopo restrito.
• Componente: É descrito pelo par entidade e arquitetura. Um modelo VHDL é dito estrutural se faz uso de instanciação de componentes.
![Page 17: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/17.jpg)
17
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Estrutura do Código VHDL
• Declarações – Objetos que serão usados em comandos concorrentes ou
seqüenciais – Declarados antes da clausula begin em arquiteturas,
blocos, processos, procedimentos e funções
• Comandos concorrentes– comandos que serão executados em paralelo,
independentemente uns dos outros – block e process
![Page 18: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/18.jpg)
18
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Estrutura do Código VHDL
• Comandos seqüenciais– comandos que serão executados de forma seqüencial,
obedecendo o fluxo de controle– comandos após a clusula begin em processos
![Page 19: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/19.jpg)
19
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Elementos Léxicos
• Comentários:
• Identificadores: Formados por letras, números e underline (necessariamente iniciados por letra e não podem terminar em underline)
• Palavras reservadas
• Símbolos especiais: Utilizados em operadores, para delimitação e pontuação da linguagem:
/ : . + | & ‘ “ ( ) * , => > = < /= >= <= <> ;
![Page 20: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/20.jpg)
20
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Elementos Léxicos (cont.)
• Números, caracteres e string
– Números inteiros: 17 25 0 55E5 – Números reais: 14.33 0.0 33.4E10– caracteres: ‘A’ ‘f’ ‘K’ ‘7’ ‘?’– String: “String” “A”
• Bit strings: Somente utilizados com o tipo bit_vector
– Binário: B”0011011”– Octal: O”234”– Hexadecimal: X”E3F”
![Page 21: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/21.jpg)
21
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Entidade
• Define a interface do componente com o restante do sistema
Entity nome ISEntity nome IS GENERIC (lista_dos_genericos);GENERIC (lista_dos_genericos); PORT (lista_dos_ports);PORT (lista_dos_ports);END nome;END nome;
![Page 22: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/22.jpg)
22
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Port
• Formato:
– Modo: in, out, inout, buffer, linkage
• Exemplo:
Port (nome: MODO tipo);Port (nome: MODO tipo);
Port (a, b : in bit;Port (a, b : in bit; c: out bit);c: out bit);
aa
bbcc
in1in1
in2in2out1out1
![Page 23: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/23.jpg)
23
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Exemplo
Entity Entity porta_andporta_and IS IS GENERIC (numeroGENERIC (numero_de_entradas: integer := 4_de_entradas: integer := 4);); PORT (PORT (entradas : in bit_vector (1 to numero_de_entradasentradas : in bit_vector (1 to numero_de_entradas);); saida : out bit);saida : out bit);END porta_end;END porta_end;
• Port MODE:– IN: sinal é somente de entrada– OUT: sinal é somente de saída– Buffer: sinal é de entrada e saída (um de cada vez)– Inout: sinal é bidirecional, implica em um BUS– Linkage: direção do sinal é desconhecida
![Page 24: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/24.jpg)
24
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Exemplo
• Qual é a Entidade?
DD
clkclk
QQ88
bitsbits88
bitsbits LatchLatch
Entity latch isEntity latch is port (d : in bit_vector(7 downto 0);port (d : in bit_vector(7 downto 0); clk : in bit;clk : in bit; q : out out bit_vector(7 downto 0);q : out out bit_vector(7 downto 0);End latch;End latch;
![Page 25: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/25.jpg)
25
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Exemplo
Entity latch isEntity latch is generic(w : integer := 8);generic(w : integer := 8); port (d : in bit_vector(w1 downto 0);port (d : in bit_vector(w1 downto 0); clk : in bit;clk : in bit; q : out bit_vector(w1 downto 0);q : out bit_vector(w1 downto 0);End latch;End latch;
• Usando generic?
![Page 26: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/26.jpg)
26
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Arquitetura
• Estabelece a relação entre entradas e saídas– Funções– Procedimentos– Execução paralela de processos– Instanciação de componentes
• Arquiteturas múltiplas– Utiliza a última compilada
![Page 27: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/27.jpg)
27
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Arquitetura
ARCHITECTURE label OF nome_entidade ISARCHITECTURE label OF nome_entidade IS parte declarativa (declarações de tipos, subtipos, sinais, parte declarativa (declarações de tipos, subtipos, sinais, funções, procedimentos, ...) funções, procedimentos, ...)
BEGINBEGIN comandos concorrentes comandos concorrentesEND label;END label;
ARCHITECTURE rtl OF porta_and ISARCHITECTURE rtl OF porta_and IS constant atraso : time := 5 ns;constant atraso : time := 5 ns;
BEGINBEGIN y <= a AND b AFTER atraso;y <= a AND b AFTER atraso;END porta_and;END porta_and;
Qual a entidade?Qual a entidade?
![Page 28: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/28.jpg)
28
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Arquitetura
Entity porta_and isEntity porta_and is port (a, b : in bit;port (a, b : in bit; y : out bit);y : out bit);End porta_and;End porta_and;
Entity porta_and isEntity porta_and is generic(w : integer := 8);generic(w : integer := 8); port (a, b : in bit_vector(w1 downto 0);port (a, b : in bit_vector(w1 downto 0); y : out bit_vector(w1 downto 0);y : out bit_vector(w1 downto 0);End latch;End latch;
![Page 29: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/29.jpg)
29
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Declarações
• Constantes:– CONSTANT atraso : TIME := 3 ns;
• Variáveis:– VARIABLE tmp : INTEGER := 0;
• SINAIS:– SIGNAL clk : BIT := ‘1’;
![Page 30: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/30.jpg)
30
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Declarações
• Constante: nome assinalado a um valor fixo
» CONSTANT vdd: real := 4.5;» CONSTANT cinco: integer := 3 +2;
• Variável: nome assinalado a um valor que muda de acordo com um determinado processo
» VARIABLE largura_pulso: time range 1ns to 15ns := 3ns;» VARIABLE memoria: bit_vector (0 to 7);
• SINAl: conectam entidades e transmitem mudanças de valores entre os processos (todo port é um sinal).
» SIGNAL contador : integer range 0 to 63» SIGNAL condicao : boolean := TRUE;
![Page 31: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/31.jpg)
31
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Declarações
• Áreas declarativas
– Onde são definidos os sinais internos, variáveis, constantes, subprogramas, aliases
– Àreas declarativas existem para packages, entidades, arquiteturas, subprogramas, processos e blocos
– A área não declarativa é chamada de área de comandos
![Page 32: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/32.jpg)
32
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Declarações
• Área declarativa em Arquitetura– Declarações no topo da arquitetura são “visíveis” em toda
a arquitetura
ARCHITECTURE exemplo OF circuito ISARCHITECTURE exemplo OF circuito IS CONSTANT cte : time := 10 ns;CONSTANT cte : time := 10 ns; SIGNAL tmp : integer;SIGNAL tmp : integer; SIGNAL cnt : bit;SIGNAL cnt : bit;
BEGINBEGIN
........
![Page 33: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/33.jpg)
33
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Declarações
• Área declarativa em Processos– Declarações no topo de um processo são “visíveis” em
toda o processo
Exemplo: PROCESS isExemplo: PROCESS is CONSTANT cte : time := 10 ns;CONSTANT cte : time := 10 ns; VARIABLE tmp : integer;VARIABLE tmp : integer; SIGNAL cnt : bit;SIGNAL cnt : bit;
BEGINBEGIN
........
![Page 34: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/34.jpg)
34
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Declarações
• Escopo: da declaração do identificador até a declarção END desta região
• Limites:– Componente
• Entidade– Arquitetura
» Bloco» Processo» Subprograma
![Page 35: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/35.jpg)
35
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Escopo
• Na linguagem VHDL é possível a utilização de identificadores homônimos com diferentes significados, dependendo do contexto onde é definido cada identificador ele pode assumir diferentes significados a nível lógico.
• Um sinal definido dentro da parte declarativa de um componente, entidade, arquitetura, bloco, processo ou subprograma tem o escopo controlado dentro deste contexto. Desta forma é possível a utilização de nomes idênticos para indicações de sinais distintos.
• Para a distinção de sinais homônimos, cada sinal definido em VHDL pode ser acessado por seu endereço completo, indicando biblioteca, package, componente, arquitetura, processo e nome do sinal na forma:
biblioteca.componente.arquitetura.processo.sinalbiblioteca.componente.arquitetura.processo.sinal
![Page 36: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/36.jpg)
36
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Visibilidade
• Estabelece o significado dos identificadores
• As declarações são visíveis somente no seu escopo
• Uso de endereços em identificadores
» var1 := architecture2.cte;» var2 := process1.cte;
![Page 37: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/37.jpg)
37
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Atribuições
• Atribuição a sinal:
• Atribuição a variável:
• Inicialização (constante, sinal e variável):
<=<=
:=:=
:=:=
![Page 38: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/38.jpg)
38
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Atribuições de Dados
• Constante:
• Variável:
• Sinal:
Constant cnt_reset : bit_vector(0 to 3) := “1001”;Constant cnt_reset : bit_vector(0 to 3) := “1001”;
var1 := 2005;var1 := 2005;
dado <= ‘1’;dado <= ‘1’;d <= ‘1’, ‘0’ AFTER 5 ns;d <= ‘1’, ‘0’ AFTER 5 ns;
![Page 39: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/39.jpg)
39
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Operadores Aritméticos
R <= REM(tot);restoREM
Z <= MOD(t);MóduloMOD
Y <= ABS(tmp)Valor absolutoABS
I := i ** 3;Potenciação**
K := i / 2;Divisão/
M := fator * n;Multiplicação*
J <= j 10;Subtração
I := i + 2;Adição+
ExemploOperaçãoOperador
![Page 40: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/40.jpg)
40
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Operadores Lógicos
• Predefinidos para os tipos: bit; std_logic, std_ulogic, boolean
– NOT– AND– NAND– OR– NOR– XOR– XNOR
![Page 41: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/41.jpg)
41
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Operadores Relacionais
Menor ou igual que
<=
Maior ou igual que
>=
Menor que<
Maior que>
Diferente/=
Igual=
OperaçãoOperador
![Page 42: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/42.jpg)
42
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Modelo Completo
• Indica as bibliotecas utilizadas
• Faz uso das definições contidas nas bibliotecas
• Descreve a entidade
• Descreve a arquitetura
![Page 43: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/43.jpg)
43
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL – or de 2 entradas
Library IEEE;Library IEEE;Use IEEE.std_logic.all;Use IEEE.std_logic.all;
Entity or2 isEntity or2 is porta or de duas entradas porta or de duas entradas port (i1, i2 : in bit;port (i1, i2 : in bit; out1 : out bit);out1 : out bit);End or2;End or2;
Architecture rtl of or2 isArchitecture rtl of or2 isBeginBegin out1 <= i1 or i2;out1 <= i1 or i2;End rtl; End rtl;
![Page 44: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/44.jpg)
44
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Packages
• Coleção de declarações comuns definidas fora dos modelos (corpo + declaração)
• Uso de:– Tipos; Subtipos– Subprogramas (Funções e Procedimentos)– Constantes; Sinais; Aliases– Atributos– Componentes
![Page 45: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/45.jpg)
45
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Packages
PACKAGE label ISPACKAGE label IS
declarações; declarações;
END label;END label;
Package BODY label ISPackage BODY label IS
Corpo de subprogramas; Corpo de subprogramas;
END label;END label;
![Page 46: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/46.jpg)
46
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL – Library e USE
• LIBRARY nome_da_biblioteca;
• A cláusula USE torna os pacotes visíveis em entidades e arquiteturas– USE nome_biblioteca.nome_package;– USE nome_package.identificador;
Library IEEE;
USE IEEE.std_ulogic.all;USE math.all;USE textio.all;
![Page 47: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/47.jpg)
47
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipos
• Definição de tipos– Integer– Natural– Real– Array– ....
• Tipos padrão– bit– std_logic– std_ulogic
![Page 48: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/48.jpg)
48
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipos
• Vetores– bit_vector– std_logic_vector– std_ulogic_vector
• Tipos são associados a:– sinais– variáveis– constantes
![Page 49: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/49.jpg)
49
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipos de Dados
• Scalar– Numeric– Enumeration– Physical
• Composite– Array– Records
• Acess– Similar aos pointers em linguagens de programação– Permite alocação dinâmica de memória
![Page 50: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/50.jpg)
50
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo Scalar
• NUMERIC– TYPE integer IS RANGE 214748368 to 2147483647;– TYPE real is RANGE 1.797769E308 to 1.79769E308;
• ENUMERATION– TYPE instr IS (“add”, “sub”, “mult”, “div”);– TYPE character IS (‘a’, ‘b’, ‘c’, ‘d’, .... );
• PHYSICALTYPE time IS RANGE 0 to 1e55
UNITS fs; ps = 1000 fs; ...END UNITS;
![Page 51: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/51.jpg)
51
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo Escalar
ESCALARESCALAR
REALREAL DISCRETODISCRETO
EnumeradoEnumeradoInteiroInteiro
Definido pelo usuárioDefinido pelo usuárioStd_logicStd_logicBitBitBooleanBoolean
![Page 52: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/52.jpg)
52
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo Composite
• Consiste de elementos de dados relacionados na forma de um array ou record
• Os elementos de um composite podem ser manipulados como um objeto ÚNICO ou individualmente
• Tipicamente utilizados para modelar barramentos e memórias (RAM e ROM)
![Page 53: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/53.jpg)
53
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo Composite
CompositeComposite
ArrayArray
VetorVetor1 dim1 dim
TabelaTabela2 dim2 dim
RecordeRecorde
Conjunto de camposConjunto de campos
![Page 54: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/54.jpg)
54
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo ARRAY
• Formato:
TYPE word IS ARRAY (31 downto 0) OF bit;
SUBTYPE coef IS integer range 0 to 15;
TYPE matriz IS array(coef,word) of word;
![Page 55: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/55.jpg)
55
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo RECORD
• Formato:
TYPE time_stamp IS RECORDsegundos : integer range 0 to 59;minutos : integer range 0 to 59;
horas : integer range 0 to 23;END RECORD time_stamp;
• Podem ser acessados elementos individuais do record ou como um todo
![Page 56: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/56.jpg)
56
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo RECORD
• Exemplo de uso:constant meia_noite : time_stamp := (0,0,0);
constant meio_dia : time_stamp := (horas => 12, minutos => 0, segundos => 0);
horario_atual := meio_dia; hora_atual := meia_noite.horas;
![Page 57: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/57.jpg)
57
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo PréDefinidos
• BIT (‘0’, ’1’)• BOOLEAN (TRUE, FALSE)• INTEGER (1, 1, 6, 10, 15, ...)• REAL (4.3, 5.5, 0.35 ....)• CHARACTER (‘a’, ‘b’, ‘c’, .... )• TIME (5 ns, 1 ps, 2s, ... )• SEVERITY_LEVEL (note, warning, error, failure)
![Page 58: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/58.jpg)
58
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Tipo Standard Logic
• Definidos no pacote IEEE:TYPE std_logic IS ( ‘U’, não inicializado
‘X’ indeterminado forte ‘0’ zero lógico forte ‘1’ um lógico forte ‘Z’ alta impedância ‘W’ indeterminado fraco ‘L’ zero lógico fraco ‘H’ um lógico fraco ‘’ dont´t care
);
![Page 59: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/59.jpg)
59
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Subtipos
• Formato:
SUBTYPE natural IS INTEGER RANGE 0 to 2147483647;
SUBTYPE positive IS INTEGER RANGE 1 to 2147483647;
![Page 60: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/60.jpg)
60
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Conversão de Tipos
• Possível para conversão de alguns tipos– Inteiro > Ponto Flutuante– array > array com conteúdo do mesmo tipo
• Formato:
tipo(objeto)
• Exemplo:soma := REAL(N1) + N2;
![Page 61: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/61.jpg)
61
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Exemplo
• Qual o circuito implementado (em termos de portas lógicas)?
Library IEEE;use IEEE.std_logic;Entity cct1 IS Port (in1, in2,in3,in4 : IN std_logic; out1, out2 : OUT std_logic);End cct1;Architecture rtl OF cct1 IS signal out_i : std_logic;Begin out_i <= in1 and in2 and in3; out1 <= out_i; out2 <= in4 XOR out_i;End rtl
![Page 62: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/62.jpg)
62
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Modelando Atrasos
• Em quanto tempo a saída out1 do circuito anterior é resolvida?
• Atraso interno (delta)dado <= dado_interno;
• Atraso inercial (filtra spikes)Q <= d_in AFTER 10ns;
• Atraso transport (passa o sinal independentemente da sua duração)
Q <= TRANSPORT d_in AFTER 10ns;
![Page 63: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/63.jpg)
63
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Modelando Atrasos
• Um sinal não muda imediatamente quando assinalamento ocorre
• Um assinalamento de sinal é programado para ocorrer no próximo ciclo de simulação
![Page 64: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/64.jpg)
64
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Inertial Delay
• O atraso inercial rejeita pulsos que são menores que o valor de atraso especificado
• O comando y <= not d after 20 ns; pode ser lido como y recebe o valor d se este tiver duração de pelo menos 20 ns
dd
yy
![Page 65: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/65.jpg)
65
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Transport Delay
• modela resposta em freqüência infinita• não importa a duração do pulso copiado para a saída• se o atraso de uma nova transição é menor ou igual ao
atraso das transições programadas, então estas transições são substituídas pela nova transição, caso este atraso seja maior as transições são somadas
dd
yy
![Page 66: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/66.jpg)
66
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Processos
• São comandos concorrentes que contém instruções seqüênciais
• Todos os processos são executados concorrentemente
• Cada instrução dentro de um processo leva um tempo “delta time” que somados são iguais a zero
![Page 67: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/67.jpg)
67
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Process
Label: PROCESS (lista de sensitividade) cláusulas declarativas; BEGIN
comentários inicializações; cláusulas acertivas; END PROCESS label;
OBS.: A lista de sensibilidade funciona como um comando WAIT ON
![Page 68: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/68.jpg)
68
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Process
Architecture bhv OF generic_decoder ISBeginPROCESS (sel, en) BEGIN y <= (others => ‘1’); FOR i IN y’range LOOP IF (en = ‘1’ and (bvtoi(To_Bitvector(sel)) = i)) THEN y(i) <= ‘0’; END IF; END LOOP;END PROCESS;END bhv;
atributoatributo
Função de conversão de Função de conversão de
tipo bit_vector para inteirotipo bit_vector para inteiro
![Page 69: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/69.jpg)
69
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Assinalamento seqüencial
Process (a,b) variable i : integer := 0;begin c <= ‘1’; i := 1; t <= ‘0’ after 5 ns; i := i 1; d <= transport ‘1’ after 15 ns; c <= ‘1’ after 20 ns; d <= ‘0’ after 25 ns; end process;
![Page 70: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/70.jpg)
70
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Assinalamento seqüencial
Process (a,b) variable i : integer := 0;begin c <= ‘1’; c = ‘1’ antes do próximo time step i := 1; i = 1 imediatamente t <= ‘0’ after 5 ns; t = ‘0’ depois de 5 ns i := i 1; i = 0 imediatamente d <= transport ‘1’ after 15 ns; d = ‘1’ depois de 15 ns c <= ‘1’ after 20 ns; c = ‘1’ depois de 20 ns d <= ‘0’ after 25 ns; d = ‘0’ depois de 25 nsend process;
![Page 71: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/71.jpg)
71
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Comando WAIT
• Utilizado dentro da estrutura PROCESS• Formato
WAIT [ON lista]espera atividade em algum sinal da lista
WAIT [UNTIL condição]espera até que condição ocorra
WAIT [FOR tempo]espera pelo tempo especificado
![Page 72: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/72.jpg)
72
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Comando WAIT
Process variable i : integer := 0;begin i := i + 1; j <= j + 1; wait on k; wait for 100 ns; wait on m until j > 5;end process;
![Page 73: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/73.jpg)
73
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Comando WAIT
wait; espera infinita
wait until clk = ‘1’; espera até que um evento satisfaça a condição clk = ‘1’
wait on clk until reset = ‘0’; espera até que ocorra um evento em clk e que se satisfaça a condição reset =‘0’
wait until trigger = ‘1’ for 1 ms; espera até que ocorra um evento em trigger ou se passe 1 milisegundo
![Page 74: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/74.jpg)
74
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Comando wait
• Exemplo:
exemplo: process variable var : integr := 0; signal x, y : bit := ‘0’; begin var := var + 1; var := var + var; x <= not y; x <= y; wait; por quanto tempo? End process exemplo;
![Page 75: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/75.jpg)
75
VHDL Introdução
http://www.lsc.ic.unicamp.br
Exerc.: Escrever um modelo para um latch tipo D
Library ieee;use ieee.std_logic;entity latch_d is port (dado, enable : in std_logic; q, notq : out std_logic);end latch_d;
architecture rtl of latch_d isbeginlatch: processbegin wait until enable = ‘1’ q <= dado; notq <= not dado;end process latch;end rtl;
![Page 76: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/76.jpg)
76
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Comandos seqüenciais
• Chamada de procedimentos (também concorrente)• Assertion (também concorrente)• Assinalamento de sinal (também concorrente)• Assinalamento de variáveis• WAIT• IF, CASE• NEXT• EXIT, RETURN, LOOP• NULL
![Page 77: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/77.jpg)
77
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Atribuição Condicional
• Cláusula IF
• Cláusula WHEN
• Cláusula CASE
![Page 78: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/78.jpg)
78
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula IF
IF (condição 1) THEN Cláusula acertiva 1; ELSEIF (condição 2) THEN Cláusula acertiva 2; ELSE Cláusula acertiva 3; END IF;
![Page 79: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/79.jpg)
79
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula IF
Process (acao, cor)IF cor = verde THEN
acao <= va_em_frente; ELSEIF cor = amarelo THEN acao <= atencao; ELSE acao <= pare; END IF;
![Page 80: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/80.jpg)
80
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula IF
latchD: process (dado,enable)begin
IF enable = ‘1’ THEN Q <= dado; notQ <= not dado END IF;end process latchD;
![Page 81: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/81.jpg)
81
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula IF
Architecture rtl of is signal prec : std_ulogic; signal Xsp : std_logic_vector(7 downto 0) := “00000000”;beginprocess(clk)begin if (clk´event and clk´last_value = ‘0’ and clk = ‘1’) then if en_sr = ‘0’ then ultimo_bit <= Xsp(7); Xsp(7 downto 1) <= Xsp(6 downto 0); Xsp(0) <= IO; elseif em_load = ‘1’ then Xsp <= bus_data; end if; end if;end process;end rtl;
Conversor paralelo/serie Conversor paralelo/serie
shift left shift left
carga paralela carga paralela
![Page 82: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/82.jpg)
82
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Escrever o processo de um contador de 4 bits
![Page 83: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/83.jpg)
83
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Escrever o processo de um contador de 4 bits
Architecture rtl of contador is signal cont : unsigned(3 downto 0) := “0000”;begin process(reset,clk) begin if reset = ‘1’ then cont <= “0000”; elseif (clk´event and clk = ‘1’) then if enable = ‘1’ then if incr = ‘1’ then cont <= cont + “0001”; else cont <= cont “0001”; end if; end if; end if; end process; end rtl;
![Page 84: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/84.jpg)
84
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula When (concorrente)
Atribuição WHEN condição
sinal <= atribuição WHEN valor_expressão
Exemplo:
acao <= prosseguir WHEN sinal_verde;
![Page 85: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/85.jpg)
85
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Seletor
out <= in1 WHEN sel else in0;
if sel = ‘1’ then out <= in1;else out <= in0;
out <= in0 WHEN sel0 else in1 WHEN sel1 else in2 WHEN sel2 else in3 WHEN sel3 else inx;
![Page 86: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/86.jpg)
86
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula With (concorrente)
• WITH expressão SELECTsignal <= atribuição WHEN valor_expressão
Exemplo:
WITH cor SELECT acao <= prosseguir WHEN “verde”, parar WHEN “vermelho”, alerta WHEN OTHERS;
![Page 87: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/87.jpg)
87
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula With
with regsel select z <= A after Tprop when “00’, B after Tprop when “01”, C after Tprop when “10”, D after Tprop when “11”, “X” after Tprop when others;
![Page 88: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/88.jpg)
88
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula With
signal Y : std_logic_vector(0 to3);signal opcode : std_logic_vector(0 to 1);with opcode select Y <= “0001” when “00”, “0010” when “01”, “0100” when “10”, “1000” when “11”;
![Page 89: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/89.jpg)
89
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Exercícios
• Escrever o modelo vhdl de um multiplexador 2x1 com 8 bits de dados
– usando WHEN– usando IF– usando somente comando de atribuição simples
Signal temp : std_logic_vector(7 downto 0);Signal temp : std_logic_vector(7 downto 0);BeginBegin temp <= (s,s,s, others => s); s é o sinal de seleçãotemp <= (s,s,s, others => s); s é o sinal de seleção y <= (temp and IN1) or (not temp and IN0); y <= (temp and IN1) or (not temp and IN0);
![Page 90: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/90.jpg)
90
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula Case
CASE sinal IS WHEN “condição 1” => dado <= dado1; WHEN “condição 2” => dado <= dado2; WHEN others => dado <= dado3; END CASE;
![Page 91: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/91.jpg)
91
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Cláusula Case
signal p : integer range 0 to 3;signal y : std_logic_vector(0 to 1);CASE p IS WHEN 0 => y <= “10”; WHEN 1 => y <= A; WHEN 2 => y <= B WHEN 3 => y <= “01”; END CASE;
![Page 92: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/92.jpg)
92
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Comando NULL
• Utilizado no caso de não ser necessário nenhuma ação em uma alternativa que precisa ser coberta
• Exemplo:
case opcode is when add => Acc := Acc + operando; when sub => Acc := Acc operando; when nop => NULL; end case;
![Page 93: Slide sem título - INSTITUTO DE COMPUTAÇÃOcortes/mc603/vhdl-1.pdf · utilizadas bibliotecas (de funções, procedimentos, definições de tipos e declarações de constantes etc),](https://reader033.fdocumentos.com/reader033/viewer/2022060809/608d826df4973633076438a7/html5/thumbnails/93.jpg)
93
VHDL Introdução
http://www.lsc.ic.unicamp.br
VHDL Exercício
• Utilizado o comando case escreva um conversor do código binário para o código Gray