(EXTRACTO)

Para ello voy a tomar a PONG que fue la primera recreativa de éxito, esta sección no busca ser una clase de electrónica ni tampoco especializarse en eso sino dar una explicación más mundana a como hacen los sistemas de antaño para contar lineas, tampoco voy a explicar en esta sección como genera los gráficos Pong, solo como su primitivo sistema de video cuenta los puntos y las lineas dado que este sistema se utiliza en todos los sistemas basados en una pantalla de tubo de rayos catódicos y nos puedes servir de ejemplo.

Pong funciona en modo no-entrelazado en un televisor NTSC en blanco y negro convencional, por lo que funciona en modo 30hz y 525 lineas, la velocidad de reloj del sistema de video es de 7.16 Mhz por lo que en cada linea hay unos 456 pulsos (0 a 455). En cuanto a la distribución de las lineas horizontales, durante las 16 primeras lineas la sincronización vertical esta apagada y por tanto no se emite ni una sola linea y durante las 16 últimas también, en las lineas donde no hay sincronización vertical no hay sincronización horizontal por lo que la señal de sincronización horizontal solo podrá encenderse si la señal de sincronización vertical tambien esta encendida, así como la señal de sincronización correspondiente a cada linea.

En cuanto al periodo horizontal este dura del pixel 0 al 79 en modo HBLANK y por tanto no transmite nada, el modo HSYNC se activa en el pixel 81 que es la posición 80 del contador realmente.

Un contador de n bits va incrementando en cada ciclo de reloj, si por ejemplo tenemos uno de dos bits podrá contar hasta 4, empezará con 00, el segundo ciclo será 01, el tercero 10 y 11 en el cuarto para volverse a ponerse a 00 en el quinto y repetir el ciclo, podemos conectarle otro circuito electrónico o una puerta lógica. Si les conectaramos un LED a cada Flip Flop e hiciesemos que fuesen a una velocidad realmente lenta veriamos como en el primer ciclo los dos LEDS estarían apagados, en el segundo se encendería el de la derecha, en el tercero el de la izquierda y en el cuarto ambos.

La forma de construir un contador es con varios Flip Flops del tipo J/K concatenados cuyo diagrama utilizando puerta lógicas es el siguiente:

Los sistemas TTL también incluían un contador de 4 bits, el cual eran 4 flip flops J/K concatenados en un solo chip, para la resolución horizontal de Pong se utilizaban 2 contadores de 4 bits y un flip flop J/K adicional para poder llegar a los 9 bits necesarios para poder contar los 455 pulsos.

Lo ideal de un contador es conectarle una puerta o una serie de puertas lógicas que se activen cuando todos los valores lleguen a un valor determinado se active una condición en concreto. En el caso del contador horizontal tenemos que el HSYNC se activa durante el ciclo 80 de cada linea, podemos escribir 80 con 64+16 y dado que es el primer número en el que se cumplen estas condiciones activar el HSYNC cuando los bits correspondientes a 16 y 64 lleguen a transmitir un 1 cada uno. Por otro lado necesitamos que el HSYNC se apague al llegar el contador a 455, el cual es 111000111 por lo que activaremos la condición cuando los bits 1,2,4,64, 128 y 256 envien un 1.

Os dejo un diagrama simplificado de como sería el contador horizontal de manera simplificada

En cuanto al contador vertical, este tiene que contar hasta 512, por lo tenemos unos 2 contadores de 4 bits y 2 flip flops. El contador vertical puede ir siendo controlado por el contador horizontal que cuando se cumple de HSYNC OFF envie una señal al pin de reloj del primer contador con tal de que cuente, la otra opción es dividir la señal por 30 y después por 525 y que vaya completamente independiente pero a compás de la horizontal, aunque lo normal es hacer que la horizontal controle a la vertical.

El VSYNC se activará durante la linea 16 de la pantalla, linea 15 del contador, por lo que en la linea 15 se envía la señal para activar el VSync, el 15 es 1111 en binario por lo que la condición se cumplirá cuando los bits 1,2,4, y 8 del contador envíen un 1 cada una pero la misma señal para encender el VSync no se puede utilizar para apagarlo. Teniendo en cuenta que deja las 16 últimas lineas de pantalla, esto significa que el VSync OFF se activa en la linea 508 del contador realmente, este número en binario es 111111100 y es el primer número en el que se cumple dicha condición, por lo que para desactivar el VSYNC necesitaremos que el contador llegue a esa cifra, dado que será la última de las cifras a contar verticalmente podemos ignorar los 2 últimos bits donde están los ceros y conectar los 8 primeros bits a una puerta NAND de 8 bits para que ante la condición de todos las entradas en 1 el resultado de salida sea 0 y apague el VSYNC.

De manera unificada el contador horizontal y el vertical quedarían organizados de la siguiente manera, recordad que esto no intenta ser el mapa de un circuito electrónico sino un esquema conceptual.

El símbolo antes del HSYNC ON es el simbolo de una puerta AND, esta envia una señal de encendido (1) solo cuando todos los valores que pasan por ella son 1, dado que necesitamos que el VSYNC este activado para que el HSYNC lo pueda estar también.

Hay que tener en cuenta que esta circuitería no nos permite enviar nada a pantalla, pero si nos sirve para contar y saber cuando el sistema de vídeo puede enviar la señal.

(FIN DEL EXTRACTO)

Esto es todo, como siempre tenéis el Discord y los comentarios de la misma entrada para comentar el contenido de la misma.