rtl

86
MICROELECTRÓNICA IE. MSc. José Armando Becerra Vargas DISEÑO RTL DE PROCESADORES ARITMÉTICOS

Upload: diana-carolina-escobar

Post on 29-Jun-2015

175 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RTL

MICROELECTRÓNICA

IE. MSc. José Armando Becerra Vargas

DISEÑO RTL DE PROCESADORESARITMÉTICOS

Page 2: RTL

REQUISITOS DEL CURSO

Para abordar temas de diseño jerárquico, descripción a nivel RTL y diseño deprocesadores aritméticos en general, el estudiante debe tener conocimientos delos siguientes temas:

1. Análisis y síntesis de sistemas combinacionales; lógica cableada, Lógicamodular y descripción en VHDL de sistemas combinacionales.

2. Análisis y síntesis de sistemas secuenciales; Máquinas de estado de Mealy yMoore, Diseño de alto nivel y descripción en VHDL de sistemas secuenciales.

3. Conocimiento básico de arquitectura de computadores; Funcionamiento deuna 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.

Page 3: RTL

CONSIDERACIONES GENERALES DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS

Los componentes básicos de este método son aquellos que describen un sistema digital apartir del nivel operacional. La operación de un sistema digital se describe de mejormanera 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 entreregistros para describir sistemas digitales.

Un registro como se define en la notación de lógica de transferencia entre registros, nosolamente 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 contadorse considera como un registro cuya función es incrementar en 1 la información almacenadaen él. Una unidad de memoria se considera como una colección de registros dealmacenamiento donde se va a almacenar la información. Un Flip-Flop por si solo se tomacomo un registro de 1 bit, los Flip-Flop y las compuertas asociadas de cualquier circuitosecuencia se llaman registro.

Page 4: RTL

CONSIDERACIONES GENERALES DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS

La información binaria almacenada en los registros podría ser números binarios, númerosdecimales codificados en binario, caracteres alfanuméricos, control de información ócualquier información binaria codificada. Las operaciones que se realizan mediante losdatos almacenados en los registros, depende del tipo de datos que se encuentren. Losnúmeros se manipulan con operaciones aritméticas, mientras que el control deinformación se manipula por lo general con operaciones lógicas tales como activar o borrarbits del registro.

Las operaciones realizadas con los datos almacenados en los registros, se llamanmicrooperaciones. Una microoperación es una operación elemental que puede serrealizada en paralelo durante un periodo de pulso de reloj. El resultado de la operaciónpuede reemplazar la información binaria previa de un registro o puede ser transferida aotro registro.

Ejemplos de microoperaciones son: Desplazar, contar, sumar, borrar y cargar.

Page 5: RTL

CONSIDERACIONES GENERALES DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS

Las microoperaciones especifican las operaciones elementales que se realizan con lainformación almacenada en los registros. Los tipos de microoperaciones encontradas mása menudo en los sistemas digitales pueden clasificarse en cuatro categorías:

1. Microoperaciones de transferencia entre registros que no cambian el contenido de lainformación cuando la información binaria se mueve de un registro a otro.

2. Las microoperaciones aritméticas realizan aritmética con los números almacenados enlos registros.

3. Microoperaciones lógicas realizan operaciones tales como la AND y OR con el par debits individuales almacenados en los registros.

4. Las microoperaciones de desplazamiento especifican operaciones para los registros dedesplazamiento.

Page 6: RTL

ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS

Diagrama de GLUSHKOV

Page 7: RTL

El comportamiento de un sistema digital a nivel de transferencia de registros se puede definir mediante un conjunto de operaciones O1 ,O2 , O3 , … Onrealizadas 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:

R[m] f ( R[i], R[j], R[k], …)

NIVEL DE TRANSFERENCIA ENTRE REGISTROS

Page 8: RTL

Sean A y B dos registros, la operación mas habitual es transferir elcontenido de un registro a otro, se expresa así: B A

En caso de necesitar saber el número o posición de los bitstransferidos se indica de la siguiente manera: B[7-0] A[15-8]

Normalmente la transferencia está controlada mediante una señalde 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 DE REGISTROS

Page 9: RTL

Los registros pueden ser objeto de las operaciones aritméticas ylógicas habituales, así tendremos:

D A BLSR (A)ASR (A)A A + 1

Otro operador disponible es & (concatenación) p.ej LSR (A&B)

LENGUAJE DE TRANSFERENCIA DE REGISTROS

Page 10: RTL

Las transferencias de datos entre registros y memoria se puedentratar como casos particulares del caso anterior donde tendremos dosoperaciones gobernadas por las señales de control R (lectura) y W(escritura) y usando los registros MAR y MBR con la notación habitualtendremos:

R: MBR M((MAR))

W: M((MAR)) MBR

LENGUAJE DE TRANSFERENCIA DE REGISTROS

Por último las transferencias entre buses y registros se escriben de forma similar:

A Inbus [8]

Outbus [8] A

MAR: Memory Address RegisterMBR: Memory Buffer RegisterMDR: Memory Data Register

Page 11: RTL

OPERACIONES DE TRANSFERENCIA

Identificación de Registros en operaciones de transferencia:

12 RR : El contenido de R1 se transfiere a R2

OPERACIÓN DESCRIPCIÓN

Page 12: RTL

Operación condicional:

)12( )11( RRthenKif

Notación de transferencia entre registros:

12 :1 RRK

OPERACIONES DE TRANSFERENCIA

Page 13: RTL

Símbolos usados en el lenguaje de transferencia de Registros:

SÍMBOLO DESCRIPCIÓN EJEMPLO

Letras y/o Letras y Números Denota un Registro AR, R2, DR, IR

Paréntesis Denota parte de un Registro R2(1), R2(7:0), AR(L)

Flecha Denota Transferencia de Datos R2 R1

Coma Separa operaciones simultaneas R1 R2, R2 R0

Paréntesis cuadrados Especifica una dirección de memoria DR M[MAR]

OPERACIONES DE TRANSFERENCIA

Page 14: RTL

Ejemplo de Micro-operaciones Aritméticas:

DESIGNACIÓN SIMBÓLICA DESCRIPCIÓN

R0 R1 + R2 El 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 + 1 Complemento a dos del contenido de R2 se carga en R2.

R0 R1 + /R2 + 1 R1 más el complemento a dos de R2 se transfiere a R0 (Substracción o Resta)

R1 R1 + 1 Incrementa el contenido de R1 (Contador ascendente)

R1 R1 - 1 Decrementa el contenido de R1 (Contador descendente)

OPERACIONES DE TRANSFERENCIA

Page 15: RTL

Implementación de las operaciones de transferencia:

211 :1 ___

RRRKX

1211 :1___

RRRKX

OPERACIONES DE TRANSFERENCIA

Page 16: RTL

Micro-operaciones Lógicas:

DESIGNACIÓN SIMBÓLICA DESCRIPCIÓ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 R2 Operació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:

TIPO DESIGNACIÓN SIMBÓLICA FUENTE R2 DESTINACIÓN DESPUÉS DEL CORRIMIENTO R1

SHIFT LEFT R1 sl R2 10011110 00111100

SHIFT RIGHT R1 sr R2 11100101 01110010

OPERACIONES DE TRANSFERENCIA

Page 17: RTL

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

20:21 ,10 :1___

RRKKRRK

TRANSFERENCIA UTILIZANDO MULTIPLEXORES

Page 18: RTL

Circuito detallado de la implementación de: 20:2'1 ,10 :1 RRKKRRK

TRANSFERENCIA UTILIZANDO MULTIPLEXORES

Page 19: RTL

Multiplexores dedicados Un solo Bus

TRANSFERENCIA UTILIZANDO MULTIPLEXORES

Page 20: RTL

TRANSFERENCIA DE REGISTRO

SELECT CARGA

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

Ejemplo de Transferencia de Registrosutilizando una configuración de un solo BUS.

TRANSFERENCIA UTILIZANDO MULTIPLEXORES

Page 21: RTL

BUS Multiplexado BUS Tri estado con Registros bidireccionales

TIPOS DE BUSES

Page 22: RTL

Funcionamiento de un Registro Bidireccional:

TIPOS DE BUSES

Page 23: RTL

Conexión de una Memoria al Bus de Datos y al Bus de Direcciones:

TIPOS DE BUSES – ESTRUCTURA CON MEMORIA

Page 24: RTL

Conjunto e Registros

(RTL)

Unidad Funcional

(Operaciones)

UNIDAD DE DATOS

Page 25: RTL

Unidad Aritmético-Lógica (ALU)

UNIDAD FUNCIONAL (ALU)

Page 26: RTL

ESTRUCTURA COMPLETA DE UNA ALU

UNIDAD LÓGICA

UNIDAD ARITMÉTICA

Page 27: RTL

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)

Tabla de Funciones

Tabla de Verdad Mapa de Karnaugh

INPUTS OUTPUT

S1 S0 Bi Yi

0 0 0 0Yi = 0

0 0 1 0

0 1 0 0Yi = Bi

0 1 1 1

1 0 0 1Yi = /Bi

1 0 1 0

1 1 0 1Yi = 1

1 1 1 1

1/0 SBiSBiYi

CICLO DE MICRO-OPERACIONES DE UNA ALU

Page 28: RTL

UNIDAD ARITMÉTICA DE CUATRO BITs

Se basa en un diseñototalmente combinacional,los bloques FA, se refierena sumadores completos deun bit

Page 29: RTL

S1 S0 OUTPUT OPERACIÓN

0 0 G = A B AND

0 1 G = A V B OR

1 0 G = A B XOR

1 1 G = /A NOT

TABLA FUNCIONAL CIRCUITO LÓGICO

UNIDAD LÓGICA

El Multiplexor selecciona la funciónlógica deseada. Pueden existir másde cuatro funciones lógicas, lo querequiere un MUX de mayorcapacidad.

Page 30: RTL

UNA ETAPA DE LA ALU

Page 31: RTL

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 0 1 1 G = A + B + 1 Add with Carry input of 1

0 1 0 0 G = A + /B A más complemento a uno de B

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 = A V B OR

1 1 0 X G = A B XOR

1 1 1 X G = /A NOT (Complemento a uno)

TABLA FUNCIONAL DE LA ALU

Page 32: RTL

DESPLAZADORES (SHIFTERS)

Page 33: RTL

Circuito Lógico

Tabla Funcional

SELECCIÓN OUTPUT OPERACIÓN

S1 S0 Y3 Y2 Y1 Y0

0 0 D3 D2 D1 D0 NO ROTAR

0 1 D2 D1 D0 D3 ROTA UNA POSICIÓN

1 0 D1 D0 D3 D2 ROTA DOS POSICIONES

1 1 D0 D3 D2 D1 ROTA TRES POSICIONES

DESPLAZADOR ROTATORIO

Page 34: RTL

DIAGRAMA GENERAL DE UNA UNIDAD DE DATOS

La unidad de datos presentada en lafigura, tiene una arquitectura tipoHardvard (Bus de datos e instruccionesseparados). El arreglo de registrospermite cargar, almacenar y operarfácilmente los datos que se deseanprocesar.

MB: MUX BUS

MD: MUX DATA

FS: FUNCTION SELECT

V: OVERFLOW

C: CARRY

N: NEGATIVE

Z: ZERO

Page 35: RTL

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 = A V B

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

TABLA PARA LA UNIDAD FUNCIONAL

Page 36: RTL

DETALLE DE LA UNIDAD FUNCIONAL

Page 37: RTL

VARIABLES DE CONTROL PARA LA UNIDAD DE DATOS

Page 38: RTL

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

R0 000 Register 0 F = A 00000 Function 0 No Write 0

R1 001 Constant 1 F = A+1 00001 Data In 1 Write 1

R2 010 F = A+B 00010

R3 011 F = A+B+1 00011

R4 100 F = A+B’ 00100

R5 101 F = A+B’+1 00101

R6 110 F = A-1 00110

R7 111 F = A 00111

F = A B 01000

F = A B 01010

F = A B 01100

F = A’ 01110

F = B 10000

F = sr B 10100

F = sl B 11000

Page 39: RTL

EJEMPLOS DE MICROOPERACIONES

Microoperación DA AA BA MB FS MD RW

R1 R2+R3’+1 R1 R2 R3 Register F = A+B’+1 Function Write

R4 sl R6 R4 -- R6 Register F = sl B Function Write

R7 R7+1 R7 R7 -- Register F = A+1 Function Write

R1 R0+2 R1 R0 .. Constant F = A+B Function Write

Data out R3 -- -- R3 Register -- -- No Write

R4 Data in R4 -- -- -- -- Data in Write

R5 0 R5 R0 R0 Register F = A B Function Write

Microoperación DA AA BA MB FS MD RW

R1 R2 - R3 001 010 011 0 00101 0 1

R4 sl R6 100 000 110 0 11000 0 1

R7 R7+1 111 111 000 0 00001 0 1

R1 R0+2 001 000 000 1 00010 0 1

Data out R3 000 000 011 0 00000 0 0

R4 Data in 100 000 000 0 00000 1 1

R5 0 101 000 000 0 01100 0 1

Notación Simbólica

Codificación Binaria

Page 40: RTL

SIMULACIÓN DE LA SECUENCIA DE MICROOPERACIONES

R2 R2 – R3R4 sl R6R7 R7 + 1R1 R0 + 2Data out R3R4 Data inR5 0

Page 41: RTL

INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES

Captar Instrucción: Leer instrucción de la memoria.

Interpretar la instrucción: Decodificar la instrucción ydeterminar acciones a realizar.

Captar datos: Leer datos de memoria y/o E/S.

Procesar datos: realizar operación aritmética y/o lógica.

Escribir datos: llevar datos a memoria o E/S.

Para realizar estas operaciones, la CPU requierememoria interna

TAREAS DE LA CPU

Page 42: RTL

INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES

COMPONENTES DEL PROCESADOR

Page 43: RTL

INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES

ESTRUCTURA INTERNA DE UNA CPU

Page 44: RTL

INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES

ORGANIZACIÓN DE LOS REGISTROS

La memoria para almacenamiento interno posee REGISTROS (nivel más alto enjerarquía de memoria), existen dos tipos de registros:

1. Registros Visibles para el usuario: El usuario puede usarlos para minimizarlos accesos a memoria.

2. Registros de control y de estado: Son usados por la unidad de control y porprogramas privilegiados para controlar la ejecución de un programa.

REGISTROS DE USO GENERAL

Como su nombre lo dice, pueden ser utilizados para almacenar cualquierinformación

Puede haber excepciones: Ej. Registros para almacenar punto flotante,punteros de pila, etc.

Algunas veces pueden almacenar direcciones, en otros, existen registrospara datos y otros para direcciones

Page 45: RTL

INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES

EJEMPLO DE REGISTROS DE DIRECCIONES

Punteros de segmento: Usados en memorias segmentadas, almacenan ladirección base del segmento

Registros índices: Usado en direccionamiento indexado, pueden serautoindexados.

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, generalmenteforman parte de un registro de control

Generalmente los bits pueden ser leídos por referencia implícita, pero nopueden ser modificados

Page 46: RTL

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

PC = Program Counter: Contiene la dirección de la instrucción a captar.

IR = Instruction Register: Contiene la última instrucción captada.

MAR = Memory Address Register: Contiene la dirección de una posición dememoria.

MBR = Memory Buffer Register: Contiene la palabra de datos a escribir enmemoria, o la palabra leída más reciente.

NOMBRE DE LOS REGISTROS DE CONTROL Y DE ESTADO

Page 47: RTL

INTRODUCCIÓN A LA ARQUITECTURA DE PROCESADORES

PALABRA DE ESTADO DEL PROGRAMA (PSW)

Contiene la siguiente información de estado:

Signo: Signo del último resultado aritmético

Cero: Indica si el último resultado fue cero

Acarreo: Usado en operaciones multipalabra

Igual: Resultado de una operación lógica es igual

Desbordamiento: Overflow aritmético

Interrupciones: Habilitadas/ deshabilitadas

Supervisor: Estado de la CPU en modo supervisor o usuario

Page 48: RTL

EJEMPLOS DE ORGANIZACIONES DE MICROPROCESADORES

Page 49: RTL

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR

CICLO DE INSTRUCCIÓN

Page 50: RTL

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.

CICLO DECODE (Decodificación)

Función: Decodifica los bits presentes en IR

1. Interpreta el código de operación.

Page 51: RTL

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR

CICLO EXECUTION(Ejecución)

Función: Ejecuta la instrucción

1. Procesador - memoria: Transferencia CPU Memoria

2. Procesador - I/O: Transferencia CPU Módulos I/O.

3. Procesamiento de datos: Operaciones aritméticas o lógicas.

4. Control: Cambio de secuencias.

Page 52: RTL

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR

Ejemplo:

1. El PC contiene el valor300. Se carga estainstrucción en IR (estoimplica el uso de MAR yMBR)

Page 53: RTL

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR

Ejemplo:

2. Los primeros cuatrobits de IR (“1”) indicanque el acumulador AC seva a cargar con un datode la memoria. Losrestantes 12 bitsespecifican la dirección.(es decir “940”)

Page 54: RTL

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR

Ejemplo:

3. El registro PC seincrementa y se capta lasiguiente instrucción

Page 55: RTL

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR

Ejemplo:

4. Los primeros cuatrobits (“5”) indican que lainstrucción es de sumaentre el acumulador yuna memoria. Lossiguientes 12 bits indicanla dirección de lamemoria (“941”). Elcontenido de AC y el dela posición 941 se sumany el resultado sealmacena en AC.

Page 56: RTL

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR

Ejemplo:

5. El registro PC seincrementa en 1 y secapta la siguienteinstrucción.

Page 57: RTL

CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR

Ejemplo:

6. Los primeros cuatrobits indican (“2”) que elacumulador se debealmacenar en unamemoria. Los siguientes12 bits indican ladirección de la memoria(“941”). El contenido deAC se almacena en laposición 941.

Se requieren tres ciclos de instrucción para ejecutar esta tarea.

Page 58: RTL

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 todaslas CPU se puede encontrar como mínimo el siguiente conjunto deinstrucciones:

Page 59: RTL

ESTRUCTURA DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARD

Page 60: RTL

DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARD

Page 61: RTL

DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO VON NEUMAN

Page 62: RTL

ARQUITECTURA HARVARD vs VON NEUMAN

1. MEMORY: Harvarddispone de dos tipos dememoria una paraInstrucciones y otra paradatos; la arquitecturaVon Neuman, compartela memoria entreinstrucciones y datos.

2. BUS: Al igual que lamemoria, Harvarddispone de dos busesdedicados, uno paradatos y otro parainstrucciones; VonNeuman comparte el Busde instrucciones y Datos.

Page 63: RTL

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), elregistro de datos (MDR) está conectado a un bus de datos internos (IDB), al que tambiénse 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] (recuerdeque PUSH [A] implica MEM [A] y SP SP+1, mientras que POP [A] implica SP SP–1y [A] MEM (SP)). Cuando no hay operación de la pila, el puntero SP apunta a laprimera dirección libre.

Desarrollar la Carta ASM y a partir de ella diseñar adecuadamente la unidad de controlque permita ejecutar las operaciones de PUSH (I1I0 = 00) y POP (I1I0 = 01).

Nota: los códigos I1I0 = 1X están reservados para otras operaciones no definidas en elenunciado.

Page 64: RTL

EJEMPLO DE APLICACIÓN

Page 65: RTL

SOLUCIÓN AL EJEMPLO DE APLICACIÓN

MICROOPERACIÓN SEÑALES A ACTIVAR

1. MAR SP / MDR A WSP / RA / WI

2. MEMMDR / SP SP + 1 CS / W / RE / ISP

Según el enunciado, la pila se va llenando desde las direcciones más bajas hasta las más altas. Las dosoperaciones 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 ambasoperaciones la transferencia entre MEM y A debe pasar por MDR. Operación PUSH (I1I0 = 00): Como SPapunta a la dirección vacía, es ahí a donde hay que transferir A y, después, se incrementa SP para quecontinú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óloentonces se lleva SP a MAR para, después, leer de MEM hacia MDR y, de este registro, llevar el dato leídohacia A.

MICROOPERACIÓN SEÑALES A ACTIVAR

1. SP SP – 1 DSP

2. MAR SP WSP

3. MDRMEM CS / R / WE

4. AMDR RI / WA

Page 66: RTL

CARTA ASM DEL EJEMPLO

En el desarrollo de la carta ASMpuede verse claramente la rutinade cada una de las operacionessolicitadas, también se incluye lasalida hacia otras operacionesque no son de interés en esteejemplo. El estado S6 devolveráel sistema hacia S0 con la señalde RESET, con las interrupcionesdel sistema o simplemente elsiguiente pulso de reloj lodevolverá.

Page 67: RTL

1. Bit Counter

2. Shift-and-Add Multiplier

OTROS EJEMPLOS

Page 68: RTL

B = 0;

while A≠0 do

if a0 = 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 deprogramación para describir elalgoritmo que se va a utilizar. Luego sedescribe como diseño ASM

Page 69: RTL

CARTA ASM PARA EL BIT COUNTER

Carta ASM para el diseño delDATAPATH del contador de bits ‘1’,describe las micro-operacionespresentes en el diseño.

Page 70: RTL

DIAGRAMA DE TIEMPOS DEL BIT COUNTER

Page 71: RTL

DISEÑO DEL DATAPATH PARA EL BIT COUNTER

Page 72: RTL

CARTA ASM PARA EL CONTROL DEL BIT COUNTER

Carta ASM para el diseño de la lógicade control del contador de bits ‘1’.Obsérvese que las señales utilizadasson las señales de STATUS.

Z = ‘1’ when A[n] = ‘0’

a0 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

Page 73: RTL

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 ISPORT(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 ;

Page 74: RTL

CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (2)

ARCHITECTURE Behavior OF bitcount ISTYPE 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 ;

BEGINFSM_transitions: PROCESS ( Resetn, Clock )BEGIN

IF Resetn = '0' THENy <= S1 ;

ELSIF (Clock'EVENT AND Clock = '1') THENCASE 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 ;

Page 75: RTL

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

ELSEEB <= '0' ;

END IF ;WHEN S3 =>

Done <= '1' ;END CASE ;

END PROCESS ;

CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (3)

Page 76: RTL

-- El DATAPATH es descrito a continuaciónupcount: PROCESS ( Resetn, Clock )BEGIN

IF Resetn = '0' THENB <= 0 ;

ELSIF (Clock'EVENT AND Clock = '1') THENIF LB = '1' THEN

B <= 0 ;ELSEIF EB = '1' THEN

B <= B + 1 ;END IF ;

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 ;

Page 77: RTL

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

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

Page 78: RTL

CARTA ASM PARA EL MULTIPLICADOR BINARIO

Carta ASM para el diseño delDATAPATH del multiplicadorbinario, describe las micro-operaciones presentes en el diseño.

Page 79: RTL

DIAGRAMA DE TIEMPOS PARA EL MULTIPLICADOR

Page 80: RTL

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

B0 LSB del registro B

Page 81: RTL

CARTA ASM PARA EL CONTROL DEL MULTIPLICADOR

Carta ASM para el diseño de la lógicade control del Multiplicador Binario.Obsérvese que las señales utilizadasson las señales de STATUS.

Z = ‘1’ when B[n] = ‘0’

b0 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

Page 82: RTL

LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.std_logic_unsigned.all ;USE work.components.all ;

ENTITY multiply ISGENERIC ( 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 (1)

Page 83: RTL

ARCHITECTURE Behavior OF multiply ISTYPE 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) ;

BEGINFSM_transitions: PROCESS ( Resetn, Clock )BEGIN

IF Resetn = '0’ THENy <= S1 ;

ELSIF (Clock'EVENT AND Clock = '1') THENCASE 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)

Page 84: RTL

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)

Page 85: RTL

- - Define the datapath circuitZero <= '0' ;N_Zeros <= (OTHERS => '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 DataPGenMUX: 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)

Page 86: RTL