¿Cómo crear la distancia de Hamming usando xor y sumadores?

0

Mi objetivo es crear un circuito de distancia de Hamming de n bits pero utilizando solo xors y sumadores. Entiendo que se requiere xor para comparar dos bits, pero una vez que tenga todos los resultados de comparación, cómo puedo agregarlos usando sumadores para obtener el recuento total.

Si el resultado de XOR es ABCD (cuatro bits), entonces un enfoque puede ser:

A ADD B = S_0,C_0
C_0(S_0 ADD C)= S_1,C_1
C_1(S_1 ADD D)= S_2,C_2

Sin embargo, si configuramos todos los valores de A, B, C, D en 1, entonces obtenemos 1000, que no es igual a 4. ¿Me puede decir qué parte me falta en la solución? Gracias

    
pregunta muhammad haris

1 respuesta

0
A ADD B = S_0,C_0
C_0(S_0 ADD C)= S_1,C_1
C_1(S_1 ADD D)= S_2,C_2

Si entiendo las cosas, deberías usar S para ser la suma y C para ser el llevar. Aunque puede que no esté entendiendo eso correctamente. Pero si es así, intente lo siguiente:

$$ \ begin {align *} \ left (A + B \ right) \ rightarrow \ left [S_0, C_0 \ right] \\\\ \ left (C + D \ right) \ rightarrow \ left [S_1, C_1 \ right] \\\\ \ left (S_0 + S_1 \ right) \ rightarrow \ left [S_2, C_2 \ right] \\\\ \ left (C_0 + C_1 \ right) \ rightarrow \ left [S_3, C_3 \ right] \\\\ \ left (C_2 + C_3 \ right) \ rightarrow \ left [S_4, C_4 \ right] \ end {align *} $$

Su respuesta será el valor binario: \ $ S_4 S_3 S_2 \ $.

Este es efectivamente el siguiente esquema:

simular este circuito : esquema creado usando CircuitLab

Entonces, usando \ $ ABCD = 1111 \ $:

$$ \ begin {align *} \ left (1_A + 1_B \ right) \ rightarrow \ left [0_ {S_0}, 1_ {C_0} \ right] \\\\ \ left (1_C + 1_D \ right) \ rightarrow \ left [0_ {S_1}, 1_ {C_1} \ right] \\\\ \ left (0_ {S_0} + 0_ {S_1} \ right) \ rightarrow \ left [0_ {S_2}, 0_ {C_2} \ right] \\\\ \ left (1_ {C_0} + 1_ {C_1} \ right) \ rightarrow \ left [0_ {S_3}, 1_ {C_3} \ right] \\\\ \ left (0_ {C_2} + 1_ {C_3} \ right) \ rightarrow \ left [1_ {S_4}, 0_ {C_4} \ right] \ end {align *} $$

Su respuesta es: \ $ 1_ {S_4} 0_ {S_3} 0_ {S_2} \ $.

Podría usar un sumador completo para reducir esto un poco.

simular este circuito

Aquí hay un enfoque generalizado de media suma:

simular este circuito

Es posible que se dé cuenta de lo inútil que puede ser. Pero es fácil visualizar la extensión. Y ese parece ser tu objetivo. Intente extenderlo a un bit más, agregando \ $ X_4 \ $ y observe que puede hacer un poco de poda del árbol, entonces.

Este enfoque maneja números de bits pares e impares en la cadena del símbolo de Hamming.

Si desea manejar solo un número par, puede crear dos de estos "árboles", uno para los bits de entrada de número par y otro para los bits de entrada de número impar y luego sumar los resultados al final de los dos árboles con un arreglo de sumador estándar.

    
respondido por el jonk

Lea otras preguntas en las etiquetas