w11 - vhd 0.794
W11 CPU core and support modules
Loading...
Searching...
No Matches
ibdr_rk11.vhd
Go to the documentation of this file.
1-- $Id: ibdr_rk11.vhd 1181 2019-07-08 17:00:50Z mueller $
2-- SPDX-License-Identifier: GPL-3.0-or-later
3-- Copyright 2008-2016 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4--
5------------------------------------------------------------------------------
6-- Module Name: ibdr_rk11 - syn
7-- Description: ibus dev(rem): RK11-A/B
8--
9-- Dependencies: ram_1swar_gen
10-- Test bench: -
11-- Target Devices: generic
12-- Tool versions: ise 8.2-14.7; viv 2014.4-2016.1; ghdl 0.18-0.33
13--
14-- Synthesized (xst):
15-- Date Rev ise Target flop lutl lutm slic t peri
16-- 2014-06-08 561 14.7 131013 xc6slx16-2 44 139 9 60 s 5.6
17-- 2010-10-17 333 12.1 M53d xc3s1000-4 46 248 16 137 s 7.2
18-- 2009-06-01 221 10.1.03 K39 xc3s1000-4 46 249 16 148 s 7.1
19-- 2008-01-06 111 8.2.03 I34 xc3s1000-4 36 189 16 111 s 6.0
20--
21-- Revision History:
22-- Date Rev Version Comment
23-- 2016-05-22 767 1.3.1 don't init N_REGS (vivado fix for fsm inference)
24-- 2015-05-01 672 1.3 BUGFIX: interrupt after dreset,seek command start
25-- 2011-11-18 427 1.2.2 now numeric_std clean
26-- 2010-10-23 335 1.2.1 rename RRI_LAM->RB_LAM;
27-- 2010-10-17 333 1.2 use ibus V2 interface
28-- 2010-06-11 303 1.1 use IB_MREQ.racc instead of RRI_REQ
29-- 2009-05-24 219 1.0.9 add CE_MSEC input; inc sector counter every msec
30-- BUGFIX: sector counter now counts 000,...,013.
31-- 2009-05-21 217 1.0.8 cancel pending interrupt requests when IE=0
32-- 2009-05-16 216 1.0.7 BUGFIX: correct interrupt on IE 0->1 logic
33-- BUGFIX: re-work the seek complete handling
34-- 2008-08-22 161 1.0.6 use iblib
35-- 2008-05-30 151 1.0.5 BUGFIX: do control reset locally now, add CRDONE
36-- 2008-03-30 131 1.0.4 issue interrupt when IDE bit set with GO=0
37-- 2008-02-23 118 1.0.3 remove redundant condition in rkda access code
38-- fix bug in control reset logic (we's missing)
39-- 2008-01-20 113 1.0.2 Fix busy handling when control reset done
40-- 2008-01-20 112 1.0.1 Fix scp handling; use BRESET
41-- 2008-01-06 111 1.0 Initial version
42------------------------------------------------------------------------------
43
44library ieee;
45use ieee.std_logic_1164.all;
46use ieee.numeric_std.all;
47
48use work.slvtypes.all;
49use work.memlib.all;
50use work.iblib.all;
51
52-- ----------------------------------------------------------------------------
53entity ibdr_rk11 is -- ibus dev(rem): RK11
54 -- fixed address: 177400
55 port (
56 CLK : in slbit; -- clock
57 CE_MSEC : in slbit; -- msec pulse
58 BRESET : in slbit; -- ibus reset
59 RB_LAM : out slbit; -- remote attention
60 IB_MREQ : in ib_mreq_type; -- ibus request
61 IB_SRES : out ib_sres_type; -- ibus response
62 EI_REQ : out slbit; -- interrupt request
63 EI_ACK : in slbit -- interrupt acknowledge
64 );
65end ibdr_rk11;
66
67architecture syn of ibdr_rk11 is
68
69 constant ibaddr_rk11 : slv16 := slv(to_unsigned(8#177400#,16));
70
71 constant ibaddr_rkds : slv3 := "000"; -- rkds address offset
72 constant ibaddr_rker : slv3 := "001"; -- rker address offset
73 constant ibaddr_rkcs : slv3 := "010"; -- rkcs address offset
74 constant ibaddr_rkwc : slv3 := "011"; -- rkwc address offset
75 constant ibaddr_rkba : slv3 := "100"; -- rkba address offset
76 constant ibaddr_rkda : slv3 := "101"; -- rkda address offset
77 constant ibaddr_rkmr : slv3 := "110"; -- rkmr address offset
78 constant ibaddr_rkdb : slv3 := "111"; -- rkdb address offset
79
80 subtype rkds_ibf_id is integer range 15 downto 13;
81 constant rkds_ibf_adry : integer := 6;
82 constant rkds_ibf_scsa : integer := 4;
83 subtype rkds_ibf_sc is integer range 3 downto 0;
84
85 subtype rker_ibf_he is integer range 15 downto 5;
86 constant rker_ibf_cse : integer := 1;
87 constant rker_ibf_wce : integer := 0;
88
89 constant rkcs_ibf_err : integer := 15;
90 constant rkcs_ibf_he : integer := 14;
91 constant rkcs_ibf_scp : integer := 13;
92 constant rkcs_ibf_maint : integer := 12;
93 constant rkcs_ibf_rdy : integer := 7;
94 constant rkcs_ibf_ide : integer := 6;
95 subtype rkcs_ibf_mex is integer range 5 downto 4;
96 subtype rkcs_ibf_func is integer range 3 downto 1;
97 constant rkcs_ibf_go : integer := 0;
98
99 subtype rkda_ibf_drsel is integer range 15 downto 13;
100
101 subtype rkmr_ibf_rid is integer range 15 downto 13; -- rem id
102 constant rkmr_ibf_crdone: integer := 11; -- contr. reset done
103 constant rkmr_ibf_sbclr : integer := 10; -- clear sbusy's
104 constant rkmr_ibf_creset: integer := 9; -- control reset
105 constant rkmr_ibf_fdone : integer := 8; -- func done
106 subtype rkmr_ibf_sdone is integer range 7 downto 0; -- seek done
107
108 constant func_creset : slv3 := "000"; -- func: control reset
109 constant func_write : slv3 := "001"; -- func: write
110 constant func_read : slv3 := "010"; -- func: read
111 constant func_wchk : slv3 := "011"; -- func: write check
112 constant func_seek : slv3 := "100"; -- func: seek
113 constant func_rchk : slv3 := "101"; -- func: read check
114 constant func_dreset : slv3 := "110"; -- func: drive reset
115 constant func_wlock : slv3 := "111"; -- func: write lock
116
117 type state_type is (
118 s_idle,
119 s_init
120 );
121
122 type regs_type is record -- state registers
123 ibsel : slbit; -- ibus select
124 state : state_type; -- state
125 id : slv3; -- rkds: drive id of search done
126 sc : slv4; -- rkds: sector counter
127 cse : slbit; -- rker: check sum error
128 wce : slbit; -- rker: write check error
129 he : slbit; -- rkcs: hard error
130 scp : slbit; -- rkcs: seek complete
131 maint : slbit; -- rkcs: maintenance mode
132 rdy : slbit; -- rkcs: control ready
133 ide : slbit; -- rkcs: interrupt on done enable
134 drsel : slv3; -- rkda: currently selected drive
135 fireq : slbit; -- func done interrupt request flag
136 sireq : slv8; -- seek done interrupt request flags
137 sbusy : slv8; -- seek busy flags
138 rid : slv3; -- drive id for rem ds reads
139 icnt : slv3; -- init state counter
140 creset : slbit; -- control reset flag
141 crdone : slbit; -- control reset done since last fdone
142 end record regs_type;
143
144 constant regs_init : regs_type := (
145 '0', -- ibsel
146 s_init, -- state
147 (others=>'0'), -- id
148 (others=>'0'), -- sc
149 '0','0', -- cse, wce
150 '0','0','0', -- he, scp, maint
151 '1', -- rdy (SET TO 1)
152 '0', -- ide
153 (others=>'0'), -- drsel
154 '0', -- fireq
155 (others=>'0'), -- sireq
156 (others=>'0'), -- sbusy
157 (others=>'0'), -- rid
158 (others=>'0'), -- icnt
159 '0','1' -- creset, crdone
160 );
161
163 signal N_REGS : regs_type; -- don't init (vivado fix for fsm infer)
164
165 signal MEM_1_WE : slbit := '0';
166 signal MEM_0_WE : slbit := '0';
167 signal MEM_ADDR : slv4 := (others=>'0');
168 signal MEM_DIN : slv16 := (others=>'0');
169 signal MEM_DOUT : slv16 := (others=>'0');
170
171begin
172
173 MEM_1 : ram_1swar_gen
174 generic map (
175 AWIDTH => 4,
176 DWIDTH => 8)
177 port map (
178 CLK => CLK,
179 WE => MEM_1_WE,
180 ADDR => MEM_ADDR,
181 DI => MEM_DIN(ibf_byte1),
182 DO => MEM_DOUT(ibf_byte1));
183
184 MEM_0 : ram_1swar_gen
185 generic map (
186 AWIDTH => 4,
187 DWIDTH => 8)
188 port map (
189 CLK => CLK,
190 WE => MEM_0_WE,
191 ADDR => MEM_ADDR,
192 DI => MEM_DIN(ibf_byte0),
193 DO => MEM_DOUT(ibf_byte0));
194
195 proc_regs: process (CLK)
196 begin
197 if rising_edge(CLK) then
198 if BRESET='1' or R_REGS.creset='1' then
199 R_REGS <= regs_init;
200 if R_REGS.creset = '1' then
201 R_REGS.sbusy <= N_REGS.sbusy;
202 end if;
203 else
204 R_REGS <= N_REGS;
205 end if;
206 end if;
207 end process proc_regs;
208
209 proc_next : process (R_REGS, CE_MSEC, IB_MREQ, MEM_DOUT, EI_ACK)
210 variable r : regs_type := regs_init;
211 variable n : regs_type := regs_init;
212 variable ibhold : slbit := '0';
213 variable icrip : slbit := '0';
214 variable idout : slv16 := (others=>'0');
215 variable ibrem : slbit := '0';
216 variable ibreq : slbit := '0';
217 variable ibrd : slbit := '0';
218 variable ibw0 : slbit := '0';
219 variable ibw1 : slbit := '0';
220 variable ibwrem : slbit := '0';
221 variable ilam : slbit := '0';
222 variable iscval : slbit := '0';
223 variable iscid : slv3 := (others=>'0');
224 variable iei_req : slbit := '0';
225
226 variable imem_we0 : slbit := '0';
227 variable imem_we1 : slbit := '0';
228 variable imem_addr : slv4 := (others=>'0');
229 variable imem_din : slv16 := (others=>'0');
230 begin
231
232 r := R_REGS;
233 n := R_REGS;
234
235 ibhold := '0';
236 icrip := '0';
237 idout := (others=>'0');
238 ibrem := IB_MREQ.racc or r.maint;
239 ibreq := IB_MREQ.re or IB_MREQ.we;
240 ibrd := IB_MREQ.re;
241 ibw0 := IB_MREQ.we and IB_MREQ.be0;
242 ibw1 := IB_MREQ.we and IB_MREQ.be1;
243 ibwrem := IB_MREQ.we and ibrem;
244 ilam := '0';
245 iscval := '0';
246 iscid := (others=>'0');
247 iei_req := '0';
248
249 imem_we0 := '0';
250 imem_we1 := '0';
251 imem_addr := '0' & IB_MREQ.addr(3 downto 1);
252 imem_din := IB_MREQ.din;
253
254 -- ibus address decoder
255 n.ibsel := '0';
256 if IB_MREQ.aval = '1' and
257 IB_MREQ.addr(12 downto 4)=ibaddr_rk11(12 downto 4) then
258 n.ibsel := '1';
259 end if;
260
261 -- internal state machine (for control reset)
262 case r.state is
263 when s_idle =>
264 null;
265
266 when s_init =>
267 ibhold := r.ibsel; -- hold ibus when controller busy
268 icrip := '1';
269 n.icnt := slv(unsigned(r.icnt) + 1);
270 if unsigned(r.icnt) = 7 then
271 n.state := s_idle;
272 end if;
273
274 when others => null;
275 end case;
276
277
278 -- ibus transactions
279
280 if r.ibsel='1' and ibhold='0' then -- selected and not holding
281 idout := MEM_DOUT;
282 imem_we0 := ibw0;
283 imem_we1 := ibw1;
284
285 case IB_MREQ.addr(3 downto 1) is
286
287 when ibaddr_rkds => -- RKDS -- drive status register ----
288 if ibrem = '0' then
289 imem_addr := '1' & r.drsel; -- loc read ds data: drsel as addr.
290 else
291 imem_addr := '1' & r.rid; -- rem read ds data: rid as addr.
292 end if;
293 idout(rkds_ibf_id) := r.id;
294 if ibrem = '0' then -- loc ? simulate drive sector monitor
295 if r.sc = MEM_DOUT(rkds_ibf_sc) then
296 idout(rkds_ibf_scsa) := '1';
297 else
298 idout(rkds_ibf_scsa) := '0';
299 end if;
300 idout(rkds_ibf_sc) := r.sc;
301 end if;
302
303 if r.sbusy(to_integer(unsigned(imem_addr(2 downto 0))))='1' then
304 idout(rkds_ibf_adry) := '0'; -- clear drive access rdy
305 end if;
306
307 if ibwrem = '1' then -- rem write ? than update ds data
308 imem_addr := '1' & IB_MREQ.din(rkds_ibf_id); -- use id field as addr
309 else -- loc write ?
310 imem_we0 := '0'; -- suppress we, is read-only
311 imem_we1 := '0';
312 end if;
313
314 when ibaddr_rker => -- RKER -- error register ------------
315 idout(4 downto 2) := (others=>'0'); -- unassigned bits
316 idout(rker_ibf_cse) := r.cse; -- use state bits (cleared at go !)
317 idout(rker_ibf_wce) := r.wce;
318
319 if ibwrem = '1' then -- rem write ?
320 if unsigned(IB_MREQ.din(rker_ibf_he)) /= 0 then -- hard errors set ?
321 n.he := '1';
322 else
323 n.he := '0';
324 end if;
325 n.cse := IB_MREQ.din(rker_ibf_cse); -- mirror cse bit
326 n.wce := IB_MREQ.din(rker_ibf_wce); -- mirror wce bit
327 else -- loc write ?
328 imem_we0 := '0'; -- suppress we, is read-only
329 imem_we1 := '0';
330 end if;
331
332 when ibaddr_rkcs => -- RKCS -- control status register ---
333 idout(rkcs_ibf_err) := r.he or r.cse or r.wce;
334 idout(rkcs_ibf_he) := r.he;
335 idout(rkcs_ibf_scp) := r.scp;
336 idout(rkcs_ibf_rdy) := r.rdy;
337 idout(rkcs_ibf_go) := not r.rdy;
338
339 if ibw1 = '1' then
340 n.maint := IB_MREQ.din(rkcs_ibf_maint); -- mirror maint bit
341 end if;
342
343 if ibw0 = '1' then
344 n.ide := IB_MREQ.din(rkcs_ibf_ide); -- mirror ide bit
345 if n.ide = '0' then -- if IE set to 0
346 n.fireq := '0'; -- cancel all pending
347 n.sireq := (others=>'0'); -- interrupt requests
348 end if;
349
350 if IB_MREQ.din(rkcs_ibf_go) = '1' then -- GO=1 ?
351 if r.rdy = '1' then -- ready and GO ?
352 n.scp := '0'; -- go clears scp !
353 n.rdy := '0'; -- mark busy
354 n.cse := '0'; -- clear soft errors
355 n.wce := '0';
356 n.fireq := '0'; -- cancel pend. int
357
358 if IB_MREQ.din(rkcs_ibf_func)=func_creset then -- control reset?
359 n.creset := '1'; -- handle locally
360 else
361 ilam := '1'; -- issue lam
362 end if;
363
364 if IB_MREQ.din(rkcs_ibf_func)=func_seek or -- if seek
365 IB_MREQ.din(rkcs_ibf_func)=func_dreset then -- or drive reset
366 n.sbusy(to_integer(unsigned(r.drsel))) := '1'; -- drive busy
367 if n.ide = '1' then -- if enabled
368 n.fireq := '1'; -- interrupt !
369 end if;
370 end if;
371
372 end if;
373 else -- GO=0
374 if r.ide='0' and n.ide='1' and -- if IDE 0->1 transition
375 r.rdy='1' then -- and controller ready
376 n.fireq := '1'; -- issue interrupt
377 end if;
378 end if;
379 end if;
380
381 when ibaddr_rkda => -- RKDA -- disk address register -----
382 if ibrem = '0' then -- loc access ?
383 if r.rdy = '0' then -- controller busy ?
384 imem_we0 := '0'; -- suppress write
385 imem_we1 := '0';
386 end if;
387 end if;
388 if imem_we1 = '1' then
389 n.drsel := IB_MREQ.din(rkda_ibf_drsel); -- mirror drsel bits
390 end if;
391
392 when ibaddr_rkmr => -- RKMR -- maintenance register ------
393 idout := (others=>'0');
394 idout(rkmr_ibf_rid) := r.rid;
395 idout(rkmr_ibf_crdone) := r.crdone;
396 idout(rkmr_ibf_sdone) := r.sbusy;
397 if ibwrem = '1' then -- rem write ?
398 n.rid := IB_MREQ.din(rkmr_ibf_rid);
399
400 if r.ide='1' and IB_MREQ.din(rkmr_ibf_sbclr)='0' then
401 n.sireq := r.sireq or (IB_MREQ.din(rkmr_ibf_sdone) and r.sbusy);
402 end if;
403 n.sbusy := r.sbusy and not IB_MREQ.din(rkmr_ibf_sdone);
404
405 if IB_MREQ.din(rkmr_ibf_fdone) = '1' then -- func completed
406 n.rdy := '1';
407 n.crdone := '0';
408 if r.ide = '1' then
409 n.fireq := '1';
410 end if;
411 end if;
412 if IB_MREQ.din(rkmr_ibf_creset) = '1' then -- control reset
413 n.creset := '1';
414 end if;
415 end if;
416
417 when others => -- all other regs
418 null;
419
420 end case;
421
422 end if;
423
424 iscval := '1';
425 if r.sireq(7) = '1' then iscid := "111";
426 elsif r.sireq(6) = '1' then iscid := "110";
427 elsif r.sireq(5) = '1' then iscid := "101";
428 elsif r.sireq(4) = '1' then iscid := "100";
429 elsif r.sireq(3) = '1' then iscid := "011";
430 elsif r.sireq(2) = '1' then iscid := "010";
431 elsif r.sireq(1) = '1' then iscid := "001";
432 elsif r.sireq(0) = '1' then iscid := "000";
433 else
434 iscval := '0';
435 end if;
436
437 if r.ide = '1' then
438 if r.fireq='1' or iscval='1' then
439 iei_req := '1';
440 end if;
441 end if;
442
443 if EI_ACK = '1' then -- interrupt executed
444 if r.fireq = '1' then
445 n.scp := '0'; -- clear scp flag, is command end
446 n.fireq := '0';
447 elsif iscval = '1' then -- was a seek done
448 n.scp := '1'; -- signal seek complete interrupt
449 n.id := iscid; -- load id
450 n.sireq(to_integer(unsigned(iscid))) := '0'; -- reset sireq bit
451 end if;
452 end if;
453
454 if icrip = '1' then -- control reset in progress ?
455 imem_addr := '0' & r.icnt; -- use icnt as addr
456 imem_din := (others=>'0'); -- force data to zero
457 imem_we0 := '1'; -- enable writes
458 imem_we1 := '1';
459 end if;
460
461 if CE_MSEC = '1' then -- advance sector counter every msec
462 if unsigned(r.sc) = 8#13# then -- sector counter (count to 8#13#)
463 n.sc := (others=>'0');
464 else
465 n.sc := slv(unsigned(r.sc) + 1);
466 end if;
467 end if;
468
469 N_REGS <= n;
470
471 MEM_0_WE <= imem_we0;
472 MEM_1_WE <= imem_we1;
473 MEM_ADDR <= imem_addr;
474 MEM_DIN <= imem_din;
475
476 IB_SRES.dout <= idout;
477 IB_SRES.ack <= r.ibsel and ibreq;
478 IB_SRES.busy <= ibhold and ibreq;
479
480 RB_LAM <= ilam;
481 EI_REQ <= iei_req;
482
483 end process proc_next;
484
485
486end syn;
slv3 := "011" func_wchk
Definition: ibdr_rk11.vhd:111
slv3 := "001" ibaddr_rker
Definition: ibdr_rk11.vhd:72
slv16 :=( others => '0') MEM_DOUT
Definition: ibdr_rk11.vhd:169
integer := 6 rkcs_ibf_ide
Definition: ibdr_rk11.vhd:94
integer := 11 rkmr_ibf_crdone
Definition: ibdr_rk11.vhd:102
integer range 5 downto 4 rkcs_ibf_mex
Definition: ibdr_rk11.vhd:95
slv3 := "111" ibaddr_rkdb
Definition: ibdr_rk11.vhd:78
slv3 := "100" ibaddr_rkba
Definition: ibdr_rk11.vhd:75
integer range 15 downto 13 rkda_ibf_drsel
Definition: ibdr_rk11.vhd:99
slv16 :=( others => '0') MEM_DIN
Definition: ibdr_rk11.vhd:168
integer := 10 rkmr_ibf_sbclr
Definition: ibdr_rk11.vhd:103
integer range 15 downto 5 rker_ibf_he
Definition: ibdr_rk11.vhd:85
slv3 := "100" func_seek
Definition: ibdr_rk11.vhd:112
integer := 4 rkds_ibf_scsa
Definition: ibdr_rk11.vhd:82
regs_type :=( '0', s_init,( others => '0'),( others => '0'), '0', '0', '0', '0', '0', '1', '0',( others => '0'), '0',( others => '0'),( others => '0'),( others => '0'),( others => '0'), '0', '1') regs_init
Definition: ibdr_rk11.vhd:144
integer range 3 downto 0 rkds_ibf_sc
Definition: ibdr_rk11.vhd:83
integer := 0 rkcs_ibf_go
Definition: ibdr_rk11.vhd:97
slv4 :=( others => '0') MEM_ADDR
Definition: ibdr_rk11.vhd:167
integer := 9 rkmr_ibf_creset
Definition: ibdr_rk11.vhd:104
slv3 := "001" func_write
Definition: ibdr_rk11.vhd:109
integer := 1 rker_ibf_cse
Definition: ibdr_rk11.vhd:86
slv3 := "110" func_dreset
Definition: ibdr_rk11.vhd:114
slv3 := "010" ibaddr_rkcs
Definition: ibdr_rk11.vhd:73
slbit := '0' MEM_0_WE
Definition: ibdr_rk11.vhd:166
integer range 7 downto 0 rkmr_ibf_sdone
Definition: ibdr_rk11.vhd:106
slv3 := "011" ibaddr_rkwc
Definition: ibdr_rk11.vhd:74
slv3 := "111" func_wlock
Definition: ibdr_rk11.vhd:115
integer range 15 downto 13 rkmr_ibf_rid
Definition: ibdr_rk11.vhd:101
slv16 := slv( to_unsigned( 8#177400#, 16) ) ibaddr_rk11
Definition: ibdr_rk11.vhd:69
integer := 13 rkcs_ibf_scp
Definition: ibdr_rk11.vhd:91
regs_type := regs_init R_REGS
Definition: ibdr_rk11.vhd:162
integer range 3 downto 1 rkcs_ibf_func
Definition: ibdr_rk11.vhd:96
slv3 := "000" func_creset
Definition: ibdr_rk11.vhd:108
integer := 7 rkcs_ibf_rdy
Definition: ibdr_rk11.vhd:93
slv3 := "010" func_read
Definition: ibdr_rk11.vhd:110
(s_idle,s_init) state_type
Definition: ibdr_rk11.vhd:117
regs_type N_REGS
Definition: ibdr_rk11.vhd:163
integer := 14 rkcs_ibf_he
Definition: ibdr_rk11.vhd:90
integer range 15 downto 13 rkds_ibf_id
Definition: ibdr_rk11.vhd:80
integer := 0 rker_ibf_wce
Definition: ibdr_rk11.vhd:87
integer := 6 rkds_ibf_adry
Definition: ibdr_rk11.vhd:81
slbit := '0' MEM_1_WE
Definition: ibdr_rk11.vhd:165
slv3 := "101" func_rchk
Definition: ibdr_rk11.vhd:113
integer := 12 rkcs_ibf_maint
Definition: ibdr_rk11.vhd:92
slv3 := "101" ibaddr_rkda
Definition: ibdr_rk11.vhd:76
slv3 := "110" ibaddr_rkmr
Definition: ibdr_rk11.vhd:77
integer := 8 rkmr_ibf_fdone
Definition: ibdr_rk11.vhd:105
integer := 15 rkcs_ibf_err
Definition: ibdr_rk11.vhd:89
slv3 := "000" ibaddr_rkds
Definition: ibdr_rk11.vhd:71
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
Definition: iblib.vhd:33
in ADDR slv( AWIDTH- 1 downto 0)
out DO slv( DWIDTH- 1 downto 0)
AWIDTH positive := 4
in DI slv( DWIDTH- 1 downto 0)
in CLK slbit
in WE slbit
DWIDTH positive := 16
std_logic_vector( 3 downto 0) slv4
Definition: slvtypes.vhd:36
std_logic_vector( 2 downto 0) slv3
Definition: slvtypes.vhd:35
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
std_logic_vector slv
Definition: slvtypes.vhd:31