w11 - vhd 0.794
W11 CPU core and support modules
Loading...
Searching...
No Matches
ibdr_minisys.vhd
Go to the documentation of this file.
1-- $Id: ibdr_minisys.vhd 1181 2019-07-08 17:00:50Z mueller $
2-- SPDX-License-Identifier: GPL-3.0-or-later
3-- Copyright 2008-2019 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4--
5------------------------------------------------------------------------------
6-- Module Name: ibdr_minisys - syn
7-- Description: ibus(rem) devices for minimal system:SDR+KW+DL+RK
8--
9-- Dependencies: ib_rlim_gen
10-- ibdr_sdreg
11-- ibd_kw11l
12-- ibdr_dl11
13-- ibdr_rk11
14-- ib_sres_or_4
15-- ib_intmap
16-- Test bench: -
17-- Target Devices: generic
18-- Tool versions: ise 8.2-14.7; viv 2014.4-2017.2; ghdl 0.18-0.35
19--
20-- Synthesized (xst):
21-- Date Rev ise Target flop lutl lutm slic t peri
22-- 2010-10-17 333 12.1 M53d xc3s1000-4 128 469 16 265 s 7.8
23-- 2010-10-17 314 12.1 M53d xc3s1000-4 122 472 16 269 s 7.6
24--
25-- Revision History:
26-- Date Rev Version Comment
27-- 2019-04-23 1136 1.1.5 add CLK port to ib_intmap
28-- 2019-04-14 1131 1.1.4 ib_rlim_gen has CPUSUSP port; RLIM_CEV now slv8
29-- 2019-04-07 1129 1.1.3 ibdr_dl11: use RLIM_CEV, drop CE_USEC
30-- 2011-11-18 427 1.1.2 now numeric_std clean
31-- 2010-10-23 335 1.1.1 rename RRI_LAM->RB_LAM;
32-- 2010-06-11 303 1.1 use IB_MREQ.racc instead of RRI_REQ
33-- 2009-07-12 233 1.0.7 reorder ports, add CE_USEC; add RESET and CE_USEC
34-- to _dl11
35-- 2009-05-31 221 1.0.6 add RESET to kw11l;
36-- 2009-05-24 219 1.0.5 _rk11 uses now CE_MSEC
37-- 2008-08-22 161 1.0.4 use iblib, ibdlib
38-- 2008-05-09 144 1.0.3 use EI_ACK with _kw11l, _dl11
39-- 2008-04-18 136 1.0.2 add RESET port, use for ibdr_sdreg
40-- 2008-01-20 113 1.0.1 RRI_LAM now vector
41-- 2008-01-20 112 1.0 Initial version
42------------------------------------------------------------------------------
43--
44-- mini system setup
45--
46-- ibbase vec pri slot attn device name
47--
48-- 177546 100 6 4 - KW11-L
49-- 177400 220 5 3 4 RK11
50-- 177560 060 4 2 1 DL11-RX 1st
51-- 064 4 1 ^ DL11-TX 1st
52-- 177570 - - - - sdreg
53--
54
55library ieee;
56use ieee.std_logic_1164.all;
57use ieee.numeric_std.all;
58
59use work.slvtypes.all;
60use work.iblib.all;
61use work.ibdlib.all;
62
63-- ----------------------------------------------------------------------------
64entity ibdr_minisys is -- ibus(rem) minimal sys:SDR+KW+DL+RK
65 port (
66 CLK : in slbit; -- clock
67 CE_USEC : in slbit; -- usec pulse
68 CE_MSEC : in slbit; -- msec pulse
69 RESET : in slbit; -- reset
70 BRESET : in slbit; -- ibus reset
71 RB_LAM : out slv16_1; -- remote attention vector
72 IB_MREQ : in ib_mreq_type; -- ibus request
73 IB_SRES : out ib_sres_type; -- ibus response
74 EI_ACKM : in slbit; -- interrupt acknowledge (from master)
75 EI_PRI : out slv3; -- interrupt priority (to cpu)
76 EI_VECT : out slv9_2; -- interrupt vector (to cpu)
77 DISPREG : out slv16 -- display register
78 );
79end ibdr_minisys;
80
81architecture syn of ibdr_minisys is
82
83 constant conf_intmap : intmap_array_type :=
84 (intmap_init, -- line 15
85 intmap_init, -- line 14
86 intmap_init, -- line 13
87 intmap_init, -- line 12
88 intmap_init, -- line 11
89 intmap_init, -- line 10
90 intmap_init, -- line 9
91 intmap_init, -- line 8
92 intmap_init, -- line 7
93 intmap_init, -- line 6
94 intmap_init, -- line 5
95 (8#100#,6), -- line 4 KW11-L
96 (8#220#,5), -- line 3 RK11
97 (8#060#,4), -- line 2 DL11-RX
98 (8#064#,4), -- line 1 DL11-TX
99 intmap_init -- line 0
100 );
101
102 signal RB_LAM_DL11 : slbit := '0';
103 signal RB_LAM_RK11 : slbit := '0';
104
105 signal IB_SRES_SDREG : ib_sres_type := ib_sres_init;
106 signal IB_SRES_KW11L : ib_sres_type := ib_sres_init;
107 signal IB_SRES_DL11 : ib_sres_type := ib_sres_init;
108 signal IB_SRES_RK11 : ib_sres_type := ib_sres_init;
109
110 signal EI_REQ : slv16_1 := (others=>'0');
111 signal EI_ACK : slv16_1 := (others=>'0');
112
113 signal EI_REQ_KW11L : slbit := '0';
114 signal EI_REQ_DL11RX : slbit := '0';
115 signal EI_REQ_DL11TX : slbit := '0';
116 signal EI_REQ_RK11 : slbit := '0';
117
118 signal EI_ACK_KW11L : slbit := '0';
119 signal EI_ACK_DL11RX : slbit := '0';
120 signal EI_ACK_DL11TX : slbit := '0';
121 signal EI_ACK_RK11 : slbit := '0';
122
123 signal RLIM_CEV : slv8 := (others=>'0');
124
125begin
126
127 RLIM : ib_rlim_gen
128 port map (
129 CLK => CLK,
130 CE_USEC => CE_USEC,
131 RESET => '0',
132 CPUSUSP => '0',
134 );
135
136 SDREG : ibdr_sdreg
137 port map (
138 CLK => CLK,
139 RESET => RESET,
140 IB_MREQ => IB_MREQ,
143 );
144
145 KW11L : ibd_kw11l
146 port map (
147 CLK => CLK,
148 CE_MSEC => CE_MSEC,
149 RESET => RESET,
150 BRESET => BRESET,
151 CPUSUSP => '0',
152 IB_MREQ => IB_MREQ,
156 );
157
158 DL11 : ibdr_dl11
159 port map (
160 CLK => CLK,
161 RESET => RESET,
162 BRESET => BRESET,
165 IB_MREQ => IB_MREQ,
171 );
172
173 RK11 : ibdr_rk11
174 port map (
175 CLK => CLK,
176 CE_MSEC => CE_MSEC,
177 BRESET => BRESET,
179 IB_MREQ => IB_MREQ,
183 );
184
185 SRES_OR : ib_sres_or_4
186 port map (
192 );
193
194 INTMAP : ib_intmap
195 generic map (
197 port map (
198 CLK => CLK,
199 EI_REQ => EI_REQ,
200 EI_ACKM => EI_ACKM,
201 EI_ACK => EI_ACK,
202 EI_PRI => EI_PRI,
204 );
205
206 EI_REQ(4) <= EI_REQ_KW11L;
207 EI_REQ(3) <= EI_REQ_RK11;
208 EI_REQ(2) <= EI_REQ_DL11RX;
209 EI_REQ(1) <= EI_REQ_DL11TX;
210
211 EI_ACK_KW11L <= EI_ACK(4);
212 EI_ACK_RK11 <= EI_ACK(3);
213 EI_ACK_DL11RX <= EI_ACK(2);
214 EI_ACK_DL11TX <= EI_ACK(1);
215
216 RB_LAM(1) <= RB_LAM_DL11;
217 RB_LAM(2) <= '0'; -- for 2nd DL11
218 RB_LAM(3) <= '0'; -- for DZ11
219 RB_LAM(4) <= RB_LAM_RK11;
220 RB_LAM(15 downto 5) <= (others=>'0');
221
222end syn;
out EI_PRI slv3
Definition: ib_intmap.vhd:48
INTMAP intmap_array_type := intmap_array_init
Definition: ib_intmap.vhd:42
out EI_VECT slv9_2
Definition: ib_intmap.vhd:50
in CLK slbit
Definition: ib_intmap.vhd:44
in EI_REQ slv16_1
Definition: ib_intmap.vhd:45
out EI_ACK slv16_1
Definition: ib_intmap.vhd:47
in EI_ACKM slbit
Definition: ib_intmap.vhd:46
in RESET slbit
Definition: ib_rlim_gen.vhd:43
in CE_USEC slbit
Definition: ib_rlim_gen.vhd:42
in CLK slbit
Definition: ib_rlim_gen.vhd:41
in CPUSUSP slbit
Definition: ib_rlim_gen.vhd:44
out RLIM_CEV slv8
Definition: ib_rlim_gen.vhd:46
in IB_SRES_2 ib_sres_type := ib_sres_init
in IB_SRES_3 ib_sres_type := ib_sres_init
out IB_SRES_OR ib_sres_type
in IB_SRES_4 ib_sres_type := ib_sres_init
in IB_SRES_1 ib_sres_type
out EI_REQ slbit
Definition: ibd_kw11l.vhd:52
in RESET slbit
Definition: ibd_kw11l.vhd:47
in BRESET slbit
Definition: ibd_kw11l.vhd:48
in CLK slbit
Definition: ibd_kw11l.vhd:45
in IB_MREQ ib_mreq_type
Definition: ibd_kw11l.vhd:50
in CPUSUSP slbit
Definition: ibd_kw11l.vhd:49
out IB_SRES ib_sres_type
Definition: ibd_kw11l.vhd:51
in EI_ACK slbit
Definition: ibd_kw11l.vhd:54
in CE_MSEC slbit
Definition: ibd_kw11l.vhd:46
in RESET slbit
Definition: ibdr_dl11.vhd:56
in EI_ACK_TX slbit
Definition: ibdr_dl11.vhd:66
in EI_ACK_RX slbit
Definition: ibdr_dl11.vhd:64
in BRESET slbit
Definition: ibdr_dl11.vhd:57
out RB_LAM slbit
Definition: ibdr_dl11.vhd:59
in CLK slbit
Definition: ibdr_dl11.vhd:55
out EI_REQ_RX slbit
Definition: ibdr_dl11.vhd:62
in IB_MREQ ib_mreq_type
Definition: ibdr_dl11.vhd:60
out IB_SRES ib_sres_type
Definition: ibdr_dl11.vhd:61
in RLIM_CEV slv8
Definition: ibdr_dl11.vhd:58
out EI_REQ_TX slbit
Definition: ibdr_dl11.vhd:63
slbit := '0' EI_REQ_DL11RX
slbit := '0' EI_REQ_KW11L
ib_sres_type := ib_sres_init IB_SRES_DL11
ib_sres_type := ib_sres_init IB_SRES_SDREG
slbit := '0' EI_REQ_RK11
slbit := '0' EI_REQ_DL11TX
slbit := '0' RB_LAM_RK11
ib_sres_type := ib_sres_init IB_SRES_KW11L
slbit := '0' EI_ACK_KW11L
slbit := '0' EI_ACK_RK11
slbit := '0' RB_LAM_DL11
slv16_1 :=( others => '0') EI_ACK
ib_sres_type := ib_sres_init IB_SRES_RK11
slv8 :=( others => '0') RLIM_CEV
slv16_1 :=( others => '0') EI_REQ
slbit := '0' EI_ACK_DL11TX
intmap_array_type :=( intmap_init, intmap_init, intmap_init, intmap_init, intmap_init, intmap_init, intmap_init, intmap_init, intmap_init, intmap_init, intmap_init,( 8#100#, 6),( 8#220#, 5),( 8#060#, 4),( 8#064#, 4), intmap_init) conf_intmap
slbit := '0' EI_ACK_DL11RX
in RESET slbit
out DISPREG slv16
in CE_USEC slbit
out EI_PRI slv3
in BRESET slbit
out EI_VECT slv9_2
in CLK slbit
in IB_MREQ ib_mreq_type
out IB_SRES ib_sres_type
in EI_ACKM slbit
out RB_LAM slv16_1
in CE_MSEC slbit
out EI_REQ slbit
Definition: ibdr_rk11.vhd:62
in BRESET slbit
Definition: ibdr_rk11.vhd:58
out RB_LAM slbit
Definition: ibdr_rk11.vhd:59
in CLK slbit
Definition: ibdr_rk11.vhd:56
in IB_MREQ ib_mreq_type
Definition: ibdr_rk11.vhd:60
out IB_SRES ib_sres_type
Definition: ibdr_rk11.vhd:61
in EI_ACK slbit
Definition: ibdr_rk11.vhd:64
in CE_MSEC slbit
Definition: ibdr_rk11.vhd:57
in RESET slbit
Definition: ibdr_sdreg.vhd:45
out DISPREG slv16
Definition: ibdr_sdreg.vhd:49
in CLK slbit
Definition: ibdr_sdreg.vhd:44
in IB_MREQ ib_mreq_type
Definition: ibdr_sdreg.vhd:46
out IB_SRES ib_sres_type
Definition: ibdr_sdreg.vhd:47
Definition: iblib.vhd:33
std_logic_vector( 2 downto 0) slv3
Definition: slvtypes.vhd:35
std_logic_vector( 8 downto 2) slv9_2
Definition: slvtypes.vhd:65
std_logic_vector( 15 downto 1) slv16_1
Definition: slvtypes.vhd:67
std_logic_vector( 15 downto 0) slv16
Definition: slvtypes.vhd:48
std_logic slbit
Definition: slvtypes.vhd:30
std_logic_vector( 7 downto 0) slv8
Definition: slvtypes.vhd:40