Predefinição:DiegoMedeiros-SST20707
Ementa e referências bibliográficas
Informações da disciplina
- Professor: Diego da Silva de Medeiros
- Plano de Ensino 2015-1
Diário de aula
2015-1 - Clicar no "+" para expandir | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Aulas
Apresentação da disciplina
- Roteiro
- Apresentação do professor;
- Apresentação da disciplina (Plano de Ensino);
- Avaliações: Trabalhos e Projeto Final
- Grupo da disciplina: IFSCTeleSST
- Atividade
- Ler capítulo 18 do Livro do Pedroni
Dispositivos lógicos programáveis - PLD
PLDs em sistemas digitais
Sistema digital: Saída digital definida em função de processamento realizado em entrada digital.
Os sistemas digitais foram por muito tempo projetados usando a chamada lógica fixa, composta por CIs (circuitos integrados) TTL que implementavam portas lógicas. Em meados de 1970, foram introduzidos os PLDs (Programmable Logic Devices), chips de uso geral cujo hardware pode ser configurado para atender especificações. Com os PLDs, sistemas digitais poderiam ser projetados a partir de CIs genéricos, com funções definidas a partir de configurações armazenadas em memórias. Desta forma, os PLDs possuem as seguintes vantagens sobre sistemas de lógica fixa [2]:
- Redução de custos de projeto, chamados de custos NRE (nonrecurring engineering cost - custo de engenharia não recorrente), com a abolição de desenvolvimentos complexos de placas
- Rapidez de desenvolvimento
- Flexibilidade no desenvolvimento: a adição de funcionalidades é feita por simples mudanças no arquivo de configuração
- Rapidez de produção do CI: por serem padronizados, os PLDs possuem entrega imediata
- Atualização de hardware em tempo real
Uma alternativa de projeto é o uso de microcontroladores, dispositivos programáveis a nível de software. Porém, mesmo nesses casos, os PLDs possuem vantagens [3]:
- PLDs são mais simples de desenvolver, pois alterações no projeto são feitas instantaneamente
- Sistemas com processadores customizados possuem desenvolvimento lento e oneroso
- Sistemas mais genéricos tendem a ter custos menores pela possibilidade de uso em diversas aplicações, facilitando o estoque de itens
Em função da arquitetura e tecnologia empregada, os PLDs foram classificados em SPLDs (simple PLDs) ou CPLDs (complex PLDs).
SPLDs
São denominados SPLDs os seguintes dispositivos:
- PAL - Programmable Array Logic
Um arranjo programável de portas AND seguido por um arranjo fixo de portas OR.
Essa foi a primeira implementação de PLDs, e se baseia no fato de que qualquer função lógica pode ser reescrita como uma soma de produtos (SOP - sum of products) [4]. Por exemplo, sendo abaixo a tabela verdade da soma aritmética de um bit u de uma posição de um circuito somador, como função de x e y e do carry ci
ci | x | y | u(ci,x,y) |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
Sendo as linhas 2, 3, 5 e 8, as que possuem saída 1, podemos escrever u como [5]:
Os PAL tem, porém, como limitação, a implementação apenas em circuitos combinacionais.
- PLA - Programmable Logic Array
Muito semelhante aos PALs, os PLA diferenciam-se no fato de que tanto as ligações AND quanto OR são programáveis.
- GAL - Generic Array Logic
Características adicionais com relação aos PALs:
- Célula de saída (chamada de OLMC - output logic macrocell) com flip-flop, porta XOR, multiplexadores
- Inclusão de um sinal de retorno (feedback)
- Utilização de memórias EEPROM na programação do circuito
Um exemplo dessa arquitetura pode ser visto na figura abaixo:
CPLDs
Como o próprio nome já adianta, os CPLDs possuem arquitetura muito mais complexa que os SPLDs. De fato, os primeiros CPLDs eram formados pela interconexão programável de vários SPLDs, além de outros avanços. Na figura abaixo, a arquitetura básica de um CPLD:
FPGAs - Field programmable gate arrays - Arranjo de portas programável em campo
Os FPGAs estendem as capacidades dos CPLDs, sendo diferentes em arquitetura, tecnologia, características embutidas e custo. Por serem voláteis, precisam de uma memória de configuração não volátil para armazenar a programação do hardware. Uma simplificação da arquitetura de FPGAs pode ser vista na figura abaixo. No caso, CLBs (configurable logic blocks) e LABs (logic array blocks) são blocos semelhantes à SPLDs GAL.
Além desses blocos, FPGAs costumam possuir também:
- Blocos RAM: Possibilitam o uso direto de memória, sem a necessidade de projetá-las
- Blocos DSP: Muito utilizados em aplicações de processamento de áudio e vídeo digitais, o bloco DSP implementa operações de soma, multiplicação e variáveis.
Comparação entre dispositivos
Uma comparação entre os dispositivos vistos nesta aula pode ser vista na figura abaixo:
onde as características de armazenamento do programa são:
- Fusível e antifusível - Configurado uma única vez
- (E)EPROM - Configurado um número limitado de vezes, mantida com o chip desconectado da alimentação (não volátil)
- SRAM - Configuração realizada cada vez que o sistema é alimantado (volátil)
Referências
[1] Midorikawa, Edson. Projeto de sistemas digitais. Disponível em Link. Acesso em 09/02/2015.
[2] Xilinx. What is Programmable Logic? Disponível em Link. Acesso em 09/02/2015.
[3] Parnell, Karen & Bryner, Roger. Comparing and contrasting FPGA and microprocessor system design and development. Disponível em Link. Acesso em 09/02/2015.
[4] Pedroni, Volnei A. Eletrônica digital moderna e VHDL. Disponível em Link. Acesso em 09/02/2015.
[5] Wikipedia. Canonical normal form. Disponível em Link. Acesso em 09/02/2015.
[6] Matos, Roberto de. Apresentação da disciplina de SST. Disponível em Link.
Tecnologia de FPGA
Os FPGAs são compostos por três tipos de componentes:
- Bloco de entrada e saída: Circuitos responsáveis pela interface de entrada e saída do FPGA. Compostos basicamente de buffers.
- Bloco de configuração lógica: Circuitos construídos usando flip-flops e lógica combinacional. Onde são construídas as funções lógicas do sistema.
- Chaves de interconexões: Trilhas configuráveis usadas para conectar os blocos de funções com os blocos de saída. O processo de escolha das interconexões é chamado de roteamento.
Os 3 blocos são interconectados em duas dimensões, otimizando as conexões entre os blocos
Blocos de entrada e saída
São usados para fazer a interface de entrada e saída do FPGA. Consiste em um buffer de entrada e um de saída, ambos com flip-flops, permitindo que saídas com clocks sejam disponibilizadas sem encontrar atrasos significantes e reduzindo a necessidade de manter sinais de entrada por muito tempo.
- Entrada e saída são concentradas num único pino descrito como Pad.
- Flip-flops realizam a sincronização dos dados, mas caminhos diretos, sem atrasos, são configuráveis
- Entrada do dado pelo flip-flop inferior.
- Saídas não utilizadas necessitam ser mantidas em tri-state.
- Slew rate controla a velocidade de mudança de polaridade. Valores menores reduzem ruídos.
Blocos de configuração lógica [3]
Contêm a lógica do FPGA, como mostra a simplificação abaixo:
Neste bloco:
- Disponíveis 3 elementos configuráveis, dois com 4 entradas (F e G) e um com 3 entradas (H). Estes elementos podem construir qualquer função lógica a partir de suas entradas.
- Com os multiplexadores M1 a M3, é possível combinar os elementos para criar funções de mais de 4 entradas.
- Com os multiplexadores M4 a M7, a saída das funções lógicas podem ser enviadas diretamente para as saídas X e Y ou podem ser capturadas pelos flip-flops F1 e F2.
- Saída dos flip-flops nas saídas XQ e YQ, podendo os pinos serem "desativados" para simplesmente copiar sinais de entrada.
- O clock dos flip-flops pode ser configurado para a borda de subida ou descida.
- Os flip-flops podem também usar sinal de Enable.
- Os multiplexadores superiores permitem escolher a função dos sinais C1 a C4, para a entrada da função H ou outros sinais internos.
- Blocos S/R Control configuram o estado inicial dos flip-flops.
As funções lógicas são implementadas a partir de suas tabelas verdade nos elementos lógicos usando uma memória chamada de Lookup Table (LUT). Com isso, um bloco de configuração lógica também pode ser usado como uma memória, em diferentes configurações dependendo dos multiplexadores. Nesses casos, as entradas F1 a F4 e G1 a G4 fornecem endereços, e as entradas C1 a C4 fornecem os dados e sinais de enable.
Tabela comparativa entre FPGAs
Referências
[1] Oskin, Mark. Apresentação sobre FPGAs da disciplina Advanced Digital Design. Disponível em Link. Acesso em 12/02/2015.
[2] Zeidman, bob. All about FPGAs. Disponível em Link. Acesso em 12/02/2015.
[3] Wakerly, John. Digital Design: Principles & practices. Disponível (versão para demonstração) em Link. Acesso em 12/02/2015.