Entrenador de CPU de 4 bits – Parte 4

Introducción

Estando ya en una fase avanzada del desarrollo de nuestro proyecto, con la CPU ya especificada, nos queda ahora diseñar el hardware del equipo entrenador.

Como habíamos definido en capítulos previos, nuestra tarjeta entrenadora se basará en la emulación de la CPU por parte de un microcontrolador de 8 bits, de modo que la circuitería se simplificará notablemente.

El microcontrolador elegido para este proyecto es uno de mis favoritos, el PIC16F887 que tiene una cantidad generosa de puertos y puede trabajar con un voltaje de 3V sin problemas, además de tener un consumo muy bajo, lo que nos permitirá trabajar con una simple pila CR3032.

Para mantener el consumo bajo, usaremos poca corriente para iluminar a los leds, así que no exhibirán un brillo intenso pero será suficiente para notarlos cuando están encendidos.

Como nuestra CPU de 4 bits vivirá en el software del microcontrolador, el único circuito activo puede ser el mismo microcontrolador, mientras que los pulsadores y leds solo serán periféricos pasivos conectados al PIC, siempre que los pines digitales sean suficientes.

Recordemos el diseño de la interfaz de control de nuestra tarjeta entrenadora:

Tarjeta entrenadora

Si sumamos la cantidad de botones necesarios, de acuerdo a nuestra interfaz, veremos que existen 14 en total. La totalidad de leds es 17, así que en total necesitaríamos 31 pines digitales del microcontrolador.

Por suerte, el PIC16F887 incluye 33 pines disponibles para entrada/salida, sin considerar los pines del oscilador y del MCLR, que también podrían ser usados, en caso de ser necesario.

Por el momento, tenemos pines suficientes para manejar los leds y los pulsadores, así que solo queda cablear para distribuir de la mejor forma las conexiones, considerando que el puerto B del PIC16F887 incluye internamente resistencias en Pull Up, así que es el favorito para conectar la fila de pulsadores que van del B7 a B0, y así no ahorraremos 8 resistencias.

También conviene conectar los 8 leds, del A7 al A0, a un puerto completo del PIC para facilitar la implementación del emulador. Este puerto puede ser el C. Los demás pines los iremos distribuyendo para que controlen los leds o pulsadores disponibles.

El esquemático

Un primer acercamiento del circuito podría ser el siguiente:

Avance del esquemático del entrenador de CPU

Aquí hay varios detalles que mejorar. El primero es que, el pin A4 es de colector abierto cuando se usa como salida y debería incluir una resistencia adicional. Pero usarlo de esta forma implicaría que el nivel bajo de este pin consumiría corriente continuamente, lo que no es útil para un equipo portatil.

Otro detalle es que, esta distribución de líneas no considera para nada la disposición física de los pines en el circuito impreso, y, aunque no sería problema en un PCB de doble cara, sí representa un inconveniente, si es que deseamos usar un PCB de una sola cara.

Corrigiendo estos detalles, completando algunos valores y agregando la sección de alimentación, tendremos el siguiente diagrama más completo:

Diagrama esquemático del entrenador de CPU

La asignación, algo caprichosa, de pines obedece a que se está priorizando el ruteo de pistas en el PCB, porque queremos tener la posibilidad de poder disponer de una versión de circuito impreso de una sola cara.

Se ha agregado una batería como y un interruptor como fuente de alimentación, además del correspondiente filtro. También, se han eliminado el cristal y la resistencia de Vpp del pin 1, porque se va a usar el oscilador interno que posee el microcontrolador, ya que no necesitamos precisión en la oscilación ni tampoco una velocidad muy elevada del reloj.

Notar que las resistencias de Pull Up de los pulsadores del lado izquierdo se han puesto en 22K. Este valor se ha elegido así porque:

  • Es suficientemente grande para no exigir corriente cuando se usen los pulsadores, a la vez que no es tan alto como para agregar sensibilidad al ruido.
  • El encapsulado de las resistencias de este valor (estaremos usando versiones THT) tiene colores que son difíciles de confundir con las resistencias de 1K que son el otro grupo de valores usados en los leds.

Con el circuito definido, ya podemos pasar al diseño del PCB, que, como hemos definido anteriormente. Para facilidad del ensamblado, diseñare dos versiones: una de doble cara, y una de una sola cara. Ambos con componentes de agujero pasante (THT) que son los más fáciles de comprar, manipular y de ensamblar.

La otra opción, la más compacta, sería usar componentes de montaje superficial y una placa con doble cara. De esta forma se reduciría considerablemente el tamaño del PCB, pero esta opción no la trabajaré aquí, porque, uno de los objetivos de este diseño es que sea fácilmente fabricable por la mayoría de personas.

El circuito impreso de una cara

Teniendo en mente los requerimientos de diseño impuestos, pasamos a diseñar el PCB del circuito. En mi caso, estoy usando KiCad por primera vez, así que no creo que mi diseño sea de lo mejor, pero se ve decente:

PCB del entrenador de CPU

Por suerte, se ha logrado ubicar todos los componentes en un PCB de una sola cara, sin necesidad de un solo puente o cable adicional. Este ruteo me ha tomado cierto tiempo, pero debo decir que me lo he tomado como un desafío personal.

He optado por usar pistas anchas de 0.7mm y una separación considerable entre pistas adyacentes, para ofrecer más facilidad de fabricación del PCB por métodos caseros.

El circuito impreso tiene un tamaño de 11.4 cm por 10.2 cm, que no es muy grande, pero se debe al tamaño del encapsulado de los componentes usados, al ancho de pistas y al hecho de que estamos usando una sola cara.

La ubicación de los botones no es la buscada inicialmente en el diseño de la interfaz pero se parece bastante. Nuevamente, se debe a las limitaciones impuestas en el diseño del PCB.

Algo que puede resultar útil es la pequeña tabla de las instrucciones que se ha incluido como parte de la serigrafía del PCB. Así no es necesario memorizar todos valores binario de las instrucciones de la CPU.

La vista en 3D es reveladora en cuanto a la ubicación de los pulsadores:

Vista en 3D de la tarjeta entrenadora.

Los pulsadores mostrados no son los que pienso usar pero son los únicos que encontré que mejor se adaptan al diseño.

Con el diseño listo ya solo queda construirlo, pero como aún no he ido a la tienda de componentes, quedará todavía como diseño. Mientras tanto voy dejando el diseño para quienes desean fabricarlo o mejorarlo.

Circuito impreso de doble cara

Para los que deseen una versión algo más compacta y disponen de más posibilidades de fabricación, aquí va una versión de doble cara;

PCB de doble cara del entrenador de CPU

La verdad es que no se ve mucho ahorro en el espacio (11cm por 9.7cm), pero eso es porque no le he dedicado mucho tiempo a optimizar el espacio (se nota porque hay pocas pistas por la cara de componentes), además de que se requiere espacio para poner la leyenda con la lista de instrucciones de la CPU y sus códigos binarios.

Tampoco se puede esperar ganar mucho espacio si se quiere mantener cierta estética y seguir usando la versión DIP del microcontrolador.

Debo aclarar que la disposición de los pulsadores ha tratado de ser lo más ergonómica posible (si cambe el término), considerando que la tarjeta se manipulará como si fuera un mando de videojuego. El tiempo dirá si se logró el objetivo.

Por cuestiones de suerte, pude mandar a fabricar este PCB, y ya solo queda probar si funciona. Dejo aquí los archivos completos del KiCad:

Si alguien hace una versión en SMD, compártanmelo para publicarla también.

Aún queda pendiente crear el software del microcontrolador para que realice la emulación de la CPU, pero eso lo dejo para otro capítulo.


Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*