C64 a Fondo – 6502 vs 6510 Parte 1 – El módulo de reloj

Vamos a empezar esta serie analizando que es un módulo de reloj o system clock, por qué se usa, como funciona el de la Commodore 64 a grandes rasgos y por qué vamos a usar otro módulo de reloj durante nuestro estudio.

Les dejo el link al articulo anterior en la serie, y al final como siempre los links a todos los artículos de la misma.

Introducción

¿Qué es un módulo de reloj?

Un módulo de reloj es un circuito electrónico que oscila generando una secuencia de pulsos repetitivos que llamaremos señal de reloj, estos pulsos son distribuidos a todos los elementos lógicos que tenemos en nuestra computadora para que se sincronicen.

¿Por qué se usa?

Porque generalmente nuestras computadoras trabajan con lógica sincrónica. Los gates o compuertas lógicas que usamos para operar sobre los datos tienen un tiempo finito de respuesta a los cambios en los inputs que reciben, esto se llama delay de propagación. 

El intervalo entre los pulsos del reloj tiene que ser suficientemente largo como para que los gates y sus salidas se establezcan en valores estables antes de que suceda el próximo pulso de reloj.

Cómo funciona el de la Commodore 64

Bienvenidos al infierno, digo a cómo funciona aproximadamente el reloj de la Commodore 64. Y digo aproximadamente por que en este post no vamos a describir el circuito en detalle pero sí algunos vericuetos interesantes.

Empecemos con un cristal llamado Y1, este nos da una resonancia mecánica desde la cuál vamos a llegar  a través de varios circuitos a los 1 Mhz a los que típicamente corre el 6510.

 

Ahora dependiendo de si la computadora es NTSC o PAL la frecuencia de la señal va a ser de aproximadamente 14,318 Mhz o 17,73 Mhz redondeando. 

A esta señal se conoce como el Color Clock por que al dividir estos números por 4 obtenemos 3.58 Mhz para NTSC y 4.43 Mhz para PAL las cuáles son las señales de carrier responsables de que cómo vemos los colores en nuestros televisores.

Un Circuito integrado conocido como el U31 Dual Voltage Controlled Oscillator nos genera otras frecuencias en 8.18 Mhz para NTSC y 7.88 Mhz para PAL, esta señal se conoce como el Dot Clock y nos dice cuántos píxeles se puede escribir por pantalla en cada refresh de la misma.

NTSC: 59.826Hz (refresh rate) * 520 Pixels * 263 lineas = 8.18MHz

PAL: 50.125Hz (refresh rate) * 504 Pixels * 312 lineas = 7.88MHz

Finalmente llegamos al System Clock que define que es un ciclo de CPU como la Commodore 64 es un máquina de 8 bits esto nos limita a mostrar hasta 8 píxeles por ciclo de CPU por lo que corresponde un ciclo de duración de un octavo de Dot Clock.

NTSC: 8.18MHz / 8 = 1.023MHz

PAL: 7.88MHz / 8 = 0.985Mhz

Llegando al máximo de velocidad de 1Mhz del 6510.

¿Por qué usamos otro reloj en nuestro estudio?

Si utilizáramos un reloj de 1 Mhz sería muy difícil ver que ocurre en la cpu por cada instrucción de nuestro programa. Los instrumentos que usamos para medir no podrían detectar fácilmente la variación de bits o impulsos eléctricos en los pines de address bus y no llegaríamos a comprender que sucede en cada paso. 

Por eso tenemos un reloj que nos permite parar la pelota e ir más lento, tan lento como queramos, inclusive pulsando un botón vamos a ir ciclo por ciclo de reloj e instrucción por instrucción.

Cómo funciona nuestro clock 

Vamos a utilizar el reloj del kit de Ben Eater. Este funciona con tres timer 555 y algunas compuertas and y or, en las referencias les dejo el detalle de como lo arma él en sus videos.

Este reloj nos permite a través de un switch decidir si queremos ir paso a paso cada ciclo de reloj pulsando un botón o usar un potenciómetro para dar la velocidad de las instrucciones.

Cómo Seguimos

Para ver visualmente como funciona el módulo de reloj y cómo corremos el osciloscopio para analizar sus variaciones les dejo el primer video de la serie

6502 vs 6510 Módulo de Reloj Manual – Parte 1

Artículos en la serie C64 a Fondo

A continuación el link al próximo artículo en la serie

Parte 1 – El módulo de reloj

y aquí los links a los artículos anteriores

Introducción

Referencias

A continuación les dejo tres excelentes artículos que hablan en profundidad del reloj de la Commodore 64.

Hardware Basics Part 1 – Tick Tock, know your Clock — Dustlayer

Hardware Basics Part 2 – A Complicated Relationship — Dustlayer

Clock Frequency

Y Cómo construir el módulo de Reloj por Ben Eater.

Clock module 

Autor: OsoLabs

Empecé con la Commodore de chico, sigo con la Commodore de grande. Programo para 6502, Arduino, Raspberry y algunos algoritmos de Bioinfomática, algo en C++, algo en Python, algo en Assembler. Fanático de la electrónica home brew desde breadboard a diseñar PCBs propios. Armé la 20c y OsoLabs https://www.osolabs.tech Mi GitHub para quien quiera sumarse a los proyectos y chusmear código: https://github.com/carlinhocr/ Desde Argentina al Mundo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *