-- CONTADOR
-- contador ascendente/descendente de n bits…
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Contador is
Port ( CLOCK : in STD_LOGIC;
CLC_E : in STD_LOGIC;
A, R : in STD_LOGIC;
S : buffer STD_LOGIC_VECTOR(20 DOWNTO 0));
end Contador;
architecture COUNT of Contador is
signal temporal: std_logic;
signal contador: integer range 0 to 49999999:=0;
signal Salida: std_logic;
begin
divisor_frecuencia: process(R, clock)
begin
if(R='1') then
temporal<='0';
contador<=0;
elsif (rising_edge(clock)) then
if(contador=49999999) then
temporal<= not(temporal);
contador<=0;
else
contador<=contador+1;
end if;
end if;
end process;
Salida<=temporal;
counter: process (R, Salida)
begin
if (R ='1') then
S<="000000000000000000000";
elsif (Salida'EVENT and Salida ='1' and CLC_E ='0')then
if (A='1') then
S<=S+1;
else
S<=S-1;
end if;
end if;
end process;
end COUNT;
--------------------------------------------------------------------------------------------------------------------------
NET "R" LOC = "T15" | IOSTANDARD = LVCMOS33 | PULLDOWN;
NET "CLOCK" LOC = E12;
NET "A" LOC = T9;
NET "CLC_E" LOC = V8;
NET "S[20]" LOC = AA6;
NET "S[19]" LOC = AA4
NET "S[18]" LOC = AB3
NET "S[17]" LOC = AA3
NET "S[16]" LOC = AB2;
NET "S[15]" LOC = Y18;
NET "S[14]" LOC = W18;
NET "S[13]" LOC = V17;
NET "S[12]" LOC = W17;
NET "S[11]" LOC = AA21;
NET "S[10]" LOC = AB21;
NET "S[9]" LOC = AA19;
NET "S[8]" LOC = AB19;
NET "S[7]" LOC = R20;
NET "S[6]" LOC = T19;
NET "S[5]" LOC = U20;
NET "S[4]" LOC = U19;
NET "S[3]" LOC = V19;
NET "S[2]" LOC = V20;
NET "S[1]" LOC = Y22;
NET "S[0]" LOC = W21;
No hay comentarios:
Publicar un comentario