ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

48
ESTRUCTURA GENERAL DE UN SISTEMA DE ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS TRANSFERENCIA DE REGISTROS

Transcript of ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

Page 1: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

ESTRUCTURA GENERAL DE UN SISTEMA ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROSDE TRANSFERENCIA DE REGISTROS

Page 2: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

OPERACIONES DE TRANSFERENCIAOPERACIONES DE TRANSFERENCIA

Identificación de Registros en operaciones de transferencia:

12 RR : El contenido de R1 se transfiere a R2

OPERACIÓN DESCRIPCIÓNOPERACIÓN DESCRIPCIÓN

Page 3: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

Operación condicional:

)12( )11( RRthenKif

Notación de transferencia entre registros:

12 :1 RRK

OPERACIONES DE TRANSFERENCIAOPERACIONES DE TRANSFERENCIA

Page 4: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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

Paréntesis cuadrados Especifica una dirección de memoria DR <-- M[AR]

OPERACIONES DE TRANSFERENCIAOPERACIONES DE TRANSFERENCIA

Page 5: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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 TRANSFERENCIAOPERACIONES DE TRANSFERENCIA

Page 6: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

Implementación de las operaciones de transferencia:

211 :1 ___

RRRKX

1211 :1___

RRRKX

OPERACIONES DE TRANSFERENCIAOPERACIONES DE TRANSFERENCIA

Page 7: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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 TRANSFERENCIAOPERACIONES DE TRANSFERENCIA

Page 8: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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

10:21 ,20 :1___

RRKKRRK

TRANSFERENCIA UTILIZANDO TRANSFERENCIA UTILIZANDO MULTIPLEXORESMULTIPLEXORES

Page 9: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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

TRANSFERENCIA UTILIZANDO TRANSFERENCIA UTILIZANDO MULTIPLEXORESMULTIPLEXORES

Page 10: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

Multiplexores dedicados Un solo Bus

TRANSFERENCIA UTILIZANDO TRANSFERENCIA UTILIZANDO MULTIPLEXORESMULTIPLEXORES

Page 11: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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 Registros utilizando una configuración de un solo BUS.

TRANSFERENCIA UTILIZANDO TRANSFERENCIA UTILIZANDO MULTIPLEXORESMULTIPLEXORES

Page 12: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

BUS Multiplexado BUS Tri estado con Registros bidireccionales

TIPOS DE BUSESTIPOS DE BUSES

Page 13: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

Funcionamiento de un Registro Bidireccional:

TIPOS DE BUSESTIPOS DE BUSES

Page 14: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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

TIPOS DE BUSES – ESTRUCTURA CON TIPOS DE BUSES – ESTRUCTURA CON MEMORIAMEMORIA

Page 15: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

Conjunto e Registros

(RTL)

Unidad Funcional

(Operaciones)

UNIDAD DE DATOSUNIDAD DE DATOS

Page 16: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

Unidad Aritmético-Lógica (ALU)

UNIDAD FUNCIONAL (ALU)UNIDAD FUNCIONAL (ALU)

Page 17: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

ESTRUCTURA COMPLETA DE UNA ALUESTRUCTURA COMPLETA DE UNA ALU

UNIDAD LÓGICAUNIDAD LÓGICA

UNIDAD ARITMÉTICAUNIDAD ARITMÉTICA

Page 18: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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 FuncionesTabla de Funciones

Tabla de VerdadTabla de Verdad Mapa de KarnaughMapa 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 CICLO DE MICRO-OPERACIONES DE UNA ALUALU

Page 19: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

UNIDAD ARITMÉTICA DE CUATRO BITsUNIDAD ARITMÉTICA DE CUATRO BITs

Se basa en un diseño totalmente combinacional, los bloques FA, se refieren a sumadores completos de un bit

Page 20: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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 FUNCIONALTABLA FUNCIONAL CIRCUITO LÓGICOCIRCUITO LÓGICO

UNIDAD LÓGICAUNIDAD 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.

Page 21: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

UNA ETAPA DE LA ALUUNA ETAPA DE LA ALU

Page 22: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

SELECCIÓN DE OPERACIÓNOPERACIÓ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 ALUTABLA FUNCIONAL DE LA ALU

Page 23: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

DESPLAZADORES (SHIFTERS)DESPLAZADORES (SHIFTERS)

Page 24: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

Circuito LógicoCircuito Lógico

Tabla FuncionalTabla FuncionalSELECCIÓ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 ROTATORIODESPLAZADOR ROTATORIO

Page 25: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

DIAGRAMA GENERAL DE UNA UNIDAD DE DIAGRAMA GENERAL DE UNA UNIDAD DE DATOSDATOS

La unidad de datos presentada en la figura, tiene una arquitectura tipo Hardvard (Bus de datos y direcciones separados). El arreglo de registros permite cargar, almacenar y operar fácilmente los datos que se desean procesar.

Page 26: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

SELECCIÓN MICRO-OPERACIÓN

FSFS MFMF GG HH

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 FUNCIONALTABLA PARA LA UNIDAD FUNCIONAL

Page 27: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

DETALLE DE LA UNIDAD FUNCIONALDETALLE DE LA UNIDAD FUNCIONAL

Page 28: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

ESTRUCTURA DE UN PROCESADOR CON ESTRUCTURA DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARDARQUITECTURA TIPO HARDVARD

Page 29: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

DIAGRAMA DE BLOQUES DE UN DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO PROCESADOR CON ARQUITECTURA TIPO

HARDVARDHARDVARD

Page 30: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

1.1. Bit CounterBit Counter

2.2. Shift-and-Add MultiplierShift-and-Add Multiplier

EJEMPLOSEJEMPLOS

Page 31: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

B = 0;

while A≠0 do

if a0 = 1 then

B = B + 1;

end if;

Right-shift A;

end while ;

1.1. BIT COUNTERBIT COUNTER

Pseudo-código para el Bit CounterPseudo-código para el Bit Counter

Sistema que permite contar el número de ‘1s’ presentes en el Registro A, Sistema que permite contar el número de ‘1s’ presentes en el Registro A, guardando el resultado en el Registro Bguardando el resultado en el Registro B

Se utiliza un lenguaje estándar de Se utiliza un lenguaje estándar de programación para describir el programación para describir el algoritmo que se va a utilizar. Luego se algoritmo que se va a utilizar. Luego se describe como diseño ASMdescribe como diseño ASM

Page 32: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

CARTA ASM PARA EL BIT COUNTERCARTA ASM PARA EL BIT COUNTER

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

Page 33: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

DIAGRAMA DE TIEMPOS DEL BIT COUNTERDIAGRAMA DE TIEMPOS DEL BIT COUNTER

Page 34: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

DISEÑO DEL DATAPATH PARA EL BIT COUNTERDISEÑO DEL DATAPATH PARA EL BIT COUNTER

Page 35: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

CARTA ASM PARA EL CONTROL DEL BIT COUNTERCARTA ASM PARA EL CONTROL DEL BIT COUNTER

Carta ASM para el diseño de la lógica Carta ASM para el diseño de la lógica de control del contador de bits ‘1’. de control del contador de bits ‘1’. Obsérvese que las señales utilizadas Obsérvese que las señales utilizadas son las señales de STATUS.son 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 36: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (1)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 37: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (2)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 38: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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)CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (3)

Page 39: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

-- 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)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 40: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

2.2. MULTIPLICADOR BINARIO DE MULTIPLICADOR BINARIO DE nn BITS 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ÓNALGORITMO PARA LA MULTIPLICACIÓN

Page 41: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

CARTA ASM PARA EL MULTIPLICADOR BINARIOCARTA ASM PARA EL MULTIPLICADOR BINARIO

Carta ASM para el diseño del Carta ASM para el diseño del DATAPATH del multiplicador DATAPATH del multiplicador binario, describe las micro-binario, describe las micro-operaciones presentes en el diseño.operaciones presentes en el diseño.

Page 42: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

DIAGRAMA DE TIEMPOS PARA EL MULTIPLICADOR DIAGRAMA DE TIEMPOS PARA EL MULTIPLICADOR

Page 43: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

DISEÑO DEL DATAPATH PARA EL MULTIPLICADORDISEÑ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 44: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

CARTA ASM PARA EL CONTROL DEL MULTIPLICADORCARTA ASM PARA EL CONTROL DEL MULTIPLICADOR

Carta ASM para el diseño de la lógica Carta ASM para el diseño de la lógica de control del Multiplicador Binario. de control del Multiplicador Binario. Obsérvese que las señales utilizadas Obsérvese que las señales utilizadas son las señales de STATUS.son 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 45: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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)CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (1)

Page 46: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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)CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (2)

Page 47: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

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)CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (2)

Page 48: ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS.

- - 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)CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (3)