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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.6/] [rtl/] [ibus/] [ibdr_maxisys.vhd] - Blame information for rev 24

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 wfjm
-- $Id: ibdr_maxisys.vhd 427 2011-11-19 21:04:11Z mueller $
2 2 wfjm
--
3 13 wfjm
-- Copyright 2009-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4 2 wfjm
--
5
-- This program is free software; you may redistribute and/or modify it under
6
-- the terms of the GNU General Public License as published by the Free
7
-- Software Foundation, either version 2, or at your option any later version.
8
--
9
-- This program is distributed in the hope that it will be useful, but
10
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
-- for complete details.
13
--
14
------------------------------------------------------------------------------
15
-- Module Name:    ibdr_maxisys - syn
16
-- Description:    ibus(rem) devices for full system
17
--
18
-- Dependencies:   ibd_iist
19
--                 ibd_kw11l
20
--                 ibdr_rk11
21
--                 ibdr_dl11
22
--                 ibdr_pc11
23
--                 ibdr_lp11
24
--                 ibdr_sdreg
25
--                 ib_sres_or_4
26
--                 ib_sres_or_3
27
--                 ib_intmap
28
-- Test bench:     -
29
-- Target Devices: generic
30 13 wfjm
-- Tool versions:  xst 8.2, 9.1, 9.2, 12.1, 13.1; ghdl 0.18-0.29
31 8 wfjm
--
32
-- Synthesized (xst):
33
-- Date         Rev  ise         Target      flop lutl lutm slic t peri
34 9 wfjm
-- 2010-10-17   333 12.1    M53d xc3s1000-4   312 1058   16  617 s 10.3
35
-- 2010-10-17   314 12.1    M53d xc3s1000-4   300 1094   16  626 s 10.4
36 8 wfjm
--
37 2 wfjm
-- Revision History: 
38
-- Date         Rev Version  Comment
39 13 wfjm
-- 2011-11-18   427   1.1.2  now numeric_std clean
40 8 wfjm
-- 2010-10-23   335   1.1.1  rename RRI_LAM->RB_LAM;
41 2 wfjm
-- 2010-06-11   303   1.1    use IB_MREQ.racc instead of RRI_REQ
42
-- 2009-07-12   233   1.0.4  reorder ports; add RESET, CE_USEC to _dl11
43
-- 2009-06-20   227   1.0.3  rename generate labels.
44
-- 2009-06-07   224   1.0.2  add iist_mreq and iist_sres interfaces
45
-- 2009-06-01   221   1.0.1  add CE_USEC; add RESET to kw11l; add _pc11, _iist
46
-- 2009-05-24   219   1.0    Initial version
47
------------------------------------------------------------------------------
48
-- 
49
-- 
50
-- full system setup
51
--
52
-- ibbase  vec  pri  slot attn  sror device name
53
-- 
54
-- 172540  104   ?7 14 17    -  1/1  KW11-P
55
-- 177500  260    6 13 16    -  1/2  IIST
56
-- 177546  100    6 12 15    -  1/3  KW11-L
57
-- 174510  120    5    14    9  1/4  DEUNA
58
-- 176700  254    5    13    6  2/1  RH70/RP06
59
-- 174400  160    5 11 12    5  2/2  RL11
60
-- 177400  220    5 10 11    4  2/3  RK11
61
-- 172520  224    5    10    7  2/4  TM11
62
-- 160100  310?   5  9  9    3  3/1  DZ11-RX
63
--         314?   5  8  8    ^       DZ11-TX
64
-- 177560  060    4  7  7    1  3/2  DL11-RX  1st
65
--         064    4  6  6    ^       DL11-TX  1st
66
-- 176500  300    4  5  5    2  3/3  DL11-RX  2nd
67
--         304    4  4  4    ^       DL11-TX  2nd
68
-- 177550  070    4  3  3   10  4/1  PC11/PTR
69
--         074    4  2  2    ^       PC11/PTP
70
-- 177514  200    4  1  1    8  4/2  LP11
71
-- 177570    -    -     -    -  4/3  sdreg
72
-- 
73
 
74
library ieee;
75
use ieee.std_logic_1164.all;
76 13 wfjm
use ieee.numeric_std.all;
77 2 wfjm
 
78
use work.slvtypes.all;
79
use work.iblib.all;
80
use work.ibdlib.all;
81
 
82
-- ----------------------------------------------------------------------------
83
entity ibdr_maxisys is                  -- ibus(rem) full system
84
  port (
85
    CLK : in slbit;                     -- clock
86
    CE_USEC : in slbit;                 -- usec pulse
87
    CE_MSEC : in slbit;                 -- msec pulse
88
    RESET : in slbit;                   -- reset
89
    BRESET : in slbit;                  -- ibus reset
90 8 wfjm
    RB_LAM : out slv16_1;               -- remote attention vector
91 2 wfjm
    IB_MREQ : in ib_mreq_type;          -- ibus request
92
    IB_SRES : out ib_sres_type;         -- ibus response
93
    EI_ACKM : in slbit;                 -- interrupt acknowledge (from master)
94
    EI_PRI : out slv3;                  -- interrupt priority (to cpu)
95
    EI_VECT : out slv9_2;               -- interrupt vector   (to cpu)
96
    DISPREG : out slv16                 -- display register
97
  );
98
end ibdr_maxisys;
99
 
100
architecture syn of ibdr_maxisys is
101
 
102
  constant conf_intmap : intmap_array_type :=
103
    (intmap_init,                       -- line 15
104
     (8#104#,6),                        -- line 14  KW11-P
105
     (8#260#,6),                        -- line 13  IIST
106
     (8#100#,6),                        -- line 12  KW11-L
107
     (8#160#,5),                        -- line 11  RL11
108
     (8#220#,5),                        -- line 10  RK11
109
     (8#310#,5),                        -- line  9  DZ11-RX
110
     (8#314#,5),                        -- line  8  DZ11-TX
111
     (8#060#,4),                        -- line  7  DL11-RX 1st
112
     (8#064#,4),                        -- line  6  DL11-TX 1st
113
     (8#300#,4),                        -- line  5  DL11-RX 2nd
114
     (8#304#,4),                        -- line  4  DL11-TX 2nd
115
     (8#070#,4),                        -- line  3  PC11-PTR
116
     (8#074#,4),                        -- line  2  PC11-PTP
117
     (8#200#,4),                        -- line  1  LP11
118
     intmap_init                        -- line  0
119
     );
120
 
121 8 wfjm
  signal RB_LAM_DENUA  : slbit := '0';
122
  signal RB_LAM_RP06   : slbit := '0';
123
  signal RB_LAM_RL11   : slbit := '0';
124
  signal RB_LAM_RK11   : slbit := '0';
125
  signal RB_LAM_TM11   : slbit := '0';
126
  signal RB_LAM_DZ11   : slbit := '0';
127
  signal RB_LAM_DL11_0 : slbit := '0';
128
  signal RB_LAM_DL11_1 : slbit := '0';
129
  signal RB_LAM_PC11   : slbit := '0';
130
  signal RB_LAM_LP11   : slbit := '0';
131 2 wfjm
 
132
  signal IB_SRES_IIST   : ib_sres_type := ib_sres_init;
133
  signal IB_SRES_KW11P  : ib_sres_type := ib_sres_init;
134
  signal IB_SRES_KW11L  : ib_sres_type := ib_sres_init;
135
  signal IB_SRES_DEUNA  : ib_sres_type := ib_sres_init;
136
  signal IB_SRES_RP06   : ib_sres_type := ib_sres_init;
137
  signal IB_SRES_RL11   : ib_sres_type := ib_sres_init;
138
  signal IB_SRES_RK11   : ib_sres_type := ib_sres_init;
139
  signal IB_SRES_TM11   : ib_sres_type := ib_sres_init;
140
  signal IB_SRES_DZ11   : ib_sres_type := ib_sres_init;
141
  signal IB_SRES_DL11_0 : ib_sres_type := ib_sres_init;
142
  signal IB_SRES_DL11_1 : ib_sres_type := ib_sres_init;
143
  signal IB_SRES_PC11   : ib_sres_type := ib_sres_init;
144
  signal IB_SRES_LP11   : ib_sres_type := ib_sres_init;
145
  signal IB_SRES_SDREG  : ib_sres_type := ib_sres_init;
146
 
147
  signal IB_SRES_1      : ib_sres_type := ib_sres_init;
148
  signal IB_SRES_2      : ib_sres_type := ib_sres_init;
149
  signal IB_SRES_3      : ib_sres_type := ib_sres_init;
150
  signal IB_SRES_4      : ib_sres_type := ib_sres_init;
151
 
152
  signal EI_REQ  : slv16_1 := (others=>'0');
153
  signal EI_ACK  : slv16_1 := (others=>'0');
154
 
155
  signal EI_REQ_IIST     : slbit := '0';
156
  signal EI_REQ_KW11P    : slbit := '0';
157
  signal EI_REQ_KW11L    : slbit := '0';
158
  signal EI_REQ_DEUNA    : slbit := '0';
159
  signal EI_REQ_RP06     : slbit := '0';
160
  signal EI_REQ_RL11     : slbit := '0';
161
  signal EI_REQ_RK11     : slbit := '0';
162
  signal EI_REQ_TM11     : slbit := '0';
163
  signal EI_REQ_DZ11RX   : slbit := '0';
164
  signal EI_REQ_DZ11TX   : slbit := '0';
165
  signal EI_REQ_DL11RX_0 : slbit := '0';
166
  signal EI_REQ_DL11TX_0 : slbit := '0';
167
  signal EI_REQ_DL11RX_1 : slbit := '0';
168
  signal EI_REQ_DL11TX_1 : slbit := '0';
169
  signal EI_REQ_PC11PTR  : slbit := '0';
170
  signal EI_REQ_PC11PTP  : slbit := '0';
171
  signal EI_REQ_LP11     : slbit := '0';
172
 
173
  signal EI_ACK_IIST     : slbit := '0';
174
  signal EI_ACK_KW11P    : slbit := '0';
175
  signal EI_ACK_KW11L    : slbit := '0';
176
  signal EI_ACK_DEUNA    : slbit := '0';
177
  signal EI_ACK_RP06     : slbit := '0';
178
  signal EI_ACK_RL11     : slbit := '0';
179
  signal EI_ACK_RK11     : slbit := '0';
180
  signal EI_ACK_TM11     : slbit := '0';
181
  signal EI_ACK_DZ11RX   : slbit := '0';
182
  signal EI_ACK_DZ11TX   : slbit := '0';
183
  signal EI_ACK_DL11RX_0 : slbit := '0';
184
  signal EI_ACK_DL11TX_0 : slbit := '0';
185
  signal EI_ACK_DL11RX_1 : slbit := '0';
186
  signal EI_ACK_DL11TX_1 : slbit := '0';
187
  signal EI_ACK_PC11PTR  : slbit := '0';
188
  signal EI_ACK_PC11PTP  : slbit := '0';
189
  signal EI_ACK_LP11     : slbit := '0';
190
 
191
  signal IIST_BUS        : iist_bus_type := iist_bus_init;
192
  signal IIST_OUT_0      : iist_line_type := iist_line_init;
193
  signal IIST_MREQ       : iist_mreq_type := iist_mreq_init;
194
  signal IIST_SRES       : iist_sres_type := iist_sres_init;
195
 
196
begin
197
 
198
  IIST: if true generate
199
  begin
200
    I0 : ibd_iist
201
      port map (
202
        CLK       => CLK,
203
        CE_USEC   => CE_USEC,
204
        RESET     => RESET,
205
        BRESET    => BRESET,
206
        IB_MREQ   => IB_MREQ,
207
        IB_SRES   => IB_SRES_IIST,
208
        EI_REQ    => EI_REQ_IIST,
209
        EI_ACK    => EI_ACK_IIST,
210
        IIST_BUS  => IIST_BUS,
211
        IIST_OUT  => IIST_OUT_0,
212
        IIST_MREQ => IIST_MREQ,
213
        IIST_SRES => IIST_SRES
214
      );
215
 
216
    IIST_BUS(0) <= IIST_OUT_0;
217
    IIST_BUS(1) <= iist_line_init;
218
    IIST_BUS(2) <= iist_line_init;
219
    IIST_BUS(3) <= iist_line_init;
220
 
221
  end generate IIST;
222
 
223
  KW11L : ibd_kw11l
224
    port map (
225
      CLK     => CLK,
226
      CE_MSEC => CE_MSEC,
227
      RESET   => RESET,
228
      BRESET  => BRESET,
229
      IB_MREQ => IB_MREQ,
230
      IB_SRES => IB_SRES_KW11L,
231
      EI_REQ  => EI_REQ_KW11L,
232
      EI_ACK  => EI_ACK_KW11L
233
    );
234
 
235
  RK11: if true generate
236
  begin
237
    I0 : ibdr_rk11
238
      port map (
239
        CLK     => CLK,
240
        CE_MSEC => CE_MSEC,
241
        BRESET  => BRESET,
242 8 wfjm
        RB_LAM  => RB_LAM_RK11,
243 2 wfjm
        IB_MREQ => IB_MREQ,
244
        IB_SRES => IB_SRES_RK11,
245
        EI_REQ  => EI_REQ_RK11,
246
        EI_ACK  => EI_ACK_RK11
247
      );
248
  end generate RK11;
249
 
250
  DL11_0 : ibdr_dl11
251
    port map (
252
      CLK       => CLK,
253
      CE_USEC   => CE_USEC,
254
      RESET     => RESET,
255
      BRESET    => BRESET,
256 8 wfjm
      RB_LAM    => RB_LAM_DL11_0,
257 2 wfjm
      IB_MREQ   => IB_MREQ,
258
      IB_SRES   => IB_SRES_DL11_0,
259
      EI_REQ_RX => EI_REQ_DL11RX_0,
260
      EI_REQ_TX => EI_REQ_DL11TX_0,
261
      EI_ACK_RX => EI_ACK_DL11RX_0,
262
      EI_ACK_TX => EI_ACK_DL11TX_0
263
    );
264
 
265
  DL11_1: if true generate
266
  begin
267
    I0 : ibdr_dl11
268
      generic map (
269 13 wfjm
        IB_ADDR   => slv(to_unsigned(8#176500#,16)))
270 2 wfjm
      port map (
271
        CLK       => CLK,
272
        CE_USEC   => CE_USEC,
273
        RESET     => RESET,
274
        BRESET    => BRESET,
275 8 wfjm
        RB_LAM    => RB_LAM_DL11_1,
276 2 wfjm
        IB_MREQ   => IB_MREQ,
277
        IB_SRES   => IB_SRES_DL11_1,
278
        EI_REQ_RX => EI_REQ_DL11RX_1,
279
        EI_REQ_TX => EI_REQ_DL11TX_1,
280
        EI_ACK_RX => EI_ACK_DL11RX_1,
281
        EI_ACK_TX => EI_ACK_DL11TX_1
282
      );
283
  end generate DL11_1;
284
 
285
  PC11: if true generate
286
  begin
287
    I0 : ibdr_pc11
288
      port map (
289
        CLK        => CLK,
290
        RESET      => RESET,
291
        BRESET     => BRESET,
292 8 wfjm
        RB_LAM     => RB_LAM_PC11,
293 2 wfjm
        IB_MREQ    => IB_MREQ,
294
        IB_SRES    => IB_SRES_PC11,
295
        EI_REQ_PTR => EI_REQ_PC11PTR,
296
        EI_REQ_PTP => EI_REQ_PC11PTP,
297
        EI_ACK_PTR => EI_ACK_PC11PTR,
298
        EI_ACK_PTP => EI_ACK_PC11PTP
299
      );
300
  end generate PC11;
301
 
302
  LP11: if true generate
303
  begin
304
    I0 : ibdr_lp11
305
      port map (
306
        CLK     => CLK,
307
        RESET   => RESET,
308
        BRESET  => BRESET,
309 8 wfjm
        RB_LAM  => RB_LAM_LP11,
310 2 wfjm
        IB_MREQ => IB_MREQ,
311
        IB_SRES => IB_SRES_LP11,
312
        EI_REQ  => EI_REQ_LP11,
313
        EI_ACK  => EI_ACK_LP11
314
      );
315
  end generate LP11;
316
 
317
  SDREG : ibdr_sdreg
318
    port map (
319
      CLK     => CLK,
320
      RESET   => RESET,
321
      IB_MREQ => IB_MREQ,
322
      IB_SRES => IB_SRES_SDREG,
323
      DISPREG => DISPREG
324
    );
325
 
326
  SRES_OR_1 : ib_sres_or_4
327
    port map (
328
      IB_SRES_1  => IB_SRES_KW11P,
329
      IB_SRES_2  => IB_SRES_IIST,
330
      IB_SRES_3  => IB_SRES_KW11L,
331
      IB_SRES_4  => IB_SRES_DEUNA,
332
      IB_SRES_OR => IB_SRES_1
333
    );
334
 
335
  SRES_OR_2 : ib_sres_or_4
336
    port map (
337
      IB_SRES_1  => IB_SRES_RP06,
338
      IB_SRES_2  => IB_SRES_RL11,
339
      IB_SRES_3  => IB_SRES_RK11,
340
      IB_SRES_4  => IB_SRES_TM11,
341
      IB_SRES_OR => IB_SRES_2
342
    );
343
 
344
  SRES_OR_3 : ib_sres_or_3
345
    port map (
346
      IB_SRES_1  => IB_SRES_DZ11,
347
      IB_SRES_2  => IB_SRES_DL11_0,
348
      IB_SRES_3  => IB_SRES_DL11_1,
349
      IB_SRES_OR => IB_SRES_3
350
    );
351
 
352
  SRES_OR_4 : ib_sres_or_3
353
    port map (
354
      IB_SRES_1  => IB_SRES_PC11,
355
      IB_SRES_2  => IB_SRES_LP11,
356
      IB_SRES_3  => IB_SRES_SDREG,
357
      IB_SRES_OR => IB_SRES_4
358
    );
359
 
360
  SRES_OR : ib_sres_or_4
361
    port map (
362
      IB_SRES_1  => IB_SRES_1,
363
      IB_SRES_2  => IB_SRES_2,
364
      IB_SRES_3  => IB_SRES_3,
365
      IB_SRES_4  => IB_SRES_4,
366
      IB_SRES_OR => IB_SRES
367
    );
368
 
369
  INTMAP : ib_intmap
370
    generic map (
371
      INTMAP => conf_intmap)
372
    port map (
373
      EI_REQ  => EI_REQ,
374
      EI_ACKM => EI_ACKM,
375
      EI_ACK  => EI_ACK,
376
      EI_PRI  => EI_PRI,
377
      EI_VECT => EI_VECT
378
    );
379
 
380
  EI_REQ(14) <= EI_REQ_KW11P;
381
  EI_REQ(13) <= EI_REQ_IIST;
382
  EI_REQ(12) <= EI_REQ_KW11L;
383
  EI_REQ(11) <= EI_REQ_RL11;
384
  EI_REQ(10) <= EI_REQ_RK11;
385
  EI_REQ( 9) <= EI_REQ_DZ11RX;
386
  EI_REQ( 8) <= EI_REQ_DZ11TX;
387
  EI_REQ( 7) <= EI_REQ_DL11RX_0;
388
  EI_REQ( 6) <= EI_REQ_DL11TX_0;
389
  EI_REQ( 5) <= EI_REQ_DL11RX_1;
390
  EI_REQ( 4) <= EI_REQ_DL11TX_1;
391
  EI_REQ( 3) <= EI_REQ_PC11PTR;
392
  EI_REQ( 2) <= EI_REQ_PC11PTP;
393
  EI_REQ( 1) <= EI_REQ_LP11;
394
 
395
  EI_ACK_KW11P    <= EI_ACK(14);
396
  EI_ACK_IIST     <= EI_ACK(13);
397
  EI_ACK_KW11L    <= EI_ACK(12);
398
  EI_ACK_RL11     <= EI_ACK(11);
399
  EI_ACK_RK11     <= EI_ACK(10);
400
  EI_ACK_DZ11RX   <= EI_ACK( 9);
401
  EI_ACK_DZ11TX   <= EI_ACK( 8);
402
  EI_ACK_DL11RX_0 <= EI_ACK( 7);
403
  EI_ACK_DL11TX_0 <= EI_ACK( 6);
404
  EI_ACK_DL11RX_1 <= EI_ACK( 5);
405
  EI_ACK_DL11TX_1 <= EI_ACK( 4);
406
  EI_ACK_PC11PTR  <= EI_ACK( 3);
407
  EI_ACK_PC11PTP  <= EI_ACK( 2);
408
  EI_ACK_LP11     <= EI_ACK( 1);
409
 
410 8 wfjm
  RB_LAM(15 downto 11) <= (others=>'0');
411
  RB_LAM(10) <= RB_LAM_PC11;
412
  RB_LAM( 9) <= RB_LAM_DENUA;
413
  RB_LAM( 8) <= RB_LAM_LP11;
414
  RB_LAM( 7) <= RB_LAM_TM11;
415
  RB_LAM( 6) <= RB_LAM_RP06;
416
  RB_LAM( 5) <= RB_LAM_RL11;
417
  RB_LAM( 4) <= RB_LAM_RK11;
418
  RB_LAM( 3) <= RB_LAM_DZ11;
419
  RB_LAM( 2) <= RB_LAM_DL11_1;
420
  RB_LAM( 1) <= RB_LAM_DL11_0;
421 2 wfjm
 
422
end syn;

powered by: WebSVN 2.1.0

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