Autor Tema: Duda postvacacional  (Leído 2407 veces)

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

Desconectado _GilGalaD_

  • PIC10
  • *
  • Mensajes: 6
Duda postvacacional
« en: 03 de Septiembre de 2005, 09:46:00 »

Hola, pues eso, llegando de las vacaciones me puse a mirar éste sample que alguien me recomendó http://www.csee.umbc.edu/help/VHDL/samples/sqrt32.vhdl
y tengo algunas dudas sobre él.

Si lo quiero poner como parte de mi descripción se puede poner tal y como viene? o es mejor ponerlo como si fuera una especie de subrutina no?en ese caso como se hace?y como se la llama?

Aparte de eso me he fijado en que usa el tipo std_logic_vector en los datos de entrada "P" (de ancho 32 bits) y en los de salida "U" (16 bits), en mi descripción uso el tipo signed tendría que cambiarlos para que fueran compatibles?


Gracias y a ver si me aclaro

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Duda postvacacional
« Respuesta #1 en: 04 de Septiembre de 2005, 12:49:00 »
Buenas.

Yo te aconsejo que lo pongas en un fichero aparte con el nombre de .sqrt32.vhd Para "Instanciar", (ya que en vhdl no existen las subrrutinas, sino módulos de descripción lógica) este fichero puedes fijarte en este ejemplo:

Codigo:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity prueba is
    Port ( --Aqui van los puertos de tu diseño donde vas a insertar la raiz cuadrada
    );
end prueba;

architecture Behavioral of prueba is

component sqrt32
  port ( P : in  std_logic_vector(31 downto 0);
         U : out std_logic_vector(15 downto 0));
end component;


-- Aqui van las señales de tu diseño

  signal P : std_logic_vector(31 downto 0);
  signal U : std_logic_vector(15 downto 0);

  begin

-- Instanciacion del fichero sqrt32.vhd
U_sqrt32: sqrt32

  port map  (P, U);

--Aqui los procesos o asignaciones de tu diseño


end Behavioral;


En cuanto a lo del "std_logic_vector", se trata de señales consideradas "UNSIGNED" de 32 y 16 bits, lo cual tiene bastante sentido puesto que una raiz cuadrada no puede tener como entradas ni salidas números negativos. Tendrás que cambiar en tu diseño estas señales por el tipo "std_logic_vector".

Desconectado _GilGalaD_

  • PIC10
  • *
  • Mensajes: 6
RE: Duda postvacacional
« Respuesta #2 en: 06 de Septiembre de 2005, 09:47:00 »

Ok, he leido varias cosas sobre la "instanciación" y es lo mejor para hacer esta parte pero aún no tengo claras algunas cosas:

Al principio si lo que voy a usar es un fichero (llamado por ejemplo sqrt.vhd) donde estara el listado del componente, al principio hay que declarar que se usará ese fichero como seria "use sqrt.vhd.ALL"  ?

Y por último cuando se referencia el componente Ej.:

     -- Instanciacion del fichero sqrt32.vhd
            U_sqrt32: sqrt32

la "U" que significa, la instrucción debe empezar por "U" ?


Gracias por vuestro tiempo



Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Duda postvacacional
« Respuesta #3 en: 09 de Septiembre de 2005, 05:07:00 »
El componente se declara tal y como te señalo en rojo en el mensaje anterior. El nombre del componente será el nombre del fichero sin la extensión .vhd
La senten cia "use" es solo para las librerías y no tiene nada que ver con los ficheros que se utilicen.

En cuanto al "U_sqrt", es el nombre que le he dado a la llamada al componente "sqrt". Le puedes poner "pepito_grillo" o lo que se te ocurra. Lo pongo así porque si hago varias llamadas a varios componentes siguo la secuencia U1, U2 U3, etc.

Codigo:
  U1:decodificador_7seg port map (numero, segme);
   U2:bin2bcd port map (bin, unidades, decenas, centenas);


 

anything