RTL
-
Upload
diana-carolina-escobar -
Category
Documents
-
view
175 -
download
0
Transcript of RTL
MICROELECTRÓNICA
IE. MSc. José Armando Becerra Vargas
DISEÑO RTL DE PROCESADORESARITMÉTICOS
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.
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.
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.
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.
ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS
Diagrama de GLUSHKOV
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
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
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
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
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
Operación condicional:
)12( )11( RRthenKif
Notación de transferencia entre registros:
12 :1 RRK
OPERACIONES DE TRANSFERENCIA
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
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
Implementación de las operaciones de transferencia:
211 :1 ___
RRRKX
1211 :1___
RRRKX
OPERACIONES DE TRANSFERENCIA
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
Ejemplo: Implementación de la operación condicional múltiple.
20:21 ,10 :1___
RRKKRRK
TRANSFERENCIA UTILIZANDO MULTIPLEXORES
Circuito detallado de la implementación de: 20:2'1 ,10 :1 RRKKRRK
TRANSFERENCIA UTILIZANDO MULTIPLEXORES
Multiplexores dedicados Un solo Bus
TRANSFERENCIA UTILIZANDO MULTIPLEXORES
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
BUS Multiplexado BUS 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)
UNIDAD DE DATOS
Unidad Aritmético-Lógica (ALU)
UNIDAD FUNCIONAL (ALU)
ESTRUCTURA COMPLETA DE UNA ALU
UNIDAD LÓGICA
UNIDAD ARITMÉTICA
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
UNIDAD ARITMÉTICA DE CUATRO BITs
Se basa en un diseñototalmente combinacional,los bloques FA, se refierena sumadores completos deun bit
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.
UNA ETAPA DE LA ALU
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
DESPLAZADORES (SHIFTERS)
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
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
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
DETALLE DE LA UNIDAD FUNCIONAL
VARIABLES DE CONTROL PARA LA UNIDAD DE DATOS
CODIFICACIÓN DEL VECTOR DE CONTROL PARA LA UNIDAD DE DATOS
DA, AA, BA MB FS MD RW
Function Code Function Code Function Code Function Code Function Code
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
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
SIMULACIÓN DE LA SECUENCIA DE MICROOPERACIONES
R2 R2 – R3R4 sl R6R7 R7 + 1R1 R0 + 2Data out R3R4 Data inR5 0
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
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 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
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
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
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
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: 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.
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.
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)
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”)
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR
Ejemplo:
3. El registro PC seincrementa y se capta lasiguiente instrucción
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.
CICLOS FETCH, DECODE Y EXECUTE DEL PROCESADOR
Ejemplo:
5. El registro PC seincrementa en 1 y secapta la siguienteinstrucción.
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.
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:
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: 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.
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.
EJEMPLO DE APLICACIÓN
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
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á.
1. Bit Counter
2. Shift-and-Add Multiplier
OTROS EJEMPLOS
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
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.
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ó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
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 ;
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 ;
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)
-- 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 ;
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
CARTA ASM PARA EL MULTIPLICADOR BINARIO
Carta ASM para el diseño delDATAPATH del multiplicadorbinario, 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
B0 LSB del registro B
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
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)
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)
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 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)