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

Subversion Repositories funbase_ip_library

[/] [funbase_ip_library/] [trunk/] [TUT/] [ip.hwp.interface/] [udp_ip/] [1.0/] [vhd/] [udp_ip_dm9000a.vhd] - Blame information for rev 145

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 lanttu
-------------------------------------------------------------------------------
2
-- Title      : UDP/IP and DM9kA Controller
3
-- Project    : 
4
-------------------------------------------------------------------------------
5
-- File       : udp_ip_and_dm9ka_ctrl.vhd
6
-- Author     :   <alhonena@AHVEN>
7
-- Company    : 
8
-- Created    : 2011-09-19
9
-- Last update: 2011-11-07
10
-- Platform   : 
11
-- Standard   : VHDL'87
12
-------------------------------------------------------------------------------
13
-- Description: Direct interface for TX and RX operations on UDP/IP protocol
14
-- level with external DM9000A chip (e.g. Altera DE2).
15
-------------------------------------------------------------------------------
16
-- Copyright (c) 2011 
17
-------------------------------------------------------------------------------
18
-- Revisions  :
19
-- Date        Version  Author  Description
20
-- 2011-09-19  1.0      alhonena        Created
21
-------------------------------------------------------------------------------
22
 
23
library ieee;
24
use ieee.std_logic_1164.all;
25
 
26
entity udp_ip_dm9000a is
27
 
28
  generic (
29
    disable_rx_g  : integer := 0;
30
    disable_arp_g : integer := 0);      -- If you disable ARP, you must provide
31
                                        -- target MAC address (no_arp_target_MAC_in)
32
                                        -- with target IP address (target_addr_in)
33
 
34
  port (
35
    clk               : in  std_logic;  -- 25 MHz clock. DM9000A is used synchronously with UDP/IP with this clock.
36
    rst_n             : in  std_logic;
37
 
38
    -- to/from application
39
 
40
    -- TX
41
    new_tx_in         : in  std_logic;
42
    tx_len_in         : in  std_logic_vector( 10 downto 0 );
43
    target_addr_in    : in  std_logic_vector( 31 downto 0 );
44
    -- Use this with target_addr_in when disable_arp_g = 1:
45
    no_arp_target_MAC_in     : in  std_logic_vector( 47 downto 0 ) := (others => '0');
46
    target_port_in    : in  std_logic_vector( 15 downto 0 );
47
    source_port_in    : in  std_logic_vector( 15 downto 0 );
48
    tx_data_in        : in  std_logic_vector( 15 downto 0 );
49
    tx_data_valid_in  : in  std_logic;
50
    tx_re_out         : out std_logic;
51
 
52
    -- RX
53
    new_rx_out        : out std_logic;
54
    rx_data_valid_out : out std_logic;
55
    rx_data_out       : out std_logic_vector( 15 downto 0 );
56
    rx_re_in          : in  std_logic;
57
    rx_erroneous_out  : out std_logic;
58
    source_addr_out   : out std_logic_vector( 31 downto 0 );
59
    source_port_out   : out std_logic_vector( 15 downto 0 );
60
    dest_port_out     : out std_logic_vector( 15 downto 0 );
61
    rx_len_out        : out std_logic_vector( 10 downto 0 );
62
    rx_error_out      : out std_logic;   -- this means system error, not error
63
                                        -- in data caused by network etc.
64
    -- Status:
65
    link_up_out       : out std_logic;
66
    fatal_error_out   : out std_logic;  -- Something wrong with DM9000A.
67
 
68
    -- To the external ethernet chip (Davicom DM9000A)
69
    eth_clk_out       : out   std_logic;
70
    eth_reset_out     : out   std_logic;
71
    eth_cmd_out       : out   std_logic;
72
    eth_write_out     : out   std_logic;
73
    eth_read_out      : out   std_logic;
74
    eth_interrupt_in  : in    std_logic;
75
    eth_data_inout    : inout std_logic_vector( 15 downto 0 );
76
    eth_chip_sel_out  : out   std_logic
77
 
78
    );
79
 
80
end udp_ip_dm9000a;
81
 
82
architecture structural of udp_ip_dm9000a is
83
 
84
  signal tx_data       : std_logic_vector(15 downto 0);
85
  signal tx_data_valid : std_logic;
86
  signal tx_re         : std_logic;
87
  signal rx_re         : std_logic;
88
  signal rx_data       : std_logic_vector(15 downto 0);
89
  signal rx_data_valid : std_logic;
90
  signal target_MAC    : std_logic_vector(47 downto 0);
91
  signal new_tx        : std_logic;
92
  signal tx_len        : std_logic_vector(10 downto 0);
93
  signal tx_frame_type : std_logic_vector(15 downto 0);
94
  signal new_rx        : std_logic;
95
  signal rx_len        : std_logic_vector(10 downto 0);
96
  signal rx_frame_type : std_logic_vector(15 downto 0);
97
  signal rx_erroneous  : std_logic;
98
 
99
begin  -- structural
100
 
101
  assert not (disable_rx_g = 1 and disable_arp_g = 0) report "RX must be enabled if ARP is enabled" severity failure;
102
  assert disable_rx_g = 0 or disable_rx_g = 1 report "illegal value of disable_rx_g" severity failure;
103
  assert disable_arp_g = 0 or disable_arp_g = 1 report "illegal value of disable_arp_g" severity failure;
104
 
105
 
106
  DM9kA_controller_1: entity work.DM9kA_controller
107
    generic map (
108
      disable_rx_g => disable_rx_g)
109
    port map (
110
      clk               => clk,
111
      rst_n             => rst_n,
112
      eth_clk_out       => eth_clk_out,
113
      eth_reset_out     => eth_reset_out,
114
      eth_cmd_out       => eth_cmd_out,
115
      eth_write_out     => eth_write_out,
116
      eth_read_out      => eth_read_out,
117
      eth_interrupt_in  => eth_interrupt_in,
118
      eth_data_inout    => eth_data_inout,
119
      eth_chip_sel_out  => eth_chip_sel_out,
120
      tx_data_in        => tx_data,
121
      tx_data_valid_in  => tx_data_valid,
122
      tx_re_out         => tx_re,
123
      rx_re_in          => rx_re,
124
      rx_data_out       => rx_data,
125
      rx_data_valid_out => rx_data_valid,
126
      target_MAC_in     => target_MAC,
127
      new_tx_in         => new_tx,
128
      tx_len_in         => tx_len,
129
      tx_frame_type_in  => tx_frame_type,
130
      new_rx_out        => new_rx,
131
      rx_len_out        => rx_len,
132
      rx_frame_type_out => rx_frame_type,
133
      rx_erroneous_out  => rx_erroneous,
134
      ready_out         => link_up_out,
135
      fatal_error_out   => fatal_error_out);
136
 
137
  udp_ip_1: entity work.udp_ip
138
    generic map (
139
      disable_rx_g  => disable_rx_g,
140
      disable_arp_g => disable_arp_g)
141
    port map (
142
      clk                  => clk,
143
      rst_n                => rst_n,
144
      new_tx_in            => new_tx_in,
145
      tx_len_in            => tx_len_in,
146
      target_addr_in       => target_addr_in,
147
      target_port_in       => target_port_in,
148
      source_port_in       => source_port_in,
149
      tx_data_in           => tx_data_in,
150
      tx_data_valid_in     => tx_data_valid_in,
151
      tx_re_out            => tx_re_out,
152
      new_rx_out           => new_rx_out,
153
      rx_data_valid_out    => rx_data_valid_out,
154
      rx_data_out          => rx_data_out,
155
      rx_re_in             => rx_re_in,
156
      rx_erroneous_out     => rx_erroneous_out,
157
      source_addr_out      => source_addr_out,
158
      source_port_out      => source_port_out,
159
      dest_port_out        => dest_port_out,
160
      rx_len_out           => rx_len_out,
161
      no_arp_target_MAC_in => no_arp_target_MAC_in,
162
      tx_data_out          => tx_data,
163
      tx_data_valid_out    => tx_data_valid,
164
      tx_re_in             => tx_re,
165
      target_MAC_out       => target_MAC,
166
      new_tx_out           => new_tx,
167
      tx_len_out           => tx_len,
168
      tx_frame_type_out    => tx_frame_type,
169
      rx_data_in           => rx_data,
170
      rx_data_valid_in     => rx_data_valid,
171
      rx_re_out            => rx_re,
172
      new_rx_in            => new_rx,
173
      rx_len_in            => rx_len,
174
      rx_frame_type_in     => rx_frame_type,
175
      rx_erroneous_in      => rx_erroneous,
176
      rx_error_out         => rx_error_out);
177
 
178
end structural;

powered by: WebSVN 2.1.0

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