Beruflich Dokumente
Kultur Dokumente
ARITMÉTICOS
MICROELECTRÓNICA
Los componentes básicos de este método son aquellos que describen un sistema digital a
partir del nivel operacional. La operación de un sistema digital se describe de mejor
manera especificando:
1. El conjunto de registros en el sistema y sus funciones.
2. La información en código binario almacenada en los registros.
3. Las operaciones realizadas a partir de la información almacenada en los registros.
4. Las funciones de control que inician la secuencia de operaciones.
Estos cuatro componentes forman la base del método de lógica de transferencia entre
registros para describir sistemas digitales.
Un registro como se define en la notación de lógica de transferencia entre registros, no
solamente implica un registro en general, sino que abarca todos los otros tipos de registros,
tales como registros de desplazamiento, contadores y unidades de memoria. Un contador
se considera como un registro cuya función es incrementar en 1 la información almacenada
en él. Una unidad de memoria se considera como una colección de registros de
almacenamiento donde se va a almacenar la información. Un Flip-Flop por si solo se toma
como un registro de 1 bit, los Flip-Flop y las compuertas asociadas de cualquier circuito
secuencia se llaman registro.
CONSIDERACIONES GENERALES DE UN SISTEMA DE
TRANSFERENCIA DE REGISTROS
La información binaria almacenada en los registros podría ser números binarios, números
decimales codificados en binario, caracteres alfanuméricos, control de información ó
cualquier información binaria codificada. Las operaciones que se realizan mediante los
datos almacenados en los registros, depende del tipo de datos que se encuentren. Los
números se manipulan con operaciones aritméticas, mientras que el control de
información se manipula por lo general con operaciones lógicas tales como activar o borrar
bits del registro.
Las operaciones realizadas con los datos almacenados en los registros, se llaman
microoperaciones. Una microoperación es una operación elemental que puede ser
realizada en paralelo durante un periodo de pulso de reloj. El resultado de la operación
puede reemplazar la información binaria previa de un registro o puede ser transferida a
otro registro.
Diagrama de GLUSHKOV
NIVEL DE TRANSFERENCIA ENTRE REGISTROS
D A B
LSR (A)
ASR (A)
A A+1
A Inbus [8]
Outbus [8] A
OPERACIONES DE TRANSFERENCIA
OPERACIÓN DESCRIPCIÓN
R2 R1 : El contenido de R1 se transfiere a R2
OPERACIONES DE TRANSFERENCIA
Operación condicional:
if ( K1 1) then ( R 2 R1)
K1 : R 2 R1
OPERACIONES DE TRANSFERENCIA
___
X K1 : R1 R1 R 2
___
X K1 : R1 R1 R 2 1
OPERACIONES DE TRANSFERENCIA
Micro-operaciones Lógicas:
DESIGNACIÓN SIMBÓLICA DESCRIPCIÓN
SELECT CARGA
TRANSFERENCIA DE
REGISTRO
S0 S1 L2 L1 L0
RO R2 1 0 0 0 1
RO R1, R2 R1 0 1 1 0 1
RO R1, R1 R0 IMPOSIBLE
Conjunto e Registros
(RTL)
Unidad Funcional
(Operaciones)
UNIDAD FUNCIONAL (ALU)
UNIDAD LÓGICA
UNIDAD ARITMÉTICA
CICLO DE MICRO-OPERACIONES DE UNA ALU
Tabla de Funciones
Select Input G = A + Y + Cin
S1 S0 Y Cin = 0 Cin = 1
0 0 Todo 0's G = A (Transferencia) G = A + 1 (Incrementa)
0 1 B G = A + B (Adición) G=A+B+1
1 0 /B G = A + /B G = A + /B + 1 (Substracción)
1 1 Todo 1's G = A - 1 (Decrementa) G = A (Transferencia)
INPUTS OUTPUT
S1 S0 Bi Yi
0 0 0 0
Yi = 0
0 0 1 0
0 1 0 0
Yi = Bi
0 1 1 1
1 0 0 1
Yi = /Bi
1 0 1 0
1 1 0 1
Yi Bi S 0 / Bi S1
Yi = 1
1 1 1 1
Se basa en un diseño
totalmente combinacional,
los bloques FA, se refieren
a sumadores completos de
un bit
UNIDAD LÓGICA
SELECCIÓN DE OPERACIÓN
OPERACIÓN FUNCIÓN
S2 S1 S0 Cin
0 0 0 0 G=A Transfer A
0 0 0 1 G=A+1 Increment A
0 0 1 0 G=A+B Addition
0 1 0 1 G = A + /B + 1 Substraction
0 1 1 0 G=A-1 Decrement A
0 1 1 1 G=A Transfer A
1 0 0 X G=A B AND
1 0 1 X G=AVB OR
1 1 0 X G=A B XOR
Tabla Funcional
SELECCIÓN OUTPUT OPERACIÓN
S1 S0 Y3 Y2 Y1 Y0
0 0 D3 D2 D1 D0 NO ROTAR
Circuito Lógico
DIAGRAMA GENERAL DE UNA UNIDAD DE DATOS
SELECCIÓN MICRO-OPERACIÓN
FS MF G H
00000 0 0000 00 F=A
00001 0 0001 00 F=A+1
00010 0 0010 00 F=A+B
00011 0 0011 00 F=A+B+1
00100 0 0100 01 F = A + B’
00101 0 0101 01 F = A + B’ + 1
00110 0 0110 01 F=A–1
00111 0 0111 01 F=A
01000 0 1000 00 F=A B
01010 0 1010 10 F=AVB
01100 0 1100 10 F=A B
01110 0 1110 10 F = A’
10000 1 0000 00 F=B
10100 1 0100 01 F = sr B
11000 1 1000 10 F = sl B
DETALLE DE LA UNIDAD FUNCIONAL
VARIABLES DE CONTROL PARA LA UNIDAD DE
DATOS
CODIFICACIÓN DEL VECTOR DE CONTROL PARA LA
UNIDAD DE DATOS
DA, AA, BA MB FS MD RW
Function Code Function Code Function Code Function Code Function Code
Notación Simbólica
Microoperación DA AA BA MB FS MD RW
Codificación Binaria
Microoperación DA AA BA MB FS MD RW
R2 R2 – R3
R4 sl R6
R7 R7 + 1
R1 R0 + 2
Data out R3
R4 Data in
R5 0
INTRODUCCIÓN A LA ARQUITECTURA DE
PROCESADORES
TAREAS DE LA CPU
CÓDIGOS DE CONDICIÓN
También llamados Flags
Son bits fijados por la CPU como resultado de una operación
Los códigos de condición se reúnen en uno o más registros, generalmente
forman parte de un registro de control
Generalmente los bits pueden ser leídos por referencia implícita, pero no
pueden ser modificados
INTRODUCCIÓN A LA ARQUITECTURA DE
PROCESADORES
REGISTROS DE CONTROL Y DE ESTADO
Son esenciales cuatro registros para la ejecución de una instrucción:
Contador del Programa (PC): Dirección de la próxima instrucción a ejecutar.
Registro de Instrucción: Instrucción captada mas reciente.
Registro de Dirección de Memoria: Dirección de una posición de memoria.
Registro intermedio de memoria: Contiene la palabra leída o a escribir en
memoria.
CICLO DE INSTRUCCIÓN
CICLOS FETCH, DECODE Y EXECUTE DEL
PROCESADOR
CICLO FETCH (Captación)
Función: Lleva la siguiente instrucción de la memoria a la CPU.
1. El PC tiene la dirección de la siguiente instrucción.
2. El procesador capta la instrucción de la memoria direccionada por el PC.
3. Se incrementa PC en 1.
4. El código de la instrucción se carga en IR.
1. El PC contiene el valor
300. Se carga esta
instrucción en IR (esto
implica el uso de MAR y
MBR)
CICLOS FETCH, DECODE Y EXECUTE DEL
PROCESADOR
Ejemplo:
3. El registro PC se
incrementa y se capta la
siguiente instrucción
CICLOS FETCH, DECODE Y EXECUTE DEL
PROCESADOR
Ejemplo:
5. El registro PC se
incrementa en 1 y se
capta la siguiente
instrucción.
CICLOS FETCH, DECODE Y EXECUTE DEL
PROCESADOR
Ejemplo:
Las instrucciones de una CPU a otra difieren bastante, sin embargo en todas
las CPU se puede encontrar como mínimo el siguiente conjunto de
instrucciones:
1. MEMORY: Harvard
dispone de dos tipos de
memoria una para
Instrucciones y otra para
datos; la arquitectura
Von Neuman, comparte
la memoria entre
instrucciones y datos.
Se quiere incorporar las dos operaciones de pila: EMPUJAR (PUSH) y EXTRAER (POP)
que consisten respectivamente, en llevar [A] a la pila y en llevar de la pila a [A] (recuerde
que PUSH [A] implica MEM [A] y SP SP+1, mientras que POP [A] implica SP SP–1
y [A] MEM (SP)). Cuando no hay operación de la pila, el puntero SP apunta a la
primera dirección libre.
Nota: los códigos I1I0 = 1X están reservados para otras operaciones no definidas en el
enunciado.
EJEMPLO DE APLICACIÓN
SOLUCIÓN AL EJEMPLO DE APLICACIÓN
Según el enunciado, la pila se va llenando desde las direcciones más bajas hasta las más altas. Las dos
operaciones de pila implican direccionar la memoria MEM con la dirección que indica el puntero de pila,
SP. De aquí que, tras apuntar SP a la dirección adecuada, habrá que transferir SP hacia MAR. En ambas
operaciones la transferencia entre MEM y A debe pasar por MDR. Operación PUSH (I1I0 = 00): Como SP
apunta a la dirección vacía, es ahí a donde hay que transferir A y, después, se incrementa SP para que
continúe apuntando a la primera dirección vacía.
Operación POP (I1I0 = 01): Hay que decrementar SP para que apunte a la última dirección llena. Sólo
entonces se lleva SP a MAR para, después, leer de MEM hacia MDR y, de este registro, llevar el dato leído
hacia A.
MICROOPERACIÓN SEÑALES A ACTIVAR
1. SP SP – 1 DSP
2. MAR SP WSP
3. MDR MEM CS / R / WE
4. A MDR RI / WA
CARTA ASM DEL EJEMPLO
1. Bit Counter
2. Shift-and-Add Multiplier
1. BIT COUNTER
B = 0;
while A≠0 do
Se utiliza un lenguaje estándar de
if a0 = 1 then programación para describir el
B = B + 1; algoritmo que se va a utilizar. Luego se
describe como diseño ASM
end if;
Right-shift A;
end while ;
CARTA ASM PARA EL BIT COUNTER
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
LIBRARY work ;
USE work.components.shiftrne ;
-- Declaración de la entidad
ENTITY bitcount IS
PORT(Clock, Resetn : IN STD_LOGIC ;
LA, s : IN STD_LOGIC ;
Data : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;
B : BUFFER INTEGER RANGE 0 to 8 ;
Done : OUT STD_LOGIC ) ;
END bitcount ;
CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (2)
Decimal Binaria P = 0;
13 1 1 0 1 Multiplicando
For i = 0 to n – 1 do
x 11 1 0 1 1 Multiplicador
13 1 1 0 1 if bi = 1 then
13 1 1 0 1
P = P + A;
143 0 0 0 0
1 1 0 1 end if;
1 0 0 0 1 1 1 1 Producto
Left-Shift A;
End for;
RA Shift-Left Register
RB Shift-Right Register
ADDER Sumador de 2n bits
MUX Multiplexor 2:1 de 2n bits
P Registro genérico de 2n bits
NOR Compuerta NOR de n entradas
Data P Resultado de la multiplicación
B0 LSB del registro B
CARTA ASM PARA EL CONTROL DEL MULTIPLICADOR
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_unsigned.all ;
USE work.components.all ;
ENTITY multiply IS
GENERIC ( N : INTEGER := 8; NN : INTEGER := 16 ) ;
PORT ( Clock : IN STD_LOGIC ;
Resetn : IN STD_LOGIC ;
LA, LB, s : IN STD_LOGIC ;
DataA : IN STD_LOGIC_VECTOR(N–1 DOWNTO 0) ;
DataB : IN STD_LOGIC_VECTOR(N–1 DOWNTO 0) ;
P : BUFFER STD_LOGIC_VECTOR(N–1 DOWNTO 0) ;
Done : OUT STD_LOGIC ) ;
END multiply ;
CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (2)