|
LIBRARY ieee;
|
|
USE ieee.std_logic_1164.all;
|
|
use ieee.numeric_std.all;
|
|
|
|
|
|
ENTITY pll IS
|
|
PORT
|
|
(
|
|
inclk0 : IN STD_LOGIC;
|
|
c0 : OUT STD_LOGIC;
|
|
locked : OUT STD_LOGIC
|
|
);
|
|
END pll;
|
|
|
|
ARCHITECTURE vhdl OF pll IS
|
|
constant CLK0_PERIOD : time := 1 us / (1.79*32);
|
|
begin
|
|
p_clk_gen_a : process
|
|
begin
|
|
if inclk0/= '1' then
|
|
wait until (inclk0='1');
|
|
end if;
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for clk0_period - (clk0_period/2 );
|
|
c0 <= '1';
|
|
wait for CLK0_PERIOD/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
wait for CLK0_PERIOD - (CLK0_PERIOD/2 );
|
|
c0 <= '1';
|
|
wait for clk0_period/2;
|
|
c0 <= '0';
|
|
end process;
|
|
|
|
locked <= '0', '1' after 2000ns;
|
|
end vhdl;
|
|
|