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

Subversion Repositories ipv4_packet_transmitter

[/] [ipv4_packet_transmitter/] [trunk/] [README.txt] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 NikosAl
======================================================================================================
2
IPv4 Ethernet Packet Transmitter (in VHDL)
3
======================================================================================================
4
 
5
 
6
Build date: December 15th, 2009
7
 
8
 
9
Description
10
-----------
11
 
12
 
13
This is a VHDL implementation of a component that can be connected to the input port of the
14
Virtex-5 Ethernet MAC Local Link Wrapper and enable transmission of IPv4 ethernet packets.
15
 
16
Example placement:
17
 
18
 
19
--   ----------------------------------------------------------------------
20
--   |  EXAMPLE DESIGN WRAPPER                                            |
21
--   |            --------------------------------------------------------|
22
--   |            |LOCAL LINK WRAPPER                                     |
23
--   |            |              -----------------------------------------|
24
--   |            |              |BLOCK LEVEL WRAPPER                     |
25
--   |            |              |    ---------------------               |
26
--   |  --------  |  ----------  |    | ETHERNET MAC      |               |
27
--   |  | IPv4 |  |  |        |  |    | WRAPPER           |  ---------    |
28
--   |->| pack |->|->|        |--|--->| Tx            Tx  |--|       |--->|
29
--   |  | trans|  |  |        |  |    | client        PHY |  |       |    |
30
--   |  --------  |  | LOCAL  |  |    | I/F           I/F |  |       |    |
31
--   |            |  |  LINK  |  |    |                   |  | PHY   |    |
32
--   |            |  |  FIFO  |  |    |                   |  | I/F   |    |
33
--   |            |  |        |  |    |                   |  |       |    |
34
--   |            |  |        |  |    | Rx            Rx  |  |       |    |
35
--   |            |  |        |  |    | client        PHY |  |       |    |
36
--   |          <-|<-|        |<-|----| I/F           I/F |<-|       |<---|
37
--   |            |  |        |  |    |                   |  ---------    |
38
--   |            |  ----------  |    ---------------------               |
39
--   |            |              -----------------------------------------|
40
--   |            --------------------------------------------------------|
41
--   ----------------------------------------------------------------------
42
 
43
 
44
 
45
Package Structure
46
-----------------
47
 
48
This package contains the following files and folder:
49
 
50
-README                                 : This file
51
 
52
-IPv4_PACKET_TRANSMITTER                : This folder contains VHDL, XCO and NGC files.
53
 
54
-LUT COE file                           : This folder contains a COE file for the LUT that contains the IP packet header field.
55
 
56
 
57
 
58
Usage of the IPv4_PACKET_TRANSMITTER
59
-----------------------
60
 
61
 
62
Before integrating the IPv4_PACKET_TRANSMITTER into your design you have to reinitialize the LUT.
63
This LUT contains the header section of the IP packet.One must change the X fields that appear in the following table.
64
 
65
The field that should be changed are:
66
Destination MAC Address : (LUT)
67
Source MAC Address      : (LUT)
68
Source IP Address       : (LUT)
69
Destination IP Address  : (LUT)
70
Source Port             : (LUT)
71
Destination Port        : (LUT)
72
Header Checksum         : VHDL file
73
 
74
The Addresses are read from the LUT, thats why a reinitialization is required.
75
The Header Checksum base value is not read from the LUT. It can be found in the VHDL file.
76
The Header Checksum base value depends on the IP Addresses and it is the Header Checksum value of a packet with no user data.
77
 
78
 
79
------------------------------------------------------------------------------------------------------------------------------------------
80
------------------------------------------------------------------------------------------------------------------------------------------
81
-- IPv4 PACKET STRUCTURE :                                                                                                              --                                                                                                                                                                                      --
82
--      size    |               Description                     |               Transmission Order              |  Position             --
83
------------------------------------------------------------------------------------------------------------------------------------------
84
--      6 bytes |       Destin MAC Address (PC)                 |               0 1 2 3 4 5                     |       LUT             --
85
--              |       X-X-X-X-X-X                             |                                               |                       --
86
--              |                                               |                                               |                       --
87
--      6 bytes |       Source MAC Address (FPGA)               |               6 7 8 9 10 11                   |       LUT             --
88
--              |       11111111-11111111-11111111-11111111-... |                                               |                       --
89
--      2 bytes |       Ethernet Type                           |               12 13                           |       LUT             --
90
--              |       (fixed to 00001000-00000000 :=>         |                                               |                       --
91
--              |        Internet Protocol, Version 4 (IPv4))   |                                               |                       --
92
-- -- Start of IPv4 Packet      -       -       -       -       -       -       -       -       -       -       -       -       -       --                                              --
93
--      1 byte  |       4 MSBs = Version , 4 LSBs = Header Length|              14                              |       LUT             --
94
--              |       0100    0101                            |                                               |                       --
95
--      1 byte  |       Differentiated Services                 |               15                              |       LUT             --
96
--              |       00000000                                |                                               |                       --
97
--      2 bytes |       Total Length                            |               16 17                           |       REG             --
98
--              |       00000000-00100100 (base: 20 + 8 + datalength)|                                          |                       --
99
--      2 bytes |       Identification                          |               18 19                           |       LUT             --
100
--              |       00000000-00000000                       |                                               |                       --
101
--      2 bytes |       3 MSBs = Flags , 13 LSBs = Fragment Offset|             20 21                           |       LUT             --
102
--              |       010 - 0000000000000                     |                                               |                       --
103
--      1 byte  |       Time to Live                            |               22                              |       LUT             --
104
--              |       01000000                                |                                               |                       --
105
--      1 byte  |       Protocol                                |               23                              |       LUT             --
106
--              |       00010001                                |                                               |                       --
107
--      2 bytes |       Header Checksum                         |               24 25                           |       REG             --
108
--              |       X X (base value)                        |                                               |                       --
109
--      4 bytes |       Source IP Address                       |               26 27 28 29                     |       LUT             --
110
--              |       X-X-X-X                         - FPGA  |                                               |                       --
111
--      4 bytes |       Destin IP Address                       |               30 31 32 33                     |       LUT             --
112
--              |       X-X-X-X                          - PC   |                                               |                       --
113
-- -- Start of UDP Packet    -  -       -       -       -       -       -       -       -       -       -       -       -       -       --                                              --
114
--      2 bytes |       Source Port                             |               34 35                           |       LUT             --
115
--              |       X-X                                     |                                               |                       --
116
--      2 bytes |       Destination Port                        |               36 37                           |       LUT             --
117
--              |       X-X                                     |                                               |                       --
118
--      2 bytes |       Length                                  |               38 39                           |       REG             --
119
--              |       00000000 - 00010000   (8 + # data bytes)|                                               |                       --
120
--      2 bytes |       Checksum                                |               40 41                           |       LUT             --
121
--              |       00000000 - 00000000                     |                                               |                       --
122
--      X bytes |       Data                                    |               42 .. X                         |    from input         --
123
--              |                                               |                                               |                       --                                      --
124
------------------------------------------------------------------------------------------------------------------------------------------
125
------------------------------------------------------------------------------------------------------------------------------------------
126
 
127
 
128
 
129
Interface of the LAU
130
--------------------
131
 
132
 
133
The interface of the unit is defined as follows:
134
 
135
entity IPV4_PACKET_TRANSMITTER is
136
    Port ( rst : in  STD_LOGIC;
137
           clk_125MHz : in  STD_LOGIC;
138
           transmit_start_enable : in  STD_LOGIC;
139
           transmit_data_length : in  STD_LOGIC_VECTOR (15 downto 0);
140
           usr_data_trans_phase_on : out STD_LOGIC;
141
           transmit_data_input_bus : in  STD_LOGIC_VECTOR (7 downto 0);
142
           start_of_frame_O : out  STD_LOGIC;
143
           end_of_frame_O : out  STD_LOGIC;
144
           source_ready : out STD_LOGIC;
145
           transmit_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0)
146
        );
147
end IPV4_PACKET_TRANSMITTER;
148
 
149
 
150
The IPv4 PACKET TRANSMITTER and the LOCAL LINK WRAPPER  must have the same rst and clk signals.
151
 
152
Signal transmit_start_enable : active high , It must be high for one clock cycle only.
153
 
154
Signal transmit_data_length  : number of user data to be transmitted (number of bytes)
155
 
156
Signal usr_data_trans_phase_on: is high one clock cycle before the transmittion of user data and remains high while transmitting user data.
157
 
158
Signal transmit_data_input_bus : input data to be transmitted. Starts transmitting one clock cycle after the usr_data_trans_phase_on is set.
159
 
160
Signals start_of_frame_O,end_of_frame_O,source_ready,transmit_data_output_bus should be connected to the local link wrapper's input ports.
161
 
162
 
163
Implementation Details
164
----------------------
165
 
166
The VHDL unit have been designed using the Xilinx 10.1 Design Suite.
167
 
168
ISE 10.1 was used to create the unit.
169
 
170
 
171
 
172
Verification Details
173
--------------------
174
 
175
Modelsim 6.3f was used for extensive post place and route simulations.
176
 
177
The development board HTG-V5-PCIE by HiTech Global populated with a V5SX95T-1 FPGA was used to verify the correct behavior of the IPv4_PACKET_TRANSMITTER.
178
 
179
 
180
 
181
 
182
Authors and Contact Details
183
---------------------------
184
 
185
Nikos Alachiotis                        alachiot@in.tum.de , n.alachiotis@gmail.com
186
Alexandros Stamatakis                   stamatak@in.tum.de
187
 
188
Technichal University of Munich
189
Department of Computer Science / I 12
190
The Exelixis Lab
191
Boltzmannstr. 3
192
D-85748 Garching b. Muenchen
193
 
194
 
195
 
196
Citation
197
--------
198
 
199
"IPv4 PACKET TRANSMITTER by Nikolaos Alachiotis and Alexandros Stamatakis, The Exelixis Lab, TU Munich, distributed by the authors via  http://wwwkramer.in.tum.de/exelixis/"
200
 
201
 
202
Copyright
203
---------
204
 
205
This component is free. In case you use it for any purpose, particularly
206
when publishing work relying on this component you must cite it as:
207
 
208
IPv4 PACKET TRANSMITTER by Nikolas Alachiotis and Alexandros Stamatakis, The Exelixis Lab, TU Munich, distributed by the authors via
209
http://wwwkramer.in.tum.de/exelixis/
210
 
211
You can redistribute it and/or modify
212
it under the terms of the GNU General Public License as published by
213
the Free Software Foundation; either version 2 of the License, or
214
(at your option) any later version.
215
 
216
This component is distributed in the hope that it will be useful,
217
but WITHOUT ANY WARRANTY; without even the implied warranty of
218
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
219
GNU General Public License for more details.
220
 
221
 
222
 
223
Release Notes
224
------------
225
 
226
Build date : December 15th, 2009
227
 
228
 
229
 
230
 
231
 
232
 
233
 

powered by: WebSVN 2.1.0

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