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

Subversion Repositories pc_fpga_com

[/] [pc_fpga_com/] [trunk/] [UDP_IP_CORE_FLEX_Spartan3/] [UDP_IP_Core.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 NikosAl
-----------------------------------------------------------------------------------------
2
-- Copyright (C) 2010 Nikolaos Ch. Alachiotis                                                                                                           --
3
--                                                                                                                                                                                                                                      --
4
-- Engineer:                            Nikolaos Ch. Alachiotis                                                                                                         --
5
--                                                                                                                                                                                                                                      --
6
-- Contact:                                     n.alachiotis@gmail.com                                                                                                          --
7
--                                                                                                                                                                                                                              --
8
-- Create Date:                 04/03/2011                                                                                                                                              --
9
-- Module Name:                 UDP_IP_Core                                                                                                                                             --
10
-- Target Devices:              Virtex 5 FPGAs                                                                                                                          --
11
-- Tool versions:               ISE 10.1                                                                                                                                                        --
12
-- Description:                         This component can be used to transmit and receive UDP/IP      --
13
--                                                              Ethernet Packets (IPv4).                                                                                                        --
14
-- Additional Comments: The core has been area-optimized and is suitable for direct    --
15
--                                          PC-FPGA communication at Gigabit speed.                        --
16
--                                                                                                                                                                              --
17
-----------------------------------------------------------------------------------------
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 UDP_IP_Core is
31
    Port ( rst : in  STD_LOGIC;                -- active-high
32
           clk_125MHz : in  STD_LOGIC;
33
 
34
                          -- Transmit signals
35
                          transmit_start_enable : in  STD_LOGIC;
36
           transmit_data_length : in  STD_LOGIC_VECTOR (15 downto 0);
37
                          usr_data_trans_phase_on : out STD_LOGIC;
38
           transmit_data_input_bus : in  STD_LOGIC_VECTOR (7 downto 0);
39
           start_of_frame_O : out  STD_LOGIC;
40
                          end_of_frame_O : out  STD_LOGIC;
41
                          source_ready : out STD_LOGIC;
42
                          transmit_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0);
43
 
44
                          --Receive Signals
45
                          rx_sof : in  STD_LOGIC;
46
           rx_eof : in  STD_LOGIC;
47
           input_bus : in  STD_LOGIC_VECTOR(7 downto 0);
48
           valid_out_usr_data : out  STD_LOGIC;
49
           usr_data_output_bus : out  STD_LOGIC_VECTOR (7 downto 0);
50
 
51
 
52
                          locked : out  STD_LOGIC
53
                          );
54
end UDP_IP_Core;
55
 
56
architecture Behavioral of UDP_IP_Core is
57
 
58
component IPV4_PACKET_TRANSMITTER is
59
    Port ( rst : in  STD_LOGIC;
60
           clk_125MHz : in  STD_LOGIC;
61
           transmit_start_enable : in  STD_LOGIC;
62
           transmit_data_length : in  STD_LOGIC_VECTOR (15 downto 0);
63
                          usr_data_trans_phase_on : out STD_LOGIC;
64
           transmit_data_input_bus : in  STD_LOGIC_VECTOR (7 downto 0);
65
           start_of_frame_O : out  STD_LOGIC;
66
                          end_of_frame_O : out  STD_LOGIC;
67
                          source_ready : out STD_LOGIC;
68
                          transmit_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0);
69
 
70
                          flex_wren: in STD_LOGIC;
71
                          flex_wraddr: in STD_LOGIC_VECTOR(5 downto 0);
72
                          flex_wrdata: in STD_LOGIC_VECTOR(7 downto 0);
73
 
74
                          flex_checksum_baseval: in std_logic_vector(15 downto 0)
75
                          );
76
end component;
77
 
78
component IPv4_PACKET_RECEIVER is
79
    Port ( rst : in  STD_LOGIC;
80
           clk_125Mhz : in  STD_LOGIC;
81
           rx_sof : in  STD_LOGIC;
82
           rx_eof : in  STD_LOGIC;
83
           input_bus : in  STD_LOGIC_VECTOR(7 downto 0);
84
           valid_out_usr_data : out  STD_LOGIC;
85
           usr_data_output_bus : out  STD_LOGIC_VECTOR (7 downto 0));
86
end component;
87
 
88
component FLEX_CONTROL is
89
    Port ( rst : in  STD_LOGIC;
90
           clk : in  STD_LOGIC;
91
           r_sof : in  STD_LOGIC;
92
                          r_usrvld : in STD_LOGIC;
93
           r_data : in  STD_LOGIC_VECTOR (7 downto 0);
94
                          r_usrdata: in STD_LOGIC_VECTOR (7 downto 0);
95
           r_eof : in  STD_LOGIC;
96
           l_wren : out  STD_LOGIC;
97
           l_addr : out  STD_LOGIC_VECTOR (5 downto 0);
98
           l_data : out  STD_LOGIC_VECTOR (7 downto 0);
99
                          checksum_baseval : out STD_LOGIC_VECTOR(15 downto 0);
100
                          locked : out  STD_LOGIC
101
);
102
end component;
103
 
104
signal valid_out_usr_data_t : STD_LOGIC;
105
signal usr_data_output_bus_t : STD_LOGIC_VECTOR (7 downto 0);
106
 
107
signal flex_wren:  STD_LOGIC;
108
signal flex_wraddr:  STD_LOGIC_VECTOR(5 downto 0);
109
signal flex_wrdata:  STD_LOGIC_VECTOR(7 downto 0);
110
signal flex_checksum_baseval: std_logic_vector(15 downto 0);
111
 
112
signal core_rst: std_logic;
113
 
114
component MATCH_CMD is
115
    Port ( rst : in  STD_LOGIC;
116
           clk : in  STD_LOGIC;
117
           sof : in  STD_LOGIC;
118
           vld_i : in  STD_LOGIC;
119
           val_i : in  STD_LOGIC_VECTOR (7 downto 0);
120
                          cmd_to_match : in  STD_LOGIC_VECTOR(7 downto 0);
121
           cmd_match : out  STD_LOGIC);
122
end component;
123
 
124
begin
125
 
126
MATCH_RST_CODE: MATCH_CMD Port Map
127
( rst => rst,
128
  clk => clk_125MHz,
129
  sof => rx_sof,
130
  vld_i => valid_out_usr_data_t,
131
  val_i => usr_data_output_bus_t,
132
  cmd_to_match => "11111111",
133
  cmd_match => core_rst
134
 );
135
 
136
IPV4_PACKET_TRANSMITTER_port_map: IPV4_PACKET_TRANSMITTER
137
    Port Map
138
         ( rst => core_rst,
139
      clk_125MHz => clk_125MHz,
140
      transmit_start_enable => transmit_start_enable,
141
      transmit_data_length => transmit_data_length,
142
                usr_data_trans_phase_on => usr_data_trans_phase_on,
143
      transmit_data_input_bus => transmit_data_input_bus,
144
      start_of_frame_O => start_of_frame_O,
145
                end_of_frame_O => end_of_frame_O,
146
                source_ready => source_ready,
147
                transmit_data_output_bus => transmit_data_output_bus,
148
      flex_wren => flex_wren,
149
                flex_wraddr => flex_wraddr,
150
                flex_wrdata => flex_wrdata,
151
                flex_checksum_baseval => flex_checksum_baseval
152
        );
153
 
154
 
155
IPv4_PACKET_RECEIVER_port_map: IPv4_PACKET_RECEIVER
156
    Port Map
157
         ( rst => core_rst,
158
      clk_125Mhz => clk_125Mhz,
159
      rx_sof => rx_sof,
160
      rx_eof => rx_eof,
161
      input_bus => input_bus,
162
      valid_out_usr_data => valid_out_usr_data_t,
163
      usr_data_output_bus => usr_data_output_bus_t
164
        );
165
 
166
 
167
valid_out_usr_data <= valid_out_usr_data_t;
168
usr_data_output_bus <= usr_data_output_bus_t;
169
 
170
FLEX_CONTROL_port_map: FLEX_CONTROL
171
          Port Map
172
          ( rst => core_rst,
173
       clk => clk_125Mhz,
174
       r_sof => rx_sof,
175
                 r_usrvld => valid_out_usr_data_t,
176
       r_data => input_bus,
177
                 r_usrdata => usr_data_output_bus_t,
178
       r_eof => rx_eof,
179
       l_wren => flex_wren,
180
       l_addr => flex_wraddr,
181
       l_data => flex_wrdata,
182
                 checksum_baseval => flex_checksum_baseval,
183
                 locked => locked
184
        );
185
 
186
 
187
end Behavioral;
188
 

powered by: WebSVN 2.1.0

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