Bits de datos/direcciones intercambiadas por SRAM

Considere el siguiente cableado de un microcontrolador a un chip sram:

uC        SRAM
A0    --> A3
A1    --> A0
A2    --> A1
A3    --> A2
A4    --> A4
..    --> ..
A15   --> A15

Como puede ver, algunos de los bits de dirección están intercambiados.

Entonces, a la hora de leer/escribir la memoria, ¿no habrá errores? Por ejemplo:

Address Microcontroller    Address Chip        Contents
0000                       0000                H
0001                       1000                e
0010                       0001                l
0011                       1001                l
0100                       0010                o
0101                       1010                
0110                       0011                !
0111                       1011                \0

Entonces... desde el lado del microcontrolador, todas las direcciones son ascendentes, pero como puede ver en la realidad, el uC se dirige a varios lugares de memoria en el sram.

¿Es esto un problema? Creo que con UN microcontrolador usando la memoria: no, ya que el microcontrolador puede, sin embargo, obtener los datos en el orden correcto (incluso si no lo hace desde una observación externa). Pero creo que con dos o más microcontroladores esto podría convertirse en un problema SI los bits de dirección no están conectados de la misma manera.

Conclusión:

Siempre que cada dirección sea distinta de otra, no habrá problema de lectura/escritura. (¡Considerando UN microcontrolador usando la memoria!)

Y: siempre que cada bit de datos sea distinto de los otros bits de datos, no habrá problemas de lectura/escritura. (¡Considerando UN microcontrolador usando la memoria!).

Entonces, mi pregunta final es: ¿es correcta mi comprensión de este problema o me estoy perdiendo algo? ¡No pude encontrar nada en Internet sobre este problema!

Creo que algunos sistemas de cartuchos usaban pedidos no estándar como una forma de protección de copia/ingeniería inversa.
@pjc50: No creo que los pedidos no estándar sean particularmente efectivos en ese sentido. Es posible que algunos sistemas lo usaran para ese propósito, pero creo que una razón más probable para usar un orden no estándar sería facilitar el diseño.
SRAM generalmente está bien. Algunos esquemas de actualización de DRAM dependen del acceso a ubicaciones de direcciones seleccionadas dentro de ciertos períodos. Si no lo hace, se perderán los datos. || He visto sistemas con direcciones o bits de datos reordenados por varias razones.

Respuestas (4)

Su comprensión es correcta.

Una dirección es solo una etiqueta arbitraria para una ubicación. Todas las ubicaciones son idénticas (desde el punto de vista de la MCU), y siempre que cada MCU que acceda a las ubicaciones esté de acuerdo con el significado de las etiquetas (estén conectadas de la misma manera), entonces no importa en lo más mínimo cómo asigne esas "etiquetas".

Siempre que use el mismo cableado para ingresar datos que el que usa para sacar datos, son solo números.

Imagina que no sabes contar. Imagina que piensas que los números van 0, 3, 2, 5, 4, 1 en lugar de 0, 1, 2, 3, 4, 5.

Tu jefe te dice que pongas esta caja en el estante 3. Así que vas y la pones en lo que crees que es el estante 3, pero en realidad es el estante 1.

Más tarde ese día, el jefe le dice que vaya a buscar esa caja del estante 3 para él. Entonces, vaya a lo que cree que es el estante 3 (en realidad, el estante 1) y obtenga la caja correcta.

Ahora, si el jefe fuera a buscar la caja, encontraría una caja completamente diferente, porque no fue a su estante 3 sino a su estante 3 (su estante 5).

¿Se usa esto alguna vez en circuitos reales? Puedo imaginar que la flexibilidad para enrutar la dirección y las líneas de datos como quieras sería muy útil.
Puede ser, si. Mientras no comparta los datos, no hay absolutamente nada que le impida asignar los pines de dirección como mejor le parezca.
¿Alguna vez has visto esto usado en un producto real?
@Austin: sí, es una técnica de enrutamiento estándar. Funciona tanto para direcciones como para bits de datos de RAM verdaderamente estática. No DRAM, ni ningún dispositivo similar a SRAM.
Un caso en el que no funcionaría (¡sin pensarlo detenidamente!) son ciertas EEPROM en las que debe escribir datos específicos en direcciones específicas antes de programar una página...
Me pregunto cómo funcionaría esto con la memoria rota...
No lo haría. Lo contaría bajo el título de "compartir el chip": está compartiendo el control de las direcciones entre la MCU y el contador de direcciones interno. Eso está condenado al fracaso. El contador de direcciones interno sería su jefe que puede contar.

Para muchos tipos de chips, especialmente los chips RAM estáticos asincrónicos, la disposición de direcciones y la disposición de bits de datos son completamente arbitrarias. De hecho, mientras que los fabricantes generalmente numeran los cables de dirección y datos para que coincidan con los pinouts de otros dispositivos, la secuencia de cables dentro del chip puede no tener relación con su numeración. Sin embargo, algunos tipos de chips otorgan un significado especial a ciertas direcciones o bits de dirección. Los chips flash, por ejemplo, a menudo requerirán que el software que desee escribir datos primero realice una cierta secuencia de operaciones de escritura antes de hacerlo; si la dirección o los bits de datos se reorganizaron, la secuencia requerida de escrituras podría necesitar modificarse en consecuencia. Además, si los pines de algo como una EPROM se reorganizan en una placa,

  • Para el acceso secuencial, cambiar los bits de dirección puede causar un gran aumento en el consumo de energía, si los cambios hacen que la SRAM acceda a nuevas filas con más frecuencia.
  • Si un módulo SRAM no cubre todo el rango direccionable (p. ej., digamos que el módulo tiene 768x128 bits), entonces una dirección reordenada puede hacer que accidentalmente direccione ubicaciones de memoria que no existen.

De lo contrario, los valores/lógica no cambian siempre que la lectura y la escritura usen el mismo reordenamiento de direcciones.

¿Por qué SRAM tendría filas en primer lugar?

En este contexto, es interesante saber que TI etiquetó los pines de las líneas de datos y direcciones del TMS 9900 en orden inverso al que se suele hacer:
A0y D0fueron los bits más significativos de la palabra de dirección y datos.

Consulte el artículo de Wikipedia sobre TMS990 .