SIMULADOR DE RAM 256x8
RAM 256×8: organização, endereçamento e temporização
Uma memória RAM 256×8 é um dispositivo de armazenamento volátil de acesso aleatório organizado em 256 posições endereçáveis, cada uma armazenando uma palavra de 8 bits (1 byte). A capacidade total é, portanto:
256 × 8 bits = 2048 bits = 256 bytes = 2 Kbit
O número de posições decorre diretamente da largura do barramento de endereço. Com n = 8 linhas de endereço, o espaço endereçável é 2⁸ = 256 combinações binárias distintas (0000 0000 a 1111 1111, ou 0x00 a 0xFF em hexadecimal). Esse é o princípio geral de qualquer memória: o número de posições é sempre uma potência de 2, determinada pela largura do barramento de endereço.
Estrutura interna: decodificador + matriz de células
Internamente, um chip desse tipo é composto por dois blocos principais:
- Decodificador de endereço: converte o valor binário presente no barramento A[7:0] em um único sinal de seleção de linha, ativando exatamente uma entre 256 linhas da matriz de memória. É essencialmente um decodificador 8-para-256.
- Matriz de células de memória: uma grade de 256 × 8 elementos de armazenamento (flip-flops ou latches, no caso de SRAM). Cada célula armazena 1 bit; uma linha inteira (8 células) forma um byte.
Barramentos e sinais de controle
| Sinal | Largura | Função |
|---|---|---|
A[7:0] |
8 bits | Seleciona qual das 256 posições será acessada |
D[7:0] |
8 bits | Barramento de dados bidirecional (entrada na escrita, saída na leitura) |
WE (Write Enable) |
1 bit | Ativo, geralmente, em nível baixo (WE̅). Habilita a operação de escrita: o dado em D[7:0] é gravado na célula endereçada |
OE (Output Enable) |
1 bit | Habilita o buffer de saída (tri-state), colocando o conteúdo da célula endereçada no barramento D |
CS/CE (Chip Select) |
1 bit | Habilita o chip como um todo; permite endereçar múltiplos bancos de memória no mesmo barramento sem conflito |
É importante notar que D[7:0] é bidirecional e opera em lógica tri-state: quando nem a leitura nem a escrita estão ativas, o barramento de dados fica em alta impedância (Z), liberando-o para uso por outros dispositivos conectados ao mesmo barramento — essencial em arquiteturas onde RAM, ROM e periféricos compartilham as mesmas linhas físicas.
Sequência temporal de uma operação
Escrita (write cycle):
- O endereço é colocado em A[7:0] e mantido estável (tempo de setup do endereço).
- O dado é colocado em D[7:0].
- WE é ativado por um pulso; a célula endereçada captura o valor de D[7:0] na borda de desativação de WE (ou enquanto WE permanece ativo, dependendo da tecnologia — SRAM estática costuma ser level-triggered).
- WE é desativado; o dado fica retido na célula até nova escrita ou perda de alimentação.
Leitura (read cycle):
- O endereço é colocado em A[7:0].
- OE é ativado, habilitando o buffer de saída tri-state.
- Após o tempo de acesso (tAA, access time), o conteúdo da célula está estável em D[7:0] e pode ser capturado pelo circuito que está lendo.
No simulador interativo apresentado acima, esses ciclos são abstraídos em dois botões — Escrever e Ler — que executam a sequência completa instantaneamente, sem representar os tempos de setup/hold reais (na ordem de nanossegundos em chips comerciais). A grade 16×16 exibe o conteúdo de todas as 256 posições simultaneamente, algo que um chip real não expõe — na prática, só é possível observar uma posição por vez, através do próprio barramento de dados.
Diagrama de tempo (write cycle)
Abaixo, uma representação simplificada de um ciclo de escrita, mostrando a relação temporal entre os sinais. tAS é o tempo de setup do endereço, tWP a duração do pulso de WE, e tDH o tempo de retenção do dado após WE subir:
A[7:0] ──┤ endereço válido (0x1E) ├───────────────
│← t_AS →│
D[7:0] ──────┤ dado válido (0x4B) ├───────────────
│← t_WP →│
WE ──────────────┐ ┌─────────────────
└──────────┘
│← t_DH →│
célula grava aqui
OE ────────────────────────────────────────── (inativo durante a escrita)
E o ciclo de leitura correspondente, onde o dado só fica válido em D[7:0] após o tempo de acesso tAA contado a partir da estabilização do endereço:
A[7:0] ──┤ endereço válido (0x1E) ├───────────────
│←──────── t_AA ────────→│
OE ──────────────┐ ┌───────────
└────────────────┘
D[7:0] ~~~~~~~~~~~~~~~~~~~┤ 0x4B válido ├~~~~~~~~~
(alta impedância) (alta impedância)
WE ──────────────────────────────────────────── (inativo durante a leitura)
Em chips comerciais, tAA costuma variar de poucos nanossegundos (SRAM rápida) a algumas dezenas de nanossegundos. O simulador interativo ignora essas janelas de tempo — na prática ele executa o ciclo completo em um único clique — mas o comportamento lógico (endereço → controle → dado) é o mesmo.
SRAM vs. DRAM: por que isso é uma SRAM
A organização descrita — matriz endereçável com WE/OE e sem necessidade de ciclos de refresh — é característica de uma SRAM (Static RAM), onde cada bit é armazenado em uma célula biestável (tipicamente 6 transistores). Isso contrasta com a DRAM (Dynamic RAM), usada nas memórias principais de computadores, onde cada bit é armazenado como carga em um capacitor e exige ciclos periódicos de refresh para não perder a informação, além de um protocolo de endereçamento multiplexado (linha/coluna) para reduzir o número de pinos físicos do chip.
RAM vs. EEPROM vs. Flash: a diferença não está no endereçamento, está na retenção
Um ponto que costuma gerar confusão: EEPROM e Flash usam exatamente o mesmo modelo de barramento de endereço, barramento de dados e sinais de controle (WE/OE ou equivalentes) que uma RAM. A diferença real está no mecanismo físico de armazenamento do bit e no que acontece quando a alimentação é desligada:
| Tecnologia | Célula de armazenamento | Retém dado sem energia? | Escrita | Durabilidade de escrita |
|---|---|---|---|---|
| SRAM (este simulador) | Latch biestável (~6 transistores) | Não | Byte a byte, instantânea, ilimitada | Ilimitada |
| DRAM | Capacitor + 1 transistor | Não | Byte a byte, precisa de refresh periódico | Ilimitada |
| EEPROM | Transistor de porta flutuante (floating gate) | Sim (não-volátil) | Byte a byte, lenta (ms), por tunelamento Fowler-Nordheim | ~100 mil a 1 milhão de ciclos |
| Flash | Porta flutuante, organizada em blocos | Sim (não-volátil) | Precisa apagar o bloco inteiro antes de reescrever | ~10 mil a 100 mil ciclos por bloco |
Isso explica, por exemplo, por que a memória RAM de um computador é apagada ao desligar (é volátil por natureza — o latch ou o capacitor perde o estado sem energia), enquanto o conteúdo de um pendrive ou da memória de programa de um microcontrolador permanece intacto: fisicamente, a carga fica presa na porta flutuante do transistor mesmo sem alimentação. Em compensação, uma EEPROM/Flash tem vida útil limitada em número de escritas, e a escrita é ordens de magnitude mais lenta que em uma SRAM/DRAM — por isso essas memórias não-voláteis normalmente não são usadas como memória de trabalho principal de um processador, e sim para armazenar dados que precisam sobreviver ao desligamento (firmware, configurações, arquivos).
Aplicação e generalização
O mesmo modelo de endereço/dado/controle escala para qualquer memória digital, apenas variando a largura dos barramentos:
- Uma RAM de 64 KB usa 16 linhas de endereço (2¹⁶ = 65.536 posições);
- Uma RAM de 4 GB usa 32 linhas de endereço (2³² ≈ 4,3 bilhões de posições);
- Memórias com palavras maiores que 8 bits (16, 32, 64 bits) simplesmente têm mais linhas no barramento de dados, sem alterar o princípio de decodificação de endereço.
Entender a RAM 256×8 em detalhe — com apenas 8 linhas de endereço e 8 de dados — é, portanto, o modelo mínimo funcional para compreender a arquitetura de qualquer memória de acesso aleatório usada em sistemas digitais reais.
Nota: no simulador acima, o campo "Endereço" corresponde a A[7:0], "Dado" a D[7:0] na escrita, e "Saída (Q)" a D[7:0] na leitura. Os LEDs indicam pulsos de WE e OE, respectivamente.
Comentários
Postar um comentário