¿Cuál es la diferencia entre PLA y ROM?

Me resulta difícil de entender. ¿Cuál es la diferencia entre PLA y ROM? ¿Puede alguien proporcionar un enlace o una explicación?

Ya nadie usa ninguno de los dos. Las ROM han sido reemplazadas por EEPROM o Flash.
@Brian Carlton: Cierto, pero los PLA basados ​​en máscaras o fusibles también han sido reemplazados por PLD regrabables. En general, las distinciones entre ROM y PLA son igualmente aplicables a sus primos basados ​​en flash, excepto que: (1) los dispositivos lógicos programables generalmente incluyen más ventajas que en años anteriores, (2) algunos chips flash pueden bloquear la dirección cuando se seleccionan, y (3) la diferencia relativa en las velocidades entre los chips flash modernos y los PLD modernos es mayor que entre los PLA más antiguos y las ROM más antiguas.
@BrianCarlton increíble... Tendré que publicar un boletín de todos los puntos para la industria de semiconductores para informarles que ya no usan ROM. ¡Estarán encantados de saber cuánto dinero pueden ahorrar con EEPROM!

Respuestas (4)

Son dispositivos bastante diferentes.

PLA = Matriz Lógica Programable.

Un dispositivo PLA o PAL (lógica de matriz programable) es como un FPGA bebé que se puede programar para realizar funciones lógicas básicas. Se pueden conectar decenas a cientos de puertas en un PAL para realizar funciones lógicas simples. Un PAL a menudo es de solo lectura, ya que después de la programación debe realizar un borrado completo para actualizarlo.

ROM = Memoria de sólo lectura.

Una ROM no realiza funciones lógicas, sino que almacena datos. Un tipo de ROM podría ser EPROM, memoria de solo lectura programable y borrable.

Puede usar una ROM como un dispositivo lógico, implementando una búsqueda de tabla lógica simple. Como una tabla de verdad. Sin embargo, es algo costoso y un desperdicio hacer esto en comparación con el uso real de un PAL o incluso un CPLD/FPGA.

La ROM en realidad está realizando funciones lógicas, es una tabla de búsqueda complicada. Solía ​​ser más común, pero si necesita una ROM de gran tamaño y puede estar seguro de lo que necesitaría durante mucho tiempo, la implementaría con una lógica fabricada. Esto significa que para cada dirección tiene la lógica para generar la salida con y/o sin puertas. Este tipo de función también es muy rápida.
Agregué eso a mi respuesta.
@Thomas O: ¿puedo decir que la ROM es un PLA fijo?
Bueno, un poco, pero una ROM generalmente se puede reprogramar, solo tiene que borrarla electrónicamente (EEPROM) o usando luz ultravioleta (EPROM). Una PAL no es una ROM, pero una ROM puede actuar como una PAL.
@Thomas O: de todos modos, es un poco difícil entender la implementación de: EEPROM, EPROM, ¿tiene algunos enlaces con conceptos básicos sobre ROM y sus tipos, PLA y sus tipos, etc.?
Bueno, no estoy seguro de los diversos tipos de PAL/PLA, pero EEPROM/EPROM/PROM y ROM son solo variaciones tecnológicas sucesivas; La ROM está integrada en el silicio, la PROM es programable una sola vez (electrónicamente), la EPROM se borra usando luz ultravioleta y es reprogramable electrónicamente y la EEPROM es la variante actual, que es programable y borrable completamente electrónicamente.
Cuando construye la lógica en la ROM, puede obtener una latencia baja y un costo bajo. El tamaño de la oblea puede ser casi nada comparado con un PLA o FPGA.
Aparentemente, los PLA solo pueden implementar una lógica combinacional. Entonces, ninguno de estos puede hacer una lógica que dependa de estados anteriores. ¿Hay algo que uno pueda hacer que el otro no pueda? ¿O es solo una cuestión de costo y velocidad?
No estoy seguro. Creo que una ROM sería más rápida, pero más cara, una PAL más lenta, pero más barata.
@endolith: son piezas antiguas, pero consulte PLA 16R8 o GAL 22V10, por ejemplo; tienen salidas con capacidad de registro que también se retroalimentan a la matriz de entrada, por lo que podría obtener dispositivos PLD para almacenar estados incluso en 1988.
Mi osciloscopio digitalizador tiene dos o tres PAL (el tercer IC no se menciona en el manual de servicio pero está en un paquete similar), fue fabricado en el '93.
Bueno, Wikipedia dijo que era solo combinacional. Entonces, los PLA pueden hacer algunas cosas que las ROM no pueden.
Interesante. Solo me baso en el conocimiento que he adquirido en la red; la mayoría de la gente parece usar FPGA o CPLD ahora de todos modos, no PLA.
sí, las viejas cosas de tipo PAL 16L8 'R8 son bastante retro, e incluso la serie GAL que las reemplazó es de la vieja escuela, pero aun así, son bastante útiles para agrupar algunas funciones lógicas, sin llegar a un FPGA. También tienen la ventaja de no tener que cargar su configuración desde una ROM serie al encenderse.

Una memoria de solo lectura (ROM) es un circuito lógico que puede generar todos los minitérminos posibles de sus entradas.

Memoria de solo lectura de ocho palabras por un bit

Entonces, estas son las características de la ROM:

Los productos de entrada están cableados e incluyen todos los minitérminos posibles. El circuito de suma de salida es programable.


Una matriz lógica programable de campo (FPLA) solo se generan los minitérminos que se necesitan. Además, cada uno se genera solo una vez, aunque puede aparecer varias veces en las expresiones de salida.

Implementación FPLA de funciones lógicas

Entonces, estas son las características de la FPLA:

El circuito del producto de entrada es programable. El circuito de suma de salida es programable.


Una lógica de matriz programable (PAL) tiene un circuito de entrada similar al de la FPLA. Sin embargo, el circuito de salida incluye lógica OR cableada y no es programable.

Implementación PAL de funciones lógicas

Entonces, estas son las características del PAL:

El circuito del producto de entrada es programable. El circuito de suma de salida está cableado.

A modo de ejemplo, suponga que tiene un dispositivo PLA y una ROM, ambos con 12 entradas y 8 salidas.

La ROM tendrá celdas de 8 bits para cada una de las 2^12 = 4096 direcciones. Por lo tanto, esta ROM tendría 32768 celdas de bits individuales. La lógica en el chip incluiría (al menos en partes más grandes) un demultiplexor para los bits de entrada de orden superior, que seleccionaría un banco de, por ejemplo, 1024 celdas, y un multiplexor para las entradas de orden inferior para seleccionar la salida real 8 pedacitos del banco. Esto daría del orden de cuatro retardos de puerta para el muxing, más cualquier tecnología requerida para las celdas de bits. Las EPROM UV antiguas pueden tardar 120 ns en arrojar un resultado, pero había (¿todavía hay?) ROMS programables una sola vez que podían hacer el mismo trabajo en unas pocas decenas de nanosegundos.

Un PLA, por otro lado, tendrá una serie de 'fusibles' programables, generalmente mucho más pequeños que las celdas de 32768 bits en la ROM equivalente. Internamente, un PLA proporciona un banco de puertas AND, seguido de un banco de puertas OR y, opcionalmente, un flip-flop por salida. Un PLA de este tamaño podría tener 16 puertas AND, cada una con entre 8 y 16 entradas. En el estado borrado, los 'fusibles' son cortocircuitos, por lo que cada entrada de cada AND se puede conectar (generalmente) a cualquiera de las entradas o salidas del chip, o sus inversiones. Cuando programa el PLA, el programador quema los fusibles para dejar solo las conexiones que desea. Luego, la matriz OR se puede programar de manera similar para combinar varias combinaciones de las salidas AND. La tecnología de fusible incurre en un retraso mínimo, por lo que el retraso de propagación desde el pin de entrada al pin de salida puede ser tan pequeño como dos retrasos de puerta o hasta cuatro,

Con el mismo número de entradas y salidas, una ROM es capaz de una lógica más general, ya que puede grabar cualquier tabla de verdad que desee en la ROM. Sin embargo, como dispositivo lógico, la ROM no es óptima. Si intenta grabar varias pequeñas funciones independientes en una ROM, descubrirá que tiene muchos casos "no importa" que, no obstante, deben programarse en la ROM para obtener el resultado deseado. El PLA es mejor para la lógica porque no tiene que lidiar con los "no importa", pero la compensación es que no puede programar funciones completamente arbitrarias de los bits. Sin embargo, son lo suficientemente flexibles para ser útiles para muchas tareas comunes de "lógica de pegado" y, por lo general, son más rápidos en la producción de resultados.

Otra distinción entre un PLA y una ROM: si, por ejemplo, una ROM 16x1 con un tiempo de acceso de 50 ns tiene un "1" en las direcciones 1100 y 1101, generará una salida alta dentro de los 50 ns posteriores a la aparición de cualquiera de esos patrones, pero si se selecciona la dirección 1100 y el LSB de la dirección sube, luego, durante los siguientes 50 ns, la salida puede subir y bajar en cualquier patrón arbitrario (debe terminar en alto). Por el contrario, un PLA que está configurado para generar una salida alta siempre que las primeras tres entradas sean 110 no tendrá fallas inducidas en la salida cuando cambie la cuarta entrada.

Podemos pensar en un dispositivo lógico programable simple como una matriz de compuertas AND seguida de una matriz de compuertas OR (en realidad, puede implementarse como dos matrices de compuertas NAND).

En una PROM, la "matriz AND" es fija y la "matriz OR" es programable. Cada combinación de entradas genera exactamente una salida de la matriz AND. A continuación, se programa la "matriz OR" para definir la función lógica. Esto permite que cada salida implemente cualquier función lógica de las entradas.

Ser capaz de implementar funciones lógicas arbitrarias suena atractivo, pero hay dos problemas prácticos al usar PROM para la lógica. En primer lugar, no se escala bien, cada entrada adicional que agrega duplica el tamaño requerido de la matriz y. En segundo lugar, es muy propenso a fallas en la salida porque los términos del producto utilizados cubren exactamente una combinación de entrada.

En un PAL, la "matriz OR" es fija y la "matriz AND" es programable. Cada salida debe formarse a partir de un número restringido de términos de productos, pero esos términos de productos pueden cubrir varias combinaciones de entradas.

En un PLA, ambas matrices son programables. Esto le brinda más flexibilidad si algunas salidas necesitan más términos de productos que otras o si varias salidas tienen términos de productos en común.