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

Subversion Repositories esoc

[/] [esoc/] [trunk/] [Sources/] [logixa/] [package_esoc_configuration.vhd] - Blame information for rev 50

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

Line No. Rev Author Line
1 42 lmaarsen
--------------------------------------------------------------------------------
2
-- Object        : Package work.package_esoc_configuration
3
-- Last modified : Thu Oct 10 12:38:17 2013.
4
--------------------------------------------------------------------------------
5
 
6
 
7
 
8
library ieee, std;
9
use ieee.std_logic_1164.all;
10
use std.textio.all;
11
use ieee.numeric_std.all;
12
---------------------------------------------------------------------------------------------------------------
13
-- Package declaration: ESoC Configuration items
14
---------------------------------------------------------------------------------------------------------------
15
package package_esoc_configuration is
16
-- Manufacturer and device ID
17
constant  esoc_id: std_logic_vector(31 downto 0):= X"71022" & X"001";
18
 
19
-- Version information (version.release)
20
constant  esoc_version: integer                 := 1;
21
constant  esoc_release: integer                 := 0;
22
 
23
-- Mode of operation
24
type esoc_modes is (normal, simulation);
25
constant esoc_mode: esoc_modes                  := simulation;
26
 
27
-- Boot from ROM
28
type esoc_brom_modes is (disabled, enabled);
29
constant esoc_brom_mode: esoc_brom_modes        := disabled;
30
 
31
-- Port count configuration (maximum is 16)
32
constant  esoc_port_count: integer              := 8;
33
 
34
---------------------------------------------------------------------------------------------------------------
35
-- Package declaration: ESoC Address Mapping
36
---------------------------------------------------------------------------------------------------------------
37
-- Address mapping
38
constant  esoc_base                             : integer := 0;                         -- Boundaries of eSoc memory
39
constant  esoc_size                             : integer := 65280;
40
 
41
constant  esoc_testbench_base                   : integer := 65280;                     -- Base address = 0xFF00
42
constant  esoc_testbench_size                   : integer := 8;
43
 
44
constant  esoc_search_engine_base               : integer := 34832;                     -- Base address = 0x8810
45
constant  esoc_search_engine_size               : integer := 8;
46
 
47
constant  esoc_bus_arbiter_base                 : integer := 34816;                     -- Base address = 0x8808 for ID 1
48
constant  esoc_bus_arbiter_size                 : integer := 8;                         -- Base address = 0x8800 for ID 0
49
 
50
constant  esoc_control_base                     : integer := 32768;                     -- Base address = 0x8000
51
constant  esoc_control_size                     : integer := 8;
52
 
53
constant  esoc_port_mac_base                    : integer := 0;                         -- Base address = port_base + port_nr * port_base_offset
54
constant  esoc_port_mac_size                    : integer := 256;
55
constant  esoc_port_mal_base                    : integer := 384;
56
constant  esoc_port_mal_size                    : integer := 8;
57
constant  esoc_port_proc_base                   : integer := 400;
58
constant  esoc_port_proc_size                   : integer := 16;
59
constant  esoc_port_base_offset                 : integer := 2048;
60
 
61
---------------------------------------------------------------------------------------------------------------
62
-- Package declaration: ESoC Design items
63
---------------------------------------------------------------------------------------------------------------
64
-- Configuration of clock and clock enables 
65
constant clk_control_freq                       : integer := 50000000;
66
constant clk_data_freq                          : integer := 125000000;
67
constant clk_search_freq                        : integer := 100000000;
68
 
69
constant clk_search_en_div_1s                   : integer := clk_search_freq/1;         -- 1s enable    --> 100MHz / 1Hz
70
constant clk_search_en_div_1s_sim               : integer := clk_search_freq/100000;    -- 10us enable  --> 100MHz / 100kHz
71
 
72
-- Number of metastability flip flops
73
constant  esoc_meta_ffs                         : integer := 2;
74
 
75
-- Ethernet Packet Known Values
76
constant  esoc_ethernet_uc_mc_bc                : integer := 40;                        -- if bit 40 of the DA is 0 it is a uni cast else a multicast or even broadcast
77
constant  esoc_ethernet_vlan_type               : std_logic_vector(15 downto 0) := X"8100";
78
constant  esoc_ethernet_vlan_qos                : std_logic_vector(11 downto 0) := X"000";
79
constant  esoc_ethernet_ipv4_type               : std_logic_vector(15 downto 0) := X"0800";
80
constant  esoc_ethernet_ipv6_type                : std_logic_vector(15 downto 0) := X"8808";
81
 
82
-- Entity ESoC Port Mal[Inbound] to ESoC Port Processor[Search]
83
-- Record stored in Header Fifo format (start positions)
84
constant  esoc_inbound_header_dmac_hi           : integer := 80;                        -- Position of destination MAC in header fifo entry, length is 48 bits
85
constant  esoc_inbound_header_dmac_lo           : integer := 64;                        -- Position of destination and source MAC in header fifo entry, length is 48 bits
86
constant  esoc_inbound_header_smac_hi           : integer := 48;                        -- Position of destination and source MAC in header fifo entry, length is 48 bits
87
constant  esoc_inbound_header_smac_lo           : integer := 16;                        -- Position of source MAC in header fifo entry, length is 48 bits
88
constant  esoc_inbound_header_vlan              : integer := 4;                         -- Position of vlan ID in header fifo entry, length is 12 bits
89
constant  esoc_inbound_header_unused3_flag      : integer := 3;                         -- Position of ... flag in header fifo entry, length is 1 bit
90
constant  esoc_inbound_header_unused2_flag      : integer := 2;                         -- Position of ... flag in header fifo entry, length is 1 bit
91
constant  esoc_inbound_header_unused1_flag      : integer := 1;                         -- Position of ... flag in header fifo entry, length is 1 bit
92
constant  esoc_inbound_header_vlan_flag         : integer := 0;                         -- Position of vlan tagged packet flag in header fifo entry, length is 1 bit
93
 
94
-- Entity ESoC Port Mal[Inbound] to ESoC Port Processor[Inbound Control]
95
-- Record stored in Info Fifo format (start positions)
96
constant  esoc_inbound_info_length              : integer := 20;                        -- Position of packet length in info fifo entry
97
constant  esoc_inbound_info_length_size         : integer := 12;                        -- Size of packet length in info fifo entry
98
constant  esoc_inbound_info_vlan_tci            : integer := 4;                         -- Position of vlan tag in info fifo entry, length is 16 bits
99
constant  esoc_inbound_info_unused3_flag        : integer := 3;                         -- Position of ... flag in info fifo entry, length is 1 bit
100
constant  esoc_inbound_info_unused2_flag        : integer := 2;                         -- Position of ... flag in info fifo entry, length is 1 bit
101
constant  esoc_inbound_info_unused1_flag        : integer := 1;                         -- Position of ... flag in info fifo entry, length is 1 bit
102
constant  esoc_inbound_info_vlan_flag           : integer := 0;                         -- Position of vlan tagged packet flag in info fifo entry, length is 1 bit
103
 
104
-- Entity ESoC Port Processor[Outbound Control] to ESoC Port Mal[Outbound]
105
-- Record stored in Info Fifo format (start positions)
106
constant  esoc_outbound_info_length             : integer := 4;                         -- Position of packet length in info fifo entry
107
constant  esoc_outbound_info_length_size        : integer := 12;                        -- Size of packet length in info fifo entry
108
constant  esoc_outbound_info_unused3_flag       : integer := 3;                         -- Position of ... flag in info fifo entry, length is 1 bit
109
constant  esoc_outbound_info_unused2_flag       : integer := 2;                         -- Position of ... flag in info fifo entry, length is 1 bit
110
constant  esoc_outbound_info_vlan_flag          : integer := 1;                         -- Position of vlan tagged packet flag in info fifo entry, length is 1 bit
111
constant  esoc_outbound_info_error_flag         : integer := 0;                         -- Position of error flag in info fifo entry, length is 1 bit
112
 
113
-- Entity ESoC Port Processor[Inbound Control] to ESoC Port Processor[Outbound Control]
114
-- Record prepended for each packet transferred over data bus (start positions)
115
constant  esoc_dbus_packet_info_sport          : integer := 32;                         -- Position of ESoC source port in prependeded packet info DWORD, length is 4 bits
116
constant  esoc_dbus_packet_info_length         : integer := 20;                         -- Position of packet length in prependeded packet info DWORD
117
constant  esoc_dbus_packet_info_length_size    : integer := 12;                         -- Size of packet length in prependeded packet info DWORD
118
constant  esoc_dbus_packet_info_vlan_tci       : integer := 4;                          -- Position of vlan tag in prependeded packet info DWORD, length is 16 bits
119
constant  esoc_dbus_packet_info_unused3_flag   : integer := 3;                          -- Position of ... flag in prependeded packet info DWORD, length is 1 bit
120
constant  esoc_dbus_packet_info_unused2_flag   : integer := 2;                          -- Position of ... flag in prependeded packet info DWORD, length is 1 bit
121
constant  esoc_dbus_packet_info_unused1_flag   : integer := 1;                          -- Position of ... flag in prependeded packet info DWORD, length is 1 bit
122
constant  esoc_dbus_packet_info_vlan_flag      : integer := 0;                          -- Position of vlan tagged packet flag in prependeded packet info DWORD, length is 1 bit
123
 
124
-- Entity ESoC Port Processor[Search] to ESoC Search Engine
125
-- Record transferred over search bus (start positions)
126
constant  esoc_search_bus_sport  : integer := 48;                                       -- Position of ESoC source port, length is 16 bits
127
constant  esoc_search_bus_vlan   : integer := 48;                                       -- Position of VLAN ID in table entry, length is 12 bit
128
constant  esoc_search_bus_mac    : integer := 0;                                        -- Position of MAC address in table entry, length is 48 bit
129
 
130
-- Entity ESoC Search Engine configuration
131
constant  esoc_search_engine_col_depth         : integer := 7;                          -- Depth of collision buffer in number of entries, valid values 0 up to 7, results in a depth of 0 to 7 additional entries. 
132
constant  esoc_search_engine_hash_delay        : integer := 1;                          -- Hash delay is determined by XOR tree and RAM latency (=1 clock)
133
 
134
-- Entity ESoC Search Engine
135
-- Record in MAC/VLAN Learning table
136
constant  esoc_search_entry_valid             : integer := 79;                         -- Position of entry valid flag in table entry, length is 1 bit
137
constant  esoc_search_entry_update            : integer := 78;                         -- Position of update flag for aging protocol in table entry, length is 1 bit
138
constant  esoc_search_entry_unused2           : integer := 77;                         -- 
139
constant  esoc_search_entry_unused1           : integer := 76;                         -- 
140
constant  esoc_search_entry_destination       : integer := 60;                         -- Position of destination ports in table entry, length is 16 bit
141
constant  esoc_search_entry_vlan              : integer := 48;                         -- Position of VLAN ID in table entry, length is 12 bit
142
constant  esoc_search_entry_mac               : integer := 0;                          -- Position of MAC address in table entry, length is 48 bit
143
 
144
end package_esoc_configuration;
145
 
146
---------------------------------------------------------------------------------------------------------------
147
-- Package definitions
148
---------------------------------------------------------------------------------------------------------------
149
package body package_esoc_configuration is
150
 
151
end package_esoc_configuration;
152
 
153
 
154
 
155
 
156
 
157
 
158
 
159
 
160
 

powered by: WebSVN 2.1.0

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