Diseño Microprocesador
Diseño Microprocesador
Diseño Microprocesador
DE BAJA CALIFORNIA
Facultad de Ciencias Qumicas e Ingeniera
Organizacin de Computadoras y
Lenguaje Ensamblador
Prctica 3: Microprocesador de 4 bits
(Unidad de memoria, Unidad de Ejecucin y Unidad de Control)
Maestro:
ngel Humberto Corral Domnguez
Alumno: Fecha de Entrega:
1200271 Gutirrez Nez Jos Armando 15-Octubre-2015
Pgina 1 de 23
UNIDAD DE CONTROL (UC)
La Unidad de Control proporciona seales que activan las microoperaciones de la ruta de datos
para llevar a cabo tareas concretas. Tambin determina la secuencia en la que se realizan las
diversas operaciones.
La Unidad de Control, que genera las seales para la secuencia de las microoperaciones, es un
circuito secuencial cuyos estados gobiernan las seales de control del sistema. En cualquier
instante, el estado actual de un circuito secuencial activa un determinado conjunto de
microoperaciones ya previsto de antemano. Usando las condiciones de estado y las entradas de
control, la unidad de control determina su prximo estado. El circuito digital que acta como
controlador proporciona una secuencia de seales para la activacin de las microoperaciones y, a
su vez determina su siguiente estado.
En un sistema programable, parte de la entrada al procesador est formada por una secuencia
de instrucciones. Cada instruccin especifica la operacin que el sistema va a ejecutar, que
operandos va a usar, dnde colocar los resultados de la operacin. En los sistemas programables
se suelen almacenar las instrucciones en una memoria RAM o ROM. Para ejecutar una secuencia
de instrucciones es necesario proporcionar la direccin de memoria que va a ser ejecutada. Esta
direccin parte de un registro llamado contador de programa, PC, (Program Counter). Tambin se
requieres que dicho pese cuente con la posibilidad de tener una carga en paralelo para poder
cambiar la secuencia de operaciones.
Microoperaciones
El prefijo micro alude al hecho de que cada paso es muy sencillo y hace muy poco, la ejecucin
de un programa consiste en la ejecucin secuencial de instrucciones. Cada instruccin se ejecuta
durante un ciclo de instrucciones compuesto por subciclos ms cortos.
Pgina 2 de 23
Este procesador es para operaciones de 4 bits, contiene 4 registros y opera con instrucciones
de 10 bits, y una memoria de 32 instrucciones mximo.
Tipos de Operaciones
Instrucciones de Registro
9 8 7 6 5 4 3 2 1 0
O P C C T T S D
CC Ci
OP TT Funcin
00 0
00 00 [S] + Ci [D]
01 1
01 00 [S] + [D] + Ci [D]
10 Ci
10 00 [D] [S] - Ci [D]
11 Ci
[S] = Fuente (Source)
[D] = Destino (Destiny)
Ci = Acarreo (Carry)
Para las instrucciones bsica TT siempre ser 00
Ejemplo:
9 8 7 6 5 4 3 2 1 0
La instruccin quedara con el siguiente OPCODE 0 1 0 0 0 0 0 1 0 0
Instrucciones de Salto
9 8 7 6 5 4 3 2 1 0
1 1 C C F A D D R E
Pgina 3 de 23
CC F
01 X JMP ADDRE Salto incondicional a Address
10 0 JC ADDRE Si C=1 Salta a Address
11 0 JNC ADDRE Si C=0 Salta a Address
10 1 JZ ADDRE Si Z=1 Salta a Address
11 1 JNZ ADDRE Si Z=0 Salta a Address
Instrucciones de Entrada/Salida
9 8 7 6 5 4 3 2 1 0
1 1 0 0 0 0 L H D
La instruccin de Entrada y salida de datos se obtiene siempre que OP=11, CC=00 y TT=00
Si L=1 indica que es de CARGA, de lo contrario es SALIDA de datos y si H=1 indica que el
procesador se detendr y este no deber continuar hasta que se presione el interruptor ENTER.
Todas estas Operaciones se han dividido en pequeas problemas, aplicando el concepto bsico de
la estrategia de programacin estructurada (Divide y venceras), utilizando un algoritmo llamado
Top Level se puede dividir la unidad de control en pequeas entidades dedicadas a ciertas tareas
especficas, y utilizando la herramienta de ASM (Mquina de Estados Algortmica) en este caso se
dividieron en 5 microoperaciones y un subcircuito maestro que se encarga de activar o desactivar
las entidades de las microoperaciones. Todos han sido implementados con VHDL en gal22v10.
Pgina 4 de 23
DIAGRAMA DEL PROCESADOR
Pgina 5 de 23
Diseo del contador de 5 bits:
Ya que se requiere un contador de 5 bits con carga en paralelo y el contador que se tiene
disponible comercial es de 4 bits (74LS193), existen dos alternativas
En este caso se implement con VHDL, teniendo como base origen la tabla de verdad del 74LS193
de su datasheet.
Pgina 6 de 23
Diseo del Registro de Instruccin (IR)
Dado que las instrucciones son de 10 bits, y el registro comercial (74LS193) es de 4 bits se vuelven
a tener dos alternativas
Configurar 3 registros para obtener palabras de 10 bits
Implementacin en VHDL
Pgina 7 de 23
Diseo de La Unidad de Control
Pgina 8 de 23
Diseo del circuito que realiza lectura del Banco de Registros y graba los registros RS y/o RD.
ASM de la microoperacin
Explicacin
Si la bandera de activacin est APAGADA (ACT=0)
Regresa a S0 (S0 realiza siempre un reset a las terminales de salida)
si no
S1: Al vector A se le asigna el contenido de los bits S, para seleccionar la localidad a leer
S2: Habilita la lectura del Banco de Registros (74LS670)
S3: Da el pulso de reloj del registro RS
Si OP=00 (Pregunta si la operacin es de un solo registro)
S6: Deshabilita la lectura del banco
S7: Prende la bandera FIN=1 para indicar que el proceso a terminado y regresa a S0
si no
S4: Asigna al vector A el contenido del vector D, ya que significa que la operacin es de dos registros
S5: Da el pulso de reloj del registro RD
S7: Prende la bandera FIN=1 para indicar que el proceso a terminado y regresa a S0
Termina Condicin
Termina Condicin
VHDL
Pgina 9 de 23
architecture arq_ctrl_write_reg of ctrl_write_reg is
type estados is(S0, S1, S2, S3, S4, S5, S6, S7);
signal edo_presente, edo_futuro: estados;
begin
senial_control: process(edo_presente, ENABLED,RST,S, OP,D) begin
if RST = '1' then
edo_futuro <= S0;
A <= "00";
RE <= '1';
RS <= '0';
RD <= '0';
FIN <= '0';
else
case edo_presente is
when S0 => A <= "00";
RE <= '1';
RS <= '0';
RD <= '0';
FIN <= '0';
if ENABLED = '1' then
edo_futuro <= S1;
else
edo_futuro <= S0;
end if;
when S1 =>
A <= S;
edo_futuro <= S2;
when S2 =>
RE <= '0';
edo_futuro <= S3;
when S3 =>
RS <= '1';
if OP = "00" then
edo_futuro <= S6;
else
edo_futuro <= S4;
end if;
when S4 => A <= D;
edo_futuro <= S5;
when S5 => RD <= '1';
edo_futuro <= S7;
when S6 => RE <= '1';
edo_futuro <= S7;
when S7 => FIN <= '1';
edo_futuro <= S0;
end case;
end if;
end process senial_control;
Pgina 10 de 23
Diseo del circuito que graba en Banco de Registros.
ASM de la microoperacin
Explicacin
Si la bandera de activacin est APAGADA (ACT=0)
Regresa a S0 (S0 realiza siempre un reset a las terminales de salida)
si no
S1: Al vector A se le asigna el contenido de los bits D, para seleccionar la localidad a ESCRIBIR
S2: Habilita la escritura del Banco de Registros (74LS670)
S3: Deshabilita la escritura del Banco de Registros (74LS670)
S4: Habilita el RST de los registros [RS] y [RD]
S5: Deshabilita el RST de los registros [RS] y [RD]
S6: Prende la Bandera FIN = 1 para indicar que el proceso a terminado y regresa a S0
Termina Condicin
end arq_ctrl_alu_banco;
Pgina 12 de 23
Diseo del circuito para las Operaciones de Entrada/Salida
LH Operacin
00 Salida sin Enter
01 Salida con Enter
10 Entrada sin Enter
11 Entrada con Enter
ASM de la microoperacin
Explicacin
Si la bandera de activacin est APAGADA (ACT=0)
Regresa a S0 (S0 realiza siempre un reset a las terminales de salida)
si no
Segn sea (LH)
Si LH =00
S1: Habilita el buffer de salida de datos
S6: Prende la Bandera FIN = 1 para indicar que el proceso a terminado y regresa a S0
Si LH = 01
S2: Habilita el buffer de salida de datos
Si ENTER = 1
S6: Prende la Bandera FIN = 1 para indicar que el proceso a terminado y regresa a S0
si no
Regresa a S2
Termina Condicin
Si LH=10
S3: Habilita Buffer de entrada de datos
S5: Activa el pulso de [RD]
S6: Prende la Bandera FIN = 1 para indicar que el proceso a terminado y regresa a S0
caso contrario
Pgina 13 de 23
S4: Habilita Buffer de entrada de datos
Si ENTER = 1
S5: Activa el pulso de [RD]
si no
Regresa a S4
Termina Condicin
S6: Prende la Bandera FIN = 1 para indicar que el proceso a terminado y regresa a S0
Termina Condicin segn
Termina Condicin
FIN RD IN OUT
Si (D3) (D2) (D1) (D0) Hex Descripcin
S0 0 0 1 1 3h Reset en todas las terminales de salida
S1 0 0 1 0 2h Enva la seal de activacin al buffer de salida
S2 0 0 1 0 2h Enva la seal de activacin al buffer de salida
S3 0 0 0 1 1h Enva la seal de activacin al buffer de entrada
S4 0 0 0 1 1h Enva la seal de activacin al buffer de entrada
S5 0 1 0 1 5h Enva el pulso al registro [RD] mientras est activado el buffer de entrada
S6 1 0 1 1 Bh Enva la seal de que el proceso a finalizado
Pgina 14 de 23
estado <= S4;
END IF;
END IF;
WHEN S1 =>
estado <= S6;
WHEN S2 =>
IF ENTER = '1' THEN
estado <= S6;
ELSE
estado <= S2;
END IF;
WHEN S3 =>
estado <= S5;
WHEN S4 =>
IF ENTER = '1' THEN
estado <= S5;
ELSE
estado <= S4;
END IF;
WHEN S5 =>
estado <= S6;
WHEN S6 =>
estado <= S0;
END CASE;
END IF;
END PROCESS;
D <= x"3" WHEN (estado=S0) ELSE
x"2" WHEN (estado=S1) ELSE
x"2" WHEN (estado=S2) ELSE
x"1" WHEN (estado=S3) ELSE
x"1" WHEN (estado=S4) ELSE
x"5" WHEN (estado=S5) ELSE
x"B";
END arq_ctrl_es;
Pgina 15 de 23
Diseo del circuito de Saltos
CCF Descripcin
010 Salto incondicional
011 Salto incondicional
100 Salta si C=1 (JC)
101 Salta si Z=1 (JZ)
110 Salta si C=0 (JNC)
111 Salta si Z=0 (JNZ)
ASM de la microoperacin
Explicacin
Si la bandera de activacin est APAGADA (ACT=0)
Regresa a S0 (S0 realiza siempre un reset a las terminales de salida)
si no
segn sea (CCF)
si CCF= 010 o CCF=011
S1: Enva seal al PC para dar permiso al clk de cargar una localidad
S2: Enva pulso al clk del Pc
si CCF= 100
si C = 1
S1: Enva seal al PC para dar permiso al clk de cargar una localidad
Pgina 16 de 23
S2: Enva pulso al clk del Pc
Termina condicin
si CCF= 101
si Z = 1
S1: Enva seal al PC para dar permiso al clk de cargar una localidad
S2: Enva pulso al clk del Pc
Termina condicin
si CCF= 110
si C = 0
S1: Enva seal al PC para dar permiso al clk de cargar una localidad
S2: Enva pulso al clk del Pc
Termina condicin
caso contrario:
si Z = 0
S1: Enva seal al PC para dar permiso al clk de cargar una localidad
S2: Enva pulso al clk del Pc
Termina condicin
fin condicin segn
S6: Prende la Bandera FIN = 1 para indicar que el proceso a terminado y regresa a S0
Termina Condicin
Pgina 17 de 23
estado <= S1;
ELSIF CCF = "100" THEN
IF C = '1' THEN
estado <= S1;
ELSE
estado <= S3;
END IF;
ELSIF CCF = "101" THEN
IF Z = '1' THEN
estado <= S1;
ELSE
estado <= S3;
END IF;
ELSIF CCF = "110" THEN
IF C = '0' THEN
estado <= S1;
ELSE
estado <= S3;
END IF;
ELSE
IF Z = '0' THEN
estado <= S1;
ELSE
estado <= S3;
END IF;
END IF;
ELSE
estado <= S0;
END IF;
WHEN S1 =>
estado <= S2;
WHEN S2 =>
estado <= S3;
WHEN S3 =>
estado <= S0;
END CASE;
END IF;
END PROCESS;
Pgina 18 de 23
Diseo para la operacin de la ALU.
OP TT Operacin S en Hex CC Ci
00 00 [S] + Ci [D] 9h 00 0
01 1
01 00 [S] + [D] + Ci [D] 9h 10 Ci
10 00 [D] - [S] - Ci [D] 6h 11 Ci
Pgina 19 de 23
Diseo del circuito para el Control Principal.
O P C C T T S/L S/H D D Tipo de instruccin
0 0 X X X X X X X X
0 1 X X X X X X X X Ins. de Registro
1 0 X X X X X X X X
1 1 0 0 X X 0 X X X Ins. de Salida
1 1 0 0 X X 1 X X X Ins. de Entrada
1 1 0 1 X X X X X X
1 1 1 0 X X X X X X Inst. de Saltos
1 1 1 1 X X X X X X
ASM de la microoperacin
Grabar Banco
OE Memoria
Leer Banco
clk_PC
Cl_IR
Salto
E/S
Si
S0 0 0 0 0 0 0 1
S1 0 0 0 0 0 0 0
S2 0 0 0 0 0 1 0
S3 0 0 0 0 1 0 1
S4 0 0 0 1 0 0 1
S5 0 0 1 0 0 0 1
S6 0 1 0 0 0 0 1
S7 1 0 0 0 0 0 1
Pgina 20 de 23
ELSE
estado <= S0;
END IF;
WHEN S1 =>
estado <= S2;
WHEN S2 =>
estado <= S3;
WHEN S3 =>
IF OP = "11" THEN
IF CC = "00" THEN
IF L = '1' THEN
estado <= S6;
ELSE
estado <= S4;
END IF;
ELSE
estado <= S7;
END IF;
ELSE
estado <= S4;
END IF;
WHEN S4 =>
IF OP = "11" THEN
estado <= S6;
ELSE
estado <= S5;
END IF;
WHEN S5 =>
estado <= S0;
WHEN S6 =>
IF L = '1' THEN
estado <= S5;
ELSE
estado <= S0;
END IF;
WHEN S7 =>
estado <= S0;
END CASE;
END IF;
END PROCESS;
Pgina 21 de 23
Conclusiones
La unidad de control es importante en una computadora, ya que es la que se encarga de enviar las
seales necesarias que indican que dispositivos se activan o desactivan, envan pulsos de reloj necesarios.
Pero para el diseo de la unidad de control se requiere conocer la arquitectura de la unidad de ejecucin ya
que la unidad de control va ligada a la unidad de ejecucin.
La unidad de control puede implementarse de diferentes formas: Utilizando compuertas bsicas (que
es a lo que se le conoce como unidad cableada), por medio del uso de EEPROM y por medio de VHDL a la
cual se le conoce como U. de Control programada. Est prctica se puede implementar en dispositivos
grandes utilizando un solo componente, sim embargo ya que se utiliz el GAL como componente principal y
su capacidad es pequea, se dividi la unidad en microoperaciones, y una unidad de control muy pequea, la
cual es la que se encarga de crear el ciclo FETCH y llamar a las microperaciones necesarias segn el
OPCODE del programa lo requiera.
El simulador empleado fue ISIS Proteus, ya que tiene la caracterstica de poder simular gales y
EEPROM, es importante al momento del diseo saber el orden de todas las terminales, ya que en mas de una
ocasin se tuvo el problema de haber invertido algunas seales de salida al programar.
Pgina 22 de 23
BIBLIOGRAFA
VHDL El arte de programar en sistemas digitales, Ed. Patria, David G. Maxinez, Jessica Alcal
Pgina 23 de 23