Você está na página 1de 76

Sistemas Lógicos

Programáveis

Prof. José Eduardo Baggio


Universidade Federal de Santa Maria
O que significa VHDL?
Very
Hard and
Dificult
Language
O que significa VHDL?
Very High Speed Integrated Circuit
Hardware
Description
Language
Linguagem de Descrição de Hardware com ênfase em
Circuitos Integrados de altíssima velocidade.
Histórico
• final de 1960: primeiras Linguagem de Hardware;
• 1973: projeto CONLAN (CONsensus LANguage);
• 1983: relatório final do CONLAN e a Linguagem ADA;
• 1983: DoD inicia programa VHSIC (participação da IBM,
Intermetrics e Texas Instruments;
• 1986: a Intermetrics desenvolve compilador e simulador, criado
um grupo de padronização da IEEE para VHDL;
• 1988: primeiros softwares são comercializados;
• 1991: recomeçou-se um novo processo de padronização;
• 1992: modificações propostas foram avaliadas e votadas;
• 1993: um novo padrão é publicado, chamado VHDL-93;
• 1997: publicado o manual de referência da linguagem.
Porque usar VHDL?
 Pode-se rapidamente projetar um circuito com 5, 10 ou
20 mil portas lógicas.
 Usando-se lógica booleana convencional, um
engenheiro levaria meses para fazer essa tarefa.
 PODER E FLEXIBILIDADE:
 Pode-se escrever lógicas complexas com descrição
sucinta de código.
 Possui múltiplos níveis de descrição de código.
 Suporta bibliotecas de projeto e a criação de código
reutilizável.
 Possibilita a criação de projetos modulares.
 É uma só linguagem para projeto E simulação.
Porque usar VHDL?
 PROJETO INDEPENDENTE DE DISPOSITIVOS.
 A escolha do dispositivo pode ser feita na etapa final
do projeto.
 Com um projeto pode-se escolher diversas
arquiteturas.
 Não é necessário se conhecer com profundidade
uma arquitetura para se otimizar o projeto.
 Sobra mais tempo para se concentrar na criação do
projeto.
Porque usar VHDL?
 É possível múltiplos estilos de descrição do projeto.
Porque usar VHDL?
 PORTABILIDADE
 VHDL permite simular o mesmo circuito que foi
sintetizado. Simular milhares de gates antes de fazer
a síntese pode economizar muito tempo. A
descoberta de um bug nesta etapa pode ser corrigida
antes da implementação.
 Por ser uma linguagem padrão, pode-se trocar de
plataformas facilmente.
 As habilidades desenvolvidas em um projeto não são
perdidas ao se trocar de EDA.
Porque usar VHDL?
Porque usar VHDL?
 CAPACIDADE DE BENCHMARK
 Projetos independentes de fabricantes permite se
testar a performance (benchmark) usando-se
diferentes arquiteturas e diferentes ferramentas de
síntese.
Porque usar VHDL?
 ASIC MIGRATION
 A eficiência gerada pelo VHDL permite que seu
produto atinja o mercado rapidamente, ao se
sintetizar o projeto para um CPLD ou FPGA.
 Quando a produção atinge um volume apropriado,
VHDL facilita o desenvolvimento de um ASIC.
 Em alguns casos, o mesmo código usado para o PLD
pode ser usado no ASIC. E como VHDL é
padronizado, você pode ter certeza de que o ASIC
terá a funcionalidade que você espera.
Desvantagens do VHDL
 Engenheiros expressam 3 questões sobre VHDL
 1. Você não possui o controle a nivel de porta-lógica
dos circuitos que são descritos com construtos
abstratos de alto-nível;
 2.A implementação lógica criada por ferramentas de
síntese são ineficientes;
 3.A qualidade da síntese varia de ferramenta para
ferramenta.
Desvantagens do VHDL
 1. Você não possui o controle a nivel de porta-lógica dos
circuitos que são descritos com construtos abstratos de
alto-nível;
 Quanto ao 1º ítem nada se pode contestar. O objetivo
de usar VHDL é livrar o engenheiro...
 Entretanto, se você entender como o compilador
sintetiza a lógica, você verá que o compilador
implementa de forma ÓTIMA a maioria dos
constructos.
 A maior parte das ferramentas de síntese possuem
diretivas que permitem algum tipo de controle sobre a
implementação, especialmente para tornar o circuito
mais eficiente em termos de área de silicio.
Desvantagens do VHDL
 2.A implementação lógica criada por ferramentas de síntese são
ineficientes;
 Implementações ótimas não são garantidas, especialmente
porque soluções ótimas dependem do objetivo.
 Compiladores usam algoritmos para decidir a implementação
lógica, seguindo padrões.
 Um algoritmo não pode analisar um problema de uma forma
única.
 Algumas vezes a criatividade humana é insubstituível. Nesses
casos, pode-se fazer uma descrição que permita maior controle
sobre a implementação do projeto.
 Questão similar ao compilador C x ASM.
Desvantagens do VHDL
 3.A qualidade da síntese varia de ferramenta para
ferramenta.
 Esta qualidade está sendo trabalhada pelo mercado.
 VHDL está na sua infância. A competição vem
aumentando e a tecnologia de síntese está
maturando.
 Processo similar aos compiladores C. No início,
alguns códigos ficavam tão ineficientes que valia a
pena um engenheiro escrever o código em
assembler.
Usando VHDL para projeto de Síntese
 O projeto pode ser quebrado em 6 etapas:
 Definir os requerimentos de projeto;
 Descrever o projeto em VHDL (formular e codificar o
projeto);
 Simular o código-fonte;
 Sintetizar, otimizar e ‘encaixar’ (FIT, place and route);
 Simular o modelo de projeto post-layout (fit);
 Programar o dispositivo.
Usando VHDL para projeto de Síntese
 1. Definindo os requerimentos de projeto.
 Antes de começar a escrever código:
 Ter uma idéia dos objetivos do projeto e requerimentos;
 Qual a função do projeto;
 Qual o setup requerido;
 Qual o clock;
 Máxima frequência;
 Caminhos críticos;
 Ter uma idéia clara dos requerimentos pode ajudá-lo
a escolher a melhor metodologia e arquitetura na qual
você inicialmente irá sintetizar seu projeto.
Usando VHDL para projeto de Síntese
 2. Descrever o projeto em VHDL.
 Escrever.
 Metodologia: top-down; bottom-up; flat;
 As 2 primeiras envolvem a criação de hierarquias de projeto;
 Flat faz a descrição do circuito como um projeto monolítico.
Usando VHDL para projeto de Síntese
 O método top-down requer a divisão do projeto em
componentes funcionais, onde cada componente tem
entradas e saídas específicas, e realizando uma função
particular.
 O módulo de mais alto nível é criado para ligar os
componentes de projeto, tal como em um netlist.
Usando VHDL para projeto de Síntese
 O método bottom-up parte da definição e projeto de
componentes individuais, e então junta-se as peças para
formar o projeto maior.
 Um projeto flat é aquele no qual os detalhes do
componentes funcionais são definidos no mesmo nível
que as interconexões dos componentes funcionais.
 Projetos flat funcionam melhor para pequenos
projetos. Em projetos complexos, níveis de hierarquia
podem esclarecer a interconexão de componentes.
 O uso de muitos níveis de hierarquia deve ser
evitado, pois pode-se perder o contexto e a relevância
do que é feito.
Usando VHDL para projeto de Síntese
 Codificar o projeto.
 Cuidar sempre a sintaxe e semântica.
 Maior parte dos engenheiros prefere simplesmente
seguir ou editar um exemplo.
 Deve-se sempre pensar em termo de hardware.
 Simular.
 Geralmente, para projetos de médio/grande porte, é
extremamente eficiente (em relação a tempo).
Usando VHDL para projeto de Síntese
 Síntese
 É o processo de reduzir a descrição do projeto para a
representação do circuito em baixo nível (como um netlist).
 Software de síntese VHDL converte descrições VHDL para
netlist de tecnologia específica ou conjunto de equações.
 A partir de uma função lógica,o software de síntese produz:
 um conjunto de equações para serem ajustadas em um PLD, ou;
 Um netlist para ser colocado e ‘roteado’ em um FPGA.
 Síntese é específico para cada tecnologia.
Usando VHDL para projeto de Síntese
 Síntese
 Antes da síntese, um software deve fazer o ‘parser’, checando erros
de sintaxe e/ou semântica.
 O processo de síntese converte o projeto para Estruturas de Dados
Interna, traduzindo seu comportamento para descrição REGISTER
TRANSFER LEVEL (RTL).
 Descrições RTL especificam registradores, sinais de entrada, sinais
de saída e a lógica combinatória entre eles.
 Outros elementos RTL dependem da arquitetura interna de um
componente. Por exemplo, se o dispositivo contém uma porta XOR.
 Ferramentas de síntese procuram estruturas de dados para
operadores identificáveis e seus operandos, substituindo essas
porções de lógicas por componentes otimizados da tecnologia
específica. Por exemplo, se as eq. Possuem XOR, usa as portas
XOR que existem no componente.
 Porções de lógicas que não são identificáveis são transformadas em
expressões booleanas que ainda não são otimizadas.
Usando VHDL para projeto de Síntese
 Síntese/Otimização
 O processo de otimização depende de 3 coisas:
 A forma das expressões booleanas;
 O tipo de recursos disponíveis;
 O uso das diretivas de síntese automática ou definidas pelo
usuário.
 Otimização para CPLD geralmente envolve reduzir a lógica
para uma mínima soma de produtos.
 Para FPGAs geralmente é melhor não usar a técnica acima. Ao
invés disso, sistemas devem ser desenvolvidos baseados em
recursos específicos do dispositivo.
 Outro critério muito usado é usar fatores comuns a serem
compartilhados, os quais podem ser usados para comparar
com novos fatores criados.
Usando VHDL para projeto de Síntese
Usando VHDL para projeto de Síntese
 Fitting (do verbo to fit = caber)
 É o processo de pegar a lógica produzida pelos processos de
síntese e otimização e colocá-lo em um dispositivo lógico,
transformando a lógica para obter a melhor ocupação do chip.
 Fitting geralmente é usado para CPLD.
 Placing e routing é o termo correto a ser usado para pegar a
lógica produzida pela síntese e otimização, transformando se
necessário, e ‘empacota-la’ (package) nas células lógicas da
FPGA, colocando as células lógicas no lugares ótimos e
ligando os sinais entre as células lógicas ou entre as células e
os pinos de I/O.
 Antes do ‘encaixamento’, outra otimização é realizada para
melhor usar os recursos disponíveis.
Usando VHDL para projeto de Síntese
 Fitting
 Por exemplo: algumas macrocélulas de CPLDs
permitem a configuração dos flip-flops para ser do
tipo D ou do tipo T. Também a polaridade pode ser
ajustada (usar Q ou !Q).
 A implementações ótima pode escolher entre os 4
tipos disponíveis.
 Além disso equações podem ser agrupadas.
 Enfim, o conjunto inteiro pode ser analisado para
tentar se ajustar o melhor encaixe.
 A seguir, uma tentativa de encaixe é feita.
Usando VHDL para projeto de Síntese
 Fitting
 Se um encaixe legal não é obtido, o processo é
reiniciado tentando outra configuração.
 Se uma solução de roteamento é encontrada, então
um ‘encaixe’ (fit) é obtido.
Usando VHDL para projeto de Síntese
Usando VHDL para projeto de Síntese
O que é PLD?
 Sigla de “Programmable Logic Device”
 É um circuito integrado que pode conter grande
quantidade de circuitos lógicos, com uma estrutura que
não é fixa.
 É um tipo de integrado que contém circuitos lógicos e
chaves programáveis cujas funções são definidas pelo
usuário.
PLDs
Dispositivo Lógico Programável
(PLD)
PLDs
PLDs
PLDs
PLDs
PAL 16L8
PLDs PAL 16L8
PLDs PAL 16L8
16 entradas
Porta AND
com 32
L de Lógica entradas
8 saídas

Porta OR
com 8
entradas
PLDs
PLDs

PAL 16R8
Exemplo de aplicação
Exemplo de aplicação
Programação
Encapsulamentos
Fabricantes
 Altera
 Xilinx
 Atmel
 Cypress
 Lattice
 Data-io
CPLD
 Sigla para – Complex Programmable Logic Device
 É um circuito que pode conter múltiplos BLOCOS de
circuitos, com recursos de CONEXÃO (wiring) interna
para conectar esses blocos;
 Os elementos programáveis são células do tipo
EEPROM (Eletrical Erasable PROM) , ou seja, são
reprogramáveis mediante apagamento prévio do
conteúdo anterior.
 A informação de programação é armazenada em caráter
não volátil, isto é, enquanto não houver uma operação
explícita de apagamento elas são mantidas
indefinidamente.
CPLDs e FPGAs
 Principais Características
 Processo de fabricação CMOS: Baixo consumo de potência e
maior confiabilidade.
 Tecnologia de integração 0,5um, 0,35um e as mais atuais,
0,22um.
 MAX usada para projetos combinacionais e máquinas de
estados sequenciais.
 Família 7000 – densidade entre 150 e 5.000 portas equivalentes;
de 44 a 208 pinos.
 FLEX usada em projetos mais complexos.
 8000 densidade 2.500 a 24.000 portas equivalentes.
 10k – densidade de até 250.000 portas equivalentes.
 APEX 20k – densidade de até 1.500.000 portas equivalentes.
CPLD
Arquitetura típica de um CPLD.
Família MAX 7000 (Altera)
 Alta densidade.
 Alto desempenho.
 Pinos de entrada dedicados.
 Pinos de I/O configuráveis pelo usuário.
 Flip-flop programável.
 Opções de forma de programação de Clock.
 Permite emular funções padrões TTL.
 Dispositivos de programação células CMOS E2PROM.
 Contém de 32 a 256 células lógicas denominadas
MACROCÉLULAS.
Família MAX 7000
 Macrocell (Macrocélula):
 Arranjo AND programável / OR fixo.
 Flip-flop configurável.
 Grupos de 16 macrocells formam um LAB (Logic Array
Block).
 Bloco de controle de I/O.
 PIA – Programmable Interconnect Array.
Macrocell Max 7000
 Blocos constituintes da Macrocell:
 Arranjo lógico para implementar funções
combinacionais.
 Matriz de seleção de termo produto.
 Função de selecionar o termo produto a ser usado na
implementação da função lógica.
 Flip-flop configurável.
 Pode operar como tipo T, JK, D e RS ou, dependendo da
aplicação pode ser “jumpeado”.
Macrocell Max 7000
Macrocell MAX 7000
 Características da matriz de termo produto.
 Fornece sinais de entrada par porta OR e XOR
(Funções lógicas e inversão lógica).
 Entradas secundárias para entradas de controle do
flip-flop (clock, enable, clear, preset).
 Um termo produto pode ser invertido e realimentado
para qualquer entrada de uma nova matriz de termo
produto de qualquer macrocell dentro da LAB.
Macrocell MAX 7000
 Flip-flop
 Configurado como D, T, JK, SR.
 Três opções para programação do clock:
 Sinal de clock global – melhor opção de desempenho.
 Sinal de clock habilitado por sinal de controle (clock enable
em nível lógico alto).
 Clock implementado independentemente por termo produto
– clock oriundo das macrocells ou de pinos de I/O.
Macrocell MAX 7000
 I/O Control Block
 Contém um buffer tri-state que pode ser controlado
por sinais de habilitações globais ou diretamente por
sinais de VCC e GND.
 Quando GND, a saída é colocada em alta impedância e o
pino I/O pode ser usado como entrada dedicada.
 Quando VCC, a saída está habilitada.
 Pino I/O podem ser configurados como saídas
dedicadas, linhas bi-direcionais, ou como entradas
dedicadas.
I/O Control Box - MAX 7000

I/O Control Box


Logic Array Block – MAX 7000
 LABs consistem em arranjos de 16 macrocells, um
termo denominado expansor de produto, e um bloco de
controle de I/O.
 Os LABs são conectados entre si através do PIA
(Programmable Interconnect Array).
 PIA – Barramento geral que interliga os pinos de
entrada dedicados, pinos de I/O e macrocells.
Logic Array Block – MAX 7000
Programmable Interconect Array – MAX 7000

 Interliga todos os sinais internos existentes do CPLD;


 Usa células E2PROM para realizar programação interna
do CPLD.
O que é FPGA?
 Sigla para – Field-Programmable Gate Array
 É um circuito integrado que possui capacidade lógica
superior a dos CPLDs
 É um chip que não possui planos AND e OR, mas
BLOCOS LÓGICOS CONFIGURÀVEIS.
FPGA
 São dispositivos programáveis que possuem uma
arquitetura baseada em blocos lógicos configuráveis,
chamados de CLB (Configuration Logical Blocks).
 Os CLBs são formados por portas lógicas e flip-flops
que implementam funções lógicas.
 A FPGA também é formada por estruturas chamadas de
blocos de entrada e saída (IOB – In/Out Blocks), os
quais são responsáveis pela interface das saídas
provenientes das combinações de CLBs.
FPGA
FPGA
FPGA
FPGA
 Uma FPGA usa Blocos Lógicos reconfiguráveis
 Os bits de configuração são selecionados de acordo
com a função lógica desejada.
 A configuração é uma tabela da verdade (lookup
table) da funcionalidade
FPGA
 A FPGA pode implementar lógica puramente
combinacional ou sequencial, ou seja, que faz uso de
flip-flops.
FPGA
 LUTs = Look Up Tables
 As LUTs podem ser programadas para qualquer tipo de
porta necessária ao projeto
 Há um número finito de LUTs em uma FPGA.
FPGA
 As interconexões entre as LUTs são programáveis
FPGA
FPGA
FPGA
 Conectando-se um flip-flop do tipo D a uma LUT de
quatro entradas forma-se um “Bloco Lógico
Configurável” (CLB)
FPGA
FPGA
 A configuração da LUT e da interconexão é volátil, isto
é, se perde quando a alimentação é removida.
 Existe uma memória não-volátil associada à FPGA de
onde a sua configuração é carregada quando o sistema
é ligado.
 Já que a programação é feita pelo usuário depois da
fabricação ela é chamada de programável no campo –
field programmable.
Considerações Finais
 Apesar da diversidade de aspectos apresentados, na
prática nossa programação em VHDL, associada com as
ferramentas de CAD, tornam bastante simples o uso
desses dispositivos.
Fim??
 Encerramos a parte da teoria básica....
 A seguir partiremos para programação e prática.

Você também pode gostar