The 20c – Episodio 2 – El CLOCK

Introducción 

En este episodio vamos a descubrir el CLOCK de nuestra computadora 20c. Este sistema se encarga de sincronizar todos los chips y componentes de nuestra máquina emitiendo una señal regular en el tiempo.

Vamos a estudiar todos sus subsistemas y distintos modos de clock que poseemos, luego vamos a recrear esta placa PCB desde cero y terminaremos con un experimento que nos permitirá ver como usar nuestro clock paso por paso para poder avanzar instrucción por instrucción en nuestra computadora. 

Descripción general del CLOCK

Nuestra Placa de CLOCK sirve para marcar el ritmo en el cual todo pasa en nuestra 20c, posee tres relojes diferentes:

  • Reloj regulable en velocidad o de pulso contínuo
  • Reloj paso a paso
  • Reloj fijo a 1Mhz

Cuando hablamos de reloj nos estamos refiriendo a un circuito con la capacidad de emitir pulsos. Con estos tres relojes vamos a poder realizar todos los experimentos de la 20c. Este reloj está basado en el que construyó Ben Eater para su serie de 8 bit computer, si no la vieron es excelente y pueden ir a las referencias de este artículo para ver los links a la misma.

Reloj regulable en velocidad o de pulso contínuo

Descripción

Nuestro circuito consiste en un reloj regulable en velocidad, esto nos va a permitir mediante el uso de un potenciómetro regular que tán rápido queremos que nuestro reloj emita pulsos.

El circuito consiste en un timer realizado con un integrado NE555 y conectado de forma a-stable o inestable lo que hace que este prenda y apague, la velocidad con la que va a prender y apagar esta regulado con un potenciómetro.

Conexión

Para este tipo de conexión conectaremos los pines del 555 de la siguiente forma:

  • El pin 1 y el 8 se conectan a GROUND y a +5V respectivamente
  • Los pines  DISCHARGE 7 y THRESHOLD 6 se conectan juntos a través de una resistencia en nuestro caso son dos resistencias el potenciómetro R3 de 1 Mega ohm y la resistencia de R4 de 1K ohm. Uso dos resistencias para que en caso que el potenciómetro llegue a cero nunca tenga 0 resistencia.
  • El pin 7 de DISCHARGE también se conecta a 5v a través de un resistencia R1 de 1K ohm.
  • El pin 6 de THRESHOLD también se conecta al pin de TRIGGER 2 directamente.
  • El pin TRIGGER 2 se conecta a ground a través de un capacitor electrolítico C2  de 1 uFaradios (micro faradios).
  • El pin RESET 4 lo conectamos a +5v para que no se active. Si el pin 4 es 0v, se resetea el Flip-flop.
  • El pin 5 CONTROL lo conectamos a GROUND a través de un capacitor C1 de 10 nFaradios (nano faradios). Esto nos va a permitir mejorar la forma de la onda cuadrada de los pulsos.
  • La Salida del circuito son los pulsos en sí mismos que salen por el pin 3 de OUTPUT.

Funcionamiento

El 555 posee internamente dos comparadores (triángulos a la izquierda) y un Flip-Flop (rectángulo).

El capacitor C2, las resistencias R1, R3 y R4 son las que regulan la frecuencia de los pulsos.  

El capacitor se va a cargando a través de las resistencias y cuando llega  a acumular más de ⅓ del voltaje que usamos, en este caso 1.6v ya que el circuito tiene 5v, el primer comparador se activa y se prende el Flip-Flop produciendo el pulso de salida en +5v. 

Cuando el capacitor llegue a ⅔ del voltaje el segundo comparador va a activar el Reset del Flip-Flop descargando el capacitor a través del pin 7 DISCHARGE y dando la salida del pin OUTPUT a 0v.

Cuando el capacitor se descarga hasta 1.6v el comparador 1 vuelve a activar el SET del Flip-Flop y prende el OUTPUT nuevamente a +5v.

Al reducir la resistencia R3 moviendo el potenciómetro vamos a ir aumentando la frecuencia de los pulsos ya que el capacitor se cargará antes. 

La frecuencia de los pulsos se calcula con la fórmula:

Frecuencia = 1,440 / ((R1+(2*R2))*C1) con R1 y R2 en kilo ohms y C1 en uF (microfaradios)

En nuestro caso R1 es la resistencia R1 de 1K y la resistencia R2 de la fórmula está compuesta por la suma de las resistencias R4 y R3.  La resistencia R1 tiene un valor de 1k ohms. La suma de las  resistencias R4 y R3 van desde 1k ohms a 1001k ohms ya que el potenciómetro es de 1 mega ohms.

Aquí podemos una regulación de 133 Hz para el Reloj de pulso en nuestro osciloscopio:

Para más detalle de cómo funciona el circuito en forma astable les incluyo el datasheet de Texas Instrument sobre el mismo en las referencias, también les incluyo un link a un video de Ben Eater que lo explica en las referencias.

Reloj paso a paso

Descripción

Nuestro circuito consiste en un reloj paso a paso que nos permite avanzar a nuestro ritmo a medida que presionamos un botón, cada vez que presionamos este botón se emite un pulso de reloj.

El circuito consiste en un timer realizado con un integrado NE555 y conectado de forma mono-stable lo que hace que este prenda por un tiempo fijo luego de que el botón es presionado. 

Si sólo usara el botón sin un 555, al presionar el mismo muchas veces, los contactos de metal internos rebotan y me daría muchos pulsos en lugar de sólo uno, entonces si quisiera avanzar el clock paso a paso quizá a veces me dé dos o tres pulsos seguidos por el rebote/bouncing. Al usar un 555 en modo monoestable este va a soltar un sólo pulso por el pin de OUTPUT.

Conexión

Para este tipo de conexión conectaremos los pines de la siguiente forma:

  • El pin 1 y el 8 se conectan a GROUND y a +5V respectivamente
  • El pin 7 de DISCHARGE lo conectamos al pin 6 de THRESHOLD
  • El pin 2 de TRIGGER se conecta en forma pull-up a una resistencia R5 de 1k ohm que está conectada a 5 volts para dejarlo HIGH y también lo conectamos al botón KEY1 el cuál está conectado también a ground.
  • El pin 7 de DISCHARGE y el pin 6 de THRESHOLD también están conectados a una resistencia R9 de 1 Mega ohm y a un capacitor C1SMOOTHINGCAPACITOR2 de 100nF. 
  • El pin RESET 4 lo conectamos a +5v para que no se active. Si el pin 4 es 0v se resetea el Flip-flop.
  • El pin 5 CONTROL lo conectamos a GROUND a través de un capacitor C1 de 10 nF (nano faradios) .Esto nos va a permitir mejorar la forma de la onda cuadrada de los pulsos.
  • La Salida del circuito son los pulsos en sí mismos que salen por el pin 3 de OUTPUT.

Funcionamiento

El 555 posee internamente dos comparadores (triángulos a la derecha) y un Flip-Flop (rectángulo).

Al prender nuestro circuito el mismo se encuentra con el OUTPUT apagada ya que en el circuito COMPARATOR 1 el voltaje que trae el pin 2 TRIGGER es 5v lo cual es mayor que ⅓ del voltaje de todo el circuito de 5v que sería 1.67v. Todo el circuito se encuentra descargando a GROUND internamente a través del pin 7 de THRESHOLD.


El botón KEY1 que está conectado en modo pull-up va a hacer que el pin 2 de TRIGGER pase de +5v a 0v al ser pulsado. Esto va a llevar el COMPARATOR 1 compara 1,67v con 0v del pin TRIGGER y como 1,67 es mayor, va a activar el flip-flop y dar un pulso a través del pin 3 de OUTPUT.

Al activar el output se desactiva el transistor del pin DISCHARGE con lo que este deja de descargar a GROUND y comienza a cargarse el capacitor C1SMOOTHINGCAPACITOR2 a través de la resistencia R9 cuando este capacitor supere el valor de ⅔ del voltaje total o 3.3v el COMPARATOR 2 va a activarse reseteando el flip-flop y cortando el pulso. Por eso la duración del pulso está determinado por la resistencia R9 y el capacitor. 

El capacitor se descarga inmediatamente y nuestro circuito va a estar listo para realizar un nuevo ciclo una vez que volvamos a presionar el botón.

Los valores que utilizamos van a ser que el pulso dure una décima de segundo con lo que cualquier rebote que suceda durante esa décima de segundo vamos a poder eliminarlo con este método.

El tiempo que el pulso se mantiene prendido se calcula con la fórmula:

Tiempo = R ohms * C farads* 1.1 con R en kilo ohms y C en microfaradios. 

En nuestro caso R9 es la resistencia R de 1 mega ohm (1000 k ohms) y el capacitor C2 de 100 nF (nano faradios). Si hacemos los cálculos nuestro pulso dura:

T = 1000000  ohms * 0.0000001 faradios * 1.1 = 0,11 segundos o una décima de segundo.

T= 1000 k ohms * 0.1 micro faradios * 0,0011 = 0,11 segundos o una décima de segundo.

Aquí podemos ver cómo se registran los pulsos en nuestro osciloscopio cada vez que pulsamos el botón:

Para más detalle de cómo funciona el circuito en forma monostable les incluyo el datasheet de Texas Instrument sobre el mismo en las referencias.

Reloj a 1 Mhz

Descripción

Este circuito es muy simple el mismo tiene un cristal de cuarzo con un oscilador que vibra a 1 Mhz y un switch con el cual podemos prenderlo o apagarlo dependiendo si lo estamos usando o no. El mismo va a emitir en forma contínua 1 millón de pulsos por segundos.

El circuito consiste en un oscilador de cristal que emite pulsos a la frecuencia de 1 Mhz. El mismo opera a 5 Volts, cuando el cristal recibe este voltaje se expande y contrae a una velocidad fija determinada por el tamaño del cristal y cómo este fue cortado.

Conexión

El cristal se conecta en su Pin de output directamente al Header de Salida de OUT_1MHZ, Incluimos un switch de power off conectado a la conexión de 5v del crystal para apagarlo cuando no lo usemos y que este no genere ruido electrónico a los otros dos relojes.

Funcionamiento

La señal nativa de un cristal de cuarzo no es una onda cuadrada sino que es triangular, el mismo integrado posee un oscilador que transforma esa onda triangular o sinusoidal analógica del cristal de cuarzo en la onda cuadrada que espera la computadora para funcionar.

Para utilizarlo sólo conectamos al header OUT_1MHZ al integrado que necesite una señal de 1Mhz de reloj.

Aquí podemos ver cómo se registran los pulsos en nuestro osciloscopio  de forma fija y a 1 millón de veces por segundo:

Para más detalle de cómo funciona el cristal les incluyo el datasheet de sobre el mismo en las referencias.

Circuito anti bouncing o anti rebote

Descripción

Cuando pulsamos un botón o accionamos un switch mecánicamente el contacto no siempre es perfecto y pueden producirse muchos mini contactos denominados rebotes o bounces. Para evitar que al elegir entre la función de reloj de pulso o continuo se produzca este rebote utilizamos un circuito de anti-bouncing.

Este consiste en un circuito  realizado con un integrado NE555 y conectado de forma bi-stable lo que hace que este se mantenga con su salida en un valor o en otro pero no que no oscile entre ambos. 

Conexión

Para este tipo de conexión conectaremos los pines de la siguiente forma:

  • El pin 1 y el 8 se conectan a GROUND y a +5V respectivamente
  • El pin TRIGGER 2 lo conectamos a switch de 2 estados y a una resistencia R12 de 1K ohms que está conectado a +5v.
  • El pin RESET 4 lo conectamos a switch de 2 estados y a una resistencia R10 de 1K ohms que está conectado a +5v.
  • El pin 6 de THRESHOLD lo dejamos conectado a GROUND.
  • El pin 7 de DISCHARGE lo dejamos sin conectar.
  • El pin 5 CONTROL lo conectamos a GROUND a través de un capacitor C1 de 10 nF (nano faradios). Esto nos va a permitir mejorar la forma de la onda cuadrada de los pulsos.
  • La Salida del circuito son los pulsos en sí mismos que salen por el pin 3 de OUTPUT.

Funcionamiento

El 555 posee internamente dos comparadores (triángulos a la derecha) y un Flip-Flop (rectángulo).

El botón SW1 es quien regula en qué estado está a través de conectar a ground el pin TRIGGER o el pin RESET. 

Si el pin TRIGGER no está conectado a GROUND a través del switch SW1 se encuentra en +5v por estar conectado en forma pull-up, por lo tanto el COMPARATOR 1 del flip-flop tiene en su entrada del pin TRIGGER +5v y como este valor es mayor que ⅓ del voltaje total de 5v o sea 1.67v el mismo está desactivado. Si conectamos a GROUND el pin TRIGGER a través del switch SW1 tenemos que 1.67v es mayor que 0v y por esto se activa al flip-flip en el pin SET y este causa que el pin de OUTPUT quede siempre activo.

Como el pin Threshold está en 0v que es menor a ⅔ del voltaje total de 5v  o sea 3.3v nunca va activar al COMPARATOR 2.

Si el pin RESET no está conectado a GROUND a través del switch SW1 se encuentrá en +5v por estar conectado en forma pull-up, y no hace nada. Al presionar el switch y conectarlo a GROUND activa la entrada R1 de reset del flip-flop y se desactiva el mismo cortando la salida del pin OUTPUT.

La duración del pulso es lo que dejemos cerrado o abierto el SW1 en la posición que queramos. Este switch sólo no selecciona si usar de output el Reloj de pulsos contínuos o el Reloj paso a paso sino que para eso usaremos Lógica TTL o transistor a transistor junto con el output de este circuito.

Lógica TTL

Descripción

Vamos a utilizar 3 compuertas

Conexión

Compuerta AND

  • El pin 14 recibe 5v de alimentación y el pin 7 0v de GROUND
  • El pin 1 conecta la salida del NOT del inversor HLT o HALT
  • El pin 2 conecta el OR de la salida del Reloj Paso a paso y el Reloj regulable en velocidad o de pulsos contínuos.
  • El pin 3 es la salida con la señal de reloj o CLK.
  • Los pines 4,5 y 6 no están conectados.
  • El pin 13 OUT_POT la salida del Reloj de Pulsos se combina con el pin 12 OUT_BI la salida del 555 que selecciona el reloj de pulsos contínuos o el paso a paso. El pin 11 es la salida ya filtrada del reloj de pulsos AND_OUT_POT_BI_31
  • El pin 9 OUT_PUSH  la salida del Reloj paso a paso se combina con el pin 10 NOT_OUT_BI la salida del 555 que selecciona el reloj de pulsos o al paso a paso cuando vale cero invertida para que valga 1. El pin 8 es la salida ya filtrada del reloj paso a paso AND_OUT_NOT_BI_PUSH_62

Compuerta NOT

  • El pin 14 recibe 5v de alimentación y el pin 7 0v de GROUND
  • Los pines 1,2,3,4,5,6 no están conectados
  • El pin 13 OUT_BI provoca la seña inversa NOT_OUT_BI para tener un valor 1 que combinar con AND para el caso del reloj paso a paso.
  • El pin 11 HLT tiene la señal de HALT que se invierte en el pin 10 NOT_HLT_810
  • El pin 9 CLK tiene la señal de reloj que se invierte en el pin 8 NOT_CLK

Compuerta OR

  • El pin 14 recibe 5v de alimentación y el pin 7 0v de GROUND
  • El pin 13 recibe la salida de la compuerta and AND_OUT_POT_BI_31 y la combina con la  salida de la compuerta and AND_OUT_NOTBI_PUSH_62 dando lugar a la salida OR_OUT_39

Conexión Headers

  • El pin 1 del header OUT_555 está conectado a ground
  • El pin 2 HLT está conectado a la compuerta NOT en su pin 11
  • El pin 3 de la compuerta AND está conectado a los pines 2, 3 y 4 del header OUT_555
  • El pin 8 de la compuerta NOT está conectado a los pines 6,7 y 8 dando una señal de clock inversa.
  • Los pines 1,2,3,4,5,6,7,8 del header OUT_1MHZ están todos conectados a la salida del oscilador de 1Mhz.
  • El Led está conectado a la señal de reloj CLK del header OUT_555, el mismo posee una resistencia de 220 ohms para que este no se queme.

Funcionamiento

Las compuertas AND, NOT y OR tienen 3 funcionalidades bien distintas las cuáles vamos a observar viendo su tabla de verdad.

AND

Necesita que los dos inputs sean HIGH o 5v para dar de resultado un HIGH o 5v.

NOT

Invierte el resultado de su input si recibe un HIGH o 5v da como resultado un LOW o 0v

OR

Necesita que alguno dos inputs sean HIGH o 5v para dar de resultado un HIGH

La señal del Reloj de Pulso llamada OUT_POT es conectada en un AND con la señal saliente del 555 biestable OUT_BI cuando ambas son 1 esto genera la salida AND_OUT_POT_BI_31 que representa el valor del pulso ya filtrado para el reloj de pulsos contínuos.


La señal del Reloj paso a paso llamada OUT_PUSH es conectada en un AND con la señal saliente del 555 biestable OUT_BI cuando está apagado, pero como es un AND necesitamos que cuando esté desconectado tengamos un 1 en lugar de un cero por eso lo pasamos antes por el inverter y generamos la señal NOT_OUT_BIT. Ahora cuando ambas  señales son 1 esto genera la salida AND_OUT_NOT_BI_PUSH_62  que representa el valor del pulso ya filtrado para el reloj paso a paso.


Las señales de Reloj Paso a Paso (AND_OUT_NOT_BI_PUSH_62) y reloj a Pulso (AND_OUT_POT_BI_31) ambas ya filtrada por el 555 biestable, son conectadas en la compuerta OR donde aparece la señal de una o la otra dando como salida OR_OUT_39 en el pin 11.

La señal de ambas salidas OR_OUT_39 se junta en un AND como pin 2, con el negativo de la señal de HLT ( NOT_HLT_810) o HALT que pasa por un inverter para generar la señal de reloj CLK como pin 1. 


De esta forma si HLT está conectado a 0v cuando pase a través del inverter valdrá 5v al ir a la compuerta AND cada vez que reciba un pulso de reloj ejecutará la operación and con los +5v del inverso de HLT (NOT_HLT_810)y producirá un pulso de reloj en el pin 3 de la compuerta AND llamado CLK.

Con esto tenemos nuestras tres salidas de reloj. En el Header OUT_555 la del Reloj de pulsos o la del paso a paso de la señal CLK y en el Header OUT_1MHZ la del oscilador de cristal de 1Mhz complementamente independientes ambas.

Circuito de la Placa CLOCK de la 20c

El siguiente gráfico muestra el circuito que explica el funcionamiento de la placa CLOCK.

El circuito posee los siguientes elementos:

SOCKETs 555

Tenemos 3 Sockets de 8 pines en formato dip para colocar los 3 timers NE555, es importante alinear el pin 1 con el valor de pin 1 que encontraremos escrito en la placa PCB.

SOCKETS AND, NOT, OR

Estos son 3 sockets de 16 pines tipo dip para alojar a nuestros chips AND 74HC08, NOT 74HC04 y OR 74HC32. es importante alinear el pin 1 con el valor de pin 1 que encontraremos escrito en la placa PCB.

HEADER OUT_555

Este es un header hembra de 8 pines los cuáles tienen  una conexión de ground para conectar al puerto HLT o halt de forma tal que arranque nuestro clock y tres pines CLK con el pulso de clock y 3 pines NOT CLK con el pulso de clock invertido

HEADER OUT_1MHZ

Este es un header hembra de 8 pines los cuáles tienen la salida de nuestro oscilador de 1Mhz

SWITCHES ON/OFF

Tenemos dos switches single pole double throw. Uno sirve para seleccionar entre el Reloj de Pulsos y el Paso a Paso y el otro para prender o apagar el oscilador de cristal de 1Mhz. 

HEADER POWER y GROUND

Este header posee dos pines y están conectados a las capas de 5V y de GROUND respectivamente. Tenemos cuatro de estos conectores, uno en cada esquina de la placa.

BOTON

Tenemos un botón para poder marcar los pulsos en forma manual cuando utilicemos el reloj paso a paso. 

POTENCIÓMETRO

Para nuestro reloj regulable en velocidad usamos un potenciómetro de 1 Mega Ohm que nos da una resistencia variable la cual nos permite aumentar o disminuir la velocidad de los pulsos de nuestro reloj.

RESISTENCIAS

Utilizamos resistencias varias para poder regular nuestros timers NE 555.

CAPACITORES

Utilizamos capacitores varias para poder regular nuestros timers NE 555.

AGUJEROS para TORNILLOS

Para poder fijar nuestra placa a distintos lugares la misma cuenta con 6 agujeros para tornillos de 3mm o M3.

NETLIST

Los componentes están conectados entre sí a través de un objeto llamado netlist el cual nos permite tener diagramas más limpios.

Este funciona de forma tal que todo lo que tenga el mismo nombre pertenece al mismo netlist y deberá estar conectado junto cuando hagamos el PCB (con traces). 

En nuestro ejemplo todas las conexiones CLK estarán conectadas por traces en el PCB.

PCB de la Placa CLOCK de la 20c

El siguiente PCB explica cómo se ubican los elementos y traces para conectar nuestro circuito. El PCB es de 4 capas teniendo en la capa llamada TOP todas las conexiones de nuestros netlist a través de traces, los cuáles son finas capas de cobre que conectan los mismos como si fueran cables.

Tenemos dos capas especiales llamadas 5v y GROUND donde conectaremos las conexiones de power y ground o masa. Al usar estas conexiones en capas separadas nos ahorramos muchos centímetros de traces que deberían conectarse a pines con los voltajes de 5V y GROUND y podemos conectar directamente estos pines a la capa correspondiente.

Otra ventaja de tener una capa entera para GROUND es poder aislar el ruido eléctrico de las conexiones entre componentes.

Por último tenemos la capa de BOTTOM donde se sueldan nuestros componentes y tenemos conexiones adicionales.

Modelado 3D

Cuando terminamos de realizar nuestra Placa debemos proceder al modelado 3D de la misma para observar cómo queda y si nos gusta el lugar donde pusimos cada componente.

Generación de archivos fuente

Para poder mandar a fabricar nuestro PCB deberemos contar con al menos 3 archivos:

  1. Archivo .gerber donde le indicamos al fabricante como armar nuestra placa
  2. Archivo BOM o Bill of materials donde se encuentran todos los componentes que forman nuestra placa con el código de producto del fabricante.
  3. Archivo Pick and Place donde le indicamos al fabricante cómo ubicar los componentes en nuestra placa PCB.

Estos archivos los van a encontrar previamente generados en el github de Osolabs.

https://github.com/osolabstech/The20c/tree/main/Episode2_CLOCK/v03_CLOCK_4Plane

También incluimos archivos para poder editar el circuito con el software EasyEDA o Altium Designer.

Con estos tres archivos vamos a poder fabricar nuestra placa

Gerber_v03_CLOCK_4Plane_2025-01-28.zip

Este archivo contiene todos los planos para poder generar nuestra placa PCB.

BOM_v03_CLOCK_4Plane_v03_CLOCK_4Plane_2025-01-28.xlsx

Contiene todos los componentes de nuestra placa y el código del fabricante que identifica a ese componente.

PickAndPlace_v03_CLOCK_4Plane_2025-01-28.xlsx

Indica en qué parte del PCB va cada componente y en qué capa debe ubicarse.

Los siguientes archivos se proveen para poder editar el circuito 

3DModel_CLOCK_FRONT.png

Es una imágen con la parte de atrás de nuestra placa modelada en 3D

3DModel_CLOCK_BACK.png

Es una imágen con la parte de adelante de nuestra placa modelada en 3D

Altium_Circuit_1_v03_CLOCK_4Plane_Page1.schdoc

Contiene el diseño del circuito editable con el programa Altium Designer.

Altium_Circuit_2_v03_CLOCK_4Plane_Page2.schdoc

Contiene el diseño del circuito editable con el programa Altium Designer.

Altium_PCB_v03_CLOCK_4Plane.pcbdoc

Contiene el diseño del PCB editable con el programa Altium Designer.

PCB_v03_CLOCK_4Plane_2025-01-28.pdf

Es un PDF con un dibujo de cada capa del PCB

ProDoc_v03_CLOCK_4Plane_2025-01-28.epro

Archivo para EasyEDAPro con el circuito y el PCB el cual puede editarse.

SCH_v03_CLOCK_4Plane_2025-01-28.pdf

Es un PDF con los circuitos lógicos de la placa

Preparación de las Placa CLOCK

Al recibir nuestra placa de la fábrica y antes de comenzar a utilizar la misma y al momento que la sacamos de la caja, hay algunas tareas que deberemos hacer para poder hacer uso al máximo de la misma:

  1. Remover los bordes de manipulación de la placa
  1. Limpiar placa con alcohol isopropílico
  1. Poner chips 555 en los sockets
    1. Ajustar a mano las patas del chip para que calcen el socket
    2. Alinear pin 1 con el pin 1 en el socket
    3. Primero insertar un lado del chip, poniendo el mismo en diagonal y luego el otro lado
    4. Verificar que ninguna patita quedó doblada
    5. Hacer presión y ver que todas están bien ajustadas en el socket
  1. Poner chips AND, NOT, OR en los sockets correspondientes.
    1. Ajustar a mano las patas del chip para que calcen el socket
    2. Alinear pin 1 con el pin 1 en el socket
    3. Primero insertar un lado del chip, poniendo el mismo en diagonal y luego el otro lado
    4. Verificar que ninguna patita quedó doblada
    5. Hacer presión y ver que todas están bien ajustadas en el socket
  1. Poner Tornillos de soporte de la placa para que esté levantada por encima de la superficie.

Guía de Conexión de la placa CLOCK de la 20c

Vamos a explicar como conectar los distintos componentes de la placa para dejar esta lista para funcionar en una maqueta. Esta es una configuración con todas las placas que vamos a utilizar aunque todavía no las hayamos visto. Puedes tener esta sección como referencia para cuando ensambles toda la 20c.

CLOCK

Para configurar la placa de CPU 6502 vamos a realizar las siguientes conexiones.

  1. Conectamos el conector de ground del header CLOCK_555_OUT al pin HLT, de esta forma nuestro reloj va a funcionar, el pin HLT sirve apra prender y apagar el reloj de forma programática.
  1. Conectar el pin de CLK del header CLOCK_555_OUT de nuestra placa de CLOCK al header de EXPANSION BUS de otra placa de la 20c que utilicemos (por ejemplo la placa de CPU 6502) de esta forma podremos dar pulsos con el reloj regulable en velocidad o el paso a paso. 
  1. Alternativamente conectar el pin de OUT_1MHZ  del header CLOCK_OUT_1MHZ de nuestra placa de CLOCK al header de EXPANSION BUS de otra placa de la 20c que utilicemos (por ejemplo la placa de CPU 6502) de esta forma podremos dar pulsos con el reloj de 1 Mhz.
  1. Conectar los pines 5v y GROUND a una fuente de 5V y 0v, respectivamente.

Experimento – Probando el CLOCK con el Proceso de RESET y la instrucción NOP

Vamos a realizar nuevamente este experimento probando nuestro CLOCK pero vamos a variar las velocidades del mismo. Repasamos cómo se ve la configuración de la instrucción NOP y la base del experimento.

Le vamos a indicar a Mano a nuestro CPU 6502 que ejecute la instrucción de no operación NOP, la misma está codificada como EA en las instrucciones del lenguaje máquina del 6502.

EA se traduce en binario cómo 1110 1010 y esto es lo que va a esperar nuestro procesador en sus pines de data para poder leer esa instrucción. Para poder hacerlo vamos a conectar 8 resistencias a nuestros pines de datos de la siguiente forma:

Si corremos una secuencia de reset tocando el botón de RESET del la placa CPU 6502 y observamos el resultado, veremos cómo ejecuta el reset en 7 ciclos de reloj y buscará en las posiciones de memoria FFFC y FFFD donde está el vector (otra posición de memoria) que posee la primera instrucción a ejecutar. Tarda 7 ciclos ya que en RESET no es ni más ni menos que una instrucción BRK o BREAK cargada por hardware a través del pin de RESET.

 El reset debe ser mantenido en 0v por lo menos durante dos ciclos de reloj para que sea reconocido.

Experimento 1 – Reloj Paso a Paso

  1. Conectamos el pin CLK del header CLOCK_555_OUT
  1. Seleccionemos el switch para el reloj paso a paso. 
  1. Presionemos el botón de reset de nuestro CPU y dejemoslo presionado.
  1. Presionar 3 veces el botón de STEP BUTTON de nuestra placa de CLOCK
  1. Soltar el botón de RESET de nuestro CPU
  1. Continuemos presionando el botón de STEP BUTTON de nuestra placa de CLOCK y veremos que cada vez que lo hacemos avanza un ciclo en  nuestro CPU, algunas instrucciones ocupan un ciclo de reloj y otras más

Experimento 2 – Reloj regulable en velocidad

  1. Conectamos el pin CLK del header CLOCK_555_OUT
  1. Seleccionemos el switch para el reloj regulable en velocidad. 
  1. Presionemos el botón de reset de nuestro CPU y dejemoslo presionado por lo menos 2 ciclos de reloj.
  1. Soltar el botón de RESET de nuestro CPU
  1. Regulemos la velocidad del reloj utilizando el potenciómetro veremos cómo se aceleran y ralentizan las instrucciones dependiendo para donde giremos el mismo.

Experimento 3 – Reloj de 1 Mhz

  1. Conectar el pin de OUT_1MHZ  del header CLOCK_OUT_1MHZ
  1. Seleccionemos el switch para prender nuestro reloj de 1Mhz CRYSTAL ON/OFF
  1. Presionemos el botón de reset de nuestro CPU y dejemoslo presionado por lo menos 2 ciclos de reloj.
  1. Soltar el botón de RESET de nuestro CPU
  1. Veremos lo rápido que van las instrucciones casi ni las podremos ver, esto es así ya que nuestro reloj funciona a un ritmo de 1 millón de ciclos por segundo. 

Conclusiones

La Placa CLOCK nos va a dar el ritmo para poder ejecutar las instrucciones de nuestra 20c y sincronizar entre sí todos los chips que le conectemos, memorias, periféricos cpu, etc. 

La placa CLOCK en funcionamiento

Para ver visualmente cómo conectar la placa CLOCK a la 20c les dejo como siempre un video en detalle de la serie. En este vamos a ver cómo se conectan los pines, y nuestro experimento en forma visual indicando. Buscar el video del Episodio 2 

Referencias

A continuación les dejo algunos links donde profundizar el tema:

WEBSITE

Aquí está el sitio de OsoLabs con todos los videos y artículos.

OsoLabs.tech 

VIDEOS

Aquí el video correspondiente a este capítulo y la lista de todos los videos de esta serie.

https://www.osolabs.tech/the20c

ARTICULOS

Aqui podrán encontrar todos los artículos sobre la 20c:

https://www.osolabs.tech/the20c

CÓDIGO y DISEÑO DE PLACAS PCB

Todos los ejemplos de código de este artículo los pueden encontrar en:

https://github.com/osolabstech/The20c

OTROS RECURSOS

Y como siempre la serie de Ben Eater del 6502 que es excelente:

Build a 6502 computer | Ben Eater 

Astable 555 timer – 8-bit computer clock – part 1 

Monostable 555 timer – 8-bit computer clock – part 2 

Bistable 555 – 8-bit computer clock – part 3 

Clock logic – 8-bit computer clock – part 4 

Y la serie de mi creación comparando el 6502 vs 6510 tanto en video como en artículos

https://www.osolabs.tech/6502vs6510

6502 vs 6510 estudio detallado y comparación – YouTube 

C64 a Fondo – Indice

PAPERS / Datasheets

NE555P Datasheet 

1 Mhz Crystal Oscillator 

SNx4HC08 Quadruple 2-Input AND Gates datasheet (Rev. I) 

SNx4HC04 Hex Inverters datasheet (Rev. H)

SNx4HC32 Quadruple 2-Input OR Gates datasheet (Rev. F)  

SNx4HC00 Quadruple 2-Input NAND Gates datasheet (Rev. H) 

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 *