Autor Tema: ALU: Producto de dos enteros sin signo.

0 Usuarios y 1 Visitante están viendo este tema.

01 Septiembre, 2015, 10:57 am
Leído 2419 veces

twizter

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 8
  • Karma: +0/-0
  • Sexo: Masculino
Hola gente...

Me topé con este algoritmo. Puedo ver que funciona pero no alcanzo a comprender cuál es su fundamento. En especial, el uso del desplazador lógico a derecha (¿Divide por dos?) entre los registros C (carry), A y Q.

Espero encontrar algún diseñador de ALUs por estos pagos.

Desde ya les agradezco por su tiempo :)

01 Septiembre, 2015, 11:02 am
Respuesta #1

twizter

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 8
  • Karma: +0/-0
  • Sexo: Masculino
Disculpen, salió mal la captura del DFD. Va otra...

01 Septiembre, 2015, 11:23 am
Respuesta #2

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

 Con el ejemplo que aparece en el primer archivo que adjuntaste, donde su multiplican, \( Q=1\color{green}1\color{black}\color{red}0\color{black}\color{blue}1\color{black} \) por \( M=1011 \), lo que se hace para hacer el producto es calcular:

\( \color{blue}1\color{black}\cdot 1011+\color{red}0\color{black}\cdot 10110+\color{green}1\color{black}\cdot 101100+1\cdot 1011000 \)

 Lo único que puede hacer algo confuso el resultado es como se van almacenando las sumas.

 La primera \( 1\cdot 1011=1011 \) se almacena en \( A \).
 
 Despues para sumarle \( 0\cdot 10110 \) se desplaza a la derecha \( A \) (el último biy se almcena en el izquierdo de \( Q \)): \( 0101 1 \). Como número de cinco bits sigue siendo \( 01011=1011 \).

 Para sumarle \( 1\cdot 101100 \) se vuelve a desplazar a la derecha \( 0010 \) \( 11 \) (con cuatro bits almacenados en A y dos en Q). Sumamos 001011+101100 y eso fíjate que equivale a sumar a \( A \) el número \( M \).

 El proceso continúa con el mismo esquema.

Saludos.

01 Septiembre, 2015, 02:11 pm
Respuesta #3

Abdulai

  • Moderador Global
  • Mensajes: 3,044
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Me topé con este algoritmo. Puedo ver que funciona pero no alcanzo a comprender cuál es su fundamento.

Es un procedimiento similar a cuando multiplicás a mano, la única diferencia es que en lugar de ir desplazando el multiplicando va desplazando los resultados parciales.
La razón es porque de la otra forma tanto M como las sumas deberían ser del doble de bits.

01 Septiembre, 2015, 10:39 pm
Respuesta #4

twizter

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 8
  • Karma: +0/-0
  • Sexo: Masculino
Muchas gracias Abdulai y el_manco por su respuesta!

Pude comprender más a fondo el algoritmo con su ayuda. Me queda plantearlo de una manera algo más formal...

Teniendo en cuenta:


... la única diferencia es que en lugar de ir desplazando el multiplicando va desplazando los resultados parciales.


Y...


... fíjate que equivale a sumar a \( A \) el número \( M \).


¿Podría plantearse el ejemplo de esta forma?

\(  (A,Q) = \displaystyle\frac{M*2^4}{2+\displaystyle\frac{1}{2+\displaystyle\frac{M*2^4}{2+M*2^4}}}  \)

Ya que al desplazar a derecha se esta dividiendo por dos, y al sumar a A el número M también se esta multiplicando a M por \( 2^4 \) en el resultado final (registro de 8-bits, lo conforman A y Q en conjunto) y A representa los primeros 4-Bits más significativos.

¿Podría expresarse una regla general para registros de n-bits en fracciones continuas o de otra forma?

Espero no meter la pata y me disculpen por la demora. Agradezco su ayuda !!!

02 Septiembre, 2015, 10:14 am
Respuesta #5

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

¿Podría plantearse el ejemplo de esta forma?

\(  (A,Q) = \displaystyle\frac{M*2^4}{2+\displaystyle\frac{1}{2+\displaystyle\frac{M*2^4}{2+M*2^4}}}  \)

Ya que al desplazar a derecha se esta dividiendo por dos, y al sumar a A el número M también se esta multiplicando a M por \( 2^4 \) en el resultado final (registro de 8-bits, lo conforman A y Q en conjunto) y A representa los primeros 4-Bits más significativos.

No. Sería:

\( (A,Q)=\dfrac{\dfrac{\dfrac{\dfrac{Q_1\cdot M\cdot 2^4}{2}+Q_2\cdot M\cdot 2^4}{2}+Q_3\cdot M\cdot 2^4}{2}+Q_4\cdot M\cdot 2^4}{2} \)

Siendo \( Q=Q_4Q_3Q_2Q_1 \) (en el ejemplo \( Q=1101 \), asi que \( Q_4=Q_3=Q_1=1 \) y \( Q_2=0 \))

Fíjate que si se simplifica la expresión te queda:

\( Q_1\cdot M+2\cdot Q_2\cdot M+2^2\cdot Q_3\cdot M+2^3\cdot Q_4\cdot M= \)

\( =(Q_1+2Q_2+2^2Q_3+2^3Q_4)\cdot M=Q\cdot M \)

Saludos.

02 Septiembre, 2015, 11:43 pm
Respuesta #6

twizter

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 8
  • Karma: +0/-0
  • Sexo: Masculino
Muchísimas gracias! En verdad fue de gran ayuda...

Un saludo y éxitos para el foro!!!