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

Subversion Repositories nocem

[/] [nocem/] [trunk/] [VHDL/] [simple_pkt_node.vhd] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 schelleg
 
2
-----------------------------------------------------------------------------
3
-- NoCem -- Network on Chip Emulation Tool for System on Chip Research 
4
-- and Implementations
5
-- 
6
-- Copyright (C) 2006  Graham Schelle, Dirk Grunwald
7
-- 
8
-- This program is free software; you can redistribute it and/or
9
-- modify it under the terms of the GNU General Public License
10
-- as published by the Free Software Foundation; either version 2
11
-- of the License, or (at your option) any later version.
12
-- 
13
-- This program is distributed in the hope that it will be useful,
14
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
15
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
-- GNU General Public License for more details.
17
-- 
18
-- You should have received a copy of the GNU General Public License
19
-- along with this program; if not, write to the Free Software
20
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
21
-- 02110-1301, USA.
22
-- 
23
-- The authors can be contacted by email: <schelleg,grunwald>@cs.colorado.edu 
24
-- 
25
-- or by mail: Campus Box 430, Department of Computer Science,
26
-- University of Colorado at Boulder, Boulder, Colorado 80309
27
-------------------------------------------------------------------------------- 
28
 
29
 
30
-- 
31 2 schelleg
-- Filename: simple_pkt_node.vhd
32 4 schelleg
-- 
33 2 schelleg
-- Description: toplevel node for nonVC designs
34 4 schelleg
-- 
35
 
36
 
37
--
38
--
39
--       A node in a packet switched NoC consists of arbitration and switching logic....
40
--
41
--
42
--
43
--
44
 
45
 
46
 
47
library IEEE;
48
use IEEE.STD_LOGIC_1164.ALL;
49
use IEEE.STD_LOGIC_ARITH.ALL;
50
use IEEE.STD_LOGIC_UNSIGNED.ALL;
51
 
52
use work.pkg_nocem.all;
53
 
54
 
55
 
56
 
57
entity simple_pkt_node is
58
 
59
 
60
 
61
    Port (
62
                local_arb_addr : std_logic_vector(NOCEM_AW-1 downto 0);
63
 
64
           n_datain : in data_word;
65
           n_pkt_cntrl_in : in pkt_cntrl_word;
66
 
67
           n_dataout : out data_word;
68
           n_pkt_cntrl_out : out pkt_cntrl_word;
69
 
70
           n_channel_cntrl_in  : in channel_cntrl_word;
71
           n_channel_cntrl_out : out channel_cntrl_word;
72
 
73
 
74
           s_datain : in data_word;
75
           s_pkt_cntrl_in : in pkt_cntrl_word;
76
 
77
           s_dataout : out data_word;
78
           s_pkt_cntrl_out : out pkt_cntrl_word;
79
 
80
           s_channel_cntrl_in  : in channel_cntrl_word;
81
           s_channel_cntrl_out : out channel_cntrl_word;
82
 
83
 
84
           e_datain : in data_word;
85
           e_pkt_cntrl_in : in pkt_cntrl_word;
86
 
87
           e_dataout : out data_word;
88
           e_pkt_cntrl_out : out pkt_cntrl_word;
89
 
90
           e_channel_cntrl_in  : in channel_cntrl_word;
91
           e_channel_cntrl_out : out channel_cntrl_word;
92
 
93
 
94
           w_datain : in data_word;
95
           w_pkt_cntrl_in : in pkt_cntrl_word;
96
 
97
           w_dataout : out data_word;
98
           w_pkt_cntrl_out : out pkt_cntrl_word;
99
 
100
           w_channel_cntrl_in  : in channel_cntrl_word;
101
           w_channel_cntrl_out : out channel_cntrl_word;
102
 
103
           ap_datain : in data_word;
104
           ap_pkt_cntrl_in : in pkt_cntrl_word;
105
 
106
           ap_dataout : out data_word;
107
           ap_pkt_cntrl_out : out pkt_cntrl_word;
108
 
109
           ap_channel_cntrl_in  : in channel_cntrl_word;
110
           ap_channel_cntrl_out : out channel_cntrl_word;
111
 
112
           clk : in std_logic;
113
      rst : in std_logic
114
 
115
                );
116
end simple_pkt_node;
117
 
118
architecture Behavioral of simple_pkt_node is
119
 
120
 
121
                signal arb_grant_output : arb_decision_array(4 downto 0);
122
 
123
                -- the arbiter may be able to write the pkt_cntrl word before it gets
124
                -- muxed out to the output ports, therefore need internal signal
125
                signal n_pkt_cntrl_out_i : pkt_cntrl_word;
126
                signal s_pkt_cntrl_out_i : pkt_cntrl_word;
127
                signal e_pkt_cntrl_out_i : pkt_cntrl_word;
128
           signal w_pkt_cntrl_out_i : pkt_cntrl_word;
129
           signal ap_pkt_cntrl_out_i : pkt_cntrl_word;
130
 
131
begin
132
 
133
 
134
 
135
        I_local_arb : simple_pkt_local_arb PORT MAP(
136
                local_arb_addr => local_arb_addr,
137
                arb_grant_output => arb_grant_output,
138
                n_pkt_cntrl_in => n_pkt_cntrl_in,
139
                n_pkt_cntrl_out => n_pkt_cntrl_out_i,
140
                n_channel_cntrl_in => n_channel_cntrl_in,
141
                n_channel_cntrl_out => n_channel_cntrl_out,
142
                s_pkt_cntrl_in => s_pkt_cntrl_in,
143
                s_pkt_cntrl_out => s_pkt_cntrl_out_i,
144
                s_channel_cntrl_in => s_channel_cntrl_in,
145
                s_channel_cntrl_out => s_channel_cntrl_out,
146
                e_pkt_cntrl_in => e_pkt_cntrl_in,
147
                e_pkt_cntrl_out => e_pkt_cntrl_out_i,
148
                e_channel_cntrl_in => e_channel_cntrl_in,
149
                e_channel_cntrl_out => e_channel_cntrl_out,
150
                w_pkt_cntrl_in => w_pkt_cntrl_in,
151
                w_pkt_cntrl_out => w_pkt_cntrl_out_i,
152
                w_channel_cntrl_in => w_channel_cntrl_in,
153
                w_channel_cntrl_out => w_channel_cntrl_out,
154
                ap_pkt_cntrl_in => ap_pkt_cntrl_in,
155
                ap_pkt_cntrl_out => ap_pkt_cntrl_out_i,
156
                ap_channel_cntrl_in => ap_channel_cntrl_in,
157
                ap_channel_cntrl_out => ap_channel_cntrl_out,
158
                clk => clk,
159
                rst => rst
160
        );
161
 
162
 
163
        I_local_switch : simple_pkt_local_switch PORT MAP(
164
                arb_grant_output => arb_grant_output,
165
                ap_datain => ap_datain,
166
                ap_dataout => ap_dataout,
167
                n_datain => n_datain,
168
                n_dataout => n_dataout,
169
                s_datain => s_datain,
170
                s_dataout => s_dataout,
171
                e_datain => e_datain,
172
                e_dataout => e_dataout,
173
                w_datain => w_datain,
174
                w_dataout => w_dataout,
175
                n_pkt_cntrl_in => n_pkt_cntrl_out_i,
176
                n_pkt_cntrl_out => n_pkt_cntrl_out,
177
                s_pkt_cntrl_in => s_pkt_cntrl_out_i,
178
                s_pkt_cntrl_out => s_pkt_cntrl_out,
179
                e_pkt_cntrl_in => e_pkt_cntrl_out_i,
180
                e_pkt_cntrl_out => e_pkt_cntrl_out,
181
                w_pkt_cntrl_in => w_pkt_cntrl_out_i,
182
                w_pkt_cntrl_out => w_pkt_cntrl_out,
183
                ap_pkt_cntrl_in => ap_pkt_cntrl_out_i,
184
                ap_pkt_cntrl_out => ap_pkt_cntrl_out,
185
                clk => clk,
186
                rst =>  rst
187
        );
188
 
189
 
190
end Behavioral;

powered by: WebSVN 2.1.0

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