MICROELECTRÓNICATitular IE. MSc. José Armando Becerra Vargas DISEÑO RTL.

Slides:



Advertisements
Presentaciones similares
Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
Advertisements

El modelo de Von Neumann
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
ORGANIZACIÓN COMPUTACIONAL
MICROELECTRÓNICA IE. MSc. José Armando Becerra Vargas
LECCIÓN 8. DISEÑO DE SISTEMAS DIGITALES DE CONTROL
Circuitos Combinacionales Comunes
Composición Interna de un Procesador
Unidad 2: Organización del CPU
ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS
Overview Sistemas Computacionales
Diseño lógico combinacional mediante VHDL
Microcomputadores Prof: Tatiana Marín R.. Lenguaje máquina = lenguaje binario InstrucciónLenguaje máquina (binario)OP ( hex)Nemónico Restar F0SUB.
Diseño Lógico Combinacional con VHDL
Maquinas Digitales Funciones del Procesador Buscar instrucciones Interpretar instrucciones Buscar datos Procesar datos Escribir datos.
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
PICOBLAZE (Microcontrolador Embebido de 8 bits). Picoblaze Es un microcontrolador de 8 bits, muy simple, orientado inicialmente para FPGAs de la familia.
UNIDAD 3: SISTEMAS COMBINACIONALES Y SECUENCIALES UNIDAD 3: SISTEMAS COMBINACIONALES Y SECUENCIALES ING. GERARDO A. LEAL, MSC Unidad 3: Sistemas Combinacionales.
1 LENGUAJE DE DESCRIPCION DE HARDWARE ELECTRONICA DIGITAL NAYIBE CHIO CHO NAYIBE CHIO CHO.
Componentes físicos de un ordenador MSc. Lic. David Escalera.
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
El procesador Datapath y control. Universidad de SonoraArquitectura de Computadoras2 Introducción En esta parte del curso contiene: Las principales técnicas.
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
CONSIDERACIONES DE RUIDO EN SISTEMAS PCM ING. JAVIER GARCIA.
L. S. C. A. Raúl Monforte Chulin
Organización de computadoras
Pablo Huerta Pellitero
Microprocesador Estructura interna.
Descripcion y control de procesos
El procesador Diseño del control.
Pipelining Datapath y control.
EL CPU.
Titulación: Grado en Ingeniería de Computadores
8. Diseño del Procesador Fundamentos de los Computadores
HARDWARE POR: JOEL CASTAÑEDA 1ºA.
ARQUITECTURA DE HARD WARE COMPONENTES EN BLOQUES DEL PROCESADOR
TUTORIAL PSeint.
Componentes básicos de una computadora
Diseño de Circuitos Lógicos Combinatorios (2)
Estructura de Computadores (EUI: 2º ITIS) Tema 4: Diseño del procesador (parte II)1 Diseño de la Unidad de Control Multiciclo: Microprogramación Introducción.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
JAVIER ANDRES MARTÀ MARTINEZ CODIGO 37772
PICOBLAZE RESUMEN.
Estas dos líneas de código permiten al Asm iniciar en Code Segment
TECNOLOGÍA DE EQUIPOS INFORMÁTICOS
Hardware Description Language
PANTALLA LCD.
Programación en VHDL.
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
HERRAMIENTAS DE PROGRAMACIÓN
PROCESADOR DIGITAL ESPECIALIZADO
8. Diseño del Procesador Fundamentos de los Computadores
ARQUITECTURA DEL COMPUTADOR Ing. Diana E. López.
PICOBLAZE RESUMEN.
Operaciones con Acumuladores
(Numerically Controlled Oscillator)
Arquitectura de Computadores de Computadores. Organización y Arquitectura La Arquitectura: se refiere a los atributos que tienen un impacto directo en.
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
El procesador Datapath y control.
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
INTRODUCCIÓN A LA INFORMÁTICA
1 ALU (Unidad aritmético lógica) Registros Unidad de control I/O y buses internos (usualmente 3 estados) I/O y buses internos Los buses I/O son de tres.
Profesor del curso: UNIVERSIDAD NACIONAL DEL CENTRO DEL PERU 2019-I Facultad de Ingeniería de Sistemas 1.
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
ARQUITECTURA DE UN MICROPROCESADOR. ESTRUCTURA BÁSICA DE UN SISTEMA MICROPROGRAMABLE A. Hardware CPU (chip microprocesador): es un circuito integrado.
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
Transcripción de la presentación:

MICROELECTRÓNICATitular IE. MSc. José Armando Becerra Vargas DISEÑO RTL

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.

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.

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.

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.

ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA ENTRE REGISTROS Diagrama de GLUSHKOV

ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA ENTRE REGISTROS Estructura General del sistema

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], …)

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

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

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

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

Operación condicional: Notación de transferencia entre registros: OPERACIONES DE TRANSFERENCIA

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

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

Implementación de las operaciones de transferencia: OPERACIONES DE TRANSFERENCIA Flag Over Flow Flag Carry

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 R SHIFT RIGHTR1  sr R OPERACIONES DE TRANSFERENCIA

Ejemplo: Implementación de la operación condicional múltiple. TRANSFERENCIA UTILIZANDO MULTIPLEXORES

Circuito detallado de la implementación de: TRANSFERENCIA UTILIZANDO MULTIPLEXORES

Multiplexores dedicadosUn solo Bus TRANSFERENCIA UTILIZANDO MULTIPLEXORES

TRANSFERENCIA DE REGISTRO SELECTCARGA S1S0L2L1L0 RO  R RO  R1, R2  R RO  R1, R1  R0IMPOSIBLE Ejemplo de Transferencia entre Registros utilizando una configuración de un solo BUS. TRANSFERENCIA UTILIZANDO MULTIPLEXORES Tabla de conmutación

BUS MultiplexadoBUS Tri estado con Registros bidireccionales TIPOS DE BUSES

Funcionamiento de un Registro Bidireccional: TIPOS DE BUSES

Conexión de una Memoria al Bus de Datos y al Bus de Direcciones: TIPOS DE BUSES – ESTRUCTURA CON MEMORIA

Conjunto e Registros (RTL) Unidad Funcional (Operaciones) ESTRUCTURA FUNCIONAL DE LA UNIDAD DE DATOS

DESCRIPCIÓN ESTRUCTURAL CIRCUITOS ARITMÉTICOS

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)

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.

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.

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 Acarreo A Operando A B Operando B Suma 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

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 HA aiaibibiaiaibibi S i C i+1

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

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 Tabla de la verdad para un FA FA aiaibibiCiCiaiaibibiCiCi S i C i+1

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

Unidad Aritmético-Lógica (ALU) UNIDAD FUNCIONAL (ALU)

ESTRUCTURA COMPLETA DE UNA ALU UNIDAD LÓGICA UNIDAD ARITMÉTICA

SelectInputG = A + Y + Cin S1S0YCin = 0Cin = 1 00Todo 0'sG = A (Transferencia)G = A + 1 (Incrementa) 01BG = A + B (Adición)G = A + B B’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 = Yi = Bi Yi = /Bi Yi = MICRO-OPERACIONES BÁSICAS DE UNA ALU

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

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.

UNA ETAPA DE LA ALU

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 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

DESPLAZADORES (SHIFTERS)

Circuito Lógico Tabla Funcional SELECCIÓNOUTPUTOPERACIÓN S1S0Y3Y2Y1Y0 00D3D2D1D0NO ROTAR 01D2D1D0D3ROTA UNA POSICIÓN 10D1D0D3D2ROTA DOS POSICIONES 11D0D3D2D1ROTA TRES POSICIONES DESPLAZADOR ROTATORIO

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

SELECCIÓNMICRO-OPERACIÓN FSMFGH F = A F = A F = A + B F = A + B F = A + B’ F = A + B’ F = A – F = A F = A  B F = A V B F = A  B F = A’ F = B F = sr B F = sl B TABLA PARA LA UNIDAD FUNCIONAL

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 MBFSMDRW FunctionCodeFunctionCodeFunctionCodeFunctionCodeFunctionCode R0000Register0F = A00000Function0No Write0 R1001Constant1F = A Data In1Write1 R2010F = A+B00010 R3011F = A+B R4100F = A+B’00100 R5101F = A+B’ R6110F = A R7111F = A00111 F = A  B F = A  B F = A  B F = A’01110 F = B10000 F = sr B10100 F = sl B11000

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 - R R4  sl R R7  R R1  R Data out  R R4  Data in R5  Notación Simbólica Notación Simbólica Codificación Binaria Codificación Binaria

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

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

INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES COMPONENTES DEL PROCESADOR

INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES ESTRUCTURA INTERNA DE UNA CPU

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

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

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

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

EJEMPLOS DE ORGANIZACIONES DE MICROPROCESADORES

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR CICLO DE INSTRUCCIÓN

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.

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.

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)

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”)

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: 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.

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: 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.

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:

ESTRUCTURA DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARD

DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARD

DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO VON NEUMAN

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.

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.

EJEMPLO DE APLICACIÓN

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

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á.

1. Bit Counter 2. Shift-and-Add Multiplier OTROS EJEMPLOS

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

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.

DIAGRAMA DE TIEMPOS DEL BIT COUNTER

DISEÑO DEL DATAPATH PARA EL BIT COUNTER

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

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 ;

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 ;

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)

-- 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 = " " ELSE '0' ; END Behavior ;

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 Multiplicando x Multiplicador Producto a. Método manual ALGORITMO PARA LA MULTIPLICACIÓN

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.

DIAGRAMA DE TIEMPOS PARA EL MULTIPLICADOR

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

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

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)

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)

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)

- - 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)