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.communication/] [fh_mesh_2d/] [1.0/] [vhd/] [mesh_2d_with_pkt_codec_top.vhd] - Blame information for rev 145

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 lanttu
-------------------------------------------------------------------------------
2
-- Title      : mesh toplevel with packet encoder-decoders.
3
-- Project    : 
4
-------------------------------------------------------------------------------
5
-- File       : mesh_2d_with_pkt_codec_top.vhd
6
-- Author     : Antti Alhonen
7
-- Company    : 
8
-- Last update: 2011-08-12
9
-- Platform   : 
10
-------------------------------------------------------------------------------
11
-- Description:
12
-- -------------------------------------------------------------------------------
13
--  This file is part of Transaction Generator.
14
--
15
--  Transaction Generator is free software: you can redistribute it and/or modify
16
--  it under the terms of the Lesser GNU General Public License as published by
17
--  the Free Software Foundation, either version 3 of the License, or
18
--  (at your option) any later version.
19
--
20
--  Transaction Generator is distributed in the hope that it will be useful,
21
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
22
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
--  Lesser GNU General Public License for more details.
24
--
25
--  You should have received a copy of the Lesser GNU General Public License
26
--  along with Transaction Generator.  If not, see <http://www.gnu.org/licenses/>.
27
-------------------------------------------------------------------------------
28
-- Revisions  :
29
-- Date        Version  Author  Description
30
-- 2009/08/05  1.0      alhonena        Created
31
-------------------------------------------------------------------------------
32
 
33
library ieee;
34
use ieee.std_logic_1164.all;
35
 
36
entity mesh_2d_with_pkt_codec_top is
37
 
38
  generic (
39
    n_ag_g          : integer;
40
    stfwd_en_g      : integer;
41
    data_width_g    : integer;
42
    addr_width_g    : integer;
43
    packet_length_g : integer;
44
    tx_len_width_g  : integer;
45
    timeout_g       : integer;
46
    fill_packet_g   : integer;
47
    lut_en_g        : integer;
48
    net_type_g      : integer;
49
    len_flit_en_g   : integer;
50
    oaddr_flit_en_g : integer;
51
    status_en_g     : integer;
52
    fifo_depth_g    : integer;
53
    mesh_freq_g     : integer;
54
    ip_freq_g       : integer;
55
    rows_g          : integer;
56
    cols_g          : integer);
57
 
58
  port (
59
    clk_net : in std_logic;
60
    clk_ip  : in std_logic;
61
    rst_n   : in std_logic;
62
 
63
    -- Data coming from IP to network
64
    av_in     : in  std_logic_vector (n_ag_g-1 downto 0);
65
    data_in   : in  std_logic_vector (n_ag_g * data_width_g -1 downto 0);
66
    we_in     : in  std_logic_vector (n_ag_g-1 downto 0);
67
    txlen_in  : in  std_logic_vector (n_ag_g * tx_len_width_g -1 downto 0);
68
    full_out  : out std_logic_vector (n_ag_g-1 downto 0);
69
    tx_empty_out : out std_logic_vector (n_ag_g-1 downto 0);  -- not needed in most cases.
70
 
71
    -- Data going from network to IP
72
    av_out    : out std_logic_vector (n_ag_g-1 downto 0);
73
    data_out  : out std_logic_vector (n_ag_g * data_width_g -1 downto 0);
74
    re_in     : in  std_logic_vector (n_ag_g-1 downto 0);
75
    rx_empty_out : out std_logic_vector (n_ag_g-1 downto 0)
76
 
77
    );
78
 
79
end mesh_2d_with_pkt_codec_top;
80
 
81
architecture structural of mesh_2d_with_pkt_codec_top is
82
 
83
  component enc_dec_1d
84
    generic (
85
      n_ag_g            :     integer;
86
      wait_empty_fifo_g :     integer;
87
      data_width_g      :     integer;
88
      addr_width_g      :     integer;
89
      packet_length_g   :     integer;
90
      tx_len_width_g    :     integer;
91
      timeout_g         :     integer;
92
      fill_packet_g     :     integer;
93
      lut_en_g          :     integer;
94
      net_type_g        :     integer;
95
      len_flit_en_g     :     integer;
96
      oaddr_flit_en_g   :     integer;
97
      status_en_g       :     integer);
98
    port (
99
      Clk               : in  std_logic;
100
      Rst_n             : in  std_logic;
101
      av_ip_enc_in      : in  std_logic_vector (n_ag_g-1 downto 0);
102
      data_ip_enc_in    : in  std_logic_vector (n_ag_g * data_width_g -1 downto 0);
103
      we_ip_enc_in      : in  std_logic_vector (n_ag_g-1 downto 0);
104
      len_ip_enc_in     : in  std_logic_vector (n_ag_g*tx_len_width_g-1 downto 0);
105
      full_enc_ip_out   : out std_logic_vector (n_ag_g-1 downto 0);
106
      empty_enc_ip_out  : out std_logic_vector (n_ag_g-1 downto 0);
107
      av_enc_net_out    : out std_logic_vector (n_ag_g-1 downto 0);
108
      data_enc_net_out  : out std_logic_vector (n_ag_g * data_width_g -1 downto 0);
109
      we_enc_net_out    : out std_logic_vector (n_ag_g-1 downto 0);
110
      full_net_enc_in   : in  std_logic_vector (n_ag_g-1 downto 0);
111
      empty_net_enc_in  : in  std_logic_vector (n_ag_g-1 downto 0);
112
      data_net_dec_in   : in  std_logic_vector (n_ag_g * data_width_g -1 downto 0);
113
      re_dec_net_out    : out std_logic_vector (n_ag_g-1 downto 0);
114
      full_net_dec_in   : in  std_logic_vector (n_ag_g-1 downto 0);
115
      empty_net_dec_in  : in  std_logic_vector (n_ag_g-1 downto 0);
116
      av_dec_ip_out     : out std_logic_vector (n_ag_g-1 downto 0);
117
      data_dec_ip_out   : out std_logic_vector (n_ag_g * data_width_g -1 downto 0);
118
      re_ip_dec_in      : in  std_logic_vector (n_ag_g-1 downto 0);
119
      empty_dec_ip_out  : out std_logic_vector (n_ag_g-1 downto 0));
120
  end component;
121
 
122
  component mesh_2d
123
    generic (
124
      stfwd_en_g      :     integer;
125
      data_width_g    :     integer;
126
      addr_width_g    :     integer;
127
      fifo_depth_g    :     integer;
128
      pkt_len_g       :     integer;
129
      len_flit_en_g   :     integer;
130
      oaddr_flit_en_g :     integer;
131
      mesh_freq_g     :     integer;
132
      ip_freq_g       :     integer;
133
      rows_g          :     integer;
134
      cols_g          :     integer;
135
      debug_ena_g     :     integer;
136
      debug_width_g   :     integer);
137
    port (
138
      rst_n           : in  std_logic;
139
      clk_mesh        : in  std_logic;
140
      clk_ip          : in  std_logic;
141
      tx_data_in      : in  std_logic_vector(rows_g*cols_g*data_width_g-1 downto 0);
142
      tx_we_in        : in  std_logic_vector(rows_g*cols_g-1 downto 0);
143
      rx_re_in        : in  std_logic_vector(rows_g*cols_g-1 downto 0);
144
      rx_data_out     : out std_logic_vector(rows_g*cols_g*data_width_g-1 downto 0);
145
      rx_empty_out    : out std_logic_vector(rows_g*cols_g-1 downto 0);
146
      rx_full_out     : out std_logic_vector(rows_g*cols_g-1 downto 0);
147
      tx_full_out     : out std_logic_vector(rows_g*cols_g-1 downto 0);
148
      tx_empty_out    : out std_logic_vector(rows_g*cols_g-1 downto 0);
149
      debug_out       : out std_logic_vector(debug_width_g-1 downto 0));
150
  end component;
151
 
152
  signal av_enc_net   : std_logic_vector (n_ag_g-1 downto 0);
153
  signal data_enc_net : std_logic_vector (n_ag_g * data_width_g -1 downto 0);
154
  signal we_enc_net   : std_logic_vector (n_ag_g-1 downto 0);
155
  signal full_net_enc  : std_logic_vector (n_ag_g-1 downto 0);
156
  signal empty_net_enc : std_logic_vector (n_ag_g-1 downto 0);
157
  signal data_net_dec  : std_logic_vector (n_ag_g * data_width_g -1 downto 0);
158
  signal re_dec_net   : std_logic_vector (n_ag_g-1 downto 0);
159
  signal full_net_dec  : std_logic_vector (n_ag_g-1 downto 0);
160
  signal empty_net_dec : std_logic_vector (n_ag_g-1 downto 0);
161
 
162
begin  -- structural
163
 
164
  enc_dec : enc_dec_1d
165
    generic map (
166
      n_ag_g            => n_ag_g,
167
      wait_empty_fifo_g => stfwd_en_g,
168
      data_width_g      => data_width_g,
169
      addr_width_g      => addr_width_g,
170
      packet_length_g   => packet_length_g,
171
      tx_len_width_g    => tx_len_width_g,
172
      timeout_g         => timeout_g,
173
      fill_packet_g     => fill_packet_g,
174
      lut_en_g          => lut_en_g,
175
      net_type_g        => 0,           -- 0 = mesh
176
      len_flit_en_g     => len_flit_en_g,
177
      oaddr_flit_en_g   => oaddr_flit_en_g,
178
      status_en_g       => status_en_g
179
      )
180
    port map (
181
      Clk               => clk_ip,
182
      Rst_n             => rst_n,
183
      av_ip_enc_in      => av_in,
184
      data_ip_enc_in    => data_in,
185
      we_ip_enc_in      => we_in,
186
      len_ip_enc_in     => txlen_in,
187
      full_enc_ip_out   => full_out,
188
      empty_enc_ip_out  => tx_empty_out,
189
      av_enc_net_out    => av_enc_net,
190
      data_enc_net_out  => data_enc_net,
191
      we_enc_net_out    => we_enc_net,
192
      full_net_enc_in   => full_net_enc,
193
      empty_net_enc_in  => empty_net_enc,
194
      data_net_dec_in   => data_net_dec,
195
      re_dec_net_out    => re_dec_net,
196
      full_net_dec_in   => full_net_dec,
197
      empty_net_dec_in  => empty_net_dec,
198
      av_dec_ip_out     => av_out,
199
      data_dec_ip_out   => data_out,
200
      re_ip_dec_in      => re_in,
201
      empty_dec_ip_out  => rx_empty_out
202
      );
203
 
204
  mesh : mesh_2d
205
    generic map (
206
      fifo_depth_g    => fifo_depth_g,
207
      pkt_len_g       => packet_length_g,
208
      stfwd_en_g      => stfwd_en_g,
209
      data_width_g    => data_width_g,
210
      addr_width_g    => addr_width_g,
211
      len_flit_en_g   => len_flit_en_g,
212
      oaddr_flit_en_g => oaddr_flit_en_g,
213
      mesh_freq_g     => mesh_freq_g,
214
      ip_freq_g       => ip_freq_g,
215
      rows_g          => rows_g,
216
      cols_g          => cols_g,
217
      debug_ena_g     => 0,
218
      debug_width_g   => 0
219
      )
220
    port map (
221
      rst_n           => rst_n,
222
      clk_mesh        => clk_net,
223
      clk_ip          => clk_ip,
224
      tx_data_in      => data_enc_net,
225
      tx_we_in        => we_enc_net,
226
      rx_re_in        => re_dec_net,
227
      rx_data_out     => data_net_dec,
228
      rx_empty_out    => empty_net_dec,
229
      rx_full_out     => full_net_dec,
230
      tx_full_out     => full_net_enc,
231
      tx_empty_out    => empty_net_enc,
232
      debug_out       => open);
233
 
234
end structural;

powered by: WebSVN 2.1.0

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