OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [perl_gui/] [lib/] [ip/] [Interrupt/] [int_ctrl.IP] - Blame information for rev 48

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 25 alirezamon
#######################################################################
2
##      File: int_ctrl.IP
3
##
4 48 alirezamon
##      Copyright (C) 2014-2019  Alireza Monemi
5 25 alirezamon
##
6 48 alirezamon
##      This file is part of ProNoC 1.9.1
7 25 alirezamon
##
8
##      WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
9 48 alirezamon
##      MAY CAUSE UNEXPECTED BEHAVIOR.
10 25 alirezamon
################################################################################
11
 
12 38 alirezamon
$ipgen = bless( {
13 48 alirezamon
                  'version' => 6,
14
                  'system_h' => '
15
        #define ${IP}_MER       (*((volatile unsigned int *) ($BASE     )))
16
        #define ${IP}_IER       (*((volatile unsigned int *) ($BASE+4   )))
17
        #define         ${IP}_IAR       (*((volatile unsigned int *) ($BASE+8   )))
18
        #define         ${IP}_IPR               (*((volatile unsigned int *) ($BASE+12  )))
19
 
20
        #define ${IP}_INT_NUM   ${INT_NUM}
21
 
22
        struct ihnd {
23
                void (*handler)(void);
24
                void *arg;
25
        };
26
 
27
/* Initialize routine */
28
int general_int_init (void);
29
 
30
/* Add interrupt handler */
31
int general_int_add(unsigned long irq, void (* handler)(), void *arg);
32
 
33
/* Disable interrupt */
34
int general_int_disable (unsigned long irq);
35
 
36
/* Enable interrupt */
37
int general_int_enable(unsigned long irq);
38
 
39
/* Main interrupt handler */
40
void general_int_main();
41
        ',
42
                  'hdl_files' => [
43
                                   '/mpsoc/rtl/src_peripheral/int_ctrl/int_ctrl.v'
44
                                 ],
45 38 alirezamon
                  'ports' => {
46
                               'sa_dat_o' => {
47
                                               'type' => 'output',
48 48 alirezamon
                                               'range' => 'Dw-1       :   0',
49 38 alirezamon
                                               'intfc_port' => 'dat_o',
50 48 alirezamon
                                               'intfc_name' => 'plug:wb_slave[0]'
51 25 alirezamon
                                             },
52 48 alirezamon
                               'sa_dat_i' => {
53
                                               'range' => 'Dw-1       :   0',
54
                                               'intfc_port' => 'dat_i',
55
                                               'type' => 'input',
56
                                               'intfc_name' => 'plug:wb_slave[0]'
57 38 alirezamon
                                             },
58 48 alirezamon
                               'reset' => {
59
                                            'intfc_port' => 'reset_i',
60 38 alirezamon
                                            'range' => '',
61 48 alirezamon
                                            'type' => 'input',
62
                                            'intfc_name' => 'plug:reset[0]'
63 38 alirezamon
                                          },
64 48 alirezamon
                               'sa_sel_i' => {
65
                                               'range' => 'SELw-1     :   0',
66
                                               'intfc_port' => 'sel_i',
67 38 alirezamon
                                               'type' => 'input',
68 48 alirezamon
                                               'intfc_name' => 'plug:wb_slave[0]'
69
                                             },
70
                               'sa_err_o' => {
71 25 alirezamon
                                               'range' => '',
72 48 alirezamon
                                               'intfc_port' => 'err_o',
73 38 alirezamon
                                               'type' => 'output',
74
                                               'intfc_name' => 'plug:wb_slave[0]'
75 25 alirezamon
                                             },
76 48 alirezamon
                               'sa_stb_i' => {
77
                                               'intfc_name' => 'plug:wb_slave[0]',
78 38 alirezamon
                                               'type' => 'input',
79 48 alirezamon
                                               'intfc_port' => 'stb_i',
80
                                               'range' => ''
81 38 alirezamon
                                             },
82
                               'sa_we_i' => {
83
                                              'intfc_name' => 'plug:wb_slave[0]',
84 48 alirezamon
                                              'range' => '',
85 38 alirezamon
                                              'intfc_port' => 'we_i',
86
                                              'type' => 'input'
87
                                            },
88 48 alirezamon
                               'int_o' => {
89 38 alirezamon
                                            'range' => '',
90 48 alirezamon
                                            'intfc_port' => 'int_o',
91
                                            'type' => 'output',
92
                                            'intfc_name' => 'plug:interrupt_cpu[0]'
93 38 alirezamon
                                          },
94 48 alirezamon
                               'sa_ack_o' => {
95 38 alirezamon
                                               'intfc_name' => 'plug:wb_slave[0]',
96 48 alirezamon
                                               'intfc_port' => 'ack_o',
97
                                               'range' => '',
98
                                               'type' => 'output'
99 25 alirezamon
                                             },
100 38 alirezamon
                               'sa_addr_i' => {
101 48 alirezamon
                                                'intfc_name' => 'plug:wb_slave[0]',
102 38 alirezamon
                                                'type' => 'input',
103
                                                'range' => 'Aw-1       :   0',
104
                                                'intfc_port' => 'adr_i'
105
                                              },
106
                               'int_i' => {
107 48 alirezamon
                                            'type' => 'input',
108
                                            'range' => 'INT_NUM-1  :   0',
109 38 alirezamon
                                            'intfc_port' => 'int_i',
110 48 alirezamon
                                            'intfc_name' => 'socket:interrupt_peripheral[array]'
111
                                          },
112
                               'clk' => {
113
                                          'intfc_name' => 'plug:clk[0]',
114
                                          'intfc_port' => 'clk_i',
115
                                          'range' => '',
116
                                          'type' => 'input'
117
                                        },
118
                               'sa_rty_o' => {
119
                                               'intfc_port' => 'rty_o',
120
                                               'type' => 'output',
121
                                               'range' => '',
122
                                               'intfc_name' => 'plug:wb_slave[0]'
123
                                             }
124 38 alirezamon
                             },
125 48 alirezamon
                  'system_c' => '/* Interrupt handlers table */
126
struct ihnd int_handlers[${IP}_INT_NUM ];
127
 
128
/* Initialize routine */
129
int general_int_init (void)
130
{
131
  int i;
132
  for(i = 0; i <${IP}_INT_NUM; i++) {
133
    int_handlers[i].handler = 0;
134
    int_handlers[i].arg = 0;
135
  }
136
  ${IP}_IER=0;
137
  ${IP}_MER=0x3;
138
  return 0;
139
}
140
 
141
 
142
/* Add interrupt handler */
143
int general_int_add(unsigned long irq, void (* handler)(void), void *arg)
144
{
145
  if(irq >= ${IP}_INT_NUM)  return -1;
146
  int_handlers[irq].handler = handler;
147
  int_handlers[irq].arg = arg;
148
  return 0;
149
}
150
 
151
 
152
 
153
/* Disable interrupt */
154
int general_int_disable (unsigned long irq)
155
{
156
  if(irq >=${IP}_INT_NUM)  return -1;
157
  ${IP}_IER &= ~(0x00000001L << irq);
158
  return 0;
159
}
160
 
161
/* Enable interrupt */
162
int general_int_enable(unsigned long irq)
163
{
164
  if(irq >= ${IP}_INT_NUM)     return -1;
165
  ${IP}_IER |= (0x00000001L << irq);
166
  return 0;
167
}
168
 
169
 
170
/* Main interrupt handler */
171
void general_int_main()
172
{
173
        unsigned long i = 0;
174
        unsigned long ipr =${IP}_IPR;
175
        while(i < 32) {
176
                if((ipr  & (0x01L << i)) && (int_handlers[i].handler != 0)) {
177
                        (*int_handlers[i].handler)( );   //(int_handlers[i].arg);
178
                }
179
                i++;
180
        }
181
        ${IP}_IAR = ipr;                // Acknowledge all Interrupts
182
}
183
 
184
',
185
                  'modules' => {
186
                                 'int_ctrl' => {}
187
                               },
188
                  'gui_status' => {
189
                                    'status' => 'ideal',
190
                                    'timeout' => 0
191
                                  },
192
                  'sockets' => {
193
                                 'interrupt_peripheral' => {
194
                                                             'type' => 'param',
195
                                                             '0' => {
196
                                                                      'name' => 'int_periph'
197
                                                                    },
198
                                                             'interrupt_peripheral' => {},
199
                                                             'connection_num' => 'single connection',
200
                                                             'value' => 'INT_NUM'
201
                                                           }
202
                               },
203
                  'description' => 'interrupt controller',
204
                  'ip_name' => 'int_ctrl',
205
                  'module_name' => 'int_ctrl',
206
                  'category' => 'Interrupt',
207
                  'parameters' => {
208
                                    'Dw' => {
209
                                              'content' => '',
210
                                              'default' => '    32',
211
                                              'global_param' => 'Localparam',
212
                                              'type' => 'Fixed',
213
                                              'redefine_param' => 1,
214
                                              'info' => undef
215
                                            },
216
                                    'INT_NUM' => {
217
                                                   'content' => '1,32,1',
218
                                                   'default' => ' 3',
219
                                                   'type' => 'Spin-button',
220
                                                   'global_param' => 'Localparam',
221
                                                   'redefine_param' => 1,
222
                                                   'info' => 'number of  inerrupt.'
223
                                                 },
224
                                    'SELw' => {
225
                                                'content' => '',
226
                                                'default' => ' 4    ',
227
                                                'global_param' => 'Localparam',
228
                                                'type' => 'Fixed',
229
                                                'redefine_param' => 1,
230
                                                'info' => undef
231
                                              },
232
                                    'Aw' => {
233
                                              'content' => '',
234
                                              'info' => undef,
235
                                              'redefine_param' => 1,
236
                                              'type' => 'Fixed',
237
                                              'global_param' => 'Localparam',
238
                                              'default' => ' 3'
239
                                            }
240
                                  },
241
                  'unused' => {
242
                                'plug:wb_slave[0]' => [
243
                                                        'bte_i',
244
                                                        'cti_i',
245
                                                        'tag_i',
246
                                                        'cyc_i'
247
                                                      ]
248
                              },
249
                  'file_name' => 'mpsoc/rtl/src_peripheral/int_ctrl/int_ctrl.v',
250
                  'parameters_order' => [
251
                                          'INT_NUM',
252
                                          'Dw',
253
                                          'Aw',
254
                                          'SELw'
255
                                        ],
256 38 alirezamon
                  'plugs' => {
257
                               'wb_slave' => {
258 48 alirezamon
                                               'wb_slave' => {},
259
                                               'value' => 1,
260
                                               'type' => 'num',
261 38 alirezamon
                                               '0' => {
262
                                                        'addr' => '0x9e00_0000  0x9eff_ffff             IDE Controller',
263 48 alirezamon
                                                        'name' => 'wb',
264
                                                        'width' => 5
265
                                                      }
266 38 alirezamon
                                             },
267
                               'reset' => {
268
                                            'type' => 'num',
269
                                            '0' => {
270
                                                     'name' => 'reset'
271
                                                   },
272 48 alirezamon
                                            'reset' => {},
273
                                            'value' => 1
274 38 alirezamon
                                          },
275
                               'clk' => {
276
                                          'value' => 1,
277
                                          'type' => 'num',
278 48 alirezamon
                                          'clk' => {},
279 38 alirezamon
                                          '0' => {
280
                                                   'name' => 'clk'
281
                                                 }
282
                                        },
283
                               'interrupt_cpu' => {
284
                                                    'value' => 1,
285
                                                    '0' => {
286
                                                             'name' => 'interrupt_cpu'
287 48 alirezamon
                                                           },
288
                                                    'type' => 'num'
289 38 alirezamon
                                                  }
290 48 alirezamon
                             }
291 38 alirezamon
                }, 'ip_gen' );

powered by: WebSVN 2.1.0

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