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

Subversion Repositories udp_ip_stack

[/] [udp_ip_stack/] [trunk/] [contrib/] [from_tim/] [udp_ip_stack/] [trunk/] [rtl/] [vhdl/] [ml605/] [UDP_Complete.vhd] - Blame information for rev 35

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 pjf
----------------------------------------------------------------------------------
2
-- Company: 
3
-- Engineer: 
4
-- 
5
-- Create Date:    17:51:18 06/11/2011 
6
-- Design Name: 
7
-- Module Name:    UDP_Complete - 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
-- Revision 0.02 - separated RX and TX clocks
18
-- Additional Comments: 
19
--
20
----------------------------------------------------------------------------------
21
library IEEE;
22
use IEEE.STD_LOGIC_1164.all;
23
use IEEE.NUMERIC_STD.all;
24
use work.axi.all;
25
use work.ipv4_types.all;
26
use work.arp_types.all;
27
 
28
entity UDP_Complete is
29
  generic (
30
    CLOCK_FREQ      : integer := 125000000;  -- freq of data_in_clk -- needed to timout cntr
31
    ARP_TIMEOUT     : integer := 60;    -- ARP response timeout (s)
32
    ARP_MAX_PKT_TMO : integer := 5;     -- # wrong nwk pkts received before set error
33
    MAX_ARP_ENTRIES : integer := 255    -- max entries in the ARP store
34
    );
35
  port (
36
    -- UDP TX signals
37
    udp_tx_start          : in  std_logic;  -- indicates req to tx UDP
38
    udp_txi               : in  udp_tx_type;                   -- UDP tx cxns
39
    udp_tx_result         : out std_logic_vector (1 downto 0);  -- tx status (changes during transmission)
40
    udp_tx_data_out_ready : out std_logic;  -- indicates udp_tx is ready to take data
41
    -- UDP RX signals
42
    udp_rx_start          : out std_logic;  -- indicates receipt of udp header
43
    udp_rxo               : out udp_rx_type;
44
    -- IP RX signals
45
    ip_rx_hdr             : out ipv4_rx_header_type;
46
    -- system signals
47
    clk_in_p              : in  std_logic;  -- 200MHz clock input from board
48
    clk_in_n              : in  std_logic;
49
    clk_out               : out std_logic;
50
    reset                 : in  std_logic;
51
    our_ip_address        : in  std_logic_vector (31 downto 0);
52
    our_mac_address       : in  std_logic_vector (47 downto 0);
53
    control               : in  udp_control_type;
54
    -- status signals
55
    arp_pkt_count         : out std_logic_vector(7 downto 0);  -- count of arp pkts received
56
    ip_pkt_count          : out std_logic_vector(7 downto 0);  -- number of IP pkts received for us
57
    -- GMII Interface
58
    phy_resetn            : out std_logic;
59
    gmii_txd              : out std_logic_vector(7 downto 0);
60
    gmii_tx_en            : out std_logic;
61
    gmii_tx_er            : out std_logic;
62
    gmii_tx_clk           : out std_logic;
63
    gmii_rxd              : in  std_logic_vector(7 downto 0);
64
    gmii_rx_dv            : in  std_logic;
65
    gmii_rx_er            : in  std_logic;
66
    gmii_rx_clk           : in  std_logic;
67
    gmii_col              : in  std_logic;
68
    gmii_crs              : in  std_logic;
69
    mii_tx_clk            : in  std_logic
70
    );
71
end UDP_Complete;
72
 
73
 
74
 
75
 
76
architecture structural of UDP_Complete is
77
 
78
  ------------------------------------------------------------------------------
79
  -- Component Declaration for UDP complete no mac
80
  ------------------------------------------------------------------------------
81
 
82
  component UDP_Complete_nomac
83
    generic (
84
      CLOCK_FREQ      : integer := 125000000;  -- freq of data_in_clk -- needed to timout cntr
85
      ARP_TIMEOUT     : integer := 60;  -- ARP response timeout (s)
86
      ARP_MAX_PKT_TMO : integer := 5;   -- # wrong nwk pkts received before set error
87
      MAX_ARP_ENTRIES : integer := 255  -- max entries in the ARP store
88
      );
89
    port (
90
      -- UDP TX signals
91
      udp_tx_start          : in  std_logic;  -- indicates req to tx UDP
92
      udp_txi               : in  udp_tx_type;                   -- UDP tx cxns
93
      udp_tx_result         : out std_logic_vector (1 downto 0);  -- tx status (changes during transmission)
94
      udp_tx_data_out_ready : out std_logic;  -- indicates udp_tx is ready to take data
95
      -- UDP RX signals
96
      udp_rx_start          : out std_logic;  -- indicates receipt of udp header
97
      udp_rxo               : out udp_rx_type;
98
      -- IP RX signals
99
      ip_rx_hdr             : out ipv4_rx_header_type;
100
      -- system signals
101
      rx_clk                : in  std_logic;
102
      tx_clk                : in  std_logic;
103
      reset                 : in  std_logic;
104
      our_ip_address        : in  std_logic_vector (31 downto 0);
105
      our_mac_address       : in  std_logic_vector (47 downto 0);
106
      control               : in  udp_control_type;
107
      -- status signals
108
      arp_pkt_count         : out std_logic_vector(7 downto 0);  -- count of arp pkts received
109
      ip_pkt_count          : out std_logic_vector(7 downto 0);  -- number of IP pkts received for us
110
      -- MAC Transmitter
111
      mac_tx_tdata          : out std_logic_vector(7 downto 0);  -- data byte to tx
112
      mac_tx_tvalid         : out std_logic;  -- tdata is valid
113
      mac_tx_tready         : in  std_logic;  -- mac is ready to accept data
114
      mac_tx_tfirst         : out std_logic;  -- indicates first byte of frame
115
      mac_tx_tlast          : out std_logic;  -- indicates last byte of frame
116
      -- MAC Receiver
117
      mac_rx_tdata          : in  std_logic_vector(7 downto 0);  -- data byte received
118
      mac_rx_tvalid         : in  std_logic;  -- indicates tdata is valid
119
      mac_rx_tready         : out std_logic;  -- tells mac that we are ready to take data
120
      mac_rx_tlast          : in  std_logic   -- indicates last byte of the trame
121
      );
122
  end component;
123
 
124
 
125
  ------------------------------------------------------------------------------
126
  -- Component Declaration for the MAC layer
127
  ------------------------------------------------------------------------------
128
  component mac_v2_2
129
-- component xv6mac_straight
130
    port (
131
      -- System controls
132
      ------------------
133
      glbl_rst  : in std_logic;         -- asynchronous reset
134
      mac_reset : in std_logic;         -- reset mac layer
135
      clk_in_p  : in std_logic;         -- 200MHz clock input from board
136
      clk_in_n  : in std_logic;
137
 
138
      -- MAC Transmitter (AXI-S) Interface
139
      ---------------------------------------------
140
      mac_tx_clock  : out std_logic;                     -- data sampled on rising edge
141
      mac_tx_tdata  : in  std_logic_vector(7 downto 0);  -- data byte to tx
142
      mac_tx_tvalid : in  std_logic;                     -- tdata is valid
143
      mac_tx_tready : out std_logic;                     -- mac is ready to accept data
144
      mac_tx_tlast  : in  std_logic;                     -- indicates last byte of frame
145
 
146
      -- MAC Receiver (AXI-S) Interface
147
      ------------------------------------------
148
      mac_rx_clock  : out std_logic;    -- data valid on rising edge
149
      mac_rx_tdata  : out std_logic_vector(7 downto 0);  -- data byte received
150
      mac_rx_tvalid : out std_logic;    -- indicates tdata is valid
151
      mac_rx_tready : in  std_logic;    -- tells mac that we are ready to take data
152
      mac_rx_tlast  : out std_logic;    -- indicates last byte of the trame
153
 
154
      -- GMII Interface
155
      -----------------     
156
      phy_resetn  : out std_logic;
157
      gmii_txd    : out std_logic_vector(7 downto 0);
158
      gmii_tx_en  : out std_logic;
159
      gmii_tx_er  : out std_logic;
160
      gmii_tx_clk : out std_logic;
161
      gmii_rxd    : in  std_logic_vector(7 downto 0);
162
      gmii_rx_dv  : in  std_logic;
163
      gmii_rx_er  : in  std_logic;
164
      gmii_rx_clk : in  std_logic;
165
      gmii_col    : in  std_logic;
166
      gmii_crs    : in  std_logic;
167
      mii_tx_clk  : in  std_logic
168
      );
169
  end component;
170
 
171
 
172
  ---------------------------
173
  -- Signals
174
  ---------------------------
175
 
176
  -- MAC RX bus
177
  signal mac_rx_clock       : std_logic;
178
  signal mac_rx_tdata       : std_logic_vector (7 downto 0);
179
  signal mac_rx_tvalid      : std_logic;
180
  signal mac_rx_tready      : std_logic;
181
  signal mac_rx_tlast       : std_logic;
182
  -- MAC TX bus
183
  signal mac_tx_clock       : std_logic;
184
  signal mac_tx_tdata       : std_logic_vector (7 downto 0);
185
  signal mac_tx_tvalid      : std_logic;
186
  signal mac_tx_tready      : std_logic;
187
  signal mac_tx_tlast       : std_logic;
188
  -- control signals
189
  signal mac_tx_tready_int  : std_logic;
190
  signal mac_tx_granted_int : std_logic;
191
 
192
 
193
begin
194
 
195
 
196
  process (mac_tx_clock)
197
  begin
198
    -- output followers
199
    clk_out <= mac_tx_clock;
200
  end process;
201
 
202
  ------------------------------------------------------------------------------
203
  -- Instantiate the UDP layer
204
  ------------------------------------------------------------------------------
205
 
206
  udp_block : UDP_Complete_nomac
207
    generic map (
208
      CLOCK_FREQ      => CLOCK_FREQ,
209
      ARP_TIMEOUT     => ARP_TIMEOUT,
210
      ARP_MAX_PKT_TMO => ARP_MAX_PKT_TMO,
211
      MAX_ARP_ENTRIES => MAX_ARP_ENTRIES
212
      )
213
    port map (
214
      -- UDP TX signals
215
      udp_tx_start          => udp_tx_start,
216
      udp_txi               => udp_txi,
217
      udp_tx_result         => udp_tx_result,
218
      udp_tx_data_out_ready => udp_tx_data_out_ready,
219
      -- UDP RX signals
220
      udp_rx_start          => udp_rx_start,
221
      udp_rxo               => udp_rxo,
222
      -- IP RX signals
223
      ip_rx_hdr             => ip_rx_hdr,
224
      -- system signals
225
      rx_clk                => mac_rx_clock,
226
      tx_clk                => mac_tx_clock,
227
      reset                 => reset,
228
      our_ip_address        => our_ip_address,
229
      our_mac_address       => our_mac_address,
230
      -- status signals
231
      arp_pkt_count         => arp_pkt_count,
232
      ip_pkt_count          => ip_pkt_count,
233
      control               => control,
234
      -- MAC Transmitter
235
      mac_tx_tready         => mac_tx_tready_int,
236
      mac_tx_tvalid         => mac_tx_tvalid,
237
      mac_tx_tfirst         => open,
238
      mac_tx_tlast          => mac_tx_tlast,
239
      mac_tx_tdata          => mac_tx_tdata,
240
      -- MAC Receiver
241
      mac_rx_tdata          => mac_rx_tdata,
242
      mac_rx_tvalid         => mac_rx_tvalid,
243
      mac_rx_tready         => mac_rx_tready,
244
      mac_rx_tlast          => mac_rx_tlast
245
      );
246
 
247
 
248
  ------------------------------------------------------------------------------
249
  -- Instantiate the MAC layer
250
  ------------------------------------------------------------------------------
251
  mac_block : mac_v2_2
252
--      mac_block : xv6mac_straight
253
    port map(
254
      -- System controls
255
      ------------------
256
      glbl_rst  => reset,
257
      mac_reset => '0',
258
      clk_in_p  => clk_in_p,
259
      clk_in_n  => clk_in_n,
260
 
261
      -- MAC Transmitter (AXI-S) Interface
262
      ---------------------------------------------
263
      mac_tx_clock  => mac_tx_clock,
264
      mac_tx_tdata  => mac_tx_tdata,
265
      mac_tx_tvalid => mac_tx_tvalid,
266
      mac_tx_tready => mac_tx_tready_int,
267
      mac_tx_tlast  => mac_tx_tlast,
268
 
269
      -- MAC Receiver (AXI-S) Interface
270
      ------------------------------------------
271
      mac_rx_clock  => mac_rx_clock,
272
      mac_rx_tdata  => mac_rx_tdata,
273
      mac_rx_tvalid => mac_rx_tvalid,
274
      mac_rx_tready => mac_rx_tready,
275
      mac_rx_tlast  => mac_rx_tlast,
276
 
277
      -- GMII Interface
278
      -----------------     
279
      phy_resetn  => phy_resetn,
280
      gmii_txd    => gmii_txd,
281
      gmii_tx_en  => gmii_tx_en,
282
      gmii_tx_er  => gmii_tx_er,
283
      gmii_tx_clk => gmii_tx_clk,
284
      gmii_rxd    => gmii_rxd,
285
      gmii_rx_dv  => gmii_rx_dv,
286
      gmii_rx_er  => gmii_rx_er,
287
      gmii_rx_clk => gmii_rx_clk,
288
      gmii_col    => gmii_col,
289
      gmii_crs    => gmii_crs,
290
      mii_tx_clk  => mii_tx_clk
291
      );
292
 
293
 
294
end structural;
295
 
296
 

powered by: WebSVN 2.1.0

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