5 votos

Multiplicadores de 3 bits, ¿cómo funcionan?

Necesito entender cómo funcionan los multiplicadores de 3 bits y luego debo diseñar uno. He leído a través de El multiplicador binario de Wikipedia pero no puedo entenderlo. No entiendo por dónde empezar. ¿Podría explicarme qué pasa cuando dos números de 3 bits se pasan por un multiplicador de 3 bits? Tal vez entonces pueda reconstruir cada paso en un circuito en papel. Alternativamente, ¿podría esbozar los subconceptos relevantes que necesito comprender?

En general, agradezco cualquier ayuda para entender los multiplicadores de 3 bits.

EDITORIAL: Gracias a todos los que contribuyeron a esta pregunta. Todos ustedes me ayudaron a entender los conceptos relevantes, así que me gustaría poder aceptar todas las respuestas como soluciones.

0 votos

Qué parte de no entiendes del ejemplo dado en < es.wikipedia.org/wiki/ >?

0 votos

Creo que casi todo. Lo sigo leyendo pero sin poder procesarlo. Probablemente porque soy completamente nuevo en la lógica digital y no conozco la terminología.

3 votos

Si eres nuevo en la lógica digital, quizás debas intentar comprender cómo funciona un circuito sumador binario antes que un multiplicador binario.

10voto

RelaXNow Puntos 1164

Puede que esto no sea lo que estás buscando en cuanto a obtener una visión de un circuito multiplicador regular, pero puedes implementar esto fácilmente con sólo una ROM. Todo lo que necesitas son 64 posiciones de memoria, cada una de 6 bits de ancho. Cargas la ROM con las respuestas a cada uno de los 64 casos de entrada posibles, y el resto es una búsqueda.

Esto puede sonar despectivo, pero en realidad las pequeñas multiplicaciones y otras funciones más complicadas se implementan a menudo con una tabla de búsqueda. Esta sería la forma normal de hacerlo dentro de una FPGA, por ejemplo. A medida que las palabras se hacen más anchas, el método de la tabla de búsqueda se vuelve impracticable, pero para sólo 3 x 3 es probablemente la forma más apropiada de implementar una multiplicación en la mayoría de los casos reales.

0 votos

Parece que estás describiendo cómo implementar multiplicadores que toman 3 números de 3 bits cada uno como entrada. ¿Me equivoco? Necesito construir un multiplicador que tome dos números de 3 bits cada uno.

0 votos

Si tienes dos números que tienen tres bits de ancho, entonces tienes 6 bits de información en total. La respuesta aquí es sugerir una tabla de búsqueda de 2^6 que contendría todas las respuestas, precalculadas.

0 votos

Olin está hablando de 3bit*3bit. 3bits=8 números posibles (2 al cubo). 8*8 = 64 resultados posibles en total. Lee el resultado en la dirección de la combinación de las entradas (3 bits de op1, 3 bits de op2).

8voto

Bigood Puntos 128

Si eres un estudiante de EE/CPE y estás empezando a aprender lógica, tal vez no hayas aprendido esto todavía, pero lo harás.

Las funciones aritméticas y lógicas se realizan esencialmente en forma de circuito partiendo de una tabla de verdad y rellenando los valores que implementan la función deseada. Para la multiplicación de 2x2 bits, ésta es la tabla de verdad:

Logic Friday Del programa Viernes de lógica

Repasa cada fila y verás cómo lo implementa. Está en la forma A0,A1 * B0,B1 \= F0,F1,F2,F3

Lo siento, es al revés ya que normalmente el LSB es A0 o B0, lo numeré mal. De todos modos, tome por ejemplo la última fila. Dice 11 * 11 = 1001. En decimal, eso es sólo 3 * 3 = 9

Una vez completada la tabla de verdad, podría rellenarla en un _mapa de karnaugh_ y derivar las ecuaciones para cada salida del circuito. En este caso, dejé que este práctico programa lo hiciera por mí.

El resultado fue el siguiente.

Logic Friday

En este punto, puedes ver que tengo una ecuación para F0 a F3 basada en las entradas. Ahora sólo tengo que tirar en las puertas lógicas para que coincida con esas ecuaciones. Y voila, tienes un circuito que realiza la multiplicación binaria.

Este es el lado simplista del asunto. Los procesadores reales y las ALUs dentro de ellos no lo hacen exactamente así. Por ejemplo, en un ordenador de 64 bits, la cantidad de lógica combinacional necesaria para realizar una multiplicación de 64x64 bits sería una locura. En su lugar, como dice el artículo de la wikipedia que has leído, multiplican uno de los operandos de 64 bits por cada bit individual del segundo operando, desplazando cada vez el resultado. Finalmente, suman todas las sumas parciales. Este es el método más sencillo de realizar la multiplicación secuencialmente. Sin embargo, algunos procesadores tienen implementaciones de multiplicación aún más rápidas que hacen uso de árboles wallace

Además, si quieres saber un poco más sobre el multiplicador de tipo secuencial, aquí tienes. Esto puede ser un poco más difícil, así que no te preocupes por entender cómo funciona cada uno de los componentes por debajo, porque lo aprenderás pronto. Yo aprendí registros de desplazamiento, ALUs, y todo eso al final de mi primer curso de lógica digital.

http://faculty.kfupm.edu.sa/COE/mimam/files/COE200experiment13.pdf

Esta imagen procede de http://faculty.kfupm.edu.sa/COE/mimam/files/COE200experiment13.pdf

Esta es una versión simplificada de 4x4 bits, y va más o menos así:

1) El multiplicador de 4 bits se carga y almacena en el registro de desplazamiento P, concretamente en Pl. Además, el multiplicando de 4 bits se almacena en el registro B. Ph es todo 0's

2) En cada ciclo de reloj, el registro P se desplaza a la derecha, y el bit más a la derecha, P0, se extiende con signo (no se muestra, para hacerlo de 4 bits), y se une con el multiplicando en el registro B. Si vuelves a la página del multiplicador binario en la wikipedia, en los fundamentos de la multiplicación, la segunda área gris, puedes ver que esto sucede con cada fila escalonada, es una operación AND que esencialmente hace la multiplicación ya que cada vez es multiplicador x 0 o multiplicador x 1 .

Como la ALU está realizando la operación de suma, el resultado de la multiplicación de 1 bit se suma a la suma parcial anterior, en este caso 0 por ser el primer paso, y se almacena en Ph.

3) En el siguiente ciclo, el registro P se desplaza de nuevo, y así puedes ver cómo la salida de Ph se desplaza y se añade de nuevo al resultado de la multiplicación de 1 bit.

4) Al final, tienes un resultado de 8 bits almacenado en el registro p.

0 votos

¿Podría citar las cifras de su respuesta, por favor?

0 votos

@JoeHass Actualizado

8voto

user27052 Puntos 140

Escribe la multiplicación y sabrás qué hacer. Por ejemplo A 2 A 1 A 0 ×B 2 B 1 B 0

            A₂   A₁   A₀
         ×  B₂   B₁   B₀
 -----------------------
          B₀A₂ B₀A₁ B₀A₀
+    B₁A₂ B₁A₁ B₁A₀
B₂A₂ B₂A₁ B₂A₀

Como ves, basta con multiplicar cada bit (lo que se consigue con un AND ) y luego sumarlos utilizando sumadores completos. Aquí es una aplicación

3-bit array multiplier

Aquí es una forma diferente de dibujar la aplicación

another 3-bit multiplier implementation

La mayoría de los ejemplos en línea son multiplicadores de 4 bits, pero se puede modificar fácilmente para hacer uno de 3 bits

0 votos

¿No hay que introducir la carga de la última fila en la suma de la siguiente columna? Por ejemplo $$\operatorname{Carry_{out}}(A_0B_3) \to\operatorname{Sum_{in}}(A_3B_1),\\ \operatorname{Carry_{out}}(A_1B_3) \to\operatorname{Sum_{in}}(A_3B_2),\\ \operatorname{Carry_{out}}(A_2B_3) \to\operatorname{Sum_{in}}(A_3B_3)?$$

0 votos

@YoTengoUnLCD el carry debe hacerse en hardware. Aquí solo escribo una multiplicación como se hace en papel. Cómo se implementa se deja para los lectores

0 votos

Lo siento, no he sido claro. Me refería a que en la imagen con el multiplicador de 4 por 4 bits, creo que las cargas deben estar cableadas como dije arriba, hace un tiempo probé ese circuito y dio una respuesta errónea para $$0011_2\times 1111_2$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X