Multiplicador de Booth explicado (con ejemplos)
Aprende la recodificación Booth radix-2 y radix-4, sigue paso a paso −3 × 5 y evita errores de anchura con signo en un multiplicador iterativo.
Resumen: La recodificación Booth reescribe las rachas de bits
1del multiplicador como dígitos con signo. Booth radix-2 examina el par en cada iteración:01suma el multiplicando,10lo resta y00o11no hacen nada antes de un desplazamiento aritmético a la derecha. Una implementación segura en anchura para bits extiende el signo del multiplicando y usa un acumulador de bits, evitando el fallo especial del valor más negativo. Booth modificado radix-4 reduce aproximadamente a la mitad el número de productos parciales al elegir entre .
La multiplicación binaria puede construirse con desplazamientos y sumas. El reto no es que sea imposible multiplicar operandos en complemento a 2 sin Booth —no lo es—, sino que el tratamiento del signo y la generación de productos parciales deben diseñarse correctamente.
El método de Booth proporciona una recodificación con signo uniforme y comprime las rachas de bits 1. Es útil en dos arquitecturas diferentes:
- un multiplicador iterativo, que reutiliza un sumador durante varios ciclos
- un multiplicador paralelo, que genera productos parciales recodificados y los reduce con un árbol de sumadores/compresores
Ambas arquitecturas comparten la idea de recodificación, pero tienen distinta latencia, área y temporización.
La identidad de las rachas de unos
Considera una racha de unos binarios desde el bit hasta el bit , donde :
Por ejemplo:
La técnica ordinaria de desplazamiento y suma sin signo añadiría cuatro copias desplazadas del multiplicando para 1111. La recodificación Booth representa esa racha con una resta en su límite inferior y una suma en la posición situada por encima de su límite superior.
Esto no garantiza menos operaciones distintas de cero para todos los patrones de bits. Una racha larga se beneficia; unos aislados o alternos pueden no reducir nada e incluso aumentar el número de decisiones de suma/resta. Un multiplicador iterativo radix-2 de latencia fija sigue realizando iteraciones: la recodificación cambia la acción aritmética de cada iteración, no el número de ciclos automáticamente.
Recodificación Booth radix-2
Añade un cero implícito por debajo del multiplicador:
En la iteración , inspecciona el bit menos significativo actual del multiplicador, , y el bit anterior guardado, :
| Acción del acumulador | ||
|---|---|---|
| 0 | 0 | sin cambios |
| 0 | 1 | suma |
| 1 | 0 | resta |
| 1 | 1 | sin cambios |
Después desplaza aritméticamente a la derecha una posición el acumulador, el multiplicador y el bit guardado combinados.
El par detecta los límites:
10marca el extremo bajo de una racha de unos, así que se resta01marca el extremo alto después de desplazar la racha, así que se suma- dos bits adyacentes iguales están dentro de una racha constante, así que no hace falta acción aritmética
El orden de los bits de la tabla importa. Algunos textos imprimen ; eso invierte las etiquetas de las filas. Declara siempre la convención.
Ruta de datos iterativa segura en anchura
Sean ambos operandos de entrada valores con signo de bits en complemento a 2:
- : multiplicando
- : multiplicador
Usa:
- : extendido con signo a bits
- : un acumulador de bits, inicialmente cero
- : el registro multiplicador de bits
- : un bit guardado, inicialmente cero
- un contador de iteraciones de 0 a
Para cada una de las iteraciones:
- inspecciona
- si es
01, establece - si es
10, establece - si es
00o11, deja sin cambios - desplaza aritméticamente a la derecha una posición la concatenación
Después de iteraciones, descarta el bit superior redundante de extensión de signo de . Los bits restantes de , concatenados con , forman el producto con signo de bits.
Por qué importa el bit adicional del acumulador
Para un número de bits en complemento a 2, el intervalo representable es:
La magnitud positiva de no cabe en bits. Por tanto, un diseño que precalcule -M usando solo bits puede fallar cuando es el valor más negativo. Extender el signo de y usar un acumulador de bits hace representables tanto como durante el algoritmo.
Ejemplo resuelto:
Usa operandos de 4 bits:
Extiende con signo el multiplicando a cinco bits:
Inicializa:
La tabla muestra el par y la acción aritmética, seguidos del estado después del desplazamiento aritmético combinado a la derecha:
| Iteración | Par | Acción antes del desplazamiento | después del desplazamiento | después del desplazamiento | |
|---|---|---|---|---|---|
| initial | — | — | 00000 | 0101 | 0 |
| 1 | 10 | 00001 | 1010 | 1 | |
| 2 | 01 | 11111 | 0101 | 0 | |
| 3 | 10 | 00001 | 0010 | 1 | |
| 4 | 01 | 11111 | 0001 | 0 |
Después de cuatro iteraciones, descarta el bit de signo alto redundante de :
Como valor de 8 bits en complemento a 2:
que coincide con .
Traza un desplazamiento combinado
Después de la primera resta:
El desplazamiento aritmético a la derecha copia el bit de signo del acumulador en la nueva posición superior y mueve todos los demás bits una posición:
El desplazamiento debe actuar sobre el registro concatenado completo. Desplazar y de forma independiente perdería la transferencia de bits entre sus límites.
Bloques de hardware
Un multiplicador Booth iterativo reutilizable contiene:
- un registro multiplicando o ruta de entrada de bits
- un acumulador de bits
- un registro multiplicador de bits más
- un sumador/restador de bits
- control de decodificación del par para
add,subtractohold - un desplazador aritmético combinado
- un contador de iteraciones y control
busy/done
El sumador se reutiliza en todas las iteraciones, lo que ahorra área frente a un multiplicador totalmente paralelo, pero cuesta latencia. Que una iteración ocupe un reloj o varios micro pasos depende del controlador y de la ruta de datos.
El componente ALU puede proporcionar el comportamiento de suma/resta en un circuito didáctico, pero confirma su anchura y su comportamiento ante desbordamiento con signo. Un registro de desplazamiento ilustra el movimiento serie; la ruta de datos Booth necesita un registro combinado más ancho cuyo bit superior se rellene con el signo.
Booth modificado radix-4
Booth modificado radix-4 examina ventanas de 3 bits solapadas y recodifica dos bits del multiplicador por dígito. Añade un cero en el extremo bajo y extiende con signo el multiplicador en el extremo alto cuando sea necesario.
Para una ventana :
| Ventana | Múltiplo recodificado |
|---|---|
000 | |
001 | |
010 | |
011 | |
100 | |
101 | |
110 | |
111 |
Los múltiplos disponibles son:
es un desplazamiento a la izquierda, por lo que estos productos parciales son relativamente económicos de generar. Para un multiplicador de bits, radix-4 produce aproximadamente dígitos recodificados en lugar de dígitos radix-2.
Esa reducción puede:
- reducir a la mitad las iteraciones en un diseño iterativo radix-4
- reducir el número de filas de productos parciales en un diseño paralelo
No hace que el multiplicador completo sea automáticamente el doble de rápido. La recodificación, la corrección de signo, la generación de productos parciales, la reducción, el enrutamiento, la suma final y la segmentación contribuyen a la temporización.
Reducción paralela: Wallace, Dadda y sumadores finales
Un multiplicador de alto rendimiento puede generar productos parciales en paralelo, reducir sus columnas con compresores de acarreo guardado y terminar con un sumador de propagación de acarreo.
Los árboles de Wallace y Dadda son dos planificaciones clásicas de reducción. La recodificación Booth modificada puede colocarse antes de un árbol de este tipo para reducir el número de filas. El sumador final puede usar acarreo anticipado, prefijo paralelo, selección de acarreo u otra estructura elegida para la tecnología objetivo.
«Combinacional» no significa necesariamente «un ciclo de procesador». Un multiplicador ancho puede segmentarse en varias etapas para cumplir un periodo de reloj objetivo, y algunos procesadores usan unidades iterativas por razones de área o potencia. La arquitectura es una decisión de implementación.
Booth frente a otras estructuras de multiplicador
| Enfoque | Operación con signo | Número de productos parciales o ciclos | Compromiso habitual |
|---|---|---|---|
| Desplazamiento/suma iterativos básicos | posible con tratamiento correcto del signo | normalmente iteraciones | ruta de datos pequeña, control sencillo |
| Booth iterativo radix-2 | recodificación nativa en complemento a 2 | iteraciones | algoritmo con signo uniforme; suma/resta/salto |
| Booth iterativo radix-4 | recodificación nativa en complemento a 2 | aproximadamente iteraciones | más decodificación/selección de múltiplos |
| Matriz/árbol paralelo de productos parciales | variantes con o sin signo | filas procesadas simultáneamente | más hardware; puede segmentarse |
| Booth radix-4 más árbol de reducción | recodificación nativa con signo | aproximadamente la mitad de filas iniciales | opción habitual de diseño de alto rendimiento |
No hay un ganador universal. La anchura de los operandos, las celdas objetivo o los recursos FPGA, el rendimiento, la latencia, el área, la potencia y el esfuerzo de verificación determinan la estructura adecuada.
Constrúyelo en DigiSim
Para una implementación didáctica de 4 bits:
- Crea un acumulador de 5 bits con elementos de almacenamiento visibles.
- Extiende con signo el multiplicando de 4 bits a 5 bits.
- Usa una ruta de suma/resta de 5 bits.
- Almacena el multiplicador de 4 bits y un bit separado.
- Decodifica
(Q0, Q−1)como suma, resta o retención. - Implementa el desplazamiento aritmético sobre el estado completo
{A,Q,Q−1}. - Cuenta exactamente cuatro iteraciones.
- Expón
busy,doney el producto final de 8 bits.
Recorre la tabla de y compara cada estado posterior al desplazamiento. Un desacuerdo en la primera iteración suele indicar que se invirtió el orden del par o la polaridad de la resta; un desacuerdo después de desplazar un acumulador negativo suele indicar un desplazamiento lógico en lugar de uno aritmético.
Lista de comprobación de verificación
Para verificar exhaustivamente un multiplicador pequeño de bits, prueba los:
pares de entrada frente a un producto de referencia con signo representado en bits.
Como mínimo, incluye:
- y
- positivo × positivo
- positivo × negativo
- negativo × positivo
- negativo × negativo
- valores positivos máximos
- el valor más negativo
- patrones del multiplicador
0000,1111,0101y1010 - reinicio o rearranque mientras está ocupado
Comprueba también que:
- se producen exactamente iteraciones radix-2
donese emite una vez por cada operación aceptada- las entradas se capturan o el contrato exige que permanezcan estables
- el resultado no se consume antes de ser válido
- el desplazamiento combinado conserva el signo del acumulador
Una simulación funcional ideal demuestra la secuencia aritmética, no la frecuencia máxima del reloj del hardware. Usa análisis temporal estático después de asignar el diseño a su objetivo.
Sigue aprendiendo
Repasa la aritmética en complemento a 2 para la extensión de signo y el intervalo, y después compara la suma con acarreo en cascada con las estructuras de acarreo anticipado.
Andrew D. Booth introdujo el método uniforme con signo en su artículo de 1951, «A Signed Binary Multiplication Technique». La recodificación central sigue siendo relevante, pero una implementación profesional aún necesita anchuras explícitas, un contrato de latencia definido, pruebas exhaustivas con signo y análisis temporal específico del objetivo.

