MICROELECTRÓNICAMICROELECTRÓNICA
IE. MSc. José Armando Becerra VargasIE. MSc. José Armando Becerra Vargas
DISEÑODISEÑO RTL DE RTL DE PROCESADORESPROCESADORES ARITMÉTICOSARITMÉTICOS
REQUISITOS DEL CURSOREQUISITOS 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.
ESTRUCTURA GENERAL DE UN SISTEMA ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROSDE 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
Operación condicional:
)12( )11( RRthenKif
Notación de transferencia entre registros:
12 :1 RRK
OPERACIONES DE TRANSFERENCIAOPERACIONES 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 <-- R1
Paréntesis cuadrados Especifica una dirección de memoria DR <-- M[AR]
OPERACIONES DE TRANSFERENCIAOPERACIONES 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 TRANSFERENCIAOPERACIONES DE TRANSFERENCIA
Implementación de las operaciones de transferencia:
211 :1 ___
RRRKX
1211 :1___
RRRKX
OPERACIONES DE TRANSFERENCIAOPERACIONES 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 TRANSFERENCIAOPERACIONES DE TRANSFERENCIA
Ejemplo: Implementación de la operación condicional múltiple.
10:21 ,20 :1___
RRKKRRK
TRANSFERENCIA UTILIZANDO TRANSFERENCIA UTILIZANDO MULTIPLEXORESMULTIPLEXORES
Circuito detallado de la implementación de: 20:2'1 ,10 :1 RRKKRRK
TRANSFERENCIA UTILIZANDO TRANSFERENCIA UTILIZANDO MULTIPLEXORESMULTIPLEXORES
Multiplexores dedicados Un solo Bus
TRANSFERENCIA UTILIZANDO TRANSFERENCIA UTILIZANDO MULTIPLEXORESMULTIPLEXORES
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
BUS Multiplexado BUS Tri estado con Registros bidireccionales
TIPOS DE BUSESTIPOS DE BUSES
Funcionamiento de un Registro Bidireccional:
TIPOS DE BUSESTIPOS DE BUSES
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
Conjunto e Registros
(RTL)
Unidad Funcional
(Operaciones)
UNIDAD DE DATOSUNIDAD DE DATOS
Unidad Aritmético-Lógica (ALU)
UNIDAD FUNCIONAL (ALU)UNIDAD FUNCIONAL (ALU)
ESTRUCTURA COMPLETA DE UNA ALUESTRUCTURA COMPLETA DE UNA ALU
UNIDAD LÓGICAUNIDAD LÓGICA
UNIDAD ARITMÉTICAUNIDAD 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 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
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
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.
UNA ETAPA DE LA ALUUNA ETAPA DE LA ALU
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
DESPLAZADORES (SHIFTERS)DESPLAZADORES (SHIFTERS)
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
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.
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
DETALLE DE LA UNIDAD FUNCIONALDETALLE DE LA UNIDAD FUNCIONAL
ESTRUCTURA DE UN PROCESADOR CON ESTRUCTURA DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARDARQUITECTURA TIPO HARDVARD
DIAGRAMA DE BLOQUES DE UN DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO PROCESADOR CON ARQUITECTURA TIPO
HARDVARDHARDVARD
1.1. Bit CounterBit Counter
2.2. Shift-and-Add MultiplierShift-and-Add Multiplier
EJEMPLOSEJEMPLOS
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
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.
DIAGRAMA DE TIEMPOS DEL BIT COUNTERDIAGRAMA DE TIEMPOS DEL BIT COUNTER
DISEÑO DEL DATAPATH PARA EL BIT COUNTERDISEÑO DEL DATAPATH PARA EL BIT COUNTER
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
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 ;
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 ;
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)
-- 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 ;
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
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.
DIAGRAMA DE TIEMPOS PARA EL MULTIPLICADOR DIAGRAMA DE TIEMPOS PARA EL MULTIPLICADOR
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
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
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)
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)
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)
- - 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)