1 votos

VHDL - El convertidor más rápido de números sin signo a binarios con signo

Sabemos que para convertir sin signo a con signo (precisamente, quiero convertir un número binario puro en CA2) debemos negar el número sin signo añadiendo, entonces, + 1. En VHDL puedo implementar un inversor y un sumador que gestione el carry in. Tengo dos números de 32 bits. ¿Hay otra forma de implementar la suma + 1 utilizando algo más barato? ¿Existe una solución para gestionar el carry in utilizando sólo puertas lógicas?

4voto

GSerg Puntos 33571

Realmente no vale la pena preocuparse demasiado por este detalle. Sumar 1 a un número es un lenguaje tan común en HDL que las herramientas de síntesis tienen métodos muy evolucionados para tratar con él. Además, la mayoría de las FPGAs modernas tienen una lógica de acarreo rápido dedicada, que no consume celdas lógicas, y que las herramientas de síntesis saben aprovechar.

1voto

Brian Drummond Puntos 27798

Si es sin signo, es por definición positivo, por lo que su complemento a 2 también es positivo, por lo que la representación del patrón de bits es la misma.

La única dificultad surge si su MSB ya está establecido: entonces es un sin signo demasiado grande para representarlo como un número con signo del mismo tamaño. Por lo tanto, la respuesta completamente general es extenderlo con signo a un número de complemento a 2 que sea al menos 1 bit más ancho:

my_signed <= '0' & my_unsigned;

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