Autor Tema: Division en VHDL  (Leído 4266 veces)

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

Desconectado _GilGalaD_

  • PIC10
  • *
  • Mensajes: 6
Division en VHDL
« 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

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Division en VHDL
« Respuesta #1 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.