Los multiplicadores de cabina requieren menos recursos lógicos porque operan en más de un bit a la vez. La idea es dividir la entrada en pequeños conjuntos de bits (en el caso más simple, 2 bits) y luego realizar una operación un poco más creativa. En general, un multiplicador solo usa las puertas Y para realizar la multiplicación real, luego usa un árbol sumador para combinar los resultados. Un Multipler Booth calcula múltiples bits al mismo tiempo, reduciendo la complejidad del árbol sumador. Un bit le da K * 0 y K * 1, que se pueden calcular con una puerta AND. Dos bits son K * 0, K * 1, K * 2 y K * 3. Obtienes K * 2 gratis (cambio de bit). K * 3 puede estar formado por K + K * 2, pero esto requiere un sumador adicional. Sin embargo, K * 3 = K * 4 - K * 1. Esto solo requiere la construcción de un árbol sumador firmado, que básicamente solo requiere extender los bits de signo.
Esta técnica se puede extender por más de 2 bits a la vez. Tres bits (radix 8) requieren K * 0, K * 1, K * 2, K * 3, K * 4, K * 5, K * 6 y K * 7. Esto se reduce a K * 0, K * 1, K * 2, K * 3, K * 4, K * 8-K * 3, K * 8-K * 2 y K * 8-K * 1. Sin embargo, esto ahora requiere un sumador adicional para calcular previamente K * 3 = K * 2 + K * 1.
En realidad, tengo un script de Python corriendo en algún lugar para generar un multiplicador de Booth firmado por radix-8 en Verilog. Si lo ejecuta para un multiplicador de 64x64, genera alrededor de 2300 líneas de Verilog, que es casi todas las sumas completas.
Editar: No importa, los multiplicadores codificados en cabina son bastante diferentes del algoritmo de multiplicación de cabina. Lo anterior se refiere a cómo funciona un multiplicador codificado Booth para la implementación en lógica digital. Curiosamente, no he encontrado un artículo de wikipedia sobre el tema. La codificación de la cabina redirige a la página del algoritmo, pero la página no tiene ninguna referencia a la codificación de la cabina, aunque la codificación de la cabina probablemente se derive del algoritmo de alguna manera. Muy extraño.
De todos modos, la página a la que te vincula contiene una descripción de cómo funciona matemáticamente el algoritmo. Cualquier cadena continua de bits de conjunto puede reemplazarse por una suma y una resta, sin importar cuánto tiempo la cadena. La adición se realiza en un extremo de la cadena de bits, y la resta se realiza en el otro. La decisión se toma no mirando el LSB, sino mirando dos LSB. Si son iguales (00 u 11), no se realiza ninguna operación. Si son diferentes (10 o 01), entonces se realiza una operación de suma, ya sea con uno de los multiplicandos o su complemento de dos, lo que resulta en una resta. Otra forma de pensarlo es que en lugar de solo agregar uno, sumas dos y restas uno. Las dos causas agregadas entonces se llevan a cabo en todas las posiciones de bit de conjunto adyacentes hasta que se alcanza un bit borrado. En cuanto a la multiplicación firmada, el algoritmo ya está configurado para realizar una multiplicación firmada. El ejemplo en la página 3 * -4 = -12, no se requieren pasos adicionales. Sin embargo, con una implementación VLSI de un multiplicador firmado y codificado en cabina, debe tener cuidado con la extensión de signo para que todo funcione correctamente.