1 | ----------------------------------------------------------------------------------
|
2 | -- Company:
|
3 | -- Engineer:
|
4 | --
|
5 | -- Create Date: 16:39:50 09/13/2007
|
6 | -- Design Name:
|
7 | -- Module Name: makebits - Behavioral
|
8 | -- Project Name:
|
9 | -- Target Devices:
|
10 | -- Tool versions:
|
11 | -- Description:
|
12 | --
|
13 | -- Dependencies:
|
14 | --
|
15 | -- Revision:
|
16 | -- Revision 0.01 - File Created
|
17 | -- Additional Comments:
|
18 | --
|
19 | ----------------------------------------------------------------------------------
|
20 | library IEEE;
|
21 | use IEEE.STD_LOGIC_1164.ALL;
|
22 | use IEEE.STD_LOGIC_ARITH.ALL;
|
23 | use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
24 |
|
25 | ---- Uncomment the following library declaration if instantiating
|
26 | ---- any Xilinx primitives in this code.
|
27 | library UNISIM;
|
28 | use UNISIM.VComponents.all;
|
29 |
|
30 | entity makebits is
|
31 | Port (
|
32 | CLK100 : in STD_LOGIC;
|
33 |
|
34 | leds : out std_logic_vector(7 downto 0);
|
35 |
|
36 | pcie_rx0_p : in std_logic; -- data inputs
|
37 | pcie_rx0_n : in std_logic -- data inputs
|
38 | );
|
39 | end makebits;
|
40 |
|
41 | architecture Behavioral of makebits is
|
42 |
|
43 | -- signals
|
44 |
|
45 | signal tp : std_logic;
|
46 |
|
47 | signal incomingbits : std_logic_vector(9 downto 0) := "0000000000";
|
48 | signal countincoming : std_logic_vector(3 downto 0) := "0000";
|
49 |
|
50 | signal khertz : std_logic ;
|
51 | signal mhertz : std_logic ;
|
52 | signal hertz : std_logic ;
|
53 |
|
54 | -- Constants
|
55 |
|
56 | -- Components
|
57 |
|
58 | component zeitgeber
|
59 | port (
|
60 | clock : in STD_LOGIC;
|
61 | mhertz_en : out STD_LOGIC;
|
62 | khertz_en : out STD_LOGIC;
|
63 | hertz_en : out STD_LOGIC
|
64 | );
|
65 | end component;
|
66 |
|
67 |
|
68 | begin
|
69 |
|
70 | IBUFDS_inst : IBUFDS
|
71 | generic map (
|
72 | IOSTANDARD => "LVDS_25",
|
73 | DIFF_TERM => TRUE -- Differential Termination (Virtex-4/5, Spartan-3E/3A)
|
74 | )
|
75 | port map (
|
76 | I => pcie_rx0_p,
|
77 | IB => pcie_rx0_n,
|
78 | O => tp
|
79 | );
|
80 |
|
81 | Clockgen: zeitgeber
|
82 | port map (
|
83 | clock => CLK100,
|
84 | mhertz_en => mhertz,
|
85 | khertz_en => khertz,
|
86 | hertz_en => hertz
|
87 | );
|
88 |
|
89 | leds <= incomingbits (7 downto 0) when countincoming = "1010" else "00000000";
|
90 |
|
91 | process (mhertz)
|
92 | begin
|
93 | if mhertz'event and mhertz = '1' then
|
94 | incomingbits <= incomingbits(8 downto 0) & tp;
|
95 | countincoming <= countincoming + 1;
|
96 | if countincoming = "1010" then
|
97 | countincoming <= "0000";
|
98 | end if;
|
99 | end if;
|
100 | end process;
|
101 |
|
102 | end Behavioral;
|