PCS 35 Sistemas Digitais I Memórias & FPGAs Prof. Dr. Marcos A. Simplicio Jr. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II Memórias Dispositivos com grandes capacidade de armazenamento de dados Finalidade: Armazenar dados ou programas de maneira temporária ou definitiva. Aplicações dependem das características Forma de acesso: sequencial ou aleatório? Velocidade: quanto mais rápido o acesso, maior a eficiência do sistema como um todo Funcionalidade: leitura e escrita ou apenas leitura? Volatilidade: dados retidos mesmo se alimentação de energia cortada? Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 2
Memórias: Características Tecnologia: Não Semicondutor Magnético» Ferrite, Fita, Discos (Rígido, Flexível) Ópticos» CD, DVD, Blu-ray Disc (BD) Tecnologia: Semicondutor CMOS: alta densidade, baixo consumo) Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 3 Memórias: Características Acesso a dados Sequencial: Fita magnética, CD/DVD» Posições de memória em lugares sucessivos» Ler ou escrever na posição n requer leitura sequencial de todas as posições anteriores (n-k,..., n-) Tempo de acesso depende da posição de leitura atual (k) e da posição dos dados (n)» Baixo custo, porém baixa velocidade Direto ou Aleatório : Constituem a maior parte das memórias a semicondutores.» Caracterizadas principalmente por possuírem o mesmo tempo de acesso para todas as posições Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 4 2 2
Memórias: Características Acesso a dados (cont.) Possibilidade de escrita (no circuito):»memórias de apenas leitura: Gravação de conteúdo fora do circuito;»memórias de escrita e leitura: Conteúdo pode ser lido e alterado durante seu uso no circuito. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 5 Memórias: Características Retenção dos dados (volatilidade) Voláteis Perdem o conteúdo se ficam sem alimentação (ex.: RAM, registradores); Não Voláteis Não perdem o conteúdo mesmo, sem alimentação (ex.: EEPROM, Flash, disco). Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 6 3 3
ROM: O termo ROM significa Read-Only-Memory, ou memória somente de leitura Porém, ele é comumente usado para indicar memórias não-voláteis, incluindo memórias de leitura/escrita RAM: Memórias: Observação O termo RAM significa Random-Access- Memory, ou memória de acesso aleatório Porém, ele é comumente usado para memórias voláteis de acesso aleatório Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 7 Memórias: Características (resumo) Tempo de acesso depende da posição do dado? Sim: acesso sequencial; Não: acesso aleatório. É possível ler e escrever, ou apenas ler? Leitura e Escrita vs. apenas leitura Os dados são perdidos quando energia é removida? Sim: volátil; Não: não-volátil Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 8 4 4
Memórias: Arquitetura Interconexão de memórias com CPU Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 9 Via de Memórias: Arquitetura Endereços Via de Endereços MEMÓRIA Via de Dados Sinais de Controle Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 5 5
Memórias: Arquitetura seleciona a linha Via de Endereços 2 3 4 5 6 7 dados a serem lidos/escritos Via de Dados Sinais de Controle Seleciona leitura ou escrita Memória 8 x 4bits (32 bits de capacidade) end L/E dados Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II Memórias: Arquitetura seleciona a linha Via de Endereços 2 3 4 5 6 7 dados a serem lidos/escritos Via de Dados Sinais de Controle Seleciona leitura ou escrita Ex.: via de endereços: via de dados: comando de escrita Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 2 6 6
Memórias: Arquitetura seleciona a linha Via de Endereços 2 3 4 5 6 7 dados a serem lidos/escritos Via de Dados Sinais de Controle Seleciona leitura ou escrita Ex.: via de endereços: via de dados: comando de escrita Linha 3 sobrescrita Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 3 Memórias: Arquitetura seleciona a linha Via de Endereços 2 3 4 5 6 7 dados a serem lidos/escritos Via de Dados Sinais de Controle Seleciona leitura ou escrita Ex.: via de endereços: comando de leitura Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 4 7 7
Memórias: Arquitetura seleciona a linha Via de Endereços 2 3 4 5 dados a serem lidos/escritos Via de Dados 6 7 Sinais de Controle Seleciona leitura ou escrita Ex.: via de endereços: comando de leitura Via de dados: Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 5 Memórias: Capacidade Palavra:» N o de bits tratados simultaneamente (escrita/leitura): Típico:, 4, 8, 6, 32, 64, 28... N o de Posições:» N o de palavras que a memória pode armazenar» Cada posição está associada a um ENDEREÇO. Capacidade:» Quantidade de bits de uma memória, expressa em: N o total de bits (ou bytes) ou N o de posições x Tamanho de palavra em bits ou bytes Obs.: byte = 8 bits Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 6 8 8
...... Memórias: Capacidade Ex. Capacidade:» Ex.: Memória de 24 posições palavra de 8 bits Capacidade = 892 bits ou 24 x 8 Convenção: 24 = ki (ISO 8) bit = b ; byte = B 8 kib, ki x 8 bits, ki bytes, kib Obs.: referências antigas adotam k = 24» Ex.: Memória de 64 kib = 64 ki posições palavra de byte Como expressar? Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 7 Memórias: Capacidade Relação entre n o de posições e n o de linhas na Via de Endereços» Cada posição => um endereço (acesso direto) 2 posições 4 2 linha de endereçamento 2 n n Ex: ki = 2 = 24 Ex: 64ki = 2 6 = 65536 linhas na via de endereço: A-A9 6 linhas na via de endereço: A-A5 Ex: Mi = 2?? Gi = 2?? Ti = 2?? Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 8 9 9
Memórias: Tipos programável pelo usuário programável vez (não apagável) OTP PROM PROM ROM: Não-volátil EPROM programada de fábrica MROM programável várias vezes (apagável) apagável com luz UV UV EPROM apagável byte a byte EEPROM COMUM apagável eletricamente EEPROM apagável em blocos EEPROM FLASH Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 9 Lógica programável Como implementar um sistema digital? Circuitos SSI ou MSI: programação via ligação entre os chips Ex.: (de)mux, (de)codificador, somador,... μprocessador, μcontrolador: programação por linguagem de montagem ( software ) ASICs ( Application Specific Integrated Circuit ): circuito personalizado para aplicação Dispositivos programáveis : programação por fusíveis ou transistores especiais Ex.: Memórias, FPGA, CPLD Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 2
Memórias como PLDs Desafio: use uma memória para implementar a função f(x) = 2*x mod 3 Assuma que x tem 3 bits: a 7 Quantos bits de endereço? E de dados? Que valores precisam ser colocados na memória? Via de Endereços 2 3 4 5 Via de Dados 6 7 Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 2 Memórias como PLDs Objetivo: use memória para construir um circuito que implemente a seguinte lógica Entradas Saídas A B C F F2 A B C Circuito Lógico F F2 F = ABC + ABC + ABC F2 = ABC + ABC + ABC + ABC Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II
Memórias como PLDs Entradas Saídas A B C F F2 S i Memória PROM 3x2 A B C S i Vcc Internamente: fusíveis F F2 F = ABC + ABC + ABC F2 = ABC + ABC + ABC + ABC Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II PLDs modernos: CPLDs e FPGAs Com o avanço da microeletrônica, circuitos programáveis mais complexos foram sendo elaborados. Circuitos atuais se enquadram em duas categorias: CPLD Complex PLD FPGA Field Programmable Gate Array Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 2 2
Bloco de E/S PLDs modernos: Características Grande quantidade de lógica programável; Registradores pré-implementados para implementar circuitos sequenciais Interconexões programáveis entre lógica programável, registradores e entradas e saídas do dispositivo. É possível controlar o roteamento dos sinais dentro do circuito Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II PLDs modernos: FPGAs FPGA: estrutura segmentada de conexão Bloco de E/S Bloco de E/S Chaves programáveis (ligações do bloco com linhas de interconexão) Chaves programáveis (ligações entre linhas verticais e horizontais) Bloco lógico Bloco de E/S Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 3 3
PLDs modernos: FPGAs Complexidade: Podem emular algumas centenas de milhares de portas lógicas. Volatilidade FPGAs: voláteis (perdem a informação se desligadas). Várias FPGAs são associadas a *PROMs para permitir que informação seja recuperada ao ligar. Programação: linguagens de descrição de hardware VHDL, Verilog: traduzidas por sintetizador para o conjunto de bits que efetivamente programa o circuito Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: Componentes Compostas por: CLBs (Configurable Logic Blocks): blocos lógicos que executam funções lógicas IOBs (Input/Output Buffers): interface com mundo externo Interconexões programáveis: conecta CLBs e IOBs interconexões Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 4 4
Diagrama de blocos do Xilinx Spartan FPGAs: Componentes Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: CLBs CLBs por sua vez são compostos de: LUTs (lookup tables): implementam lógica combinatória Flip-flops: implementam funções sequenciais Multiplexadores: conectam LUTs e flip-flops Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 5 5
3 LUTs: LUT-F (4 x -bit) LUT-G (4 x -bit) LUT-H (3 x -bit) 2 saídas registradas XQ e YQ 2 saídas combinatórias X e Y FPGAs: CLBs Xilinx Spartan Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: LUTs LUT-N: uma tabela-verdade de N entradas e 2 N posições de bit. Programar uma LUT significa preencher os valores da tabela-verdade. LUT com 4 entradas 6 posições possíveis Pode emular 2 6 (~64 mil) funções booleanas distintas. FPGAs comerciais podem conter LUTs de até 6 entradas (mais de 6 bilhões de funções emuláveis). Implementadas usando MUXes: Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 6 6
Exemplo : FPGAs: LUTs MUX Elementos de memória (programa) Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: LUTs Exemplo : Programação de F A B C F F2 Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 7 7
FPGAs: LUTs Exemplo : Programação de F2 A B C F F2 F2 Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Exemplo 2: programação das funções X e Y na Xilinx Spartan: X = A'B'C + ABC' Y = AB' FPGAs: LUTs Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 8 8
9 9 Exemplo 2: programação das funções X e Y na Xilinx Spartan: X = A'B'C + ABC' Y = AB' FPGAs: LUTs F4 X X X X X X X x (A) (B) (C) (X) F3 F2 F F G4 X X X X G3 X X X X (A) (B) (Y) G2 G G Programa na LUT-G Programa na LUT-F A B A B C G4 G3 G2 G F4 F3 F2 F G F Y X Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Exemplo 2: programação das funções X e Y na Xilinx Spartan: X = A'B'C + ABC' Y = AB' FPGAs: LUTs A B A B Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II
FPGAs: LUTs LUTs de 4 entradas: como calcular funções com maior número de variáveis? Resposta: associando 2 ou mais LUTs. Por exemplo, vamos calcular a função: X = A B C D E F G H Para isso precisamos inicialmente dividir a função em subfunções: X = A B C D X 2 = E F G H X = X X 2 3 LUTs Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: LUTs Vamos configurar: LUT-G para calcular X = A B C D LUT-F para calcular X 2 = E F G H LUT-H para calcular X = X X 2 MUXes de passagem devem ser configurados. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 2 2
2 2 LUT-G: A B C D LUT-F: E F G H LUT-H: A B C D E F G H FPGAs: LUTs A B C D E F G H Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: LUTs Usando associações, cada CLB Spartan pode calcular funções de até 9 variáveis. E para calcular funções de mais variáveis? Associam-se alguns CLBs, por meio das saídas combinatórias. Nota: ao se associar diversos CLBs, existe uma redução na frequência máxima Afinal, sinal deverá atravessar um número maior de LUTs... Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II
FPGAs: Interconexões Programáveis Permitem conexão entre os CLBs Configuráveis de acordo com necessidade Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: Interconexões Programáveis Out, In On Off Transmissor MOS * Ligar duas saídas pode gerar curtos! Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 22 22
23 23 FPGAs: Interconexões Programáveis Out, In Out, In On Off Transmissor MOS * Ligar duas saídas pode gerar curtos! Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: Interconexões Programáveis Out, In Out, In Out, In On Off Transmissor MOS * Ligar duas saídas pode gerar curtos! Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II
24 24 FPGAs: Interconexões Programáveis Out, In Out, In Out, 2 In On Off Transmissor MOS * Ligar duas saídas pode gerar curtos! Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: Interconexões Programáveis Out, 2 In Out, 2 In On Off Transmissor MOS * Ligar duas saídas pode gerar curtos! Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II
25 25 FPGAs: Interconexões Programáveis Out, 2 In Out, In On Off Transmissor MOS * Ligar duas saídas pode gerar curtos! Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II FPGAs: Interconexões Programáveis Out, In Out, In On Off Transmissor MOS Out, In * Ligar duas saídas pode gerar curtos! Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II
FPGAs: Interconexões Programáveis Out, 3 In On Off Transmissor MOS * Ligar duas saídas pode gerar curtos! Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Projeto Lógico com FPGAs O projeto lógico com FPGA em geral envolve o seguinte fluxo de atividades: Uso de ferramenta CAD para projeto e implementação de sistema digital, com entrada através de desenho esquemático e/ou HDL. Usuário simula o projeto. Ferramenta de síntese converte código para hardware e mapeia na FPGA. Ferramenta faz download da configuração na FPGA. Isso programa CLBs e conexões entre CLBs e IOBs. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 26 26
Projeto Lógico com FPGAs A síntese de código HDL é feita seguindo os passos: Síntese Tradução Otimização Mapeamento Posicionamento Roteamento Circuito Sintetizado Tradução: comandos VHDL são traduzidos para blocos de circuito lógico seguindo padrões prédefinidos pelo programa de síntese. Otimização: blocos padronizados são analisados com o intuito de otimizar o circuito sintetizado segundo critérios estabelecidos pelo projetista. Mapeamento: circuito lógico é mapeado nos componentes básicos disponíveis na tecnologia escolhida. Os blocos lógicos são mapeados nos blocos típicos da FPGA do componente alvo. Posicionamento: blocos lógicos da FPGA identificados na etapa anterior são posicionados dentro daqueles disponíveis na FPGA alvo. Roteamento : interligações entre os blocos lógicos previamente posicionados criam o circuito final. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Projeto Lógico com FPGAs: VHDL A tradução de comandos VHDL para implementação em FPGA segue as seguintes regras: Atribuições: pode implicar na utilização de um registrador mesmo quando não desejado. Case: usam multiplexadores para compor os casos especificados. Se nem todas as alternativas forem especificadas, a síntese usa também um registrador. If: usam multiplexadores. Comparações: usam componentes aritméticos e comparadores. Operações funcionais: usam componentes lógicos e aritméticos, registradores e comparadores, dependendo da operação. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 27 27
Projeto Lógico com FPGAs: VHDL Alguns comandos VHDL e suas traduções em FPGA Lembrando: portas lógicas são implementadas com LUTs Em casos mais complexos o circuito sintetizado pode variar dependendo de parâmetros e requisitos de otimização (desempenho ou área). A <= B and C; B A C A <= B and (not C); B A C Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Projeto Lógico com FPGAs: VHDL Síntese de with-select ou case Em princípio, usam MUXes signal sel : std_logic with sel select saida <= ent when, ent when, when others; ent ent saida sel Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 28 28
Projeto Lógico com FPGAs: VHDL Síntese de with-select ou case Em princípio, usam MUXes. Podem usar registradores para manter valor anterior se nem todos os casos forem especificados Esses circuitos com memória (denominados sequenciais ) são temas da disciplina de Sistemas Digitais II Reg signal sel : std_logic with sel select saida <= ent when ; ent saida sel Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Projeto Lógico com FPGAs: VHDL Síntese de with-select ou case : Sem otimização: process (a) begin case a is when => b <= ; when => b <= 3 ; when 2 => b <= ; when 3 => b <= ; end case; end process; a[:] 2 3 b[] a[] a[] a[] a[] Com otimização: 2 3 b[] b[:] a[] b[] b[:] a[:] a[] b[] Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 29 29
Projeto Lógico com FPGAs: VHDL Comparações devem ser usadas com cuidado. Comparações de inteiros usam blocos grandes de circuito, pois não existe forma trivial de fazê-las: if (A <= B) then A EQ LE B Comparador de 4 bits LT GT Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Exercício Implementação de um display de 7 segmentos usando: () memória e (2) FPGA Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 3 3
3 3 Exercício 2a Implemente a arquitetura do verificador de faixas de magnitude de 4 bits abaixo, usando with-select entrada 4 3 checkmag saida entrada saida a a a valor desconhecido architecture arch of checkmag is begin with entrada select saida <= when, when, when, when others; -- catch all end arch; Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 6 Exercício 2b Reimplemente a arquitetura do verificador de faixas de magnitude usando comandos de comparação O circuito criado é mais ou menos eficiente do que o do item 2a? entrada 4 3 checkmag saida entrada saida a a a valor desconhecido architecture arch of checkmag is -- sinal extra para enxergar entrada como unsigned signal u_entrada : unsigned(3 downto ); begin u_entrada <= unsigned(entrada); saida <= when u_entrada <= else end arch; Eficiência: MUX 6: 4 comparadores when u_entrada >= and u_entrada <= else when u_entrada >= else ; -- catch all : omissão pode levar sintetizador a -- inserir registrador para guardar valor da saída Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 62
quadro Exemplo/Exercício 3 Programar o módulo do jogo River Raid (Atari) que constrói o mapa base do jogo (terra e mar) Entrada (8 bits): pos, a posição do mapa Saídas (6 bits): para terra, para água Se o módulo que define a entrada for um contador simples: () qual o tamanho da memória? (2) Qual o #máximo de quadros antes do cenário se repetir? 9 8 7 6 5 4 3 2 Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Exemplo/Exercício 3 Programar o módulo do jogo River Raid (Atari) que constrói o mapa base do jogo (terra e mar) Entrada (8 bits): pos, a posição do mapa Saídas (6 bits): para terra, para água Se o módulo que define a entrada for um contador simples: () qual o tamanho da memória? (2) Qual o #máximo de quadros antes do cenário se repetir? 9 8 7 6 5 4 3 2 ) 256 x 6 bits = 4Kib 2) 256 quadros: depois o contador reinicia Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II 32 32
Exemplo/Exercício 3 Programar o módulo do jogo River Raid (Atari) que constrói o mapa base do jogo (terra e mar) Entrada (8 bits): pos, a posição do mapa Saídas (6 bits): para terra, para água Se o módulo que define a entrada puder ler posições aleatórias da memóra: usando uma memória 256x6 bits, qual o #máximo de quadros distintos? 9 8 7 6 5 4 3 2 Resp.: 256 quadros:, pois é por posição da memória Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.I> PCS 234 Sistemas Digitais II Lição de Casa Leitura Obrigatória: Capítulo 9 do Livro Texto. Exercícios Obrigatórios: Capítulo 9 do Livro Texto. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 66 33 33
34 34 Memórias por dentro : exemplos APÊNDICE 67 Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 67 4. Tipos de Memórias a Semicondutor: ROM Ex.: ROM de 4 palavras de 4 bits E E D 3 D 2 D D S 3 S 2 S S D 3 D 2 D D => End. Dados Seleção Interna Dados Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 68
35 35 4. Tipos de Memórias a Semicondutor: ROM Ex.: ROM de 4 palavras de 4 bits S D 3 D 2 D D bit lines E S E S 2 S 3 word lines R 3 V R 2 V R R Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 69 4. Tipos de Memórias a Semicondutor: ROM Ex.: ROM de 4 palavras de 4 bits +5V \S R 3 R 2 R R E E \S \S 2 \S 3 D D D 2 D 3 Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 7
36 36 4. Tipos de Memórias a Semicondutor: ROM Inconveniente: S i deve ter alto fan-out. Solução: Transistor I c drenada da fonte, reduzindo corrente I b = (I c /β) drenada de S i +5V R 3 R 2 R R S E E S S 2 S 3 D D D 2 D 3 Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 7 4. Tipos de Memórias a Semicondutor: MROM MROM Mask-programmed ROM Características:» Programada na fabricação do circuito integrado» As informações são armazenadas conectando ou desconectando o Gate fonte de um transistor MOSFET à coluna de saída (MROM MOS).» Programação na etapa de metalização do circuito: uma máscara para depositar metais sobre o silício.» Alto custo total / baixo custo unitário Utilização:» Armazenamento de tabelas de funções matemáticas, códigos: uso geral.» Programas de dispositivos produzidos em larga escala Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 72
37 37 4. Tipos de Memórias a Semicondutor: MROM Exemplo: MROM 2x2 Transistor: conectado =, desconectado = Seleção de endereço E Dados : Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 73 4. Tipos de Memórias a Semicondutor: MROM Fonte: Digital Systems: Principles and Applications, ed. Ronald J. Tocci, Neal S. Widmer, Gregory L. Moss Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 74
4. Tipos de Memórias a Semicondutor: PROM PROMs -Programmable ROM Programação feita pelo usuário e fixa (uma só vez). Programador (queimador) específico para cada tipo de PROM. Tempo de programação: ~ 2min. endereço Inicialmente: Valor lógico armazenado em todos os bits. fusível Dados Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 75 4. Tipos de Memórias a Semicondutor: PROM PROMs -Programmable ROM Programação: queimar fusíveis onde deve haver zero» Aplicação de a 3V em um pino especial na pastilha» Correntes/Tensões elevadas no nó (valor e tempo de aplicação depende da PROM) Utilização: produtos de escala menor do que ROM. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 76 38 38
39 39 4. Tipos de Memórias a Semicondutor: PROM Alta corrente As PROMs utilizam fusíveis que podem ser abertos seletivamente pelo usuário para programar o nível lógico na célula. Andrade, Midorikawa, Saraiva, Símplicio e Spina 2.2 <Circ.Seq.: Bloc. Bás.II>PCS 234 Sistemas Digitais II 77