# contador 0-99 con VHDL



## carlosnuel

hola, he estado visitando por algun tiempo este foro y me gusta mucho y pues quisiera ver si pueden ayudarme un poco...

tengo que implementar en el modelsims con programación en VHDL un contador de 0 a 99 y de ahi conectarlo a la tarjeta de xilinx ya tengo el programa y si lo simulo con xilinx no hay problema pero al momento de cambiar el programa para poder programar la tarjeta no me queda alguien podría ayudarme... 

el codigo que tengo es el siguiente:

el programa dee contar del 0 al 99 en los display de la tarjeta xilinx.



		Código:
	

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

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity cotador is
    Port ( reloj : in std_logic;
           reset : in std_logic;
           habent : in std_logic;
           habsal : out std_logic;
         cuentamax: in std_logic_vector (3 downto 0);
           selec:in std_logic_vector (3 downto 0);
			  anodosut std_logic_vector (3 downto 0);
			  salida : out std_logic_vector (6 downto 0));
			  
end cotador;

architecture Behavioral of cotador is
 signal clock:std_logic; 
 signal count:std_logic_vector (3 downto 0);
 begin

process(reloj)
   variable conta : integer range 0 to 50000000 :=0;
     begin
        if reloj = '1' and reloj'event then
            if conta =50000000 then
					conta :=0;
					clock <='1';
				else
					conta:=conta+1;
					clock<='0';
				end if;
		  end if;
 end process;  




   process (cuentamax,clock, reset)
     variable cuenta: std_logic_vector (3 downto 0):="0000";
      begin
         if reset = '1' then
          count<="0000";
            elsif clock='1' and clock'event then
               if habent='0' then 
                 if count = cuentamax then
                    count<="0000";
                 else
                     count<=count+1;
                 end if;
                end if;
          end if;


   
   
   if count=cuentamax and habent = '0' and clock = '1' then
     habsal<='0';
      	else
        habsal<='1';
 
	 end if;
	
  end process;

with count select
	salida<="1111001" when "0001",
			  "0100100" when "0010",
			  "0110000" when "0011",
			  "0011001" when "0100",
			  "0010010" when "0101",
			  "0000010" when "0110",
			  "1111000" when "0111",
			  "0000000" when "1000",
			  "0010000" when "1001",
			  "1000000" when others;

										 anodos<=selec;

end Behavioral;


no sé si alguien puede ayudarme gracias


----------



## lalosoft

> ya tengo el programa y si lo simulo con xilinx no hay problema pero al momento de cambiar el programa para poder programar la tarjeta no me queda alguien podría ayudarme...



A que te refieres con cambiar el programa si ya lo tienes


----------



## carlosnuel

el programa si puedo simularlo pero lo que no puedo es hacer que el contador sirva cuando programo la tarjeta de xilinx.

espero que alguien si tenga esa tarjeta y pueda probarlo ahí porque a mi no me queda... me marca errores


----------



## lito007

Hola carlos, mira tu codigo esta perfecto, no especificas uqe tarjeta estas utilizando, en cualquier caso para poder programa r la tarjeta debes cumplir con tres pasos fundamentales el primero:
debes sintetizar el programa que obiamente ya lo hiciste en este punto mi recomendacion es que elimines todos lo warnings que te aparescan para evitarte dudas, mas sin embargo veo que tu codigo no tiene problema.
el segundo:
debes implmentar el diseño y es aqui donde creo tienes el problema para poder implmentar el idseño necesitas crear un archivo .UCF que segun veo las señales que manejas lo debiste haber tenido en cuenta, este archivo es sore el cual debes asignar tus señales a los pines de la tarjeta mira bien el PDF que trae la tarjeta para uqe no cometas errores al asignar estos pines, con respecto al nombre de las señales de tu programa es un error muy comun.
el tercero:
finalamente debes generar el archivo de programacion en el cual si los dos pasos anteriores estan correctos este noo debe presentar problema.
lo otro es que no se depronto estas trbajando una tarjeta de perifericos como expancion de la tarjeta donde programas en este caso tu problema debe estar en la generacion de un archivo iocb.

Cuenta bien que tarjeta estas utilizando y bajo que caracteristicas y tal ves te pueda ayudar.


----------

