10 votos

¿Cómo se implementa sin firmar número entero máximo en hardware?

Estoy trabajando en un diseño que implica muchas funciones max (y máximo funciones como argumentos de otras funciones max).

¿En un esfuerzo por simplificar el hardware diseño que me preguntaba cómo max se pone en ejecución en hardware?

Matemáticamente, la Max(a,b) puede ser representado como [(a + b) + abs(b-a)] / 2.

¿Es así como su implementación en hardware? (es decir, en etapas, además, poco cambio de división, etc.).

Si es así, ¿cómo se calcula el absoluto de la diferencia?

10voto

GetFree Puntos 495

Un enfoque muy simple sería implementar (un > b)? una: b. un > b se puede implementar a partir de la izquierda y compruebe cada par de bits (a, b):

  • 1 0 o ambos: continúe bajando el siguiente par
  • una es de 1: una es más alta; b es de 1: b es el más alto

Cuando sepas cuál es el más alto puede seleccionar aquél por un 2N-> N mux.

Con algunos inteligente engañando el control de la broca pares pueden combinarse con la muxer para el mismo par de bits.

2voto

djpercent Puntos 86

Veamos el algoritmo en cuestión:

[(a + b) + abs(b - a)]/2

Esto tiene un suma y la resta de las etapas que se alimentan a una segunda etapa de adición. La división por 2 es trivial en el hardware, se puede hacer mediante la eliminación de la LSB. Sin embargo, las dos etapas completo sumador/restador es bastante lento y puerta-intensivo, especialmente si usted está en cascada múltiples caparisons, igual que usted.

Edificio de Wouter van Ooijen la respuesta de la estructura generalizada digitales es un comparador de alimentación de la señal de selección de un mux:

schematic

simular este circuito – Esquema creado mediante CircuitLab

El anterior esquema es para:

(A > B) ? A : B

pero aviso que puede ser fácilmente reconfigurado para cualquier comparación entre las dos entradas por diferentes conexiones lógicas entre el comparador de salidas y el mux seleccione.

Así que si sabemos cómo formular las tres salidas del comparador, podemos implementar cualquier comparación en el hardware. Comparador de lógica está bien descrito aquí. Para optimizar el hardware, que acaba de quitar la lógica de conducción no comparador de salidas.

Pero al final, si va a hardware, tiene que ir a través de la síntesis. Así que no te obsesiones con que la puerta de nivel de esquema es la óptima. En su lugar, optimizar el código y los algoritmos para que al menos no están obligando a que el sintetizador para producir un resultado ineficiente. "Con algunas inteligente engañar a la comprobación de los bits pares puede ser combinado con el muxer para el mismo bit par", y la forma más sencilla de realizar esta optimización es con la síntesis.

1voto

Jason Puntos 261

Si realmente queremos construir un circuito especializado para el cálculo de la max, usted puede comenzar con un bloque básico con las siguientes ecuaciones:

$$\begin{eqnarray} E_{i,out} &\leftarrow& E_{i,in} \wedge \neg (a_i \oplus b_i) \\ L_{i,out} &\leftarrow& (\neg E_{i,in} \wedge L_{i,in})\vee (E_{i,in} \wedge a_i \wedge \neg b_i)\\ r_i &\leftarrow& (\neg E_{i,in} \wedge ((L_{i,in} \wedge a_i) \vee (\neg L_{i,in} \wedge b_i))) \vee (E_{i,in} \wedge (a_i \vee b_i)) \end{eqnarray}$$

y a continuación, se conectan con el dígito más significativo de la alimentación de la siguiente. La parte crítica va de la MSB a LSB mientras circuito basado en restar a lo mejor tienen una ruta crítica que va desde el LSB a MSB, a continuación, volver a la LSB.

Es el equivalente de un acarreo de ondulación de la serpiente. Si usted está interesado usted puede construir el equivalente a llevar a guardar o llevar-seleccione complementos.

(\$E\$ significa que igual hasta aquí, y \$L\$ sólo tiene sentido si \$\neg E\$ y significa que seleccione \$a\$)

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