SlideShare una empresa de Scribd logo
UNIVERSIDAD AUTÓNOMA
METROPOLITANA
ARQUITECTURA DE COMPUTADORAS
“Algoritmo de Booth”
A pesar de los cambios y avances en interfaz para el manejo de las
computadoras, no se debe olvidar que la CPU trabaja con números binarios.
Tal como se estudió en la UEA “Arquitectura de computadoras”, a grandes
rasgos, la computadora opera mediante transferencia de datos entre registros
y memoria, coordinación de sus componentes con la señal de reloj, y múltiples
operaciones.
Para entender la relevancia del algoritmo, se debe tener presente que al
representar valores binarios negativos se necesita un bit extra junto al bit más
significativo, el cual indicará un valor positivo si es 0 y un número negativo si es
1. Andrew Donald Booth inventó este algoritmo en 1950, el cual aumentó la
velocidad de operación al multiplicar números binarios con signo.
Operación del algoritmo.
Dado un multiplicando (M) y un multiplicador (Q), se debe analizar pares de bits
del multiplicador, concatenados de izquierda a derecha. Si la combinación de
bits es 01, se realiza una suma, si es 10 será una resta, y cuyo resultado se
multiplicarán por el multiplicando:
01 → 𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆 → 2 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝ó𝑛𝑛 𝑑𝑑𝑑𝑑𝑑𝑑 0
10 → 𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 → 2 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑐𝑐𝑐𝑐ó𝑛𝑛 𝑑𝑑𝑑𝑑𝑑𝑑 1
𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 𝑥𝑥 (𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑦𝑦 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟)
Ejemplo:
𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 = 𝑀𝑀
𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 = 𝑄𝑄 = 01110110
𝑄𝑄 = 0 1 1 1 0 1 1 0
27
26
25
24
23
22
21
20
𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 𝑥𝑥 𝑄𝑄 = 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 𝑥𝑥 (+27
− 24
+ 23
− 21)
= 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 𝑥𝑥 (118)
Operación del algoritmo en Verilog.
Para su implementación en Verilog, se deben considerar los siguientes puntos:
• Se necesita un bit auxiliar para iniciar la comparación de 2 bits, al cual se
le asignará un cero. En el ejemplo visto anteriormente no es relevante
desde dónde se empiece a comparar, pero para fines prácticos se
propone comenzar con el bit menos significativo, es decir, en la primera
iteración se concatenará el bit menos significativo del multiplicador y el
bit auxiliar (que almacena primeramente cero).
• Para poder interpretar los valores negativos, se debe tener 2 entradas de
n+1 bits, siendo n el número de bits que se necesitan para representar el
valor que se desea multiplicar.
• Habrá 3 situaciones al comparar el par de bits concatenados, una en la
que se realice la suma, en otra la resta, y posterior a cualquiera de esas
operaciones, se dará un corrimiento a la derecha para poder comparar
los siguientes bits. El tercer caso será cuando no exista cambio entre los
bits (00 o 11), entonces se realizará directamente el corrimiento.
• Además, se necesitará un registro de tamaño n+1, el cual se empleará
para efectuar las sumas y restas.
• La condición que detendrá el algoritmo será cuando el contador, con
valor inicial n+1, llegue a cero. Por lo tanto, después de cada corrimiento
el contador debe tener un decremento en 1. Si aún no se terminan de
comparar todos los pares de bits, se debe regresar al paso donde se
verifica qué combinación de bits se tiene.
• El resultado se guardará en un registro de tamaño 2x(n+1).
Diseño de hardware para el algoritmo de Booth.
CLK
Multiplicando
Tamaño: n+1 bits
Multiplicador
Tamaño: n+1 bits
Registro auxiliar
Tamaño: n+1 bits
Bit auxiliar
1 bit
Contador
n
Operando1 Operando2
Resultado
Diagrama de flujo.
Start
A ← 0
bitAux ← 0
M ← Multiplicando
Q ← Multiplicador
Contador ← n
INICIALIZAR
Q[0], bitAux
VERIFICAR
A ← A + M A ← A - M
01 10
SUMA RESTA
Corrimiento a la derecha
A → Q → bitAux
Contador ← Contador - 1
Resultado ← A, Q
CORRIMIENTO
CUENTA
CICLO
¿Contador == 0?
End
00
11
Sí
No
INICIO
INICIALIZAR
VERIFICAR
CUENTA
CICLO
VERIFICAR
CUENTA
CICLO
VERIFICAR
Ejemplo de operación:
𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂1 = −7
𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂2 = 8
𝑀𝑀 = −7𝐷𝐷 = 11001𝐵𝐵
𝑄𝑄 = 8𝐷𝐷 = 01000𝐵𝐵
𝐴𝐴 = 0𝐷𝐷 = 00000𝐵𝐵
𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 = 0
𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 = 5
Q[0] = 0 bitAuxiliar = 0
0 0 0 0 0 0 0 1 0 0 0
A Q bitAuxiliar
Contador = 5 - 1 = 4
¿Contador == 0? → No
Q[0] = 0 bitAuxiliar = 0
0 0 0 0 0 0 0 0 1 0 0
A Q bitAuxiliar
Contador = 4 - 1 = 3
¿Contador == 0? → No
Q[0] = 0 bitAuxiliar = 0
CORRIMIENTO
CORRIMIENTO
CUENTA
CICLO
VERIFICAR
RESTA
CUENTA
CICLO
VERIFICAR
SUMA
0 0 0 0 0 0 0 0 0 1 0
A Q bitAuxiliar
Contador = 3 - 1 = 2
¿Contador == 0? → No
Q[0] = 1 bitAuxiliar = 0
A ← A – M
0 0 0 0 0 A
+ 0 0 1 1 1 Complemento a 2 de M
0 0 1 1 1 Nuevo valor de A
Ahora es importante notar que se debe conservar el signo de A, esto se logrará usando un
registro auxiliar “signo”.
0 0 0 1 1 1 0 0 0 0 1
Signo A Q bitAuxiliar
Contador = 2 - 1 = 1
¿Contador == 0? → No
Q[0] = 0 bitAuxiliar = 1
A ← A + M
1 1
0 0 0 1 1 A
+ 1 1 0 0 1 M
1 1 1 0 0 Nuevo valor de A
CORRIMIENTO
CORRIMIENTO
CUENTA
CICLO
1 1 1 1 0 0 1 0 0 0 0
Signo A Q bitAuxiliar
Contador = 1 - 1 = 0
¿Contador == 0? → Sí
Resultado ← A, Q
Resultado = 1 1 1 1 0 0 1 0 0 0
El resultado obtenido es en complemento a 2, así el complemento a 2 se puede
calcular de 2 maneras:
• Cambiando 1’s por 0’s y viceversa, y sumándole 1.
• Encontrar el primer 1 menos significativo, conservarlo, respetar los bits
menos significativos, y los bits más significativos cambiarlos (1’s por 0’s y
viceversa)
Antes de realizar el cambio, se debe observar cuál es el signo del resultado. En
este ejemplo fue negativo:
− 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶2(1111001000)
Ahora se realiza el cambio:
→ Encontrar el primer 1 menos significativo, conservarlo y respetar los bits
menos significativos. Intercambiar los 1’s y 0’s de los bits restantes (más
significativos).
𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 = − 0000111000𝐵𝐵 = −56𝐷𝐷
CORRIMIENTO
Código del programa en Verilog.
Con la finalidad de que el proceso sea más claro, se usaron parámetros para
nombrar los estados y poder seguir la secuencia del ejemplo.
`timescale 1ns / 1ps
///////////////// Verilog Module /////////////////
//////////////////////////////////////////////////////////////////
module booth(
input [4:0] oper1,
input [4:0] oper2,
input clk,
output reg[9:0] resultado
);
//ESTADOS DEL ALGORITMO
parameter inicio=3'b000, inicializar=3'b001,
verificar=3'b010, resta=3'b011, suma=3'b100,
corrimiento=3'b101, cuenta=3'b110, ciclo=3'b111;
//VARIABLES
reg [4:0] a, q, m;
reg [2:0] contador;
reg bitAux, signo;
reg [2:0] actual, futuro;
//INICIALIZACION
initial a = 0;
initial q = 0;
initial m = 0;
initial contador = 5;
initial bitAux = 0;
initial signo = 0;
initial resultado = 0;
initial actual = inicio;
initial futuro = inicializar;
//BLOQUE PARA LA TRANSICIӎ
always @(posedge clk)
actual = futuro;
//DETECTA EL ESTADO ACTUAL
//CALCULA EL ESTADO SIGUIENTE
//REALIZA OPERACIONES
always@(actual)
case(actual)
inicio:begin
futuro = inicializar;
end
inicializar:begin
m = oper1;
q = oper2;
futuro = verificar;
end
verificar:begin
case({q[0],bitAux})
2'b00:futuro = corrimiento;
2'b01:futuro = suma;
2'b10:futuro = resta;
2'b11:futuro = corrimiento;
endcase
end
resta:begin
a=a-m;
futuro = corrimiento;
end
suma:begin
a=a+m;
futuro = corrimiento;
end
corrimiento:begin
bitAux = q[0];
q = q>>1;
q[4] = a[0];
a = a>>1;
signo = a[3];
a[4] = signo;
futuro = cuenta;
end
cuenta:begin
contador = contador-1;
futuro = ciclo;
end
ciclo:begin
if(contador != 0)
futuro = verificar;
else begin
resultado[9:5] = a;
resultado[4:0] = q;
end
end
default:begin
actual = inicializar;
futuro = verificar;
end
endcase
endmodule
`timescale 1ns / 1ps
///////////////// Verilog Test Fixture /////////////////
///////////////////////////////////////////////////////////
module booth_tb;
// Inputs
reg [4:0] oper1;
reg [4:0] oper2;
reg clk;
// Outputs
wire [9:0] resultado;
// Instantiate the Unit Under Test (UUT)
booth uut (
.oper1(oper1),
.oper2(oper2),
.clk(clk),
.resultado(resultado)
);
initial begin
// Initialize Inputs
oper1 = -7; // M
oper2 = 8; // Q
clk = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
forever begin
clk=~clk;
#50;
end
end
endmodule
Ejecución del programa.
Descargar el proyecto en Verilog.
https://drive.google.com/file/d/1J01IpsBgVmrGk_5s_k4ZYJWWmVfPAoOR/view?
usp=sharing
Bibliografía.
https://www.geeksforgeeks.org/computer-organization-booths-algorithm/
https://es.wikipedia.org/wiki/Algoritmo_de_Booth

Más contenido relacionado

La actualidad más candente

Prácticas labview
Prácticas labviewPrácticas labview
Prácticas labview
lizluvzmcr
 
54599266 ejercicios-flip-flops
54599266 ejercicios-flip-flops54599266 ejercicios-flip-flops
54599266 ejercicios-flip-flops
SENA-CIMI-GIRON
 
L09 sumador restador-binariode8bits
L09 sumador restador-binariode8bitsL09 sumador restador-binariode8bits
L09 sumador restador-binariode8bits
Christian Acuña
 
introduction to computers
 introduction to computers introduction to computers
introduction to computers
Deepak John
 

La actualidad más candente (20)

Proteus
ProteusProteus
Proteus
 
Matlab gui 숫자야구 ★김민지★/☆김지혁☆
Matlab gui 숫자야구 ★김민지★/☆김지혁☆Matlab gui 숫자야구 ★김민지★/☆김지혁☆
Matlab gui 숫자야구 ★김민지★/☆김지혁☆
 
Complemento a 1 y a 2
Complemento a 1 y a 2Complemento a 1 y a 2
Complemento a 1 y a 2
 
10 registros
10 registros10 registros
10 registros
 
Codificador decimal bcd
Codificador decimal bcdCodificador decimal bcd
Codificador decimal bcd
 
Prácticas labview
Prácticas labviewPrácticas labview
Prácticas labview
 
Dimmer
DimmerDimmer
Dimmer
 
Contador binario
Contador binarioContador binario
Contador binario
 
Introduccción a VHDL por https://vhdl.es
Introduccción a VHDL por https://vhdl.esIntroduccción a VHDL por https://vhdl.es
Introduccción a VHDL por https://vhdl.es
 
CONTADORES
CONTADORES CONTADORES
CONTADORES
 
54599266 ejercicios-flip-flops
54599266 ejercicios-flip-flops54599266 ejercicios-flip-flops
54599266 ejercicios-flip-flops
 
Boolean algebra.pptx
Boolean algebra.pptxBoolean algebra.pptx
Boolean algebra.pptx
 
Practica 3 algebra booleana por compuertas lógicas.
Practica 3 algebra booleana por compuertas lógicas.Practica 3 algebra booleana por compuertas lógicas.
Practica 3 algebra booleana por compuertas lógicas.
 
Course 3-gerbang-logika-dan-aljabar-boole
Course 3-gerbang-logika-dan-aljabar-booleCourse 3-gerbang-logika-dan-aljabar-boole
Course 3-gerbang-logika-dan-aljabar-boole
 
Sistemas de segundo orden
Sistemas de segundo ordenSistemas de segundo orden
Sistemas de segundo orden
 
L09 sumador restador-binariode8bits
L09 sumador restador-binariode8bitsL09 sumador restador-binariode8bits
L09 sumador restador-binariode8bits
 
Electrónica digital
Electrónica digitalElectrónica digital
Electrónica digital
 
2s complement arithmetic
2s complement arithmetic2s complement arithmetic
2s complement arithmetic
 
introduction to computers
 introduction to computers introduction to computers
introduction to computers
 
Rangkaian sekuensial
Rangkaian sekuensialRangkaian sekuensial
Rangkaian sekuensial
 

Similar a Arquitectura de computadoras

Algoritmo de booth
Algoritmo de boothAlgoritmo de booth
Algoritmo de booth
velleza
 
Organización de computadoras
Organización de computadorasOrganización de computadoras
Organización de computadoras
yito24
 
Aritmetica del computador
Aritmetica del computadorAritmetica del computador
Aritmetica del computador
profruiloba
 
Digital E
Digital EDigital E
Digital E
toni
 
Digital
DigitalDigital
Digital
toni
 
AritméTica Del Computador
AritméTica Del ComputadorAritméTica Del Computador
AritméTica Del Computador
Priscila
 
Sistemas de numeracion
Sistemas de numeracionSistemas de numeracion
Sistemas de numeracion
maldy
 

Similar a Arquitectura de computadoras (20)

Electrónica digital: lógica aritmética sumadores
Electrónica digital: lógica aritmética sumadoresElectrónica digital: lógica aritmética sumadores
Electrónica digital: lógica aritmética sumadores
 
Algoritmo de booth
Algoritmo de boothAlgoritmo de booth
Algoritmo de booth
 
Unidad aritmetico logica ALU
Unidad aritmetico logica ALUUnidad aritmetico logica ALU
Unidad aritmetico logica ALU
 
Multiplicador y divisor
Multiplicador y divisorMultiplicador y divisor
Multiplicador y divisor
 
Complementos
ComplementosComplementos
Complementos
 
Apunte c a_bajo_nivel
Apunte c a_bajo_nivelApunte c a_bajo_nivel
Apunte c a_bajo_nivel
 
Presentacion sistema binario
Presentacion sistema binarioPresentacion sistema binario
Presentacion sistema binario
 
Organización de computadoras
Organización de computadorasOrganización de computadoras
Organización de computadoras
 
Arquitectura del plc
Arquitectura del plcArquitectura del plc
Arquitectura del plc
 
Sumador finalizado
Sumador finalizadoSumador finalizado
Sumador finalizado
 
Aritmetica del computador
Aritmetica del computadorAritmetica del computador
Aritmetica del computador
 
Digital E
Digital EDigital E
Digital E
 
Digital
DigitalDigital
Digital
 
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
 
Electrónica digital
Electrónica digitalElectrónica digital
Electrónica digital
 
PRESENTACION PROYECTO INTEGRADOR FER Y BETO
PRESENTACION PROYECTO INTEGRADOR FER Y BETOPRESENTACION PROYECTO INTEGRADOR FER Y BETO
PRESENTACION PROYECTO INTEGRADOR FER Y BETO
 
PROYECTO INTEGRADOR DIGITALES FER Y BETO
PROYECTO INTEGRADOR DIGITALES FER Y BETOPROYECTO INTEGRADOR DIGITALES FER Y BETO
PROYECTO INTEGRADOR DIGITALES FER Y BETO
 
AritméTica Del Computador
AritméTica Del ComputadorAritméTica Del Computador
AritméTica Del Computador
 
Sistemas de numeracion
Sistemas de numeracionSistemas de numeracion
Sistemas de numeracion
 
Logica Combinacional
Logica CombinacionalLogica Combinacional
Logica Combinacional
 

Más de Grecia Martinez (6)

Diseño y Administración de Redes de computadoras
Diseño y Administración de Redes de computadorasDiseño y Administración de Redes de computadoras
Diseño y Administración de Redes de computadoras
 
Integración de redes de voz y datos
Integración de redes de voz y datosIntegración de redes de voz y datos
Integración de redes de voz y datos
 
Práctica 3 - Redes inalámbricas
Práctica 3 - Redes inalámbricasPráctica 3 - Redes inalámbricas
Práctica 3 - Redes inalámbricas
 
Práctica 2 - Redes inalámbricas
Práctica 2 - Redes inalámbricasPráctica 2 - Redes inalámbricas
Práctica 2 - Redes inalámbricas
 
Práctica 4 - Redes inalámbricas
Práctica 4 - Redes inalámbricasPráctica 4 - Redes inalámbricas
Práctica 4 - Redes inalámbricas
 
Práctica 1 - Redes inalámbricas
Práctica 1 - Redes inalámbricasPráctica 1 - Redes inalámbricas
Práctica 1 - Redes inalámbricas
 

Último

Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Monseespinoza6
 
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdfPresentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
juancmendez1405
 

Último (20)

Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitales
 
Lección 1: Los complementos del Verbo ...
Lección 1: Los complementos del Verbo ...Lección 1: Los complementos del Verbo ...
Lección 1: Los complementos del Verbo ...
 
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOSTRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
 
Proceso de gestión de obras - Aquí tu Remodelación
Proceso de gestión de obras - Aquí tu RemodelaciónProceso de gestión de obras - Aquí tu Remodelación
Proceso de gestión de obras - Aquí tu Remodelación
 
Sesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdfSesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdf
 
3.Conectores uno_Enfermería_EspAcademico
3.Conectores uno_Enfermería_EspAcademico3.Conectores uno_Enfermería_EspAcademico
3.Conectores uno_Enfermería_EspAcademico
 
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdfPresentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
 
Creación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webCreación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio web
 
Poemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºPoemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6º
 
Evaluación de los Factores Internos de la Organización
Evaluación de los Factores Internos de la OrganizaciónEvaluación de los Factores Internos de la Organización
Evaluación de los Factores Internos de la Organización
 
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETPRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
 
Fase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometricoFase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometrico
 
Escrito-Contestacion-Demanda-Filiacion.pdf
Escrito-Contestacion-Demanda-Filiacion.pdfEscrito-Contestacion-Demanda-Filiacion.pdf
Escrito-Contestacion-Demanda-Filiacion.pdf
 
4.Conectores Dos_Enfermería_Espanolacademico
4.Conectores Dos_Enfermería_Espanolacademico4.Conectores Dos_Enfermería_Espanolacademico
4.Conectores Dos_Enfermería_Espanolacademico
 
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATR
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATRBIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATR
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATR
 
PROYECTO INTEGRADOR ARCHIDUQUE. presentacion
PROYECTO INTEGRADOR ARCHIDUQUE. presentacionPROYECTO INTEGRADOR ARCHIDUQUE. presentacion
PROYECTO INTEGRADOR ARCHIDUQUE. presentacion
 
6.Deícticos Dos_Enfermería_EspanolAcademico
6.Deícticos Dos_Enfermería_EspanolAcademico6.Deícticos Dos_Enfermería_EspanolAcademico
6.Deícticos Dos_Enfermería_EspanolAcademico
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptxMódulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
 

Arquitectura de computadoras

  • 1. UNIVERSIDAD AUTÓNOMA METROPOLITANA ARQUITECTURA DE COMPUTADORAS “Algoritmo de Booth” A pesar de los cambios y avances en interfaz para el manejo de las computadoras, no se debe olvidar que la CPU trabaja con números binarios. Tal como se estudió en la UEA “Arquitectura de computadoras”, a grandes rasgos, la computadora opera mediante transferencia de datos entre registros y memoria, coordinación de sus componentes con la señal de reloj, y múltiples operaciones. Para entender la relevancia del algoritmo, se debe tener presente que al representar valores binarios negativos se necesita un bit extra junto al bit más significativo, el cual indicará un valor positivo si es 0 y un número negativo si es 1. Andrew Donald Booth inventó este algoritmo en 1950, el cual aumentó la velocidad de operación al multiplicar números binarios con signo. Operación del algoritmo. Dado un multiplicando (M) y un multiplicador (Q), se debe analizar pares de bits del multiplicador, concatenados de izquierda a derecha. Si la combinación de bits es 01, se realiza una suma, si es 10 será una resta, y cuyo resultado se multiplicarán por el multiplicando: 01 → 𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆 → 2 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝ó𝑛𝑛 𝑑𝑑𝑑𝑑𝑑𝑑 0 10 → 𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 → 2 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑐𝑐𝑐𝑐ó𝑛𝑛 𝑑𝑑𝑑𝑑𝑑𝑑 1 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 𝑥𝑥 (𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑦𝑦 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟)
  • 2. Ejemplo: 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 = 𝑀𝑀 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 = 𝑄𝑄 = 01110110 𝑄𝑄 = 0 1 1 1 0 1 1 0 27 26 25 24 23 22 21 20 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 𝑥𝑥 𝑄𝑄 = 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 𝑥𝑥 (+27 − 24 + 23 − 21) = 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 𝑥𝑥 (118) Operación del algoritmo en Verilog. Para su implementación en Verilog, se deben considerar los siguientes puntos: • Se necesita un bit auxiliar para iniciar la comparación de 2 bits, al cual se le asignará un cero. En el ejemplo visto anteriormente no es relevante desde dónde se empiece a comparar, pero para fines prácticos se propone comenzar con el bit menos significativo, es decir, en la primera iteración se concatenará el bit menos significativo del multiplicador y el bit auxiliar (que almacena primeramente cero). • Para poder interpretar los valores negativos, se debe tener 2 entradas de n+1 bits, siendo n el número de bits que se necesitan para representar el valor que se desea multiplicar. • Habrá 3 situaciones al comparar el par de bits concatenados, una en la que se realice la suma, en otra la resta, y posterior a cualquiera de esas operaciones, se dará un corrimiento a la derecha para poder comparar los siguientes bits. El tercer caso será cuando no exista cambio entre los bits (00 o 11), entonces se realizará directamente el corrimiento.
  • 3. • Además, se necesitará un registro de tamaño n+1, el cual se empleará para efectuar las sumas y restas. • La condición que detendrá el algoritmo será cuando el contador, con valor inicial n+1, llegue a cero. Por lo tanto, después de cada corrimiento el contador debe tener un decremento en 1. Si aún no se terminan de comparar todos los pares de bits, se debe regresar al paso donde se verifica qué combinación de bits se tiene. • El resultado se guardará en un registro de tamaño 2x(n+1). Diseño de hardware para el algoritmo de Booth. CLK Multiplicando Tamaño: n+1 bits Multiplicador Tamaño: n+1 bits Registro auxiliar Tamaño: n+1 bits Bit auxiliar 1 bit Contador n Operando1 Operando2 Resultado
  • 4. Diagrama de flujo. Start A ← 0 bitAux ← 0 M ← Multiplicando Q ← Multiplicador Contador ← n INICIALIZAR Q[0], bitAux VERIFICAR A ← A + M A ← A - M 01 10 SUMA RESTA Corrimiento a la derecha A → Q → bitAux Contador ← Contador - 1 Resultado ← A, Q CORRIMIENTO CUENTA CICLO ¿Contador == 0? End 00 11 Sí No INICIO
  • 5. INICIALIZAR VERIFICAR CUENTA CICLO VERIFICAR CUENTA CICLO VERIFICAR Ejemplo de operación: 𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂1 = −7 𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂2 = 8 𝑀𝑀 = −7𝐷𝐷 = 11001𝐵𝐵 𝑄𝑄 = 8𝐷𝐷 = 01000𝐵𝐵 𝐴𝐴 = 0𝐷𝐷 = 00000𝐵𝐵 𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 = 0 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 = 5 Q[0] = 0 bitAuxiliar = 0 0 0 0 0 0 0 0 1 0 0 0 A Q bitAuxiliar Contador = 5 - 1 = 4 ¿Contador == 0? → No Q[0] = 0 bitAuxiliar = 0 0 0 0 0 0 0 0 0 1 0 0 A Q bitAuxiliar Contador = 4 - 1 = 3 ¿Contador == 0? → No Q[0] = 0 bitAuxiliar = 0 CORRIMIENTO CORRIMIENTO
  • 6. CUENTA CICLO VERIFICAR RESTA CUENTA CICLO VERIFICAR SUMA 0 0 0 0 0 0 0 0 0 1 0 A Q bitAuxiliar Contador = 3 - 1 = 2 ¿Contador == 0? → No Q[0] = 1 bitAuxiliar = 0 A ← A – M 0 0 0 0 0 A + 0 0 1 1 1 Complemento a 2 de M 0 0 1 1 1 Nuevo valor de A Ahora es importante notar que se debe conservar el signo de A, esto se logrará usando un registro auxiliar “signo”. 0 0 0 1 1 1 0 0 0 0 1 Signo A Q bitAuxiliar Contador = 2 - 1 = 1 ¿Contador == 0? → No Q[0] = 0 bitAuxiliar = 1 A ← A + M 1 1 0 0 0 1 1 A + 1 1 0 0 1 M 1 1 1 0 0 Nuevo valor de A CORRIMIENTO CORRIMIENTO
  • 7. CUENTA CICLO 1 1 1 1 0 0 1 0 0 0 0 Signo A Q bitAuxiliar Contador = 1 - 1 = 0 ¿Contador == 0? → Sí Resultado ← A, Q Resultado = 1 1 1 1 0 0 1 0 0 0 El resultado obtenido es en complemento a 2, así el complemento a 2 se puede calcular de 2 maneras: • Cambiando 1’s por 0’s y viceversa, y sumándole 1. • Encontrar el primer 1 menos significativo, conservarlo, respetar los bits menos significativos, y los bits más significativos cambiarlos (1’s por 0’s y viceversa) Antes de realizar el cambio, se debe observar cuál es el signo del resultado. En este ejemplo fue negativo: − 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶2(1111001000) Ahora se realiza el cambio: → Encontrar el primer 1 menos significativo, conservarlo y respetar los bits menos significativos. Intercambiar los 1’s y 0’s de los bits restantes (más significativos). 𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 = − 0000111000𝐵𝐵 = −56𝐷𝐷 CORRIMIENTO
  • 8. Código del programa en Verilog. Con la finalidad de que el proceso sea más claro, se usaron parámetros para nombrar los estados y poder seguir la secuencia del ejemplo. `timescale 1ns / 1ps ///////////////// Verilog Module ///////////////// ////////////////////////////////////////////////////////////////// module booth( input [4:0] oper1, input [4:0] oper2, input clk, output reg[9:0] resultado ); //ESTADOS DEL ALGORITMO parameter inicio=3'b000, inicializar=3'b001, verificar=3'b010, resta=3'b011, suma=3'b100, corrimiento=3'b101, cuenta=3'b110, ciclo=3'b111; //VARIABLES reg [4:0] a, q, m; reg [2:0] contador; reg bitAux, signo; reg [2:0] actual, futuro; //INICIALIZACION initial a = 0; initial q = 0; initial m = 0; initial contador = 5; initial bitAux = 0; initial signo = 0; initial resultado = 0; initial actual = inicio; initial futuro = inicializar; //BLOQUE PARA LA TRANSICIӎ always @(posedge clk) actual = futuro; //DETECTA EL ESTADO ACTUAL //CALCULA EL ESTADO SIGUIENTE //REALIZA OPERACIONES always@(actual) case(actual) inicio:begin futuro = inicializar; end
  • 9. inicializar:begin m = oper1; q = oper2; futuro = verificar; end verificar:begin case({q[0],bitAux}) 2'b00:futuro = corrimiento; 2'b01:futuro = suma; 2'b10:futuro = resta; 2'b11:futuro = corrimiento; endcase end resta:begin a=a-m; futuro = corrimiento; end suma:begin a=a+m; futuro = corrimiento; end corrimiento:begin bitAux = q[0]; q = q>>1; q[4] = a[0]; a = a>>1; signo = a[3]; a[4] = signo; futuro = cuenta; end cuenta:begin contador = contador-1; futuro = ciclo; end ciclo:begin if(contador != 0) futuro = verificar; else begin resultado[9:5] = a; resultado[4:0] = q; end end default:begin actual = inicializar; futuro = verificar; end endcase endmodule
  • 10. `timescale 1ns / 1ps ///////////////// Verilog Test Fixture ///////////////// /////////////////////////////////////////////////////////// module booth_tb; // Inputs reg [4:0] oper1; reg [4:0] oper2; reg clk; // Outputs wire [9:0] resultado; // Instantiate the Unit Under Test (UUT) booth uut ( .oper1(oper1), .oper2(oper2), .clk(clk), .resultado(resultado) ); initial begin // Initialize Inputs oper1 = -7; // M oper2 = 8; // Q clk = 0; // Wait 100 ns for global reset to finish #100; // Add stimulus here forever begin clk=~clk; #50; end end endmodule
  • 12. Descargar el proyecto en Verilog. https://drive.google.com/file/d/1J01IpsBgVmrGk_5s_k4ZYJWWmVfPAoOR/view? usp=sharing Bibliografía. https://www.geeksforgeeks.org/computer-organization-booths-algorithm/ https://es.wikipedia.org/wiki/Algoritmo_de_Booth