Eletrônica Digital Prof. Gilson Yukio Sato sato[at]utfpr[dot]edu[dot]br
Memórias Semicondutoras Prof. Gilson Yukio Sato sato[at]utfpr[dot]edu[dot]br
Memórias Digitais Magnética Fitas K7, discos 3½, etc Ótica CDs, DVDs, etc Semicondutoras Chips de memória
Importância das Memórias O microprocessador precisa armazenar instruções e dados µp Memória Principal (semicondutora) Memória Auxiliar (magnética, ótica)
ROM Tipos de Memórias Semicondutoras Mask PROM EPROM EEPROM/E2PROM Flash RAM Dinâmica (DRAM) Estática (SRAM)
ROM ROM (Read Only Memory) Memória somente para leitura Dados não voláteis Não voláteis = os dados não são perdidos quando a memória está sem alimentação Armazenamento de programa para µp Dados presentes quando da alimentação do sistema µp
ROM Mask ROM programada por máscara Programada pelo fabricante Não pode ser apagada ou reprogramada Custo baixo para grandes quantidades Máscara Especificada pelo cliente
(Tocci, 2007)
PROM Programmable ROM OTPROM (One Time Programmable ROM) Pode ser programada pelo usuário (gravador/programador de memória) Não pode ser apagada ou reprogramada Fusíveis como conexão Programação = queima de fusíveis
PROM (Tocci, 2007)
EPROM Erasable Programmable ROM UVEPROM (Ultra-Violet EPROM) Pode ser programada, apagada e reprogramada pelo usuário (gravador/programador de memória) Apagamento não seletivo Transistores MOS com porta flutuante Porta flutuante controla fluxo de cargas
EPROM Veja animação no site: http://www.howstuffworks.com/rom4.htm
EPROM Retirado do site: http://www.clubedohardware.com.br/dicionario/termo/350
EPROM Retirado do site: http://www.cpushack.net/eprom.html
EPROM (Tocci, 2007)
EEPROM Electrically Erasable PROM Pode ser programada, apagada e reprogramada no próprio circuito Apagamento seletivo (bytes) Pode ser usada como uma RAM não volátil Construção complexa / baixa densidade Maior custo Processo de programação lento
EEPROM (Tocci, 2007)
Flash FLASH Pode ser programada, apagada e reprogramada no próprio circuito Apagamento por blocos Pode ser usada como uma RAM não volátil Construção mais simples que EEPROM Custo menor que EEPROM Velocidade maior que EEPROM
Flash (Tocci, 2007)
Comparação entre ROMs (Tocci, 2007)
Aplicações ROM Sistemas microprocessados Armazenamento de programa Transferência de dados e portabilidade Pen drive, MP3 players, PDAs Memória bootstrap BIOS de PCs Tabelas de dados Conversor de dados
RAM RAM (Random Access Memory) Memória de leitura e escrita RWM (Read Write Memory) Dados voláteis Voláteis = os dados são perdidos se a memória fica sem alimentação Armazenamento de dados Dados temporários
SRAM Static RAM (RAM estática) Dados são mantidos enquanto houver alimentação Não necessita de refresh como a DRAM Cada célula é um FF Ciclo de leitura e escrita rápido
SRAM (Tocci, 2007)
DRAM Dynamic RAM (RAM dinâmica) Armazenam os dados sob a forma de carga de capacitor Necessita de refresh, pois os capacitores precisam ser periodicamente recarregados Alta densidade
DRAM Escrita SW1 e SW2 ON Leitura SW2, SW3 e SW4 ON (Tocci, 2007)
Estrutura Interna Genérica Célula Registro n bits 0 1 Posição de Memória m-1 D n-1 D n-2 D 1 D 0 Uma Célula armazena um bit (FF) O Registro é um conjunto de n Células Cada Registro ocupa uma das m Posições de Memória Cada Posição de Memória é acessada através de um Endereço (A) O Endereço (A) é uma palavra de k bits tal que: m = 2 k
Exemplo Representação de uma memória cujo registro é de n = 4 bits e que possui m = 8 posições de memória 0 1 2 3 D3 D2 D1 D0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 A2 A1A0 0 0 0 0 0 1 0 1 0 0 1 1 Se m = 8 então: 8 = 2 k Tal que: k = 3 4 0 1 1 1 1 0 0 5 0 0 0 0 1 0 1 6 1 0 1 0 1 1 0 7 0 1 1 0 1 1 1
Pinagem Genérica EPROMs, EEPROMs, Flashes, SRAMs k linhas de endereço A0 A1 Ak-1 m x n D0 D1 n linhas de dados linhas de controle CS RD WR Dn-1
Pinagem Genérica A0~A k-1 : linhas de endereço capazes de endereçar m posições de memória D0~D n-1 : linhas de dados para leitura e escrita de dados na memória CS : Chip Select habilita a operação da memória (ME ) RD : Read deve ser ativada para indicar uma leitura (OE ) WR : Write deve ser ativada para indicar escrita (não existe para ROM, PROM, EPROM)
Exemplo A0 A1 A2 CS RD WR 8 x 4 D0 D1 D2 D3 0 1 2 3 4 5 6 7 D3 D2 D1 D0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 A2 A1A0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
Exemplo - Leitura 0 0 1 0 0 1 A0 A1 A2 CS RD WR 8 x 4 D0 D1 D2 D3 1 1 1 0 0 1 2 3 4 5 6 7 D3 D2 D1 D0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 A2 A1A0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
Exemplo - Escrita 1 0 1 0 1 0 A0 A1 A2 CS RD WR 8 x 4 D0 D1 D2 D3 0 1 0 1 0 1 2 3 4 5 6 7 D3 D2 D1 D0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 10 0 10 0 1 0 1 0 0 1 1 0 A2 A1A0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
Timming Leitura EPROM (Microchip)
Timming Escrita EEPROM (Tocci, 2007)
Timming Leitura SRAM (Holtek)
Timming Escrita RAM (Holtek)
Organização Uma memória é organizada em termos do número de posições de memória (m) e do número de bits por registro (n) m x n Exemplo 1: 1024 x 8 = 1k x 8 Exemplo 2: 2048 x 8 = 2k x 8
Capacidade A capacidade C de uma memória é dada em bits e pode ser obtida multiplicando-se o número de posições de memória m e número de bits por registro n. C = m x n Exemplo 1: uma memória 1024x8 tem uma capacidade de 8192 bits Exemplo 2: uma memória 2048x4 tem uma capacidade de 8192 bits
Bancos de Memória Banco ou associação de memórias O objetivo de projetar um banco de memória pode ser: Caso 1: Aumentar o número de bits por registro Caso 2: Aumentar o número de posições de memória Caso 3: Aumentar ambos Caso 4: Associar memórias de tipos diferentes
Bancos de Memória Memo Memo Memo Memo Caso 1 Memo Memo Caso 2 Memo Memo Memo Memo Memo Memo ROM RAM Caso 4 Caso 3
Caso 1 - Exemplo Caso 1: Aumentar o número de bits por registro. Exemplo: A partir de memórias do tipo 8x4 obter um banco 8x8. Memo n=4 D0...D3 m=8 k=3 k=3 A0...A2 Banco n=8 D0...D7 m=8 k=3 k=3 A0...A2 N CIs 8x8/8x4 2 Idéia principal: Serão necessários dois CIs que devem ser associados de forma que cada um disponibilize 4 linhas de dados
Caso 1 - Exemplo Memo n=4 D0...D3 m=8 k=3 k=3 A0...A2 Banco n=8 D0...D7 m=8 k=3 k=3 A0...A2 N CIs 8x8/8x4 2 AA0 AA1 AA2 CS RD WR A0 A1 A2 CS RD WR A0 A1 A2 CS RD WR 8 x 4 8 x 4 D0 D1 D2 D3 D0 D1 D2 D3 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7
Caso 2 - Exemplo Caso 2 Aumentar o número de posições de memória. Exemplo: A partir de memórias do tipo 8x8 obter um banco 16x8. Memo n=8 D0...D7 m=8 k=3 k=3 A0...A2 Banco n=8 D0...D7 m=16 k=4 k=4 A0...A3 N CIs 16x8/8x8 2 Idéia principal: Serão necessários dois CIs que devem ser associados de forma que cada um disponibilize 8 posições de memória
Memo n=8 D0...D7 m=8 k=3 k=3 A0...A2 Banco n=8 D0...D7 m=16 k=4 k=4 A0...A3 N CIs 16x8/8x8 2 CI1 DD0...DD7 AA0 AA1 AA2 RD WR A0 A1 A2 CS RD WR 8 x 8 D0 D1 D2 D3 D4 D5 D6 D7 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 AA3 CS 1 x/y 0 2 1 EN 2 3 A0 A1 A2 CS RD WR CI2 8 x 8 D0 D1 D2 D3 D4 D5 D6 D7 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7
Barramento (Bus) DD0...DD7 A0 A1 A2 CS RD WR 8 x 8 D0 D1 D2 D3 D4 D5 D6 D7 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 = A0 A1 A2 CS RD WR 8 x 8 D0 D1 D2 D3 D4 D5 D6 D7 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 A0 A1 A2 CS RD WR 8 x 8 D0 D1 D2 D3 D4 D5 D6 D7 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 A0 A1 A2 CS RD WR 8 x 8 D0 D1 D2 D3 D4 D5 D6 D7
Mapa de Memória O mapa de memória representa a faixa de endereços ocupada por cada memória.
Mapa de Memória AA3 AA2 AA1 AA0 HEX CI 0 0 0 0 0h 0 1 1 1 7h 1 1 0 0 0 8h 1 1 1 1 Fh 2
Caso 3 - Exemplo Caso 3: Aumentar o número de bits por registro e o número de posições de memória. Exemplo: A partir de memórias do tipo 8x4 obter um banco 16x8. Memo n=4 D0...D3 m=8 k=3 k=3 A0...A2 Banco n=8 D0...D7 m=16 k=4 k=4 A0...A3 N CIs 16x8/8x4 4 Idéia principal: Serão necessários quatro CIs. Cada par de CIs 8x4 deve ser associado formando dois conjuntos 8x8. Esses dois conjuntos devem ser associados para formar um banco 16x8.
DD0...DD7 AA0...AA2 CI1 CI3 RD WR AA0 AA1 AA2 A0 A1 A2 CS RD WR 8 x 4 D0 D1 D2 D3 DD0 DD1 DD2 DD3 AA0 AA1 AA2 A0 A1 A2 CS RD WR 8 x 4 D0 D1 D2 D3 DD0 DD1 DD2 DD3 AA3 CS 1 x/y 0 2 1 2 EN 3 AA0 AA1 AA2 A0 A1 A2 CS RD WR 8 x 4 D0 D1 D2 D3 DD4 DD5 DD6 DD7 AA0 AA1 AA2 A0 A1 A2 CS RD WR CI4 8 x 4 D0 D1 D2 D3 DD4 DD5 DD6 DD7 CI2
Mapa de Memória AA3 AA2 AA1 AA0 HEX CI 0 0 0 0 0h 0 1 1 1 7h 1/2 1 0 0 0 8h 1 1 1 1 Fh 3/4
Caso 4 Exemplo 1 Caso 4: Associar tipos diferentes de memória. Exemplo: Associar uma EPROM 8x8 e uma RAM 8x8, com a EPROM ocupando os endereços mais baixos. Memos (EPROM e RAM) n=8 D0...D7 m=8 k=3 k=3 A0...A2 Banco n=8 D0...D7 m=16 k=4 k=4 A0...A3 N CIs 2 Idéia principal: Nesse caso EPROM e RAM possuem a mesma organização e capacidade, por isso a associação e similar ao caso 2
AA0 AA1 AA2 CS RD WR CS RD 8 x 8 A0 A1 A2 D0 D1 D2 D3 D4 D5 D6 D7 CS RD WR 8 x 8 A0 A1 A2 D0 D1 D2 D3 D4 D5 D6 D7 1 2 1 2 0 3 x/y EN DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 AA3 DD0...DD7 EPROM RAM
Mapa de Memória AA3 AA2 AA1 AA0 HEX CI 0 0 0 0 0h 0 1 1 1 7h 1 0 0 0 8h 1 1 1 1 Fh EPROM RAM
Caso 4 Exemplo 2 Caso 4: Associar tipos diferentes de memória. Exemplo: Associar EPROMs 8x8 e RAMs 8x8 para obter um banco de 8x8 de EPROM e 16x8 de ram, com a EPROM ocupando os endereços mais baixos. Memos (EPROM e RAM) n=8 D0...D7 m=8 k=3 k=3 A0...A2 Banco n=8 D0...D7 m=24 k=5 k=5 A0...A4 N CIs 1 EPROM 2 RAMs Idéia principal: Como EPROM e RAMs possuem a mesma organização e capacidade a associação e similar ao caso 2
CS RD WR CS RD 8 x 8 A0 A1 A2 D0 D1 D2 D3 D4 D5 D6 D7 CS RD WR 8 x 8 A0 A1 A2 D0 D1 D2 D3 D4 D5 D6 D7 1 2 1 2 0 3 x/y EN DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 AA3 DD0...DD7 EPROM RAM1 CS RD WR 8 x 8 A0 A1 A2 D0 D1 D2 D3 D4 D5 D6 D7 AA4 DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 AA0...AA2 RAM2
Mapa de Memória AA4 AA3 AA2 AA1 AA0 HEX CI 0 0 0 0 0 00h 0 0 1 1 1 07h 0 1 0 0 0 08h 0 1 1 1 1 0Fh 1 0 0 0 0 10h 1 0 1 1 1 17h EPROM RAM1 RAM2
Exercícios Projetar um banco de memórias RAM de 1024x8 a partir de memórias 1024x4 Projetar um banco de memórias de 2048x8 a partir de memórias 1024x8. Elabore o mapa de memória. Projetar um banco de memórias de 2048x8 a partir de memórias 1024x4. Elabore o mapa de memória.
Exercícios Projetar um banco de memórias com 1024x8 de EPROM e 1024x8 de RAM a partir de EPROMs de 512x8 e de RAMs de 512x8. A EPROM deve ocupar os endereços mais baixos. Elabore também o mapa de memória. Projetar um banco de memórias com 1024x8 de EPROM e 512x8 de RAM a partir de EPROMs de 512x8 e de RAMs de 512x8. A EPROM deve ocupar os endereços mais baixos. Elabore também o mapa de memória.