RAM
Biblioteca: |
Memória |
Introdução: |
2.0 Beta 1 |
Aparência: |
 |
Comportamento
O componente RAM, certamente é o componente mais complexo nas bibliotecas
predefinidas do Logisim, capaz de armazenar até 16,777,216 valores (especificado pelo
atributo Largura em Bits do Endereço), cada um deles com até 32 bits (especificado
pleo atributo Largura em Bits de Dados). Um circuito poderá ler e escrever os valores
na RAM. O usuário também poderá modificá-los interativamente via a ferramenta Testar,
ou poderá alterá-los completamente via a ferramenta Menu.
Os valores correntes serão mostrados no componente. Os endereços apresentados
serão listados em cinza à esquerda. Na parte de dentro, cada valor será listado
em hexadecimal. O endereço atual do endereço selecionado será mostrado em texto
negativo (branco sobre preto).
O componente RAM oferece três interfaces diferentes, dependendo do atributo
Interface de Dados.
- Uma porta para leitura/escrita síncrona (padrão)
O componente possui na sua face leste uma porta que servirá tanto
para ler quanto para gravar dados. Qual a ação a ser executada dependerá
da entrada marcada por ld: 1 (ou flutuante) indicará a leitura de
dados do endereço informado pela face oeste, e 0 indicará a escrita dos dados
entregues na porta. Para transmitir dados para dentro e para fora do componente,
você precisará usar um componente do tipo Buffer Controlado, como ilustrado
abaixo.

- Uma porta para leitura/escrita assíncrona
O mesmo descrito acima, exceto que não haverá participação do clock.
O valor encontrado no barramento de dados será carregado na memória sempre que
a entrada ld estiver em 0. Se, enquanto ld estiver em 0, o
endereço ou os dados mudarem, então uma carga adicional ocorrerá. Essa opção
é a que mais se aproxima de muitas das memórias de acesso aleatório comumente
disponíveis.
- Portas separadas para leitura e escrita
Duas portas estão disponíveis - uma na face oeste para a escrita de dados,
e outra na face leste para leitura de dados. Essa opção retirará a necessidade
de se lidar com o Buffer Controlado e então ficará mais fácil de usar.
Pinos
- A Na face oeste (entrada, com largura em bits de acordo com o
atributo Bits de Dados)
- Serve para selecionar quais os valores estarão sendo acessados atualmente
pelo circuito.
- D Na face oeste (entrada/saída, com largura em bits de acordo
com o atributo Bits de Dados)
- Se essa entrada estará presente somente se "portas separadas para leitura e
escrita" tiverem sido selecionadas pelo atributo Interface de Dados. Quando uma
escrita for requisitada (via mudança do clock de 0 para 1 enquanto
sel e str forem ambos iguais a 1 ou flutuante), o valor
encontrado nessa porta será escrito na memória no endereço atualmente selecionado.
- D Na face leste (entrada/saída ou saída, com largura em bits
de acordo com o atributo Bits de Dados)
- Se sel e ld forem iguais a 1 ou flutuante, então
o componente RAM emitirá o valor encontrado no endereço corrente por essa porta.
Se houver uma porta para leitura/escrita, o valor lido nessa porta será
escrito onde quer que o armazenamento seja requisitado.
- str Na face sul (entrada, com largura de 1 bit)
- store: essa entrada estará presente somente se "portas separadas para leitura e
escrita" tiverem sido selecionadas pelo atributo Interface de Dados.
Se for 1 ou flutuante, um pulso de clock resultará na escrita dos dados
encontrados na face oeste na memória (se a entrada sel também for 1 ou
flutuante).
- sel Na face sul (entrada, com largura de 1 bit)
- chip select: essa entrada habilita ou desabilita o módulo RAM por inteiro,
caso o valor seja igual a 1, flutuante ou 0. Essa entrada destina-se primariamente
para as situações em que houver múltiplas RAMs, mas somente uma delas deva estar
habilitada em certo instante.
- Triângulo na face sul (entrada, com largura de 1 bit)
- clock: essa entrada estará ausente quanto o atributo Interface de Dados
for "uma porta assíncrona para leitura/escrita". Em outras circunstâncias, quando
ld for igual a 0, e essa entrada variar de 0 para 1 (e sel
for igual a 1, indefinido e clr for 0), então o valor no endereço
atualmente selecionado será alterado para o valor presente no pino D.
Enquanto a entrada de clock permanecer em 0 ou 1, no entanto, o valor em
D não será escrito na memória.
- ld Na face sul (entrada, com largura de 1 bit)
- load: serve para selecionar se a RAM deverá emitir (em D)
o valor no endereço atual (A). O comportamento dessa saída
estará habilitado se out estiver em 1 ou indefinido; se out
for 0, então nenhum valor será colocado em D - mas se houver uma porta
de leitura/escrita combinada, a escrita estará habilitada.
- clr Na face sul (entrada, com largura de 1 bit)
- clear: quando for igual a 1, todos os valores na memória ficarão iguais
a 0, independente do que estiver nas outras portas.
Atributos
Quando o componente for selecionado ou estiver sendo acrescentado,
os dígitos de '0 'a '9' poderão alterar o atributo Número de Entradas
,
Alt-0 até ALT-9 irão alterar o seu atributo Bits de Dados
.
- Largura em Bits do Endereço
- A largura em bits do endereço. O número de valores armazenados na
ROM será 2Largura em Bits do Endereço.
- Bits de Dados
- A largura em bits de cada valor individual na memória.
- Interface de Dados
- Serve para configurar quais das três interfaces serão usadas para comunicar
dados para dentro e para fora do componente.
Comportamento da ferramenta Testar
Ver Testar memória
no Guia do Usuário.
Comportamento da ferramenta Texto
Nenhum.
Comportamento da ferramenta Menu
Ver Menus pop-up e Arquivos
no Guia do Usuário.
Voltar à Referência para bibliotecas