Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJose Armando Becerra Vargas Modificado hace 7 años
1
MICROELECTRÓNICATitular IE. MSc. José Armando Becerra Vargas DISEÑO RTL
2
REQUISITOS DEL CURSO Para abordar temas de diseño jerárquico, descripción a nivel RTL y diseño de procesadores aritméticos en general, el estudiante debe tener conocimientos de los siguientes temas: 1.Análisis y síntesis de sistemas combinacionales; lógica cableada, Lógica modular y descripción en VHDL de sistemas combinacionales. 2.Análisis y síntesis de sistemas secuenciales; Máquinas de estado de Mealy y Moore, Diseño de alto nivel y descripción en VHDL de sistemas secuenciales. 3.Conocimiento básico de arquitectura de computadores; Funcionamiento de una ALU, sistemas que realizan operaciones, Registros, Contadores, Memorias RAM y ROM, descripción en VHDL de sistemas complejos. 4.Manejo adecuado de las herramientas EDA. Para el caso específico, conocimiento, destreza y manejo del software ISE FOUNDATION de XILINX.
3
CONSIDERACIONES GENERALES DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS 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.
4
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. Ejemplos de microoperaciones son: Desplazar, contar, sumar, borrar y cargar.
5
CONSIDERACIONES GENERALES DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS Las microoperaciones especifican las operaciones elementales que se realizan con la información almacenada en los registros. Los tipos de microoperaciones encontradas más a menudo en los sistemas digitales pueden clasificarse en cuatro categorías: 1.Microoperaciones de transferencia: Movimiento entre registros que no cambian el contenido de la información cuando dicha información binaria se mueve de un registro a otro. 2.Microoperaciones aritméticas: realizan aritmética con los números almacenados en los registros. 3.Microoperaciones lógicas: realizan operaciones tales como la AND y OR con el par de bits individuales almacenados en los registros. 4.Microoperaciones de desplazamiento: especifican operaciones para los registros de desplazamiento.
6
ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA ENTRE REGISTROS Diagrama de GLUSHKOV
7
ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA ENTRE REGISTROS Estructura General del sistema
8
El comportamiento de un sistema digital a nivel de transferencia de registros se puede definir mediante un conjunto de operaciones Op1,Op2, Op3, … Opn realizadas sobre diferentes datos externos o internos. Cada una de estas operaciones elementales se lleva a cabo mediante transferencias entre registros cuya forma mas general puede ser: NIVEL DE TRANSFERENCIA ENTRE REGISTROS R[m] f ( R[i], R[j], R[k], …)
9
Sean A y B dos registros, la operación más habitual es transferir el contenido de un registro a otro, esto se expresa así: B A En caso de necesitar saber el número o posición de los bits transferidos se indica de la siguiente manera: B[7-0] A[15-8] Normalmente la transferencia está controlada mediante una señal de habilitación E (enable), se suele expresar de la siguiente forma: E : B A La señal de habilitación puede ser mas compleja, por ejemplo: Si x = 0 y t = 1 B A En otro caso B C LENGUAJE DE TRANSFERENCIA ENTRE REGISTROS
10
Los registros pueden ser objeto de las operaciones aritméticas y lógicas habituales, por ejemplo: D A B LSR (A) ASR (A) A A + 1 Otro operador disponible es & (concatenación) p. ej. LSR (A&B) LENGUAJE DE TRANSFERENCIA ENTRE REGISTROS
11
La transferencia de datos entre registros y memoria se puede tratar como un caso particular del caso anterior, aquí se tienen dos operaciones gobernadas por las señales de control R (lectura) y W (escritura) para lo cual se usan los registros MAR y MBR; con la notación habitual se tiene: R:MBR M(MAR) W:M(MAR) MBR LENGUAJE DE TRANSFERENCIA ENTRE REGISTROS Por último la transferencia entre buses y registros se escribe de forma similar: A Inbus [8] Outbus [8] A MAR: Memory Address Register MBR: Memory Buffer Register MDR: Memory Data Register MAR: Memory Address Register MBR: Memory Buffer Register MDR: Memory Data Register
12
OPERACIONES DE TRANSFERENCIA Identificación de Registros en operaciones de transferencia: : El contenido de R1 se transfiere a R2 OPERACIÓN DESCRIPCIÓN OPERACIÓN DESCRIPCIÓN
13
Operación condicional: Notación de transferencia entre registros: OPERACIONES DE TRANSFERENCIA
14
Símbolos usados en el lenguaje de transferencia entre Registros: SÍMBOLODESCRIPCIÓNEJEMPLO Letras y/o Letras y NúmerosDenota un RegistroAR, R2, DR, IR ParéntesisDenota parte de un RegistroR2(1), R2(7:0), AR(L) FlechaDenota Transferencia de DatosR2 R1 ComaSepara operaciones simultaneasR1 R2, R2 R0 Paréntesis cuadradosEspecifica una dirección de memoriaDR M[MAR] OPERACIONES DE TRANSFERENCIA
15
Ejemplo de Micro-operaciones Aritméticas: DESIGNACIÓN SIMBÓLICADESCRIPCIÓN R0 R1 + R2El contenido de R1 más R2 se transfiere a R0 R2 R2’Complemento a uno del contenido de R2 se carga en R2. R2 R2’ + 1Complemento a dos del contenido de R2 se carga en R2. R0 R1 + R2' + 1R1 más el complemento a dos de R2 se transfiere a R0 (Substracción o Resta) R1 R1 + 1Incrementa el contenido de R1 (Contador ascendente) R1 R1 - 1Decrementa el contenido de R1 (Contador descendente) OPERACIONES DE TRANSFERENCIA
16
Implementación de las operaciones de transferencia: OPERACIONES DE TRANSFERENCIA Flag Over Flow Flag Carry
17
Micro-operaciones Lógicas: DESIGNACIÓN SIMBÓLICADESCRIPCIÓN R0 R1’Operación Lógica NOT bit a bit (Complemento a uno) R0 R1 R2 Operación Lógica AND bit a bit (Clarear bits) R0 R1 V R2Operación Lógica OR bit a bit (Poner bits) R0 R1 R2 Operación Lógica XOR bit a bit (Complementa bits) Ejemplo de operaciones de desplazamiento: TIPODESIGNACIÓN SIMBÓLICAFUENTE R2VALOR DE R1 DESPUÉS DEL CORRIMIENTO SHIFT LEFTR1 sl R21001111000111100 SHIFT RIGHTR1 sr R21110010101110010 OPERACIONES DE TRANSFERENCIA
18
Ejemplo: Implementación de la operación condicional múltiple. TRANSFERENCIA UTILIZANDO MULTIPLEXORES
19
Circuito detallado de la implementación de: TRANSFERENCIA UTILIZANDO MULTIPLEXORES
20
Multiplexores dedicadosUn solo Bus TRANSFERENCIA UTILIZANDO MULTIPLEXORES
21
TRANSFERENCIA DE REGISTRO SELECTCARGA S1S0L2L1L0 RO R210001 RO R1, R2 R101101 RO R1, R1 R0IMPOSIBLE Ejemplo de Transferencia entre Registros utilizando una configuración de un solo BUS. TRANSFERENCIA UTILIZANDO MULTIPLEXORES Tabla de conmutación
22
BUS MultiplexadoBUS Tri estado con Registros bidireccionales TIPOS DE BUSES
23
Funcionamiento de un Registro Bidireccional: TIPOS DE BUSES
24
Conexión de una Memoria al Bus de Datos y al Bus de Direcciones: TIPOS DE BUSES – ESTRUCTURA CON MEMORIA
25
Conjunto e Registros (RTL) Unidad Funcional (Operaciones) ESTRUCTURA FUNCIONAL DE LA UNIDAD DE DATOS
26
DESCRIPCIÓN ESTRUCTURAL CIRCUITOS ARITMÉTICOS
27
TEMAS DE INTERÉS Los temas a tratar en esta parte del curso son: Introducción. Introducción. Circuitos sumadores básicos. Circuitos sumadores básicos. Suma y Resta binaria. Suma y Resta binaria. Circuito Sumador y Semi-Sumador. Circuito Sumador y Semi-Sumador. Sumador paralelo de n bits Sumador paralelo de n bits Sumador /Restador. Sumador /Restador. Sumadores /Restadores de n bits. Sumadores /Restadores de n bits. Acarreo y desbordamiento Acarreo y desbordamiento Unidad Aritmético-Lógica (ALU) Unidad Aritmético-Lógica (ALU)
28
INTRODUCCIÓN Los procesadores digitales están diseñados para ofrecer una gran potencia de cálculo que les permita ejecutar con gran velocidad operaciones aritméticas y lógicas. En un procesador digital, una operación aritmética puede realizarse de dos formas: 1. Hardware: Existe un circuito en el procesador que realiza esta operación ; se requiere de gran velocidad y alto costo. 2. Software: Existe un algoritmo que descompone esta operación en otras más elementales que son realizadas mediante hardware.
29
INTRODUCCIÓN Hardware aritmético en procesadores digitales: Los procesadores aritméticos están diseñados con una unidad mínima operacional, se trata de un sumador restador, procesadores más avanzados para cálculo numérico (coprocesadores matemáticos) incluyen multiplicadores e incluso circuitos divisores. Software aritmético en procesadores digitales: Los procesadores digitales son diseñados para operar con instrucciones que les permite realizar operaciones de suma y resta, en sistemas más complejos se incluyen instrucciones para la multiplicación y la división e incluso existe aún un mayor grado de complejidad donde se incluyen instrucciones para operaciones más abstractas como exponenciales y logaritmos, etc.
30
CIRCUITOS SUMADORES BÁSICOS Para abordar este tema, se tendrán en cuenta las siguientes operaciones binarias básicas: 1. Ejemplo de suma de dos números binarios de cuatro bits: Acarreo 0 1 1 Acarreo A 1 0 0 1 Operando A B 0 0 1 1 Operando B Suma 1 1 0 0 Suma 2. En general: Acarreo c3 c2 c1 Acarreo A a3 a2 a1 a0 Operando A B b3 b2 b1 b0 Operando B Suma S3 S2 S1 S0 Suma
31
CIRCUITOS SUMADORES BÁSICOS SEMISUMADOR - HALF ADDER: Se trata de un circuito que suma dos bits y obtiene como salida un bit de suma y otro de acarreo. Para el análisis se toma como punto de partida su tabla de la verdad. Tabla de la verdad para HA Bloque Semisumador Binario Tabla de la verdad para HA Bloque Semisumador Binario ENTRADASSALIDAS aiai bibi C i+1 SiSi 0000 0101 1001 1110 HA aiaibibiaiaibibi S i C i+1
32
CIRCUITOS SUMADORES BÁSICOS SEMISUMADOR - HALF ADDER: Implementación mediante puertas lógicas: Tomando como base la tabla de la verdad se obtienen las siguientes expresiones booleanas: C i+1 = a i · b i S i = a i b i & aibiaibi C i+1 aibiaibi SiSi =1
33
CIRCUITOS SUMADORES BÁSICOS SUMADOR COMPLETO - FULL ADDER El sumador completo o Full Adder, es una modificación del semisumador o Half Adder, en este diseño se incluye un bit de acarreo de entrada, convirtiéndolo en un sistema digital de tres entradas y dos salidas, con esta modificación la tabla de la verdad será: ENTRADASSALIDAS aiai bibi CiCi C i+1 SiSi 00000 00101 01001 01110 10001 10110 11010 11111 Tabla de la verdad para un FA FA aiaibibiCiCiaiaibibiCiCi S i C i+1
34
CIRCUITOS SUMADORES BÁSICOS SUMADOR COMPLETO - FULL ADDER En el circuito de la figura se muestra la implementación de un FA utilizando compuertas lógicas, a partir de las ecuaciones booleanas tomadas de la tabla de la verdad. C i+1 = a i · b i + a i · C i + b i · C i S i = a i b i C i
35
Unidad Aritmético-Lógica (ALU) UNIDAD FUNCIONAL (ALU)
36
ESTRUCTURA COMPLETA DE UNA ALU UNIDAD LÓGICA UNIDAD ARITMÉTICA
37
SelectInputG = A + Y + Cin S1S0YCin = 0Cin = 1 00Todo 0'sG = A (Transferencia)G = A + 1 (Incrementa) 01BG = A + B (Adición)G = A + B + 1 10B’G = A + B’G = A + B’ + 1 (Substracción) 11Todo 1'sG = A - 1 (Decrementa)G = A (Transferencia) Tabla de Funciones Tabla de Verdad Mapa de Karnaugh INPUTSOUTPUT S1S0BiYi 0000 Yi = 0 0010 0100 Yi = Bi 0111 1001 Yi = /Bi 1010 1101 Yi = 1 1111 MICRO-OPERACIONES BÁSICAS DE UNA ALU
38
UNIDAD ARITMÉTICA DE CUATRO BITs Se basa en un diseño totalmente combinacional, los bloques FA, se refieren a sumadores completos de un bit
39
S1S0OUTPUTOPERACIÓN 00 G = A B AND 01G = A V BOR 10 G = A B XOR 11G = /ANOT TABLA FUNCIONAL CIRCUITO LÓGICO UNIDAD LÓGICA El Multiplexor selecciona la función lógica deseada. Pueden existir más de cuatro funciones lógicas, lo que requiere un MUX de mayor capacidad.
40
UNA ETAPA DE LA ALU
41
SELECCIÓN DE OPERACIÓN OPERACIÓNFUNCIÓN S2S1S0Cin 0000 G = ATransfer A 0001 G = A + 1Increment A 0010 G = A + BAddition 0011 G = A + B + 1Add with Carry input of 1 0100 G = A + B’A más complemento a uno de B 0101 G = A + B’ + 1Substraction 0110 G = A - 1Decrement A 0111 G = ATransfer A 100X G = A B AND 101X G = A V BOR 110X G = A B XOR 111X G = A’NOT (Complemento a uno) TABLA FUNCIONAL DE LA ALU
42
DESPLAZADORES (SHIFTERS)
43
Circuito Lógico Tabla Funcional SELECCIÓNOUTPUTOPERACIÓN S1S0Y3Y2Y1Y0 00D3D2D1D0NO ROTAR 01D2D1D0D3ROTA UNA POSICIÓN 10D1D0D3D2ROTA DOS POSICIONES 11D0D3D2D1ROTA TRES POSICIONES DESPLAZADOR ROTATORIO
44
DIAGRAMA GENERAL DE UNA UNIDAD DE DATOS La unidad de datos presentada en la figura, tiene una arquitectura tipo Hardvard (Bus de datos e instrucciones separados). El arreglo de registros permite cargar, almacenar y operar fácilmente los datos que se desean procesar. MB: MUX BUS MD: MUX DATA FS: FUNCTION SELECT V: OVERFLOW C: CARRY N: NEGATIVE Z: ZERO
45
SELECCIÓNMICRO-OPERACIÓN FSMFGH 000000000000F = A 000010000100F = A + 1 000100001000F = A + B 000110001100F = A + B + 1 001000010001F = A + B’ 001010010101F = A + B’ + 1 001100011001F = A – 1 001110011101F = A 010000100000 F = A B 010100101010F = A V B 011000110010 F = A B 011100111010F = A’ 100001000000F = B 101001010001F = sr B 110001100010F = sl B TABLA PARA LA UNIDAD FUNCIONAL
46
DETALLE DE LA UNIDAD FUNCIONAL
47
VARIABLES DE CONTROL PARA LA UNIDAD DE DATOS
48
CODIFICACIÓN DEL VECTOR DE CONTROL PARA LA UNIDAD DE DATOS DA, AA, BA MBFSMDRW FunctionCodeFunctionCodeFunctionCodeFunctionCodeFunctionCode R0000Register0F = A00000Function0No Write0 R1001Constant1F = A+100001Data In1Write1 R2010F = A+B00010 R3011F = A+B+100011 R4100F = A+B’00100 R5101F = A+B’+100101 R6110F = A-100110 R7111F = A00111 F = A B 01000 F = A B 01010 F = A B 01100 F = A’01110 F = B10000 F = sr B10100 F = sl B11000
49
EJEMPLOS DE MICROOPERACIONES MicrooperaciónDAAABAMBFSMDRW R1 R2+R3’+1R1R2R3RegisterF = A+B’+1FunctionWrite R4 sl R6R4--R6RegisterF = sl BFunctionWrite R7 R7+1R7 --RegisterF = A+1FunctionWrite R1 R0+2R1R0..ConstantF = A+BFunctionWrite Data out R3-- R3Register-- No Write R4 Data inR4-- Data inWrite R5 0R5R0 Register F = A B FunctionWrite MicrooperaciónDAAABAMBFSMDRW R1 R2 - R300101001100010101 R4 sl R610000011001100001 R7 R7+1111 00000000101 R1 R0+2001000 10001001 Data out R3000 01100000000 R4 Data in100000 00000011 R5 0101000 00110001 Notación Simbólica Notación Simbólica Codificación Binaria Codificación Binaria
50
SIMULACIÓN DE LA SECUENCIA DE MICROOPERACIONES R2 R2 – R3 R2 R2 – R3 R4 sl R6 R4 sl R6 R7 R7 + 1 R7 R7 + 1 R1 R0 + 2 R1 R0 + 2 Data out R3 Data out R3 R4 Data in R4 Data in R5 0 R5 0 R2 R2 – R3 R2 R2 – R3 R4 sl R6 R4 sl R6 R7 R7 + 1 R7 R7 + 1 R1 R0 + 2 R1 R0 + 2 Data out R3 Data out R3 R4 Data in R4 Data in R5 0 R5 0
51
INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES Captar Instrucción: Captar Instrucción: Leer instrucción de la memoria. Interpretar la instrucción: Interpretar la instrucción: Decodificar la instrucción y determinar acciones a realizar. Captar datos: Captar datos: Leer datos de memoria y/o E/S. Procesar datos: Procesar datos: realizar operación aritmética y/o lógica. Escribir datos: Escribir datos: llevar datos a memoria o E/S. Para realizar estas operaciones, la CPU requiere memoria interna TAREAS DE LA CPU
52
INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES COMPONENTES DEL PROCESADOR
53
INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES ESTRUCTURA INTERNA DE UNA CPU
54
INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES ORGANIZACIÓN DE LOS REGISTROS La memoria para almacenamiento interno posee REGISTROS (nivel más alto en jerarquía de memoria), existen dos tipos de registros: 1. Registros Visibles para el usuario: 1. Registros Visibles para el usuario: El usuario puede usarlos para minimizar los accesos a memoria. 2. Registros de control y de estado: 2. Registros de control y de estado: Son usados por la unidad de control y por programas privilegiados para controlar la ejecución de un programa. REGISTROS DE USO GENERAL Como su nombre lo dice, pueden ser utilizados para almacenar cualquier información Puede haber excepciones: Ej. Registros para almacenar punto flotante, punteros de pila, etc. Algunas veces pueden almacenar direcciones, en otros, existen registros para datos y otros para direcciones
55
INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES EJEMPLO DE REGISTROS DE DIRECCIONES Punteros de segmento: Punteros de segmento: Usados en memorias segmentadas, almacenan la dirección base del segmento Registros índices: Registros índices: Usado en direccionamiento indexado, pueden ser autoindexados. Puntero de pila: Puntero de pila: Mantiene la dirección de la cabeza de la pila. 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
56
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): Contador del Programa (PC): Dirección de la próxima instrucción a ejecutar. Registro de Instrucción: Registro de Instrucción: Instrucción captada más reciente. Registro de Dirección de Memoria: Registro de Dirección de Memoria: Dirección de una posición de memoria. Registro intermedio de memoria: Registro intermedio de memoria: Contiene la palabra leída o a escribir en memoria. PC = Program Counter: PC = Program Counter: Contiene la dirección de la instrucción a captar. IR = Instruction Register: IR = Instruction Register: Contiene la última instrucción captada. MAR = Memory Address Register: MAR = Memory Address Register: Contiene la dirección de una posición de memoria. MBR = Memory Buffer Register: MBR = Memory Buffer Register: Contiene la palabra de datos a escribir en memoria, o la palabra leída más reciente. NOMBRE DE LOS REGISTROS DE CONTROL Y DE ESTADO
57
INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES PALABRA DE ESTADO DEL PROGRAMA (PSW) Contiene la siguiente información de estado: Signo: Signo: Signo del último resultado aritmético Cero: Cero: Indica si el último resultado fue cero Acarreo: Acarreo: Usado en operaciones multipalabra Igual: Igual: Resultado de una operación lógica es igual Desbordamiento: Desbordamiento: Overflow aritmético Interrupciones: Interrupciones: Habilitadas/ deshabilitadas Supervisor: Supervisor: Estado de la CPU en modo supervisor o usuario
58
EJEMPLOS DE ORGANIZACIONES DE MICROPROCESADORES
59
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR CICLO DE INSTRUCCIÓN
60
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR CICLO FETCH (Captación) Función: Función: Lleva la siguiente instrucción de la memoria a la CPU. PC 1. El PC tiene la dirección de la siguiente instrucción. PC 2. El procesador capta la instrucción de la memoria direccionada por el PC. PC 3. Se incrementa PC en 1. IR 4. El código de la instrucción se carga en IR. CICLO DECODE (Decodificación) Función: IR Función: Decodifica los bits presentes en IR 1. Interpreta el código de operación.
61
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR CICLO EXECUTION(Ejecución) Función: Función: Ejecuta la instrucción 1. Procesador - memoria: 1. Procesador - memoria: Transferencia CPU Memoria 2. Procesador - I/O: 2. Procesador - I/O: Transferencia CPU Módulos I/O. 3. Procesamiento de datos: 3. Procesamiento de datos: Operaciones aritméticas o lógicas. 4. Control: 4. Control: Cambio de secuencias.
62
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR Ejemplo: 1. El PC contiene el valor 300. Se carga esta instrucción en IR (esto implica el uso de MAR y MBR)
63
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR Ejemplo: 2. Los primeros cuatro bits de IR (“1”) indican que el acumulador AC se va a cargar con un dato de la memoria. Los restantes 12 bits especifican la dirección. (es decir “940”)
64
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR Ejemplo: 3. El registro PC se incrementa y se capta la siguiente instrucción
65
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR Ejemplo: 4. Los primeros cuatro bits (“5”) indican que la instrucción es de suma entre el acumulador y una memoria. Los siguientes 12 bits indican la dirección de la memoria (“941”). El contenido de AC y el de la posición 941 se suman y el resultado se almacena en AC.
66
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR Ejemplo: 5. El registro PC se incrementa en 1 y se capta la siguiente instrucción.
67
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR Ejemplo: 6. Los primeros cuatro bits indican (“2”) que el acumulador se debe almacenar en una memoria. Los siguientes 12 bits indican la dirección de la memoria (“941”). El contenido de AC se almacena en la posición 941. Se requieren tres ciclos de instrucción para ejecutar esta tarea.
68
CONJUNTO DE INSTRUCCÍONES DEL PROCESADOR 1. Instrucciones de transferencia de datos. 2. Instrucciones aritméticas. 3. Instrucciones lógicas. 4. Control de flujo. 5. Entrada / Salida. 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:
69
ESTRUCTURA DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARD
70
DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARD
71
DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO VON NEUMAN
72
ARQUITECTURA HARVARD vs VON NEUMAN 1. MEMORY: 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. 2. BUS: 2. BUS: Al igual que la memoria, Harvard dispone de dos buses dedicados, uno para datos y otro para instrucciones; Von Neuman comparte el Bus de instrucciones y Datos.
73
EJEMPLO DE APLICACIÓN Para aclarar lo visto, vamos a desarrollar el siguiente ejercicio: La figura muestra la memoria (MEM) de un sistema: el registro de direcciones (MAR) puede ser cargado con el contador del programa (PC) o con el puntero de pila (SP), el registro de datos (MDR) está conectado a un bus de datos internos (IDB), al que también se conecta el registro [A], y otro externo (EDB) conectado con la memoria. 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. Desarrollar la Carta ASM y a partir de ella diseñar adecuadamente la unidad de control que permita ejecutar las operaciones de PUSH (I 1 I 0 = 00) y POP (I 1 I 0 = 01). Nota: los códigos I 1 I 0 = 1X están reservados para otras operaciones no definidas en el enunciado.
74
EJEMPLO DE APLICACIÓN
75
SOLUCIÓN AL EJEMPLO DE APLICACIÓN MICROOPERACIÓNSEÑALES A ACTIVAR 1.MAR SP / MDR AWSP / R A / W I 2.MEM MDR / SP SP + 1CS / W / R E / ISP 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 (I 1 I 0 = 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 (I 1 I 0 = 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ÓNSEÑALES A ACTIVAR 1.SP SP – 1DSP 2.MAR SPWSP 3.MDR MEMCS / R / W E 4.A MDRR I / W A
76
CARTA ASM DEL EJEMPLO En el desarrollo de la carta ASM puede verse claramente la rutina de cada una de las operaciones solicitadas, también se incluye la salida hacia otras operaciones que no son de interés en este ejemplo. El estado S6 devolverá el sistema hacia S0 con la señal de RESET, con las interrupciones del sistema o simplemente el siguiente pulso de reloj lo devolverá.
77
1. Bit Counter 2. Shift-and-Add Multiplier OTROS EJEMPLOS
78
B = 0; while A≠0 do if a 0 = 1 then B = B + 1; end if; Right-shift A; end while ; 1.BIT COUNTER Pseudo-código para el Bit Counter Sistema que permite contar el número de ‘1s’ presentes en el Registro A, guardando el resultado en el Registro B Se utiliza un lenguaje estándar de programación para describir el algoritmo que se va a utilizar. Luego se describe como diseño ASM
79
CARTA ASM PARA EL BIT COUNTER Carta ASM para el diseño del DATAPATH del contador de bits ‘1’, describe las micro-operaciones presentes en el diseño.
80
DIAGRAMA DE TIEMPOS DEL BIT COUNTER
81
DISEÑO DEL DATAPATH PARA EL BIT COUNTER
82
CARTA ASM PARA EL CONTROL DEL BIT COUNTER Carta ASM para el diseño de la lógica de control del contador de bits ‘1’. Obsérvese que las señales utilizadas son las señales de STATUS. Z = ‘1’ when A[n] = ‘0’ a 0 Bit menos significativo de A s Señal de inicio START Done Indica que el proceso terminó LB Load B, Borra el contador B LA Load A, Carga el registro A EB Incrementa el contador B EA Desplaza A hacia la derecha
83
CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (1) -- Descripción en Código VHDL del contador de ‘1s’ -- Declaración de Librerías, cláusula USE 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 ;
84
CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (2) ARCHITECTURE Behavior OF bitcount IS TYPE State_type IS ( S1, S2, S3 ) ; SIGNAL y : State_type ; SIGNAL A : STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL z, EA, LB, EB, low : STD_LOGIC ; BEGIN FSM_transitions: PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN y <= S1 ; ELSIF (Clock'EVENT AND Clock = '1') THEN CASE y IS WHEN S1 => IF s = '0' THEN y <= S1 ; ELSE y <= S2 ; END IF ; WHEN S2 => IF z = '0' THEN y <= S2 ; ELSE y <= S3 ; END IF ; WHEN S3 => IF s = '1' THEN y <= S3 ; ELSE y <= S1 ; END IF ; END CASE ; END IF ; END PROCESS ;
85
FSM_outputs: PROCESS ( y, A(0) ) BEGIN EA <= '0' ; LB <= '0' ; EB <= '0' ; Done <= '0' ; CASE y IS WHEN S1 => LB <= '1' WHEN S2 => EA <= '1' ; IF A(0) = '1' THEN EB <= '1' ; ELSE EB <= '0' ; END IF ; WHEN S3 => Done <= '1' ; END CASE ; END PROCESS ; CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (3)
86
-- El DATAPATH es descrito a continuación upcount: PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN B <= 0 ; ELSIF (Clock'EVENT AND Clock = '1') THEN IF LB = '1' THEN B <= 0 ; ELSEIF EB = '1' THEN B <= B + 1 ; END IF ; END PROCESS; CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (4) low <= '0' ; ShiftA: shiftrne GENERIC MAP ( N => 8 ) PORT MAP ( Data, LA, EA, low, Clock, A ) ; z <= '1' WHEN A = "00000000" ELSE '0' ; END Behavior ;
87
2.MULTIPLICADOR BINARIO DE n BITS P = 0; For i = 0 to n – 1 do if bi = 1 then P = P + A; end if; Left-Shift A; End for; b. Pseudo - Code Decimal Binaria 13 1 1 0 1 Multiplicando x 11 1 0 1 1 Multiplicador 13 1 1 0 1 143 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 Producto a. Método manual ALGORITMO PARA LA MULTIPLICACIÓN
88
CARTA ASM PARA EL MULTIPLICADOR BINARIO Carta ASM para el diseño del DATAPATH del multiplicador binario, describe las micro- operaciones presentes en el diseño.
89
DIAGRAMA DE TIEMPOS PARA EL MULTIPLICADOR
90
DISEÑO DEL DATAPATH PARA EL MULTIPLICADOR 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 B 0 LSB del registro B
91
CARTA ASM PARA EL CONTROL DEL MULTIPLICADOR Carta ASM para el diseño de la lógica de control del Multiplicador Binario. Obsérvese que las señales utilizadas son las señales de STATUS. Z = ‘1’ when B[n] = ‘0’ b 0 Bit menos significativo de B s Señal de inicio START Done Indica que el proceso terminó RB Shift-Right B RA Shift-Left A Psel Control del MUX EP Suma a P el contenido de A
92
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: INSTD_LOGIC ; Resetn: INSTD_LOGIC ; LA, LB, s: INSTD_LOGIC ; DataA: INSTD_LOGIC_VECTOR(N–1 DOWNTO 0) ; DataB: INSTD_LOGIC_VECTOR(N–1 DOWNTO 0) ; P: BUFFER STD_LOGIC_VECTOR(N–1 DOWNTO 0) ; Done: OUTSTD_LOGIC ) ; END multiply ; CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (1)
93
ARCHITECTURE Behavior OF multiply IS TYPE State_type IS ( S1, S2, S3 ) ; SIGNAL y : State_type; SIGNAL Psel, z, EA, EB, EP, Zero : STD_LOGIC ; SIGNAL B, N_Zeros : STD_LOGIC_VECTOR(N–1 DOWNTO 0) ; SIGNAL A, Ain, DataP, Sum : STD_LOGIC_VECTOR(NN–1 DOWNTO 0) ; BEGIN FSM_transitions: PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0’ THEN y <= S1 ; ELSIF (Clock'EVENT AND Clock = '1') THEN CASE y IS WHEN S1 => IF s = '0' THEN y <= S1 ; ELSE y <= S2 ; END IF; WHEN S2 => IF z = '0' THEN y <= S2 ; ELSE y <= S3 ; END IF; WHEN S3 => IF s = '1' THEN y <= S3 ; ELSE y <= S1 ; END IF; END CASE ; END IF ; END PROCESS; CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (2)
94
FSM_outputs: PROCESS ( y, s, B(0) ) BEGIN EP <= '0' ; EA <= '0' ; EB <= '0' ; Done <= '0' ; Psel <= '0'; CASE y IS WHEN S1 => EP <= '1‘ ; WHEN S2 => EA <= '1' ; EB <= '1' ; Psel <= '1‘ ; IF B(0) = '1' THEN EP <= '1' ; ELSE EP <= '0' ; END IF ; WHEN S3 => Done <= '1‘ ; END CASE ; END PROCESS ; CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (2)
95
- - Define the datapath circuit Zero <= '0' ; N_Zeros '0' ) ; Ain <= N_Zeros & DataA ; ShiftA: shiftlne GENERIC MAP ( N => NN ) PORT MAP ( Ain, LA, EA, Zero, Clock, A ) ; ShiftB: shiftrne GENERIC MAP ( N => N ) PORT MAP ( DataB, LB, EB, Zero, Clock, B ) ; z <= '1' WHEN B = N_Zeros ELSE '0' ; Sum <= A + P ; - - Define the 2n 2-to-1 multiplexers for DataP GenMUX: FOR i IN 0 TO NN–1 GENERATE Muxi: mux2to1 PORT MAP ( Zero, Sum(i), Psel, DataP(i) ) ; END GENERATE; RegP: regne GENERIC MAP ( N => NN ) PORT MAP ( DataP, Resetn, EP, Clock, P ) ; END Behavior ; CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (3)
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.