# Contador en vhdl con divisor de frecuencia



## Angieupn (Mar 26, 2013)

Hola a todos los colaboradores del foro, estoy aprendiendo a programar en vhdl y hace poco compre una nexys 3  en la cual estoy probando un programa sencillo como un contador de  4 bits, el problema es  el divisor de  frecuencia ya que la nexys 3  trabaja con 100 Mhz (CLk)  y  en la fpga  en realidad  solo veo, los led prendidos aquí dejo mi código por si alguien me puede ayudar.

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


entity contadorvhdl is
    Port ( 
           rst : in  STD_LOGIC;
           cnt_out : out  STD_LOGIC_VECTOR (3 downto 0);
              clock: in std_logic;
              freq200:out std_logic);
end contadorvhdl;

architecture Behavioral of contadorvhdl is

signal cnt: std_logic_vector (3 downto 0);
signal cont: integer range  0 to 50000000:=0;
signal clk:std_logic;


begin

 
freq200<=clk;
process (clock,rst,cnt)

begin
 if rst='1' then
 cnt<= "0000";
    elsif  rising_edge (clock) then
 
 cnt<=cnt +'1';
  end if;
  
 if clock'event and clock = '0' then
        if cont =   50000000 then
            clk <= not clk;
            cont <= 0;
        else
            cont <= cont + 1;
        end if;
    end if;
end process;

 cnt_out<=cnt;
 
 
end Behavioral;
```


----------



## fms (Abr 8, 2013)

Hola,
En un proceso no debería de haber más de una sentencia de reloj. En tu diseño tienes dos sentencias de reloj dentro del proceso:

```
elsif  [COLOR="Red"]rising_edge (clock)[/COLOR] then
....
   if [COLOR="Red"]clock'event and clock[/COLOR] = '0' then
```

El capítulo 5 de este libro (http://hdl.handle.net/10115/4045)
 te puede ayudar a saber cómo poner las sentencias de reloj dentro de un proceso, y en el siguiente a hacer contadores.

Saludos


----------

