Catto / Mapa de Temas · Electrónica Digital III 6° año
Electrónica Digital III · 144 h · Eje 5 de 7

Sistemas programables y memorias

Dos temas que parecen distintos y son el mismo: guardar bits en un lugar y leerlos después. Una memoria guarda datos; un dispositivo lógico programable guarda la función que va a cumplir el circuito.

Microcontroladores Memorias Decodificación FPGA

01El mapa de las memorias

TipoVolátilEscrituraCiclosDónde se la encuentra
SRAMInmediataIlimitadosVariables del micro, caché del procesador. Rápida y cara: seis transistores por bit.
DRAMInmediataIlimitadosMemoria principal de una PC. Un transistor y un capacitor por bit: barata y densa, pero necesita refresco constante.
ROM de máscaraNoEn fábricaGrabada en el silicio. Sólo se justifica en producciones enormes.
PROMNoUna vez1Se «queman» fusibles internos. Histórica.
EPROM (UVPROM)NoEléctrica~100La de la ventanita de cuarzo: se borra con luz ultravioleta en 20 minutos. Todavía aparece en equipos industriales viejos.
EEPROMNoByte a byte~106Configuración y calibración. Lenta para escribir (milisegundos por byte).
Flash NORNoPor bloques~105Programa de micros y BIOS. Se lee byte a byte, lo que permite ejecutar desde ella.
Flash NANDNoPor páginas103–105Pendrives, tarjetas SD, discos SSD. Mucho más densa y barata, pero sólo se lee por páginas.
FRAMNoInmediata1014Registro continuo de datos sin desgaste. Cara y de poca capacidad.
Las tres preguntas que definen una memoria
  1. ¿Pierde el contenido al cortar la alimentación? Volátil o no volátil.
  2. ¿Cuántas veces se puede escribir? Ese número —la endurance— decide si sirve para guardar un dato que cambia todo el tiempo.
  3. ¿Qué tan rápido responde? Nanosegundos en SRAM, microsegundos en Flash de lectura, milisegundos para escribir una EEPROM.
El desgaste no es una anécdota

Una celda de Flash NAND de un pendrive barato aguanta unos 3000 ciclos de borrado. Si un programa escribiera siempre en la misma posición, el pendrive moriría en minutos. Lo que lo evita es el wear leveling: el controlador reparte las escrituras por todo el chip y lleva un mapa de qué bloque físico corresponde a cada dirección lógica. Es un sistema completo, con su propio procesador, adentro de cada pendrive y de cada SSD.

02Cómo se organiza y cómo se selecciona

Una memoria es una matriz de celdas con tres grupos de patas: direcciones, datos y control. La capacidad se escribe como «palabras × bits»: una 62256 es de 32 K × 8, es decir 32 768 posiciones de un byte.

posiciones=2ncapacidad=2n·mbits n es la cantidad de líneas de dirección y m el ancho de palabra. Con 15 líneas: 215 = 32 768 posiciones.
SeñalNombreQué hace
CS̄ / CĒChip selectHabilita el chip. Es lo que permite tener varias memorias en el mismo bus: sólo responde la seleccionada.
OĒOutput enableSaca el dato al bus. Sin él, las salidas quedan en alta impedancia.
WĒWrite enableEscribe lo que hay en el bus de datos en la dirección presente.
A0…AnDireccionesEligen la posición.
D0…D7DatosBidireccionales, con salidas de tres estados.
bus de direcciones A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 A15 elige el chip A14…A0 eligen la posición Memoria 1 32 K · 0x0000–7FFF CS̄ Memoria 2 32 K · 0x8000–FFFF CS̄ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 seleccionada dirección 0x0100 → responde la memoria 1 · posición 0x0100 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 seleccionada dirección 0x7FFF → responde la memoria 1 · última posición 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 seleccionada dirección 0x8000 → A15 pasa a 1: responde la memoria 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 seleccionada dirección 0xC000 → responde la memoria 2 · posición 0x4000 interna
Figura 1. Decodificación de direcciones, animada. Las líneas altas del bus eligen qué chip responde y las bajas, qué posición dentro de él. Un decodificador 74HC138 resuelve el reparto: es el mismo circuito de lógica combinacional.
Ejemplo · Repartir 64 KB entre dos memorias de 32 KB
  • Cada chip de 32 K necesita 15 líneas de dirección (A0 a A14), porque 215 = 32 768.
  • La línea A15 no va a los chips: se usa para elegir cuál responde. Con A15 = 0 se habilita el primero (direcciones 0000 a 7FFF) y con A15 = 1 el segundo (8000 a FFFF).
  • Si hubiera cuatro chips, se usarían A15 y A16 con un decodificador 2 a 4; con ocho, tres líneas y un 74HC138.

Si dos chips quedaran habilitados a la vez, ambos pondrían datos en el bus: es un cortocircuito entre salidas, exactamente lo que el ERC del esquemático advierte.

03Dispositivos lógicos programables

Un circuito con cincuenta compuertas se puede armar con quince integrados de la serie 74 —y ocupar media plaqueta— o con un solo chip programable que se configura por software. Esa es toda la idea, y su evolución tiene tres etapas.

PAL y GAL

Una matriz de conexiones programables entre las entradas y un conjunto de compuertas AND-OR. Reemplazan una decena de integrados 74. La GAL22V10 fue durante años el comodín de cualquier diseño digital.

CPLD

Varios bloques tipo GAL unidos por una matriz de interconexión. Cientos de macroceldas, configuración no volátil —funciona apenas se enciende— y tiempos muy predecibles. Ideal para lógica de pegado y decodificación.

FPGA

Miles o millones de bloques lógicos con memoria, multiplicadores y hasta procesadores adentro. Se configura al encender desde una Flash externa. Es lo que permite crear hardware a medida: veinte contadores funcionando en paralelo, sin que ninguno espere al otro.

0000 0 0001 0 0010 0 0011 0 0100 0 0101 0 0110 0 0111 0 1000 0 1001 0 1010 0 1011 1 1100 0 1101 1 1110 1 1111 1 memoria de 16 bits D C B A salida A B C D MUX salida 1 1 0 0 0 entradas DCBA = 0011 se lee la fila 3 1 1 1 0 0 entradas DCBA = 0111 se lee la fila 7 1 1 0 1 1 entradas DCBA = 1011 se lee la fila 11 0 1 1 1 1 entradas DCBA = 1110 se lee la fila 14 1 1 1 1 1 entradas DCBA = 1111 se lee la fila 15 1 0 1 0 0 entradas DCBA = 0101 se lee la fila 5 Cambiar la función es cambiar los 16 bits guardados: el mismo silicio hace cualquier cosa. Una FPGA tiene miles de estas tablas, más flip-flops y una red de interconexión también programable.
Figura 2. La tabla de consulta, animada. Adentro de una FPGA no hay compuertas cableadas: hay memorias chiquitas que guardan la tabla de verdad. Cambiar la función es cambiar los bits guardados, y por eso el mismo silicio puede ser un sumador o un decodificador.
Cómo se programan: HDL

No se dibujan compuertas: se describe el comportamiento en un lenguaje de descripción de hardware —VHDL o Verilog— y una herramienta de síntesis lo convierte en conexiones concretas.

-- VHDL: un contador de 8 bits. No es un programa: es una descripción de circuito.
process(clk)
begin
  if rising_edge(clk) then
    if reset = '1' then cuenta <= (others => '0');
    else cuenta <= cuenta + 1;
    end if;
  end if;
end process;

La diferencia conceptual con C es enorme: acá no hay instrucciones que se ejecuten una tras otra. Todo lo descrito ocurre a la vez, en cada flanco de reloj. Si se escriben diez procesos, los diez funcionan simultáneamente, como diez circuitos separados.

MicrocontroladorFPGA
EjecuciónSecuencial: una instrucción por vezParalela: todo al mismo tiempo
Se programa enC, assemblerVHDL, Verilog
CostoDólaresDecenas o cientos de dólares
ConsumoBajoAlto
Fuerte enLógica compleja, cuentas, comunicación, controlMuchas señales rápidas en paralelo, procesamiento de video, adquisición veloz
Ejemplo típicoTermostato, tablero, instrumentoAnalizador lógico, procesamiento de imagen, radio definida por software
Cuándo conviene cada uno

Si el problema entra en un microcontrolador, va en microcontrolador: es más barato, más simple y más fácil de mantener. La FPGA se justifica cuando hace falta paralelismo real o tiempos de nanosegundos: contar veinte encoders a la vez, procesar un video cuadro por cuadro, generar señales con precisión de un ciclo de reloj. Elegir FPGA «porque es más moderna» suele terminar en un proyecto caro que hace lo mismo que un chip de dos dólares.

04En el laboratorio

Práctica 1 · Leer una memoria a mano

Con una EPROM o SRAM en protoboard, llaves en las líneas de dirección y LED en las de datos, recorrer posiciones y anotar el contenido. Manejar CS̄ y OĒ a mano y observar qué pasa con las salidas cuando el chip está deshabilitado: quedan en alta impedancia, ni en 1 ni en 0.

Práctica 2 · Decodificar direcciones

Con un 74HC138 y dos memorias, armar el mapa de 64 KB del ejemplo. Verificar con LED cuál chip se habilita según A15. Después conectar mal a propósito los dos CS̄ juntos y observar en el osciloscopio el conflicto en el bus de datos.

Práctica 3 · Desgaste de la EEPROM

Escribir la misma posición de EEPROM del micro en un lazo rápido y llevar la cuenta de escrituras mostrándola por el puerto serie. Calcular cuánto tardaría en llegar al millón de ciclos. Después escribir el mismo dato rotando entre 16 posiciones y comparar la vida útil resultante.

Práctica 4 · Un contador en CPLD o FPGA

Si hay una placa disponible, describir en VHDL el contador de la sección anterior, sintetizarlo y verlo funcionar en LED. Después duplicar el proceso para tener dos contadores con distinto divisor y comprobar que corren en paralelo, sin que uno demore al otro. Ese experimento es la diferencia entre hardware y software.

05Errores frecuentes

SíntomaCausa habitual
El bus de datos muestra valores rarosDos chips habilitados a la vez: conflicto entre salidas. Revisar la decodificación.
La memoria lee siempre lo mismoAlguna línea de dirección quedó sin conectar o en corto, y varias direcciones apuntan al mismo lugar.
La escritura no se guardaWĒ y OĒ activos a la vez, o el tiempo de escritura no se respetó.
Un dato guardado en EEPROM se corrompeEscritura interrumpida por una caída de tensión. Habilitar brown-out y no escribir en cada vuelta del lazo.
El pendrive «se murió»Celdas agotadas, o la tabla de asignación corrupta por desconectarlo durante una escritura.
La FPGA no arranca al encenderEs volátil: necesita cargar su configuración desde la Flash externa. Si esa Flash no está programada, no hay circuito.
El diseño en VHDL «anda mal el orden»Se lo pensó como un programa secuencial. En hardware todo ocurre a la vez: el orden de las líneas no define el orden temporal.

06Autoevaluación

¿Cuántas líneas de dirección necesita una memoria de 8 K × 8?

8 K = 8192 = 213, así que 13 líneas (A0 a A12) y 8 líneas de datos.

¿Qué diferencia hay entre SRAM y DRAM?

La SRAM guarda cada bit en un biestable de seis transistores: es rápida y no necesita mantenimiento, pero cara y poco densa. La DRAM usa un capacitor por bit: es densa y barata, pero se descarga y necesita refresco permanente.

¿Para qué sirve la señal CS̄?

Para habilitar el chip. Permite conectar varias memorias al mismo bus: la decodificación de direcciones activa sólo una por vez, y las demás quedan con sus salidas en alta impedancia.

¿Por qué una Flash NAND aguanta menos ciclos que una EEPROM?

Porque prioriza densidad y costo: celdas más chicas, guardando incluso varios bits por celda. Eso desgasta más el óxido en cada borrado. La EEPROM es mucho menos densa pero soporta del orden de un millón de ciclos por byte.

¿Qué es el wear leveling y dónde está implementado?

Repartir las escrituras entre todos los bloques para que ninguno se desgaste primero. Lo hace el controlador que está dentro del pendrive, la tarjeta o el SSD, con su propio procesador y su tabla de traducción.

¿Qué hay adentro de una FPGA en lugar de compuertas?

Tablas de consulta (LUT): memorias muy chicas que guardan la tabla de verdad de la función deseada, con un flip-flop asociado. Programar la FPGA es escribir esas tablas y las conexiones entre bloques.

¿Cuál es la diferencia esencial entre programar en C y describir en VHDL?

En C las instrucciones se ejecutan una tras otra; en VHDL se describe hardware que funciona todo al mismo tiempo. Diez procesos en VHDL son diez circuitos simultáneos, no diez pasos.

¿Cuándo conviene una FPGA en vez de un microcontrolador?

Cuando hace falta paralelismo real o tiempos de nanosegundos: muchas señales rápidas atendidas a la vez, procesamiento de video, adquisición de alta velocidad. Para control, comunicación y cálculo moderado, el micro es más barato y más simple.

Un CPLD funciona apenas se enciende y una FPGA no. ¿Por qué?

Porque la configuración del CPLD es no volátil y vive dentro del chip, mientras que la FPGA carga su configuración al arrancar desde una memoria Flash externa. Si esa memoria falla, la FPGA queda sin función.

¿Por qué una EPROM tiene una ventanita de cuarzo?

Porque se borra exponiendo el chip a luz ultravioleta, que descarga las compuertas flotantes de las celdas. Por eso, una vez grabada, la ventana se tapa con una etiqueta: la luz del sol la borraría con el tiempo.

Desarrollo del eje «Sistemas programables y memorias» de Electrónica Digital III (6° año), según la «Propuesta Curricular – Segundo Ciclo de la Modalidad Técnico Profesional, Educación Secundaria – Electrónica», Ministerio de Educación de la Provincia de Córdoba, DGETyFP. Volver al Mapa de Temas · catto.ar