OpenCores
URL https://opencores.org/ocsvn/usb_fpga_2_13/usb_fpga_2_13/trunk

Subversion Repositories usb_fpga_2_13

[/] [usb_fpga_2_13/] [trunk/] [examples/] [usb-fpga-2.16/] [2.16b/] [intraffic/] [fpga/] [intraffic.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ZTEX
library ieee;
2
use IEEE.std_logic_1164.all;
3
use IEEE.std_logic_arith.all;
4
use IEEE.std_logic_unsigned.all;
5
Library UNISIM;
6
use UNISIM.vcomponents.all;
7
 
8
entity intraffic is
9
    port(
10
        RESET         : in std_logic;
11
        CONT          : in std_logic;
12
        IFCLK_IN      : in std_logic;
13
 
14
        FD            : out std_logic_vector(15 downto 0);
15
 
16
        SLOE          : out std_logic;
17
        SLRD          : out std_logic;
18
        SLWR          : out std_logic;
19
        FIFOADR0      : out std_logic;
20
        FIFOADR1      : out std_logic;
21
        PKTEND        : out std_logic;
22
 
23
        FLAGB         : in std_logic
24
    );
25
end intraffic;
26
 
27
architecture RTL of intraffic is
28
 
29
----------------------------
30
-- test pattern generator --
31
----------------------------
32
-- 30 bit counter
33
signal GEN_CNT : std_logic_vector(29 downto 0);
34
signal INT_CNT : std_logic_vector(6 downto 0);
35
 
36
signal FIFO_WORD : std_logic;
37
 
38
signal ifclk,ifclk_fbin,ifclk_fbout,ifclk_out : std_logic;
39
 
40
begin
41
    SLOE <= '1';
42
    SLRD <= '1';
43
    FIFOADR0 <= '0';
44
    FIFOADR1 <= '0';
45
    PKTEND <= '1';              -- no data alignment
46
 
47
-- ifclk filter + deskew
48
    ifclk_fb_buf : BUFG
49
    port map (
50
        I => ifclk_fbout,
51
        O => ifclk_fbin
52
     );
53
 
54
    ifclk_out_buf : BUFG
55
    port map (
56
        I => ifclk_out,
57
        O => ifclk
58
     );
59
 
60
    ifclk_mmcm : MMCME2_BASE
61
    generic map (
62
       BANDWIDTH => "OPTIMIZED",  -- OPTIMIZED, HIGH, LOW
63
       CLKFBOUT_MULT_F => 20.0,     -- Multiply value for all CLKOUT, (2-64)
64
       CLKFBOUT_PHASE => 0.0,     -- Phase offset in degrees of CLKFB, (-360.000-360.000).
65
       CLKIN1_PERIOD => 0.0,      -- Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz).
66
       -- CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for each CLKOUT (1-128)
67
       CLKOUT0_DIVIDE_F => 20.0,
68
       CLKOUT1_DIVIDE => 1,
69
       CLKOUT2_DIVIDE => 1,
70
       CLKOUT3_DIVIDE => 1,
71
       CLKOUT4_DIVIDE => 1,
72
       CLKOUT5_DIVIDE => 1,
73
       -- CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for each CLKOUT (0.001-0.999).
74
       CLKOUT0_DUTY_CYCLE => 0.5,
75
       CLKOUT1_DUTY_CYCLE => 0.5,
76
       CLKOUT2_DUTY_CYCLE => 0.5,
77
       CLKOUT3_DUTY_CYCLE => 0.5,
78
       CLKOUT4_DUTY_CYCLE => 0.5,
79
       CLKOUT5_DUTY_CYCLE => 0.5,
80
       -- CLKOUT0_PHASE - CLKOUT5_PHASE: Phase offset for each CLKOUT (-360.000-360.000).
81
       CLKOUT0_PHASE => 0.0,
82
       CLKOUT1_PHASE => 0.0,
83
       CLKOUT2_PHASE => 0.0,
84
       CLKOUT3_PHASE => 0.0,
85
       CLKOUT4_PHASE => 0.0,
86
       CLKOUT5_PHASE => 0.0,
87
       CLKOUT4_CASCADE => FALSE,  -- Cascade CLKOUT4 counter with CLKOUT6 (FALSE, TRUE)
88
       DIVCLK_DIVIDE => 1,        -- Master division value, (1-56)
89
       REF_JITTER1 => 0.0,        -- Reference input jitter in UI, (0.000-0.999).
90
       STARTUP_WAIT => FALSE      -- Delay DONE until MMCM Locks, (TRUE / FALSE)
91
    )
92
    port map (
93
       -- Clock Outputs: 1-bit (each) output: User configurable clock outputs
94
       CLKOUT0 => ifclk_out,       -- 1-bit output: CLKOUT0
95
       -- Feedback Clocks: 1-bit (each) output: Clock feedback ports
96
       CLKFBOUT => ifclk_fbout,    -- 1-bit output: Feedback clock
97
       CLKIN1 => ifclk_in,         -- 1-bit input: Input clock
98
       -- Control Ports: 1-bit (each) input: PLL control ports
99
       PWRDWN => '0',              -- 1-bit input: Power-down
100
       RST => RESET,               -- 1-bit input: Reset
101
       -- Feedback Clocks: 1-bit (each) input: Clock feedback ports
102
       CLKFBIN => ifclk_fbin       -- 1-bit input: Feedback clock
103
    );
104
 
105
    dpIFCLK: process (IFCLK, RESET)
106
    begin
107
-- reset
108
        if RESET = '1'
109
        then
110
            GEN_CNT <= ( others => '0' );
111
            INT_CNT <= ( others => '0' );
112
            FIFO_WORD <= '0';
113
            SLWR <= '1';
114
-- IFCLK
115
        elsif IFCLK'event and IFCLK = '1'
116
        then
117
 
118
            if CONT = '1' or FLAGB = '1'
119
            then
120
                if FIFO_WORD = '0'
121
                then
122
                    FD(14 downto 0) <= GEN_CNT(14 downto 0);
123
                else
124
                    FD(14 downto 0) <= GEN_CNT(29 downto 15);
125
                end if;
126
                FD(15) <= FIFO_WORD;
127
 
128
                if FIFO_WORD = '1'
129
                then
130
                    GEN_CNT <= GEN_CNT + '1';
131
                    if INT_CNT = conv_std_logic_vector(99,7)
132
                    then
133
                        INT_CNT <= ( others => '0' );
134
                    else
135
                        INT_CNT <= INT_CNT + '1';
136
                    end if;
137
                end if;
138
                FIFO_WORD <= not FIFO_WORD;
139
            end if;
140
 
141
            if ( INT_CNT >= conv_std_logic_vector(90,7) ) and ( CONT = '0' )
142
            then
143
                SLWR <= '1';
144
            else
145
                SLWR <= '0';
146
            end if;
147
 
148
        end if;
149
    end process dpIFCLK;
150
 
151
end RTL;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.