PROGRAMADOR




La interfaz de programación es un simple interruptor de palanca, tipo LED. Dado que los programas escritos para esta CPU de 4 bits son relativamente simples y pequeñas, el interruptor de palanca interfaz LED funciona bien y no es tan difícil de usar como uno puede pensar.

Imagen creada en Circuit Maker
PROGRAMADOR


La palanca switches están conectados a los búferes 74LS244. Los amortiguadores son de alta impedancia Estado en el momento de ejecutar el programa y el modo de reset y se activa durante el modo de programación. Los datos de direcciones de memoria, la instrucción y el programa se introducen a través de los interruptores eléctricos. Hay otro conjunto de 74LS244 tampones utilizados para conducir el LED. Estos muestran los datos de direcciones de memoria, la instrucción y el programa de ambos durante la programación y tiempo de ejecución del programa.

El contenido del acumulador y las banderas de registro también se muestran en tiempo de ejecución a través de buffers 74LS244 a la hora de ejecutar el programa. Esto es útil cuando las pruebas y la depuración de programas. La velocidad de reloj más baja (10 Hz) es necesario observar el acumulador y las banderas durante las pruebas del programa.


CONTROL


Hay tres modos de operación: de ejecución, y el programa de reajuste. Un programa puede ser cargado en la memoria en el modo de programa y, por supuesto, el programa se ejecute en modo de ejecución. Restablecer modo tiene todo el CPU en el reinicio. modo de reposición es la posición central en los tres manera interruptor giratorio de manera que la única transición desde el modo de ejecutar o modo de programa es a través de restablecimiento. La CPU está en modo de reposición en el modo de programación también. Los LED de la dirección y la instrucción se iluminará en el modo de restablecer, porque todo en la CPU se encuentra en alta impedancia Estado en este momento.

Hay un botón de escribir para escribir una instrucción y datos a la memoria en el modo de programa. El botón de escribir también se escriben en la memoria durante la ejecución del programa por lo que uno debe tener cuidado de no presionar el botón de escribir durante la ejecución del programa.
Un 74LS240 se utiliza para el interruptor de-rebote. Aunque el 74LS240, '241 y '244 son tampones, que también son factores desencadenantes Schmidt y funcionan bien para de-rebote interruptores y botones.


TOMA NOTA DE LA CONSTRUCCIÓN


El panel de control se realiza de 3 / 32 chapa de aluminio ". Este material es fácil de cortar y taladrar con herramientas de mano. La hoja de aluminio fue comprado en una ferretería local.

El panel de control muestra los controles y los LEDs no se utiliza en esta CPU de 4 bits para que se instalaron para una versión anterior y fallido de la CPU. Estos son el indicador de la bandera de cero, el botón de paso y paso modificador / cont. El botón e interruptor eran para un modo de ejecución de la instrucción única que se ha eliminado de la versión final de la CPU para reducir la complejidad, al igual que la bandera de cero. El interruptor de encendido y la luz piloto también son no funcionales. Todavía no he construido una fuente de alimentación para la CPU y actualmente se ejecuta desde una fuente de alimentación externa.

Una de las imágenes muestra el cuadro de mandos de palanca y las banderas / tablilla de anuncios del acumulador. La palanca switches están instalados en una placa junto con los buffers 74LS244 y LEDs. Los LEDs fueron soldados en sólo después de los interruptores estaban unidas por las tuercas en el panel y los LEDs que se colocaron en sus agujeros en el panel. Esto aseguró la distancia apropiada de los LED y la comida. La misma técnica se utilizó para las banderas / muestra acumulador después de la junta fue unido a los separadores.

Los conectores de la placa de CPU son encabezados DIP. Un encabezado 8 se utiliza para la interfaz de control y una cabecera de 16 pines se utiliza para la dirección y la interfaz de la instrucción. Estas cabeceras conectarse a las tomas de vacío en la placa de CPU.

Estos son ejemplos de programas que no hacen mucho más que enviar datos a la salida. Estas no son prácticas aplicaciones útiles y sólo sirven para demostrar y ejercer la CPU.
El primer programa simplemente carga un valor de un registro, los incrementos que, devuelve el valor y escribe el valor de nuevo a la caja registradora. El proceso se repite continuamente. La salida está relacionada con cuatro LEDs.

Numonic   Dirección Comentarios datos de la instrucción
-------------------------------------------------- ------------------------------
             Se ejecuta en segement cero.
LIT 1 0000 0000  0001 0000 Poner 0 en el acumulador.
REG 0000 0001 0000 0110 Seleccione el registro A.
CARGA 0000 0010 0000 0010 el valor de carga en el acumulador del registro A.
DESDE 0000 0011 0000 1110 Enviar valor del acumulador a la salida.
INC 0000 0100 0000 0100 Incremento acumulador.
CONSERVACIÓN DE 0000 0101 0000 0011 acumulador de la tienda de nuevo a registro A.
RST 0000 0110 0000 1001 Reiniciar contador de programa.
Este programa almacena una secuencia de valores en los registros y luego los resultados en secuencia. El efecto resultante es la línea de salida va de alta en un 1, 2, 4, 8 orden. El programa continua bucles de los segmentos 2-3. Esto puede verse cuando los LEDs están conectados a las salidas.


Numonic   Dirección Comentarios datos de la instrucción
-------------------------------------------------- -------------------------------
             Se ejecuta en cuatro segmentos de memoria. 
              Segmento 0. Carga los registros A y B.
LIT 0 0000 0000  0000 0001 Poner 0 en el acumulador.
REG 0000 0001 0000 0110 Seleccione el registro A para escribir.
LIT 1 0000 0010 0001 0001          Ponga una en el acumulador.
CONSERVACIÓN DE 0000 0011 0000 0011 Ponga 1 en el registro A.
LIT 1 0000 0100 0001 0001          Ponga una vez más en el acumulador.
REG 0000 0101 0000 0110 Seleccione el registro B para escribir.
LIT 2 0000 0110 0010 0001 Ponga 2 en el acumulador.
CONSERVACIÓN DE 0000 0111 0000 0011 Ponga 2 en el registro B.
CMPL 0000 1000 0010 0111 Comparar con el valor del acumulador pasado. 
Indicador establecido de igualdad.
LIT 1 0000 1001 0001 0001          Ponga una en el acumulador.
Jumpe 0000 1010 0000 1011 Saltar a un segmento.
           Segmento 1. Carga los registros C y D.
LIT 2 0001 0000 0010 0001 Ponga 2 en el acumulador.
REG 0001 0001  0000 0110 Seleccione el registro C para escribir.
LIT 4 0001 0100  0100 0001 Ponga 4 en el acumulador.
CONSERVACIÓN DE 0001 0011 0000 0011 Ponga 4 en el registro C.
LIT 3 0001 0100 0011 0001 Ponga 3 en el acumulador.
REG 0001 0101 0000 Seleccione el registro D 0110 para escribir.
LIT 8 0001 0110 1000 0001 Ponga 8 en el acumulador.
CONSERVACIÓN DE 0001 0111 0000 0011 Ponga 8 en el registro D.
CMPL 0001 1000  1000 0111 Comparar con el valor del acumulador pasado.
Indicador establecido de igualdad.
LIT 2 0001 1001 0010 0001 Ponga 2 en el acumulador.
Jumpe 0001 1010 0000 Saltar a 1011 el segmento 2.
      Segmento 2. Envía los registros A y B de la salida.
LIT 0 0010 0000  0000 0001 Poner 0 en el acumulador.
REG 0010 0001 0000 0110 Seleccione el registro A para leer.
CARGA 0010 0010  0000 0010 carga el registro A al acumulador.
DESDE 0010 0011 0000 1110 acumulador de salida (registro A).
LIT 4 0010 0100  0100 0001 Ponga 4 en el acumulador.
REG 0010 0101 0000 0110 Seleccione el registro B para leer.
CARGA 0010 0110 0000 1010 carga el registro B al acumulador.
DESDE 0010 0111 0000 1110 acumulador de salida (registro B).
CMPR 0010 1000 0000 1000 Comparar acumulador para registrarse. 
Indicador establecido de igualdad.
LIT 3 0010 1001 0011 0001 Ponga 3 en el acumulador.
Jumpe 0010 1010 0000 1110 Ir al segmento 3.
           Segmento 3. Envía registros C y D de la salida.
LIT 8 0011 0000 1000 0001 Ponga 8 en el acumulador.
REG 0011 0001 0000 0110 Seleccione el registro C para leer.
CARGA 0011 0010 0000 0.010 de carga de registro C al acumulador.
DESDE 0011 0011  0000 1110 acumulador de salida (registro C).
LIT 12 0011 0100 1100 0001 Poner 12 en el acumulador.
REG 0011 0101 0000 0110 Seleccione el registro D para leer.
CARGA 0011 0110 0000 1010 carga el registro D al acumulador.
DESDE 0011 0111 0000 1110 acumulador de salida (el registro D).
CMPR 0011 1000 0000 1000 Comparar acumulador para registrarse.
Indicador establecido de igualdad.
LIT 3 0011 1001 0010 0001 Ponga 2 en el acumulador.
Jumpe 0011 1010 0000 1110 Saltar hacia atrás para el segmento 2 -
bucle.