decodificacion para mapa de memoria

#1
lo que pasa es que tengo que hacer el circuito con el decodificador y demás para el siguiente banco de memorias

se tienen eprom 32k*8, sram 16k*8 y eeprom 64k*8

<----8bits---->
_____________A5000h
| eeprom |
_____________
|64k sram |
_____________
|96k libre |
_____________
|128k eprom |
_____________
| 32k libre |
_____________25000h

ya hice el mapa ampliado, y lo veo bien, pero me da con un decodificador de 8 a 256bits con salidas de 4k (demasiado grande para dibujar) no se si estará bien, o si esta bien alguna manera de hacerlo con decodificadores mas pequeños, ayuda por favor! y gracias de antemano
 

Adjuntos

#2
Hola Amigo, bueno deberias explicar un poco mas al respecto, lo que deseas hacer, a pesar de observar tu grafico, es tedioso darse a la tarea de interpretar.
Por ejem. a lo que se entiende, debes realizar un decodificador de 8 bits, dando como salida 1 de entre 256 combinaciones posibles. Esto es asi?.
 
Última edición:
#3
No lo que pasa es que quiero hacer ese mapa de memoria que esta en el cuadro pero me queda con un decodificador de 256 bits que es un poco grande y cada salida del deco manejando 4k
 
#4
Hola and070

Lo que se entiende en tu mensaje original es que la direcciona más baja estaría en 25000h. 151,552 decimal.
De esa dirección hacia arriba viene el mapeo que pretendes hacer.
La dirección más alta estaría en A5000h. 675,840 decimal.
- La coma es separador de los miles -

En ese rango de direcciones quieres separar en diferentes grupos por tipos de memoria:
los tipos de memorias IC’s que tienes son:
todas con el BUS de datos de 8 BIT’s.
EPROM 32k.
SRAM 16k.
EEPROM 64k.

32k Libre. Esta área de la memoria inicia en la dirección 25000h.
128k EPROM. Esta área de la memoria inicia en la dirección 25000h + 32k d.
96k Libre. Esta área de la memoria inicia en la dirección (25000h + 32k d) + 96k d.
64k SRAM. Esta área de la memoria inicia en la dirección (25000h + 32k d) + (96k d.) + 64k d.
EEPROM. Esta área de la memoria inicia en la dirección (25000h + 32k d) + (96k d.) + (64k d.) + 64 d y terminaría en la dirección A5000h. 675,840 decimal.

Como del tipo EPROM solo tienes de 32K y requieres 128K debes utilizar varias de este tipo. Así para los demás.

Son 5 las áreas de memoria a las cuales se les asigna un nombre:
32k Libre = L32.
128k EPROM = E128.
96k Libre = L96.
64k SRAM = S64.
EEPROM = EE.

Con varios comparadores de magnitud y utilizando sus salidas A=B y A<B se puede seleccionar el rango de las diferentes áreas de memoria estas 2 salidas se meten a una OR y su salida habilitaría los o el Chip Enable de los IC que estuvieran para ese rango de direcciones.

saludos
a sus ordenes
 
#5
que pena que siga molestando, pero no entendi la parte de los comparadores, que numeros comparo?? no se puede hacer con un decodificador algo asi como que cada salida del deco me selecione un CE de la memoria, gracias
 
#6
Hola and070

Pues comparas los números de las direcciones.
La memoria cuya dirección es la más baja sería:
| 32k libre |
_____________25000h
Según dices en tu mensaje original.

Entonces todas las direcciones de esta memoria libre serían de 25000h hasta (25000h + 32000h =) 57000h
De: 25000h hasta 57000h
Se requieren 5 comparadores de magnitud de 4 BIT’s c/u.
Uno para cada cifra HEX.
Con un decodificador como lo mencionas sería más grande el circuito.
En realidad hacerlo con comparadores de magnitud estaríamos haciendo un decodificador.

saludos
a sus ordenes
PD: por las carreras creo que no conecté bien la OR hacia los comparadores
 

Adjuntos

#8
Creo que el problema esta en tu tabla de verdad.

LIBRE : 25000 - 2CFFF => 32k

EPROM1 : 2D000 - 34FFF => 32k TOTAL EPROM = 128K
EPROM2 : 35000 - 3CFFF => 32k
EPROM3 : 3D000 - 44FFF => 32k
EPROM4 : 45000 - 4CFFF => 32k

LIBRE : 4D000 - 64FFF => 96k

SRAM1 : 65000 - 68FFF => 16k TOTAL SRAM = 64K
SRAM2 : 69000 - 6CFFF => 16k
SRAM3 : 6D000 - 70FFF => 16k
SRAM4 : 71000 - 74FFF => 16k

EEPROM1 : 75000 - 84FFF => 64K TOTAL EEPROM = 192K
EEPROM2 : 85000 - 94FFF => 64K
EEPROM3 : 95000 - A4FFF => 64K

PROXIMO BLOQUE INICIA EN : A5000


Puedes notar que A13 ... A0 son comunes a todos los C.I.

Para los decodificadores solo necesitas 6 bits: A19...A14

Por ejemplo si quieres seleccionar SRAM2:

A19 A18 A17 A16 A15 A14
0 1 1 0 1 0

enable = A19'+A18+A17+A16'+A15+A14'

Y asi para el resto de C.I.

Saludos
 
#10
Creo que el problema esta en tu tabla de verdad.

LIBRE : 25000 - 2CFFF => 32k

EPROM1 : 2D000 - 34FFF => 32k TOTAL EPROM = 128K
EPROM2 : 35000 - 3CFFF => 32k
EPROM3 : 3D000 - 44FFF => 32k
EPROM4 : 45000 - 4CFFF => 32k

LIBRE : 4D000 - 64FFF => 96k

SRAM1 : 65000 - 68FFF => 16k TOTAL SRAM = 64K
SRAM2 : 69000 - 6CFFF => 16k
SRAM3 : 6D000 - 70FFF => 16k
SRAM4 : 71000 - 74FFF => 16k

EEPROM1 : 75000 - 84FFF => 64K TOTAL EEPROM = 192K
EEPROM2 : 85000 - 94FFF => 64K
EEPROM3 : 95000 - A4FFF => 64K

PROXIMO BLOQUE INICIA EN : A5000


Puedes notar que A13 ... A0 son comunes a todos los C.I.

Para los decodificadores solo necesitas 6 bits: A19...A14

Por ejemplo si quieres seleccionar SRAM2:

A19 A18 A17 A16 A15 A14
0 1 1 0 1 0

enable = A19'+A18+A17+A16'+A15+A14'

Y asi para el resto de C.I.

Saludos
pero fijate el ejemplo que me pusistes si pones 011010 en el deco activas sram 2 y sram 1 y eso no es un problema??
 
#11
Con esa configuracion unicamente se activa un chip a la vez, aqui te pongo otros ejemplos:

EPROM1 = A19'+A18'+A17+A16'+A15+A14
EPROM2 = A19'+A18'+A17+A16+A15'+A14
EPROM3 = A19'+A18'+A17+A16+A15+A14
EPROM4 = A19'+A18+A17'+A16'+A15'+A14

SRAM1 = A19'+A18+A17+A16'+A15'+A14
SRAM2 = A19'+A18+A17+A16'+A15+A14'
SRAM3 = A19'+A18+A17+A16'+A15+A14
SRAM4 = A19'+A18+A17+A16+A15'+A14'

Y similarmente para la EEPROM.

Saludos
 
#12
Hola and070

Creo que lo que te recomienda carferper es algo como lo que aparece en la imagen adjunta.
Si tienes el simulador ISIS de Proteus puedes abrir el archivo .DSN que está comprimido en el .ZIP.
Puedes notar en la imagen que se está generando la señal (CE) para SRAM1. tiene un inversor para utilizar la que convenga.

saludos
a sus ordenes
 

Adjuntos

#13
Hola and070

Creo que lo que te recomienda carferper es algo como lo que aparece en la imagen adjunta.
Si tienes el simulador ISIS de Proteus puedes abrir el archivo .DSN que está comprimido en el .ZIP.
Puedes notar en la imagen que se está generando la señal (CE) para SRAM1. tiene un inversor para utilizar la que convenga.

saludos
a sus ordenes
Ummm no se de hecho veo en la imagen que con 64000 estas selecionando SRAM1 pero la sram empieza en 65000
 
#16
Tienen razon con mi propuesta, tiene varios errores. en primer lugar no deben ser "+" o logico OR sino "x" o logico AND en las funciones logicas, asumo que ya lo notaron. Y el segundo error como ya mencionaron es que no coincide con la tabla de verdad. Sin embargo el procedimiento es el correcto.

Creo que la mejor opcion para simplificar al maximo el decoder es agregarle un sumador a los 8-bits mas significativos y hacer un nuevo mapa de memoria y tabla de verdad.

te adjunto una posible solucion, aunque no lo he revisado detalladamente, creo que funciona. Le agrege "C" en hex a cada direccion.

Saludos.
 

Adjuntos

Arriba