trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_11b_equal.ngc
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/TARGET_EOF.vhd
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/TARGET_EOF.vhd (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/TARGET_EOF.vhd (revision 2)
@@ -0,0 +1,106 @@
+----------------------------------------------------------------------------------
+-- Company:
+-- Engineer:
+--
+-- Create Date: 16:22:56 11/30/2009
+-- Design Name:
+-- Module Name: TARGET_EOF - Behavioral
+-- Project Name:
+-- Target Devices:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+----------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity TARGET_EOF is
+ Port ( rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+ start : in STD_LOGIC;
+ total_length_from_reg : in STD_LOGIC_VECTOR(15 downto 0);
+ eof_O : out STD_LOGIC);
+end TARGET_EOF;
+
+architecture Behavioral of TARGET_EOF is
+
+signal count_end : std_logic:='0';
+signal count_en_sig : std_logic:='0';
+signal rst_counter : std_logic:='0';
+
+component COUNTER_11B_EN_TRANS is
+ Port ( rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+ count_en : in STD_LOGIC;
+ value_O : inout STD_LOGIC_VECTOR (10 downto 0));
+end component;
+
+signal value_O_tmp : std_logic_vector(10 downto 0);
+
+component comp_11b_equal is
+ port (
+ qa_eq_b : out STD_LOGIC;
+ clk : in STD_LOGIC := 'X';
+ a : in STD_LOGIC_VECTOR ( 10 downto 0 );
+ b : in STD_LOGIC_VECTOR ( 10 downto 0 )
+ );
+end component;
+
+signal last_byte,last_byte_reg_in,last_byte_reg_out : std_logic;
+
+begin
+
+process(clk)
+begin
+if (rst='1' or count_end='1') then
+ count_en_sig<='0';
+ rst_counter<='1';
+else
+ rst_counter<='0';
+ if clk'event and clk='1' then
+ if (start='1' and count_en_sig='0') then
+ count_en_sig<='1';
+ end if;
+ end if;
+end if;
+end process;
+
+
+COUNT_TRANFERED_BYTES : COUNTER_11B_EN_TRANS port map
+( rst =>rst_counter,
+ clk =>clk,
+ count_en => count_en_sig,
+ value_O =>value_O_tmp
+);
+
+COMP_TO_TARGET_LAST_BYTE : comp_11b_equal port map
+(
+ qa_eq_b =>last_byte_reg_in,
+ clk =>clk,
+ a =>value_O_tmp,
+ b =>total_length_from_reg(10 downto 0)
+);
+
+process(clk)
+begin
+if clk'event and clk='1' then
+ last_byte_reg_out<=last_byte_reg_in;
+end if;
+end process;
+eof_O<=not last_byte_reg_out;
+count_end<=last_byte_reg_out;
+end Behavioral;
+
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/dist_mem_64x8.ngc
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/REG_16B_WREN.vhd
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/REG_16B_WREN.vhd (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/REG_16B_WREN.vhd (revision 2)
@@ -0,0 +1,56 @@
+----------------------------------------------------------------------------------
+-- Company:
+-- Engineer:
+--
+-- Create Date: 21:15:16 11/27/2009
+-- Design Name:
+-- Module Name: REG_16B_WREN - Behavioral
+-- Project Name:
+-- Target Devices:
+-- Tool versions:
+-- Description: 16bit wide Register with write enable option.
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+----------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity REG_16B_WREN is
+ Port ( rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+ wren : in STD_LOGIC;
+ input : in STD_LOGIC_VECTOR (15 downto 0);
+ output : out STD_LOGIC_VECTOR (15 downto 0));
+end REG_16B_WREN;
+
+architecture Behavioral of REG_16B_WREN is
+
+begin
+
+process(clk)
+begin
+if rst='1' then
+ output<="0000000000000000";
+else
+if clk'event and clk='1' then
+ if wren='1' then
+ output<=input;
+ end if;
+end if;
+end if;
+end process;
+
+end Behavioral;
+
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/REG_16B_WREN.vhd
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/IPV4_LUT_INDEXER.vhd
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/IPV4_LUT_INDEXER.vhd (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/IPV4_LUT_INDEXER.vhd (revision 2)
@@ -0,0 +1,110 @@
+----------------------------------------------------------------------------------
+-- Company:
+-- Engineer:
+--
+-- Create Date: 22:11:55 11/27/2009
+-- Design Name:
+-- Module Name: IPV4_LUT_INDEXER - Behavioral
+-- Project Name:
+-- Target Devices:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+----------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity IPV4_LUT_INDEXER is
+ Port ( rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+ transmit_enable : in STD_LOGIC;
+ LUT_index : out STD_LOGIC_VECTOR (5 downto 0));
+end IPV4_LUT_INDEXER;
+
+architecture Behavioral of IPV4_LUT_INDEXER is
+
+component dist_mem_64x8 is
+ port (
+ clk : in STD_LOGIC := 'X';
+ a : in STD_LOGIC_VECTOR ( 5 downto 0 );
+ qspo : out STD_LOGIC_VECTOR ( 7 downto 0 )
+ );
+end component;
+
+component COUNTER_6B_LUT_FIFO_MODE is
+ Port ( rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+ funct_sel : in STD_LOGIC; -- 0 for lut addressing, 1 for fifo addressing -- only LUT support is used
+ count_en : in STD_LOGIC;
+ value_O : inout STD_LOGIC_VECTOR (5 downto 0));
+end component;
+
+component comp_6b_equal is
+ port (
+ qa_eq_b : out STD_LOGIC;
+ clk : in STD_LOGIC := 'X';
+ a : in STD_LOGIC_VECTOR ( 5 downto 0 );
+ b : in STD_LOGIC_VECTOR ( 5 downto 0 )
+ );
+end component;
+
+signal count_en_sig , count_end , rst_counter: std_logic :='0';
+signal count_val: std_logic_Vector(5 downto 0):=(others=>'0');
+signal count_en_sig_comb : std_logic;
+constant lut_upper_address :std_logic_vector(5 downto 0):="100110"; -- position 38
+
+begin
+
+process(clk)
+begin
+if (rst='1' or count_end='1') then
+ count_en_sig<='0';
+ rst_counter<='1';
+else
+ rst_counter<='0';
+ if clk'event and clk='1' then
+ if (transmit_enable='1' and count_en_sig='0') then
+ count_en_sig<='1';
+ end if;
+ end if;
+end if;
+end process;
+
+LUT_END_CHECK : comp_6b_equal port map (
+qa_eq_b =>count_end,
+ clk =>clk,
+ a =>count_val,
+ b =>lut_upper_address
+
+);
+
+count_en_sig_comb <=count_en_sig or transmit_enable;
+
+
+
+LUT_INDEXER_MODULE : COUNTER_6B_LUT_FIFO_MODE port map (
+ rst => rst_counter,
+ clk => clk,
+ funct_sel =>'0', -- for now only one function is supported
+ count_en =>count_en_sig_comb,
+ value_O =>count_val
+);
+
+LUT_index<=count_val;
+
+
+end Behavioral;
+
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/IPV4_LUT_INDEXER.vhd
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_6b_equal.xco
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_6b_equal.xco (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_6b_equal.xco (revision 2)
@@ -0,0 +1,59 @@
+##############################################################
+#
+# Xilinx Core Generator version K.39
+# Date: Mon Nov 30 13:23:03 2009
+#
+##############################################################
+#
+# This file contains the customisation parameters for a
+# Xilinx CORE Generator IP GUI. It is strongly recommended
+# that you do not manually alter this file as it may cause
+# unexpected and unsupported behavior.
+#
+##############################################################
+#
+# BEGIN Project Options
+SET addpads = False
+SET asysymbol = False
+SET busformat = BusFormatAngleBracketNotRipped
+SET createndf = False
+SET designentry = VHDL
+SET device = xc5vsx95t
+SET devicefamily = virtex5
+SET flowvendor = Other
+SET formalverification = False
+SET foundationsym = False
+SET implementationfiletype = Ngc
+SET package = ff1136
+SET removerpms = False
+SET simulationfiles = Structural
+SET speedgrade = -1
+SET verilogsim = False
+SET vhdlsim = True
+# END Project Options
+# BEGIN Select
+SELECT Comparator family Xilinx,_Inc. 9.0
+# END Select
+# BEGIN Parameters
+CSET aclr=false
+CSET ainitval=0
+CSET aset=false
+CSET ce=false
+CSET cepriority=Sync_Overrides_CE
+CSET component_name=comp_6b_equal
+CSET constantbport=false
+CSET constantbportvalue=0000000000000000
+CSET datatype=Unsigned
+CSET nonregisteredoutput=false
+CSET operation=eq
+CSET pipelinestages=0
+CSET radix=2
+CSET registeredoutput=true
+CSET sclr=false
+CSET sset=false
+CSET syncctrlpriority=Reset_Overrides_Set
+CSET width=6
+# END Parameters
+GENERATE
+# CRC: 74b0a9bd
+
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_6b_equal.xco
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/ENABLE_USER_DATA_TRANSMISSION.vhd
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/ENABLE_USER_DATA_TRANSMISSION.vhd (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/ENABLE_USER_DATA_TRANSMISSION.vhd (revision 2)
@@ -0,0 +1,64 @@
+----------------------------------------------------------------------------------
+-- Company:
+-- Engineer:
+--
+-- Create Date: 12:05:48 12/04/2009
+-- Design Name:
+-- Module Name: ENABLE_USER_DATA_TRANSMISSION - Behavioral
+-- Project Name:
+-- Target Devices:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+----------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity ENABLE_USER_DATA_TRANSMISSION is
+ Port ( rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+ start_usr_data_trans : in STD_LOGIC;
+ stop_usr_data_trans : in STD_LOGIC;
+ usr_data_sel : out STD_LOGIC);
+end ENABLE_USER_DATA_TRANSMISSION;
+
+architecture Behavioral of ENABLE_USER_DATA_TRANSMISSION is
+
+signal usr_data_sel_prev : std_logic :='0';
+
+begin
+
+process(clk)
+begin
+if rst='1' then
+ usr_data_sel<='0';
+ usr_data_sel_prev<='0';
+else
+ if clk'event and clk='1' then
+ if (start_usr_data_trans='1' and usr_data_sel_prev='0') then
+ usr_data_sel<='1';
+ usr_data_sel_prev<='1';
+ end if;
+ if (stop_usr_data_trans='0' and usr_data_sel_prev='1') then -- stop_usr_data_trans is active low
+ usr_data_sel<='0';
+ usr_data_sel_prev<='0';
+ end if;
+ end if;
+end if;
+end process;
+
+end Behavioral;
+
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/ENABLE_USER_DATA_TRANSMISSION.vhd
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/UDP_IP_Core.vhd
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/UDP_IP_Core.vhd (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/UDP_IP_Core.vhd (revision 2)
@@ -0,0 +1,109 @@
+-----------------------------------------------------------------------------------------
+-- Copyright (C) 2010 Nikolaos Ch. Alachiotis --
+-- --
+-- Engineer: Nikolaos Ch. Alachiotis --
+-- --
+-- Contact: alachiot@cs.tum.edu --
+-- n.alachiotis@gmail.com --
+-- --
+-- Create Date: 15:29:59 02/07/2010 --
+-- Module Name: UDP_IP_Core --
+-- Target Devices: Virtex 5 FPGAs --
+-- Tool versions: ISE 10.1 --
+-- Description: This component can be used to transmit and receive UDP/IP --
+-- Ethernet Packets (IPv4). --
+-- Additional Comments: The core has been area-optimized and is suitable for direct --
+-- PC-FPGA communication at Gigabit speed. --
+-- --
+-----------------------------------------------------------------------------------------
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity UDP_IP_Core is
+ Port ( rst : in STD_LOGIC; -- active-high
+ clk_125MHz : in STD_LOGIC;
+
+ -- Transmit signals
+ transmit_start_enable : in STD_LOGIC;
+ transmit_data_length : in STD_LOGIC_VECTOR (15 downto 0);
+ usr_data_trans_phase_on : out STD_LOGIC;
+ transmit_data_input_bus : in STD_LOGIC_VECTOR (7 downto 0);
+ start_of_frame_O : out STD_LOGIC;
+ end_of_frame_O : out STD_LOGIC;
+ source_ready : out STD_LOGIC;
+ transmit_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0);
+
+ --Receive Signals
+ rx_sof : in STD_LOGIC;
+ rx_eof : in STD_LOGIC;
+ input_bus : in STD_LOGIC_VECTOR(7 downto 0);
+ valid_out_usr_data : out STD_LOGIC;
+ usr_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0)
+ );
+end UDP_IP_Core;
+
+architecture Behavioral of UDP_IP_Core is
+
+component IPV4_PACKET_TRANSMITTER is
+ Port ( rst : in STD_LOGIC;
+ clk_125MHz : in STD_LOGIC;
+ transmit_start_enable : in STD_LOGIC;
+ transmit_data_length : in STD_LOGIC_VECTOR (15 downto 0);
+ usr_data_trans_phase_on : out STD_LOGIC;
+ transmit_data_input_bus : in STD_LOGIC_VECTOR (7 downto 0);
+ start_of_frame_O : out STD_LOGIC;
+ end_of_frame_O : out STD_LOGIC;
+ source_ready : out STD_LOGIC;
+ transmit_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0)
+ );
+end component;
+
+component IPv4_PACKET_RECEIVER is
+ Port ( rst : in STD_LOGIC;
+ clk_125Mhz : in STD_LOGIC;
+ rx_sof : in STD_LOGIC;
+ rx_eof : in STD_LOGIC;
+ input_bus : in STD_LOGIC_VECTOR(7 downto 0);
+ valid_out_usr_data : out STD_LOGIC;
+ usr_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0));
+end component;
+
+begin
+
+IPV4_PACKET_TRANSMITTER_port_map: IPV4_PACKET_TRANSMITTER
+ Port Map
+ ( rst => rst,
+ clk_125MHz => clk_125MHz,
+ transmit_start_enable => transmit_start_enable,
+ transmit_data_length => transmit_data_length,
+ usr_data_trans_phase_on => usr_data_trans_phase_on,
+ transmit_data_input_bus => transmit_data_input_bus,
+ start_of_frame_O => start_of_frame_O,
+ end_of_frame_O => end_of_frame_O,
+ source_ready => source_ready,
+ transmit_data_output_bus => transmit_data_output_bus
+ );
+
+
+IPv4_PACKET_RECEIVER_port_map: IPv4_PACKET_RECEIVER
+ Port Map
+ ( rst => rst,
+ clk_125Mhz => clk_125Mhz,
+ rx_sof => rx_sof,
+ rx_eof => rx_eof,
+ input_bus => input_bus,
+ valid_out_usr_data => valid_out_usr_data,
+ usr_data_output_bus => usr_data_output_bus
+ );
+
+end Behavioral;
+
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/UDP_IP_Core.vhd
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_11b_equal.vhd
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_11b_equal.vhd (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_11b_equal.vhd (revision 2)
@@ -0,0 +1,196 @@
+--------------------------------------------------------------------------------
+-- Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved.
+--------------------------------------------------------------------------------
+-- ____ ____
+-- / /\/ /
+-- /___/ \ / Vendor: Xilinx
+-- \ \ \/ Version: K.39
+-- \ \ Application: netgen
+-- / / Filename: comp_11b_equal.vhd
+-- /___/ /\ Timestamp: Mon Nov 30 16:37:25 2009
+-- \ \ / \
+-- \___\/\___\
+--
+-- Command : -intstyle ise -w -sim -ofmt vhdl C:\PHd_Projects\The_Felsenstein_CoProcessor\COREGEN_Design\tmp\_cg\comp_11b_equal.ngc C:\PHd_Projects\The_Felsenstein_CoProcessor\COREGEN_Design\tmp\_cg\comp_11b_equal.vhd
+-- Device : 5vsx95tff1136-1
+-- Input file : C:/PHd_Projects/The_Felsenstein_CoProcessor/COREGEN_Design/tmp/_cg/comp_11b_equal.ngc
+-- Output file : C:/PHd_Projects/The_Felsenstein_CoProcessor/COREGEN_Design/tmp/_cg/comp_11b_equal.vhd
+-- # of Entities : 1
+-- Design Name : comp_11b_equal
+-- Xilinx : C:\Xilinx\10.1\ISE
+--
+-- Purpose:
+-- This VHDL netlist is a verification model and uses simulation
+-- primitives which may not represent the true implementation of the
+-- device, however the netlist is functionally correct and should not
+-- be modified. This file cannot be synthesized and should only be used
+-- with supported simulation tools.
+--
+-- Reference:
+-- Development System Reference Guide, Chapter 23
+-- Synthesis and Simulation Design Guide, Chapter 6
+--
+--------------------------------------------------------------------------------
+
+
+-- synthesis translate_off
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+library UNISIM;
+use UNISIM.VCOMPONENTS.ALL;
+use UNISIM.VPKG.ALL;
+
+entity comp_11b_equal is
+ port (
+ qa_eq_b : out STD_LOGIC;
+ clk : in STD_LOGIC := 'X';
+ a : in STD_LOGIC_VECTOR ( 10 downto 0 );
+ b : in STD_LOGIC_VECTOR ( 10 downto 0 )
+ );
+end comp_11b_equal;
+
+architecture STRUCTURE of comp_11b_equal is
+ signal BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o189_29 : STD_LOGIC;
+
+ signal BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o139_28 : STD_LOGIC;
+
+ signal BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o62_27 : STD_LOGIC;
+
+ signal BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o26_26 : STD_LOGIC;
+
+ signal BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_temp_result : STD_LOGIC;
+ signal BU2_a_ge_b : STD_LOGIC;
+ signal NLW_VCC_P_UNCONNECTED : STD_LOGIC;
+ signal NLW_GND_G_UNCONNECTED : STD_LOGIC;
+ signal a_2 : STD_LOGIC_VECTOR ( 10 downto 0 );
+ signal b_3 : STD_LOGIC_VECTOR ( 10 downto 0 );
+begin
+ a_2(10) <= a(10);
+ a_2(9) <= a(9);
+ a_2(8) <= a(8);
+ a_2(7) <= a(7);
+ a_2(6) <= a(6);
+ a_2(5) <= a(5);
+ a_2(4) <= a(4);
+ a_2(3) <= a(3);
+ a_2(2) <= a(2);
+ a_2(1) <= a(1);
+ a_2(0) <= a(0);
+ b_3(10) <= b(10);
+ b_3(9) <= b(9);
+ b_3(8) <= b(8);
+ b_3(7) <= b(7);
+ b_3(6) <= b(6);
+ b_3(5) <= b(5);
+ b_3(4) <= b(4);
+ b_3(3) <= b(3);
+ b_3(2) <= b(2);
+ b_3(1) <= b(1);
+ b_3(0) <= b(0);
+ VCC_0 : VCC
+ port map (
+ P => NLW_VCC_P_UNCONNECTED
+ );
+ GND_1 : GND
+ port map (
+ G => NLW_GND_G_UNCONNECTED
+ );
+ BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o206 :
+LUT6
+ generic map(
+ INIT => X"9000000000000000"
+ )
+ port map (
+ I0 => a_2(2),
+ I1 => b_3(2),
+ I2 =>
+BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o26_26
+,
+ I3 =>
+BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o62_27
+,
+ I4 =>
+BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o139_28
+,
+ I5 =>
+BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o189_29
+,
+ O => BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_temp_result
+ );
+ BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o189 :
+LUT6
+ generic map(
+ INIT => X"9009000000009009"
+ )
+ port map (
+ I0 => a_2(5),
+ I1 => b_3(5),
+ I2 => a_2(6),
+ I3 => b_3(6),
+ I4 => a_2(7),
+ I5 => b_3(7),
+ O =>
+BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o189_29
+
+ );
+ BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o139 :
+LUT6
+ generic map(
+ INIT => X"9009000000009009"
+ )
+ port map (
+ I0 => a_2(8),
+ I1 => b_3(8),
+ I2 => a_2(9),
+ I3 => b_3(9),
+ I4 => a_2(10),
+ I5 => b_3(10),
+ O =>
+BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o139_28
+
+ );
+ BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o62 :
+LUT4
+ generic map(
+ INIT => X"9009"
+ )
+ port map (
+ I0 => a_2(3),
+ I1 => b_3(3),
+ I2 => a_2(4),
+ I3 => b_3(4),
+ O =>
+BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o62_27
+
+ );
+ BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o26 :
+LUT4
+ generic map(
+ INIT => X"9009"
+ )
+ port map (
+ I0 => a_2(0),
+ I1 => b_3(0),
+ I2 => a_2(1),
+ I3 => b_3(1),
+ O =>
+BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_i_use_carry_plus_luts_lut_and_i_gate_bit_tier_gen_1_i_tier_loop_tiles_0_i_tile_o26_26
+
+ );
+ BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_gen_output_reg_output_reg_fd_output_1 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_structure_logic_gen_nonpipelined_a_equal_notequal_b_i_a_eq_ne_b_temp_result,
+ Q => qa_eq_b
+ );
+ BU2_XST_GND : GND
+ port map (
+ G => BU2_a_ge_b
+ );
+
+end STRUCTURE;
+
+-- synthesis translate_on
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/comp_11b_equal.vhd
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/dist_mem_64x8.vhd
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/dist_mem_64x8.vhd (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/dist_mem_64x8.vhd (revision 2)
@@ -0,0 +1,264 @@
+--------------------------------------------------------------------------------
+-- Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved.
+--------------------------------------------------------------------------------
+-- ____ ____
+-- / /\/ /
+-- /___/ \ / Vendor: Xilinx
+-- \ \ \/ Version: K.39
+-- \ \ Application: netgen
+-- / / Filename: dist_mem_64x8.vhd
+-- /___/ /\ Timestamp: Tue Dec 01 15:45:04 2009
+-- \ \ / \
+-- \___\/\___\
+--
+-- Command : -intstyle ise -w -sim -ofmt vhdl C:\PHd_Projects\The_Felsenstein_CoProcessor\COREGEN_Design\tmp\_cg\dist_mem_64x8.ngc C:\PHd_Projects\The_Felsenstein_CoProcessor\COREGEN_Design\tmp\_cg\dist_mem_64x8.vhd
+-- Device : 5vsx95tff1136-1
+-- Input file : C:/PHd_Projects/The_Felsenstein_CoProcessor/COREGEN_Design/tmp/_cg/dist_mem_64x8.ngc
+-- Output file : C:/PHd_Projects/The_Felsenstein_CoProcessor/COREGEN_Design/tmp/_cg/dist_mem_64x8.vhd
+-- # of Entities : 1
+-- Design Name : dist_mem_64x8
+-- Xilinx : C:\Xilinx\10.1\ISE
+--
+-- Purpose:
+-- This VHDL netlist is a verification model and uses simulation
+-- primitives which may not represent the true implementation of the
+-- device, however the netlist is functionally correct and should not
+-- be modified. This file cannot be synthesized and should only be used
+-- with supported simulation tools.
+--
+-- Reference:
+-- Development System Reference Guide, Chapter 23
+-- Synthesis and Simulation Design Guide, Chapter 6
+--
+--------------------------------------------------------------------------------
+
+
+-- synthesis translate_off
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+library UNISIM;
+use UNISIM.VCOMPONENTS.ALL;
+use UNISIM.VPKG.ALL;
+
+entity dist_mem_64x8 is
+ port (
+ clk : in STD_LOGIC := 'X';
+ a : in STD_LOGIC_VECTOR ( 5 downto 0 );
+ qspo : out STD_LOGIC_VECTOR ( 7 downto 0 )
+ );
+end dist_mem_64x8;
+
+architecture STRUCTURE of dist_mem_64x8 is
+ signal N0 : STD_LOGIC;
+ signal N1 : STD_LOGIC;
+ signal a_2 : STD_LOGIC_VECTOR ( 5 downto 0 );
+ signal qspo_3 : STD_LOGIC_VECTOR ( 7 downto 0 );
+ signal BU2_U0_gen_rom_rom_inst_spo_int : STD_LOGIC_VECTOR ( 7 downto 0 );
+ signal BU2_qdpo : STD_LOGIC_VECTOR ( 0 downto 0 );
+begin
+ a_2(5) <= a(5);
+ a_2(4) <= a(4);
+ a_2(3) <= a(3);
+ a_2(2) <= a(2);
+ a_2(1) <= a(1);
+ a_2(0) <= a(0);
+ qspo(7) <= qspo_3(7);
+ qspo(6) <= qspo_3(6);
+ qspo(5) <= qspo_3(5);
+ qspo(4) <= qspo_3(4);
+ qspo(3) <= qspo_3(3);
+ qspo(2) <= qspo_3(2);
+ qspo(1) <= qspo_3(1);
+ qspo(0) <= qspo_3(0);
+ VCC_0 : VCC
+ port map (
+ P => N1
+ );
+ GND_1 : GND
+ port map (
+ G => N0
+ );
+ BU2_U0_gen_rom_rom_inst_Mrom_spo_int_rom0000111 : LUT6
+ generic map(
+ INIT => X"0000061400040604"
+ )
+ port map (
+ I0 => a_2(2),
+ I1 => a_2(3),
+ I2 => a_2(5),
+ I3 => a_2(1),
+ I4 => a_2(4),
+ I5 => a_2(0),
+ O => BU2_U0_gen_rom_rom_inst_spo_int(1)
+ );
+ BU2_U0_gen_rom_rom_inst_Mrom_spo_int_rom000071 : LUT6
+ generic map(
+ INIT => X"2100210023022222"
+ )
+ port map (
+ I0 => a_2(3),
+ I1 => a_2(5),
+ I2 => a_2(4),
+ I3 => a_2(1),
+ I4 => a_2(0),
+ I5 => a_2(2),
+ O => BU2_U0_gen_rom_rom_inst_spo_int(7)
+ );
+ BU2_U0_gen_rom_rom_inst_Mrom_spo_int_rom000041 : LUT6
+ generic map(
+ INIT => X"0204162600041726"
+ )
+ port map (
+ I0 => a_2(2),
+ I1 => a_2(3),
+ I2 => a_2(5),
+ I3 => a_2(1),
+ I4 => a_2(4),
+ I5 => a_2(0),
+ O => BU2_U0_gen_rom_rom_inst_spo_int(4)
+ );
+ BU2_U0_gen_rom_rom_inst_Mrom_spo_int_rom000051 : LUT6
+ generic map(
+ INIT => X"2301030311110112"
+ )
+ port map (
+ I0 => a_2(4),
+ I1 => a_2(5),
+ I2 => a_2(2),
+ I3 => a_2(0),
+ I4 => a_2(1),
+ I5 => a_2(3),
+ O => BU2_U0_gen_rom_rom_inst_spo_int(5)
+ );
+ BU2_U0_gen_rom_rom_inst_Mrom_spo_int_rom000021 : LUT6
+ generic map(
+ INIT => X"0100057801014578"
+ )
+ port map (
+ I0 => a_2(5),
+ I1 => a_2(1),
+ I2 => a_2(2),
+ I3 => a_2(3),
+ I4 => a_2(4),
+ I5 => a_2(0),
+ O => BU2_U0_gen_rom_rom_inst_spo_int(2)
+ );
+ BU2_U0_gen_rom_rom_inst_Mrom_spo_int_rom000031 : LUT6
+ generic map(
+ INIT => X"090101020B0A0202"
+ )
+ port map (
+ I0 => a_2(3),
+ I1 => a_2(4),
+ I2 => a_2(5),
+ I3 => a_2(1),
+ I4 => a_2(0),
+ I5 => a_2(2),
+ O => BU2_U0_gen_rom_rom_inst_spo_int(3)
+ );
+ BU2_U0_gen_rom_rom_inst_Mrom_spo_int_rom000061 : LUT6
+ generic map(
+ INIT => X"010701EF02460224"
+ )
+ port map (
+ I0 => a_2(2),
+ I1 => a_2(3),
+ I2 => a_2(4),
+ I3 => a_2(5),
+ I4 => a_2(0),
+ I5 => a_2(1),
+ O => BU2_U0_gen_rom_rom_inst_spo_int(6)
+ );
+ BU2_U0_gen_rom_rom_inst_Mrom_spo_int_rom000011 : LUT6
+ generic map(
+ INIT => X"1202020210347366"
+ )
+ port map (
+ I0 => a_2(3),
+ I1 => a_2(5),
+ I2 => a_2(1),
+ I3 => a_2(0),
+ I4 => a_2(2),
+ I5 => a_2(4),
+ O => BU2_U0_gen_rom_rom_inst_spo_int(0)
+ );
+ BU2_U0_gen_rom_rom_inst_qspo_int_7 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_rom_rom_inst_spo_int(7),
+ Q => qspo_3(7)
+ );
+ BU2_U0_gen_rom_rom_inst_qspo_int_6 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_rom_rom_inst_spo_int(6),
+ Q => qspo_3(6)
+ );
+ BU2_U0_gen_rom_rom_inst_qspo_int_5 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_rom_rom_inst_spo_int(5),
+ Q => qspo_3(5)
+ );
+ BU2_U0_gen_rom_rom_inst_qspo_int_4 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_rom_rom_inst_spo_int(4),
+ Q => qspo_3(4)
+ );
+ BU2_U0_gen_rom_rom_inst_qspo_int_3 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_rom_rom_inst_spo_int(3),
+ Q => qspo_3(3)
+ );
+ BU2_U0_gen_rom_rom_inst_qspo_int_2 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_rom_rom_inst_spo_int(2),
+ Q => qspo_3(2)
+ );
+ BU2_U0_gen_rom_rom_inst_qspo_int_1 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_rom_rom_inst_spo_int(1),
+ Q => qspo_3(1)
+ );
+ BU2_U0_gen_rom_rom_inst_qspo_int_0 : FD
+ generic map(
+ INIT => '0'
+ )
+ port map (
+ C => clk,
+ D => BU2_U0_gen_rom_rom_inst_spo_int(0),
+ Q => qspo_3(0)
+ );
+ BU2_XST_GND : GND
+ port map (
+ G => BU2_qdpo(0)
+ );
+
+end STRUCTURE;
+
+-- synthesis translate_on
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/dist_mem_64x8.vhd
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/IPv4_PACKET_RECEIVER.vhd
===================================================================
--- trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/IPv4_PACKET_RECEIVER.vhd (nonexistent)
+++ trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/IPv4_PACKET_RECEIVER.vhd (revision 2)
@@ -0,0 +1,182 @@
+-----------------------------------------------------------------------------------------
+-- Copyright (C) 2010 Nikolaos Ch. Alachiotis --
+-- --
+-- Engineer: Nikolaos Ch. Alachiotis --
+-- --
+-- Contact: alachiot@cs.tum.edu --
+-- n.alachiotis@gmail.com --
+-- --
+-- Create Date: 14:32:06 02/07/2010 --
+-- Module Name: IPv4_PACKET_RECEIVER --
+-- Target Devices: Virtex 5 FPGAs --
+-- Tool versions: ISE 10.1 --
+-- Description: This component can be used to receive IPv4 Ethernet Packets. --
+-- Additional Comments: --
+-- --
+-- The receiver does not operate properly for data section of 1 or 2 bytes only. --
+-- --
+-----------------------------------------------------------------------------------------
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity IPv4_PACKET_RECEIVER is
+ Port ( rst : in STD_LOGIC;
+ clk_125Mhz : in STD_LOGIC;
+ rx_sof : in STD_LOGIC;
+ rx_eof : in STD_LOGIC;
+ input_bus : in STD_LOGIC_VECTOR(7 downto 0);
+ valid_out_usr_data : out STD_LOGIC;
+ usr_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0));
+end IPv4_PACKET_RECEIVER;
+
+architecture Behavioral of IPv4_PACKET_RECEIVER is
+
+component PACKET_RECEIVER_FSM is
+ Port (
+ rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+
+ -- Signals from EMAC
+ rx_sof: in STD_LOGIC; -- active low input
+ rx_eof: in STD_LOGIC; -- active low input
+
+ -- Signals to Counter and Comparator
+ sel_comp_Bval: out STD_LOGIC;
+ comp_Bval: out STD_LOGIC_VECTOR(10 downto 0);
+ rst_count : out STD_LOGIC;
+ en_count : out STD_LOGIC;
+
+ -- Signal from Comparator
+ comp_eq: in STD_LOGIC;
+
+ -- Signals to Length Register
+ wren_MSbyte: out STD_LOGIC;
+ wren_LSbyte: out STD_LOGIC;
+
+ -- Signal to user interface
+ valid_out_usr_data : out STD_LOGIC);
+end component;
+
+component REG_8b_wren is
+ Port ( rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+ wren : in STD_LOGIC;
+ input_val : in STD_LOGIC_VECTOR (7 downto 0);
+ output_val : inout STD_LOGIC_VECTOR(7 downto 0));
+end component;
+
+component COUNTER_11B_EN_RECEIV is
+ Port ( rst : in STD_LOGIC;
+ clk : in STD_LOGIC;
+ count_en : in STD_LOGIC;
+ value_O : inout STD_LOGIC_VECTOR (10 downto 0));
+end component;
+
+component comp_11b_equal is
+ port (
+ qa_eq_b : out STD_LOGIC;
+ clk : in STD_LOGIC := 'X';
+ a : in STD_LOGIC_VECTOR ( 10 downto 0 );
+ b : in STD_LOGIC_VECTOR ( 10 downto 0 )
+ );
+end component;
+
+signal sel_comp_Bval,
+ rst_count,
+ en_count,
+ comp_eq,
+ wren_MSbyte,
+ wren_LSbyte: STD_LOGIC;
+
+signal MSbyte_reg_val_out,
+ LSbyte_reg_val_out : STD_LOGIC_VECTOR(7 downto 0);
+
+signal counter_val,
+ match_val,
+ comp_Bval,
+ comp_sel_val_vec,
+ comp_n_sel_val_vec,
+ length_val: STD_LOGIC_VECTOR(10 downto 0);
+
+constant length_offest : STD_LOGIC_VECTOR(7 downto 0):="00001010";
+-- This value is formed as 2 (1 clock the latency of comparator and 1 clock fro changing the FSM state) + 8 (number of bytes of UDP header section)
+
+begin
+
+usr_data_output_bus<=input_bus;
+
+PACKET_RECEIVER_FSM_port_map: PACKET_RECEIVER_FSM Port Map
+(
+ rst => rst,
+ clk => clk_125MHz,
+
+ rx_sof => rx_sof,
+ rx_eof => rx_eof,
+
+ sel_comp_Bval => sel_comp_Bval,
+ comp_Bval => comp_Bval,
+ rst_count => rst_count,
+ en_count => en_count,
+
+ comp_eq => comp_eq,
+
+ wren_MSbyte => wren_MSbyte,
+ wren_LSbyte => wren_LSbyte,
+
+ valid_out_usr_data => valid_out_usr_data
+);
+
+MSbyte_REG: REG_8b_wren Port Map
+(
+ rst => rst,
+ clk => clk_125MHz,
+ wren => wren_MSbyte,
+ input_val => input_bus,
+ output_val =>MSbyte_reg_val_out
+);
+
+LSbyte_REG: REG_8b_wren Port Map
+(
+ rst => rst,
+ clk => clk_125MHz,
+ wren => wren_LSbyte,
+ input_val => input_bus,
+ output_val =>LSbyte_reg_val_out
+);
+
+COUNTER_11B_EN_port_map: COUNTER_11B_EN_RECEIV Port Map
+(
+ rst => rst_count,
+ clk => clk_125MHz,
+ count_en => en_count,
+ value_O => counter_val
+);
+
+Comp_11b_equal_port_map: Comp_11b_equal Port Map
+(
+ qa_eq_b => comp_eq,
+ clk => clk_125MHz,
+ a => counter_val,
+ b => match_val
+ );
+
+length_val(7 downto 0)<= LSbyte_reg_val_out-length_offest;
+length_val(10 downto 8)<= MSbyte_reg_val_out (2 downto 0);
+
+comp_sel_val_vec<=(others=> sel_comp_Bval);
+comp_n_sel_val_vec<= (others=> not sel_comp_Bval);
+
+match_val<= (comp_sel_val_vec and length_val) or (comp_n_sel_val_vec and comp_Bval);
+
+
+end Behavioral;
+
trunk/UDP_IP_CORE/UDP_IP_CORE__Virtex5/IPv4_PACKET_RECEIVER.vhd
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/LUT_COE_file/definition2_ipv4_lut.coe
===================================================================
--- trunk/LUT_COE_file/definition2_ipv4_lut.coe (nonexistent)
+++ trunk/LUT_COE_file/definition2_ipv4_lut.coe (revision 2)
@@ -0,0 +1,66 @@
+MEMORY_INITIALIZATION_RADIX=2;
+MEMORY_INITIALIZATION_VECTOR=
+00000000,
+00100001,
+01110000,
+11101001,
+00110100,
+01011100,
+11111111,
+11111111,
+11111111,
+11111111,
+11111111,
+11111111,
+00001000,
+00000000,
+01000101,
+00000000,
+00100100,
+00000000,
+00000000,
+00000000,
+01000000,
+00000000,
+01000000,
+00010001,
+10110111,
+01111101,
+11000000,
+10101000,
+00000001,
+00000001,
+11000000,
+10101000,
+00000001,
+00000010,
+01010101,
+01010101,
+01010101,
+01010100,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000,
+00000000;
trunk/LUT_COE_file/definition2_ipv4_lut.coe
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: trunk/README.txt
===================================================================
--- trunk/README.txt (nonexistent)
+++ trunk/README.txt (revision 2)
@@ -0,0 +1,264 @@
+======================================================================================================
+UDP/IP Core for FPGAs (in VHDL)
+======================================================================================================
+
+Update date: February 9th, 2010
+Build date: December 15th, 2009
+
+
+Description
+-----------
+
+
+This is a VHDL implementation of a UDP/IP core that can be connected to the input and output ports of the
+Virtex-5 Ethernet MAC Local Link Wrapper and enable communication betweena a PC and a FPGA.
+
+It has been area-optimized, it is suitable for direct PC-FPGA communication and can operate at Gigabit speed.
+
+
+Example placement on a Virtex 5:
+
+
+-- -----------------------------------------------------------------------
+-- | EXAMPLE DESIGN WRAPPER |
+-- | --------------------------------------------------------|
+-- | |LOCAL LINK WRAPPER |
+-- | | -----------------------------------------|
+-- | UDP/IP core | |BLOCK LEVEL WRAPPER |
+-- | ----------- | | --------------------- |
+-- | |-------- | | ---------- | | ETHERNET MAC | |
+-- | || IPv4 | | | | | | | WRAPPER | --------- |
+-- |->| pack |-> |->| |--|--->| Tx Tx |--| |--->|
+-- | || trans| | | | | | | client PHY | | | |
+-- | |-------- | | | LOCAL | | | I/F I/F | | | |
+-- | | | | | LINK | | | | | PHY | |
+-- | | | | | FIFO | | | | | I/F | |
+-- | | | | | | | | | | | |
+-- | |-------- | | | | | | Rx Rx | | | |
+-- | || IPv4 | | | | | | | client PHY | | | |
+-- | || pack |<- |<-| |<-|----| I/F I/F |<-| |<---|
+-- | ||receiv| | | | | | | | --------- |
+-- | |-------- | | ---------- | --------------------- |
+-- | ----------- | -----------------------------------------|
+-- | --------------------------------------------------------|
+-- -----------------------------------------------------------------------
+
+
+
+Package Structure
+-----------------
+
+This package contains the following files and folder:
+
+-README : This file
+
+-UDP_IP_CORE : This folder contains VHDL, XCO and NGC files both for Virtex 5 as well as Spartan 3 FPGAs.
+
+-LUT COE file : This folder contains a COE file for the LUT that contains the IP packet header field.
+
+-JAVA app : This folder contains the JAVA application used on the PC side for transmitting and receiving packets.
+
+-PAPER : This folder contains a paper that describes in detail the design and implementation of the core.
+
+
+
+Usage of the UDP/IP core
+------------------------
+
+
+Before integrating the core into your design you have to reinitialize the LUT of the transmitter.
+This LUT contains the header section of the IP packet.One must change the X fields that appear in the following table.
+
+The field that should be changed are:
+Destination MAC Address : (LUT)
+Source MAC Address : (LUT)
+Source IP Address : (LUT)
+Destination IP Address : (LUT)
+Source Port : (LUT)
+Destination Port : (LUT)
+Header Checksum : VHDL file
+
+The Addresses are read from the LUT, thats why a reinitialization is required.
+The Header Checksum base value is not read from the LUT. It can be found in the VHDL file.
+The Header Checksum base value depends on the IP Addresses and it is the Header Checksum value of a packet with no user data.
+
+If you choose to use the JAVA application provided in this packet only the Destination MAC Address needs to change.
+
+
+------------------------------------------------------------------------------------------------------------------------------------------
+------------------------------------------------------------------------------------------------------------------------------------------
+-- IPv4 PACKET STRUCTURE : -- --
+-- size | Description | Transmission Order | Position --
+------------------------------------------------------------------------------------------------------------------------------------------
+-- 6 bytes | Destin MAC Address (PC) | 0 1 2 3 4 5 | LUT --
+-- | X-X-X-X-X-X | | --
+-- | | | --
+-- 6 bytes | Source MAC Address (FPGA) | 6 7 8 9 10 11 | LUT --
+-- | 11111111-11111111-11111111-11111111-... | | --
+-- 2 bytes | Ethernet Type | 12 13 | LUT --
+-- | (fixed to 00001000-00000000 :=> | | --
+-- | Internet Protocol, Version 4 (IPv4)) | | --
+-- -- Start of IPv4 Packet - - - - - - - - - - - - - -- --
+-- 1 byte | 4 MSBs = Version , 4 LSBs = Header Length| 14 | LUT --
+-- | 0100 0101 | | --
+-- 1 byte | Differentiated Services | 15 | LUT --
+-- | 00000000 | | --
+-- 2 bytes | Total Length | 16 17 | REG --
+-- | 00000000-00100100 (base: 20 + 8 + datalength)| | --
+-- 2 bytes | Identification | 18 19 | LUT --
+-- | 00000000-00000000 | | --
+-- 2 bytes | 3 MSBs = Flags , 13 LSBs = Fragment Offset| 20 21 | LUT --
+-- | 010 - 0000000000000 | | --
+-- 1 byte | Time to Live | 22 | LUT --
+-- | 01000000 | | --
+-- 1 byte | Protocol | 23 | LUT --
+-- | 00010001 | | --
+-- 2 bytes | Header Checksum | 24 25 | REG --
+-- | X X (base value) | | --
+-- 4 bytes | Source IP Address | 26 27 28 29 | LUT --
+-- | X-X-X-X - FPGA | | --
+-- 4 bytes | Destin IP Address | 30 31 32 33 | LUT --
+-- | X-X-X-X - PC | | --
+-- -- Start of UDP Packet - - - - - - - - - - - - - - -- --
+-- 2 bytes | Source Port | 34 35 | LUT --
+-- | X-X | | --
+-- 2 bytes | Destination Port | 36 37 | LUT --
+-- | X-X | | --
+-- 2 bytes | Length | 38 39 | REG --
+-- | 00000000 - 00010000 (8 + # data bytes)| | --
+-- 2 bytes | Checksum | 40 41 | LUT --
+-- | 00000000 - 00000000 | | --
+-- X bytes | Data | 42 .. X | from input --
+-- | | | -- --
+------------------------------------------------------------------------------------------------------------------------------------------
+------------------------------------------------------------------------------------------------------------------------------------------
+
+
+
+Interface of the UDP/IP core
+----------------------------
+
+
+The interface of the unit is defined as follows:
+
+entity UDP_IP_Core is
+ Port ( rst : in STD_LOGIC; -- active-high
+ clk_125MHz : in STD_LOGIC;
+
+ -- Transmit signals
+ transmit_start_enable : in STD_LOGIC;
+ transmit_data_length : in STD_LOGIC_VECTOR (15 downto 0);
+ usr_data_trans_phase_on : out STD_LOGIC;
+ transmit_data_input_bus : in STD_LOGIC_VECTOR (7 downto 0);
+ start_of_frame_O : out STD_LOGIC;
+ end_of_frame_O : out STD_LOGIC;
+ source_ready : out STD_LOGIC;
+ transmit_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0);
+
+ --Receive Signals
+ rx_sof : in STD_LOGIC;
+ rx_eof : in STD_LOGIC;
+ input_bus : in STD_LOGIC_VECTOR(7 downto 0);
+ valid_out_usr_data : out STD_LOGIC;
+ usr_data_output_bus : out STD_LOGIC_VECTOR (7 downto 0)
+);
+end UDP_IP_Core;
+
+
+The UDP/IP core and the LOCAL LINK WRAPPER must have the same rst and clk signals.
+
+Signal transmit_start_enable : active high , It must be high for one clock cycle only.
+
+Signal transmit_data_length : number of user data to be transmitted (number of bytes)
+
+Signal usr_data_trans_phase_on: is high one clock cycle before the transmittion of user data and remains high while transmitting user data.
+
+Signal transmit_data_input_bus : input data to be transmitted. Starts transmitting one clock cycle after the usr_data_trans_phase_on is set.
+
+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.
+
+Signals rx_sof, rx_eof : active low, inputs from the local link wrapper
+
+Signal input_bus : input from the local link wrapper
+
+Signal valid_out_usr_data : output to user, when set it indicates that the usr_data_output_bus contains the user data section of the incoming packet
+
+Signal usr_data_output_bus : user data output bus output to the user
+
+
+
+Implementation Details
+----------------------
+
+The VHDL unit have been designed using the Xilinx 10.1 Design Suite.
+
+ISE 10.1 was used to create the unit.
+
+
+
+Verification Details
+--------------------
+
+Modelsim 6.3f was used for extensive post place and route simulations.
+
+The development board HTG-V5-PCIE by HiTech Global populated with a V5SX95T-1 FPGA was used to verify the correct behavior of the core.
+
+The Spartan3 configuration has not been hardware-verified!
+
+
+Citation
+--------
+
+By using this component in any architecture design and associated publication, you agree to cite it as:
+"Efficient PC-FPGA Communication over Gigabit Ethernet", by Nikolaos Alachiotis, Simon A. Berger and Alexandros Stamatakis,
+The Exelixis Lab, Exelixis-RRDR-2010-4, TU Munich, February 2010.
+
+
+Authors and Contact Details
+---------------------------
+
+Nikos Alachiotis alachiot@in.tum.de , n.alachiotis@gmail.com
+Simon A. Berger bergers@in.tum.de
+Alexandros Stamatakis stamatak@in.tum.de
+
+Technichal University of Munich
+Department of Computer Science / I 12
+The Exelixis Lab
+Boltzmannstr. 3
+D-85748 Garching b. Muenchen
+
+
+Copyright
+---------
+
+This component is free. In case you use it for any purpose, particularly
+when publishing work relying on this component you must cite it as:
+
+IPv4 PACKET TRANSMITTER by Nikolas Alachiotis and Alexandros Stamatakis, The Exelixis Lab, TU Munich, distributed by the authors via
+http://wwwkramer.in.tum.de/exelixis/
+
+You can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This component is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+
+
+Release Notes
+------------
+
+Update date: February 9th, 2010
+
+Build date : December 15th, 2009
+
+
+
+
+
+
+
trunk/README.txt
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property