TODOPIC

Otros Microcontroladores / Dispositivos programables => Lógica Programable => Mensaje iniciado por: _GilGalaD_ en 08 de Noviembre de 2005, 12:20:00

Título: Division en VHDL
Publicado por: _GilGalaD_ en 08 de Noviembre de 2005, 12:20:00
Hola, estoy intentando dividir un tipo SIGNED entre 4, al principio lo intente usando SRL 2, que desplaza 2 espacios a la derecha la cadena de bits rellenando los desplazados con "0", pero como quiero hacerlo con un SIGNED si el numero es negativo los rellena con 1´s en vez de con 0´s.

Hay alguna manera de dividir un tipo SIGNED entre 4 (sin necesidad de que de el resto) y que el resultado conserve el signo? es decir si divido -32 entre 4 que me de -8.

Gracias y saludos
Título: RE: Division en VHDL
Publicado por: antoniof en 15 de Diciembre de 2005, 19:34:00
Acabo de darme cuenta que la respuesta a este tema se la ha comido el servidor.

Para quien le pueda servir, cuando se divide un número entre una potencia de 2(como es el caso), se desplaza el último bit, es decir, el bit de signo, tantas veces como la potencia.

En este caso, si queremos dividir por 4 la señal "entrada" que suponemos que es de 8 bits, y guardar el resultado en la señal "resultado" tambien de 8 bits, debemos hacer lo siguiente:

Codigo:
resultado <= entrada(7) & entrada(7) & entrada(7 downto 2);


De esta forma, se conserva el signo de "entrada", ya que se esta copiando el último bit

o mas "elegante"

Codigo:
resultado <= (others => entrada(7)) & entrada(7 downto 2);


Bueno para GilGalaD es muy tarde, pero para los demás espero que os ayude.