w11 - vhd 0.794
W11 CPU core and support modules
Loading...
Searching...
No Matches
pdp11.vhd
Go to the documentation of this file.
1-- $Id: pdp11.vhd 1349 2023-01-11 14:52:42Z mueller $
2-- SPDX-License-Identifier: GPL-3.0-or-later
3-- Copyright 2006-2023 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4--
5------------------------------------------------------------------------------
6-- Package Name: pdp11
7-- Description: Definitions for pdp11 components
8--
9-- Dependencies: -
10-- Tool versions: ise 8.2-14.7; viv 2016.2-2022.1; ghdl 0.18-2.0.0
11--
12-- Revision History:
13-- Date Rev Version Comment
14-- 2023-01-11 1349 1.5.24 vm_stat_type: add err_ser
15-- 2023-01-08 1348 1.5.23 _tmu,_tmu_sb: add port DM_STAT_SE
16-- 2022-12-27 1339 1.5.22 _sequencer: rm PC port; _dpath: rm PCOUT port
17-- 2022-12-12 1330 1.5.21 dm_stat_se_type: rename vfetch -> vstart;
18-- mmu_moni_type: drop pc,idone, add vstart,vflow
19-- pdp11_mmu_mmr12: add VADDR port
20-- 2022-12-10 1329 1.5.20 add cpustat_type in_vecflow
21-- 2022-12-05 1324 1.5.19 add cpustat_type treq_tbit and resetcnt;
22-- use op_rti rather op_rtt;
23-- 2022-11-29 1323 1.5.18 rename cpuerr_type adderr->oddadr, mmu_mmr0_type
24-- dspace->page_dspace; drop mmu_cntl_type.trap_done
25-- 2022-11-24 1321 1.5.17 add cpustat_type intpend
26-- 2022-11-21 1320 1.6.16 rename some rsv->ser and cpustat_type trap_->treq_;
27-- remove vm_cntl_type.trap_done; add in_vecysv;
28-- 2022-10-25 1309 1.6.15 rename _gpr -> _gr
29-- 2022-10-03 1301 1.6.14 add decode_stat_type.is_dstpcmode1
30-- 2022-08-13 1279 1.6.13 ssr->mmr rename
31-- 2019-06-02 1159 1.6.12 add rbaddr_ constants
32-- 2019-03-01 1116 1.6.11 define c_init_rbf_greset
33-- 2018-10-07 1054 1.6.10 add DM_STAT_EXP; add DM_STAT_SE.itimer
34-- 2018-10-05 1053 1.6.9 drop DM_STAT_SY; add DM_STAT_CA, use in pdp11_cache
35-- add DM_STAT_SE.pcload
36-- 2018-09-29 1051 1.6.8 add pdp11_dmpcnt; add DM_STAT_SE.(cpbusy,idec)
37-- 2017-04-22 884 1.6.7 dm_stat_se: add idle; pdp11_dmcmon: add SNUM generic
38-- 2016-12-26 829 1.6.6 BUGFIX: psw init with pri=0, as on real 11/70
39-- 2015-11-01 712 1.6.5 define sbcntl_sbf_tmu := 12; use for pdp11_tmu_sb
40-- 2015-07-19 702 1.6.4 change DM_STAT_(DP|CO); add DM_STAT_SE
41-- 2015-07-10 700 1.6.3 define c_cpurust_hbpt;
42-- 2015-07-04 697 1.6.2 add pdp11_dm(hbpt|cmon); change DM_STAT_(SY|VM|CO)
43-- 2015-06-26 695 1.6.1 add pdp11_dmscnt (add support)
44-- 2015-05-09 677 1.6 start/stop/suspend overhaul; reset overhaul
45-- 2015-05-01 672 1.5.5 add pdp11_sys70, sys_hio70
46-- 2015-04-30 670 1.5.4 rename pdp11_sys70 -> pdp11_reg70
47-- 2015-02-20 649 1.5.3 add pdp11_statleds
48-- 2015-02-08 644 1.5.2 add pdp11_bram_memctl
49-- 2014-08-28 588 1.5.1 use new rlink v4 iface and 4 bit STAT
50-- 2014-08-15 583 1.5 rb_mreq addr now 16 bit
51-- 2014-08-10: 581 1.4.10 add c_cc_f_* field defs for condition code array
52-- 2014-07-12 569 1.4.9 dpath_stat_type: merge div_zero+div_ovfl to div_quit
53-- dpath_cntl_type: add munit_s_div_sr
54-- 2011-11-18 427 1.4.8 now numeric_std clean
55-- 2010-12-30 351 1.4.7 rename pdp11_core_rri->pdp11_core_rbus; use rblib
56-- 2010-10-23 335 1.4.6 rename RRI_LAM->RB_LAM;
57-- 2010-10-16 332 1.4.5 renames of pdp11_du_drv port names
58-- 2010-09-18 330 1.4.4 rename (adlm)box->(oalm)unit
59-- 2010-06-20 308 1.4.3 add c_ibrb_ibf_ def's
60-- 2010-06-20 307 1.4.2 rename cpacc to cacc in vm_cntl_type, mmu_cntl_type
61-- 2010-06-18 306 1.4.1 add racc, be to cp_addr_type; rm pdp11_ibdr_rri
62-- 2010-06-13 305 1.4 add rnum to cp_cntl_type, cprnum to cpustat_type;
63-- reassign cp command codes and rename: c_cp_func_...
64-- -> c_cpfunc_...; remove cpaddr_(lal|lah|inc) from
65-- dpath_cntl_type; add cpdout_we to dpath_cntl_type;
66-- reassign rbus adresses and rename: c_rb_addr_...
67-- -> c_rbaddr_...; rename rbus fields: c_rb_statf_...
68-- -> c_stat_rbf_...
69-- 2010-06-12 304 1.3.3 add cpuwait to cp_stat_type and cpustat_type
70-- 2010-06-11 303 1.3.2 use IB_MREQ.racc instead of RRI_REQ
71-- 2010-05-02 287 1.3.1 rename RP_STAT->RB_STAT
72-- 2010-05-01 285 1.3 port to rri V2 interface; drop pdp11_rri_2rp;
73-- rename c_rp_addr_* -> c_rb_addr_*
74-- 2010-03-21 270 1.2.6 add pdp11_du_drv
75-- 2009-05-30 220 1.2.5 final removal of snoopers (were already commented)
76-- 2009-05-10 214 1.2.4 add ENA (trace enable) for _tmu; add _pdp11_tmu_sb
77-- 2009-05-09 213 1.2.3 BUGFIX: default for inst_compl now '0'
78-- 2008-12-14 177 1.2.2 add gpr_* fields to DM_STAT_DP
79-- 2008-11-30 174 1.2.1 BUGFIX: add updt_dstadsrc;
80-- 2008-08-22 161 1.2 move slvnn_m subtypes to slvtypes;
81-- move (and rename) intbus defs to iblib package;
82-- move intbus devices to ibdlib package;
83-- rename ubf_ --> ibf_;
84-- 2008-05-09 144 1.1.17 use EI_ACK with _kw11l, _dl11
85-- 2008-05-03 143 1.1.16 rename _cpursta->_cpurust
86-- 2008-04-27 140 1.1.15 add c_cpursta_xxx defs; cpufail->cpursta in cp_stat
87-- 2008-04-25 138 1.1.14 add BRESET port to _mmu, _vmbox, use in _irq
88-- 2008-04-19 137 1.1.13 add _tmu,_sys70 entity, dm_stat_** types and ports
89-- 2008-04-18 136 1.1.12 ibdr_sdreg: use RESET; ibdr_minisys: add RESET
90-- 2008-03-02 121 1.1.11 remove snoopers; add waitsusp in cpustat_type
91-- 2008-02-24 119 1.1.10 add lah,rps,wps commands, cp_addr_type.
92-- _vmbox,_mmu interface changed
93-- 2008-02-17 117 1.1.9 add em_(mreq|sres)_type, pdp11_cache, pdp11_bram
94-- 2008-01-27 115 1.1.8 add pdp11_ubmap, pdp11_mem70
95-- 2008-01-26 114 1.1.7 add c_rp_addr_ibr(b) defs (for ibr addresses)
96-- 2008-01-20 113 1.1.6 _core_rri: use RRI_LAM; _minisys: RRI_LAM vector
97-- 2008-01-20 112 1.1.5 added ibdr_minisys; _ibdr_rri
98-- 2008-01-06 111 1.1.4 rename ibdr_kw11l->ibd_kw11l; add ibdr_(dl11|rk11)
99-- mod pdp11_intmap;
100-- 2008-01-05 110 1.1.3 delete _mmu_regfile; rename _mmu_regs->_mmu_sadr
101-- rename IB_MREQ(ena->req) SRES(sel->ack, hold->busy)
102-- add ibdr_kw11l.
103-- 2008-01-01 109 1.1.2 _vmbox w/ IB_SRES_(CPU|EXT); remove vm_regs_type
104-- 2007-12-30 108 1.1.1 add ibdr_sdreg, ubf_byte[01]
105-- 2007-12-30 107 1.1 use IB_MREQ/IB_SRES interface now; remove DMA port
106-- 2007-08-16 74 1.0.6 add AP_LAM interface to pdp11_core_rri
107-- 2007-08-12 73 1.0.5 add c_rp_addr_xxx and c_rp_statf_xxx def's
108-- 2007-08-10 72 1.0.4 added c_cp_func_xxx constant def's for commands
109-- 2007-07-15 66 1.0.3 rename pdp11_top -> pdp11_core
110-- 2007-07-02 63 1.0.2 reordered ports on pdp11_top (by function, not i/o)
111-- 2007-06-14 56 1.0.1 Use slvtypes.all
112-- 2007-05-12 26 1.0 Initial version
113------------------------------------------------------------------------------
114
115library ieee;
116use ieee.std_logic_1164.all;
117use ieee.numeric_std.all;
118
119use work.slvtypes.all;
120use work.iblib.all;
121use work.rblib.all;
122
123package pdp11 is
124
125 -- default rbus base addresses and offsets
126 constant rbaddr_cpu0_core : slv16 := x"0000"; -- cpu0 core base
127 constant rbaddr_cpu0_ibus : slv16 := x"4000"; -- cpu0 ibus window base
128 constant rbaddr_dmscnt_off : slv16 := x"0040"; -- dmscnt offset
129 constant rbaddr_dmcmon_off : slv16 := x"0048"; -- dmcmon offset
130 constant rbaddr_dmhbpt_off : slv16 := x"0050"; -- dmhbpt offset
131 constant rbaddr_dmpcnt_off : slv16 := x"0060"; -- dmpcnt offset
132
133 type psw_type is record -- processor status
134 cmode : slv2; -- current mode
135 pmode : slv2; -- previous mode
136 rset : slbit; -- register set
137 pri : slv3; -- processor priority
138 tflag : slbit; -- trace flag
139 cc : slv4; -- condition codes (NZVC).
140 end record psw_type;
141
142 constant c_cc_f_n: integer := 3; -- condition code: n
143 constant c_cc_f_z: integer := 2; -- condition code: z
144 constant c_cc_f_v: integer := 1; -- condition code: v
145 constant c_cc_f_c: integer := 0; -- condition code: c
146
147 constant psw_init : psw_type := (
148 "00","00", -- cmode, pmode (=kernel)
149 '0',"000",'0', -- rset, pri (=0), tflag
150 "0000" -- cc NZVC=0
151 );
152
153 constant c_psw_kmode : slv2 := "00"; -- processor mode: kernel
154 constant c_psw_smode : slv2 := "01"; -- processor mode: supervisor
155 constant c_psw_umode : slv2 := "11"; -- processor mode: user
156
157 subtype psw_ibf_cmode is integer range 15 downto 14;
158 subtype psw_ibf_pmode is integer range 13 downto 12;
159 constant psw_ibf_rset: integer := 11;
160 subtype psw_ibf_pri is integer range 7 downto 5;
161 constant psw_ibf_tflag: integer := 4;
162 subtype psw_ibf_cc is integer range 3 downto 0;
163
164 type parpdr_type is record -- combined PAR/PDR MMU status
165 paf : slv16; -- page address field
166 plf : slv7; -- page length field
167 ed : slbit; -- expansion direction
168 acf : slv3; -- access control field
169 end record parpdr_type;
170
171 constant parpdr_init : parpdr_type := (
172 (others=>'0'), -- paf
173 "0000000",'0',"000" -- plf, ed, acf
174 );
175
176 type dpath_cntl_type is record -- data path control
177 gr_asrc : slv3; -- src register address
178 gr_adst : slv3; -- dst register address
179 gr_mode : slv2; -- psw mode for gr access
180 gr_rset : slbit; -- register set
181 gr_we : slbit; -- gr write enable
182 gr_bytop : slbit; -- gr high byte enable
183 gr_pcinc : slbit; -- pc increment enable
184 psr_ccwe : slbit; -- enable update cc
185 psr_we: slbit; -- write enable psw (from DIN)
186 psr_func : slv3; -- write function psw (from DIN)
187 dsrc_sel : slbit; -- src data register source select
188 dsrc_we : slbit; -- src data register write enable
189 ddst_sel : slbit; -- dst data register source select
190 ddst_we : slbit; -- dst data register write enable
191 dtmp_sel : slv2; -- tmp data register source select
192 dtmp_we : slbit; -- tmp data register write enable
193 ounit_asel : slv2; -- ounit a port selector
194 ounit_azero : slbit; -- ounit a port force zero
195 ounit_const : slv9; -- ounit b port const
196 ounit_bsel : slv2; -- ounit b port selector
197 ounit_opsub : slbit; -- ounit operation
198 aunit_srcmod : slv2; -- aunit src port modifier
199 aunit_dstmod : slv2; -- aunit dst port modifier
200 aunit_cimod : slv2; -- aunit ci port modifier
201 aunit_cc1op : slbit; -- aunit use cc modes (1 op instruction)
202 aunit_ccmode : slv3; -- aunit cc port mode
203 aunit_bytop : slbit; -- aunit byte operation
204 lunit_func : slv4; -- lunit function
205 lunit_bytop : slbit; -- lunit byte operation
206 munit_func : slv2; -- munit function
207 munit_s_div : slbit; -- munit s_opg_div state
208 munit_s_div_cn : slbit; -- munit s_opg_div_cn state
209 munit_s_div_cr : slbit; -- munit s_opg_div_cr state
210 munit_s_div_sr : slbit; -- munit s_opg_div_sr state
211 munit_s_ash : slbit; -- munit s_opg_ash state
212 munit_s_ash_cn : slbit; -- munit s_opg_ash_cn state
213 munit_s_ashc : slbit; -- munit s_opg_ashc state
214 munit_s_ashc_cn : slbit; -- munit s_opg_ashc_cn state
215 ireg_we : slbit; -- ireg register write enable
216 cres_sel : slv3; -- result bus (cres) select
217 dres_sel : slv3; -- result bus (dres) select
218 vmaddr_sel : slv2; -- virtual address select
219 cpdout_we : slbit; -- capture dres for cpdout
220 end record dpath_cntl_type;
221
223 "000","000","00",'0','0','0','0', -- gr
224 '0','0',"000", -- psr
225 '0','0','0','0',"00",'0', -- dsrc,..,dtmp
226 "00",'0',"000000000","00",'0', -- ounit
227 "00","00","00",'0',"000",'0', -- aunit
228 "0000",'0', -- lunit
229 "00",'0','0','0','0','0','0','0','0',-- munit
230 '0',"000","000","00",'0' -- rest
231 );
232
233 constant c_dpath_dsrc_src : slbit := '0'; -- DSRC = R(SRC)
234 constant c_dpath_dsrc_res : slbit := '1'; -- DSRC = DRES
235 constant c_dpath_ddst_dst : slbit := '0'; -- DDST = R(DST)
236 constant c_dpath_ddst_res : slbit := '1'; -- DDST = DRES
237
238 constant c_dpath_dtmp_dsrc : slv2 := "00"; -- DTMP = DSRC
239 constant c_dpath_dtmp_psw : slv2 := "01"; -- DTMP = PSW
240 constant c_dpath_dtmp_dres : slv2 := "10"; -- DTMP = DRES
241 constant c_dpath_dtmp_drese : slv2 := "11"; -- DTMP = DRESE
242
243 constant c_dpath_res_ounit : slv3 := "000"; -- D/CRES = OUNIT
244 constant c_dpath_res_aunit : slv3 := "001"; -- D/CRES = AUNIT
245 constant c_dpath_res_lunit : slv3 := "010"; -- D/CRES = LUNIT
246 constant c_dpath_res_munit : slv3 := "011"; -- D/CRES = MUNIT
247 constant c_dpath_res_vmdout : slv3 := "100"; -- D/CRES = VMDOUT
248 constant c_dpath_res_fpdout : slv3 := "101"; -- D/CRES = FPDOUT
249 constant c_dpath_res_ireg : slv3 := "110"; -- D/CRES = IREG
250 constant c_dpath_res_cpdin : slv3 := "111"; -- D/CRES = CPDIN
251
252 constant c_dpath_vmaddr_dsrc : slv2 := "00"; -- VMADDR = DSRC
253 constant c_dpath_vmaddr_ddst : slv2 := "01"; -- VMADDR = DDST
254 constant c_dpath_vmaddr_pc : slv2 := "10"; -- VMADDR = PC
255 constant c_dpath_vmaddr_dtmp : slv2 := "11"; -- VMADDR = DTMP
256
257 type dpath_stat_type is record -- data path status
258 ccout_z : slbit; -- current effective Z cc flag
259 shc_tc : slbit; -- last shc cycle (shc==0)
260 div_cr : slbit; -- division: remainder correction needed
261 div_cq : slbit; -- division: quotient correction needed
262 div_quit : slbit; -- division: abort (0/ or /0 or V=1)
263 end record dpath_stat_type;
264
265 constant dpath_stat_init : dpath_stat_type := (others=>'0');
266
267 type decode_stat_type is record -- decode status
268 is_dstmode0 : slbit; -- dest. is register mode
269 is_srcpc : slbit; -- source is pc
270 is_srcpcmode1 : slbit; -- source is pc and mode=1
271 is_dstpc : slbit; -- dest. is pc
272 is_dstpcmode1 : slbit; -- dest. is pc and mode=1
273 is_dstw_reg : slbit; -- dest. register to be written
274 is_dstw_pc : slbit; -- pc register to be written
275 is_rmwop : slbit; -- read-modify-write operation
276 is_bytop : slbit; -- byte operation
277 is_res : slbit; -- reserved operation code
278 op_rti : slbit; -- RTI instruction
279 op_mov : slbit; -- MOV instruction
280 trap_vec : slv3; -- trap vector addr bits 4:2
281 force_srcsp : slbit; -- force src register to be sp
282 updt_dstadsrc : slbit; -- update dsrc in dsta flow
283 aunit_srcmod : slv2; -- aunit src port modifier
284 aunit_dstmod : slv2; -- aunit dst port modifier
285 aunit_cimod : slv2; -- aunit ci port modifier
286 aunit_cc1op : slbit; -- aunit use cc modes (1 op instruction)
287 aunit_ccmode : slv3; -- aunit cc port mode
288 lunit_func : slv4; -- lunit function
289 munit_func : slv2; -- munit function
290 res_sel : slv3; -- result bus (cres/dres) select
291 fork_op : slv4; -- op fork after idecode state
292 fork_srcr : slv2; -- src-read fork after idecode state
293 fork_dstr : slv2; -- dst-read fork after src read state
294 fork_dsta : slv2; -- dst-addr fork after idecode state
295 fork_opg : slv4; -- opg fork
296 fork_opa : slv3; -- opa fork
297 do_fork_op : slbit; -- execute fork_op
298 do_fork_srcr : slbit; -- execute fork_srcr
299 do_fork_dstr : slbit; -- execute fork_dstr
300 do_fork_dsta : slbit; -- execute fork_dsta
301 do_fork_opg : slbit; -- execute fork_opg
302 do_pref_dec : slbit; -- can do prefetch at decode phase
303 end record decode_stat_type;
304
306 '0','0','0','0','0','0','0','0','0','0', -- is_
307 '0','0',"000",'0','0', -- op_, trap_, force_, updt_
308 "00","00","00",'0',"000", -- aunit_
309 "0000","00","000", -- lunit_, munit_, res_
310 "0000","00","00","00","0000","000", -- fork_
311 '0','0','0','0','0', -- do_fork_
312 '0' -- do_pref_
313 );
314
315 constant c_fork_op_halt : slv4 := "0000";
316 constant c_fork_op_wait : slv4 := "0001";
317 constant c_fork_op_rtti : slv4 := "0010";
318 constant c_fork_op_trap : slv4 := "0011";
319 constant c_fork_op_reset: slv4 := "0100";
320 constant c_fork_op_rts : slv4 := "0101";
321 constant c_fork_op_spl : slv4 := "0110";
322 constant c_fork_op_mcc : slv4 := "0111";
323 constant c_fork_op_br : slv4 := "1000";
324 constant c_fork_op_mark : slv4 := "1001";
325 constant c_fork_op_sob : slv4 := "1010";
326 constant c_fork_op_mtp : slv4 := "1011";
327
328 constant c_fork_srcr_def : slv2:= "00";
329 constant c_fork_srcr_inc : slv2:= "01";
330 constant c_fork_srcr_dec : slv2:= "10";
331 constant c_fork_srcr_ind : slv2:= "11";
332
333 constant c_fork_dstr_def : slv2:= "00";
334 constant c_fork_dstr_inc : slv2:= "01";
335 constant c_fork_dstr_dec : slv2:= "10";
336 constant c_fork_dstr_ind : slv2:= "11";
337
338 constant c_fork_dsta_def : slv2:= "00";
339 constant c_fork_dsta_inc : slv2:= "01";
340 constant c_fork_dsta_dec : slv2:= "10";
341 constant c_fork_dsta_ind : slv2:= "11";
342
343 constant c_fork_opg_gen : slv4 := "0000";
344 constant c_fork_opg_wdef : slv4 := "0001";
345 constant c_fork_opg_winc : slv4 := "0010";
346 constant c_fork_opg_wdec : slv4 := "0011";
347 constant c_fork_opg_wind : slv4 := "0100";
348 constant c_fork_opg_mul : slv4 := "0101";
349 constant c_fork_opg_div : slv4 := "0110";
350 constant c_fork_opg_ash : slv4 := "0111";
351 constant c_fork_opg_ashc : slv4 := "1000";
352
353 constant c_fork_opa_jsr : slv3 := "000";
354 constant c_fork_opa_jmp : slv3 := "001";
355 constant c_fork_opa_mtp : slv3 := "010";
356 constant c_fork_opa_mfp_reg : slv3 := "011";
357 constant c_fork_opa_mfp_mem : slv3 := "100";
358
359 -- Note: MSB=0 are 'normal' states, MSB=1 are fatal errors
360 constant c_cpurust_init : slv4 := "0000"; -- cpu in init state
361 constant c_cpurust_halt : slv4 := "0001"; -- cpu executed HALT
362 constant c_cpurust_reset : slv4 := "0010"; -- cpu was reset
363 constant c_cpurust_stop : slv4 := "0011"; -- cpu was stopped
364 constant c_cpurust_step : slv4 := "0100"; -- cpu was stepped
365 constant c_cpurust_susp : slv4 := "0101"; -- cpu was suspended
366 constant c_cpurust_hbpt : slv4 := "0110"; -- cpu had hardware bpt
367 constant c_cpurust_runs : slv4 := "0111"; -- cpu running
368 constant c_cpurust_vecfet : slv4 := "1000"; -- vector fetch error halt
369 constant c_cpurust_recser : slv4 := "1001"; -- recursive stack error halt
370 constant c_cpurust_sfail : slv4 := "1100"; -- sequencer failure
371 constant c_cpurust_vfail : slv4 := "1101"; -- vmbox failure
372
373 type cpustat_type is record -- CPU status
374 cmdbusy : slbit; -- command busy
375 cmdack : slbit; -- command acknowledge
376 cmderr : slbit; -- command error
377 cmdmerr : slbit; -- command memory access error
378 cpugo : slbit; -- CPU go state
379 cpustep : slbit; -- CPU step flag
380 cpususp : slbit; -- CPU susp flag
381 cpuwait : slbit; -- CPU wait flag
382 cpurust : slv4; -- CPU run status
383 suspint : slbit; -- internal suspend flag
384 suspext : slbit; -- external suspend flag
385 cpfunc : slv5; -- current control port function
386 cprnum : slv3; -- current control port register number
387 waitsusp : slbit; -- WAIT instruction suspended
388 itimer : slbit; -- ITIMER pulse
389 creset : slbit; -- CRESET pulse
390 breset : slbit; -- BRESET pulse
391 intack : slbit; -- INT_ACK pulse
392 intpend : slbit; -- interrupt pending
393 intvect : slv9_2; -- current interrupt vector
394 resetcnt : slv3; -- RESET wait timer counter
395 treq_mmu : slbit; -- mmu trap requested
396 treq_ysv : slbit; -- ysv trap requested
397 treq_tbit : slbit; -- tbit trap requested
398 prefdone : slbit; -- prefetch done
399 do_grwe : slbit; -- pending gr_we
400 in_vecflow : slbit; -- in vector flow
401 in_vecser : slbit; -- in fatal stack error vector flow
402 in_vecysv : slbit; -- in ysv trap flow
403 end record cpustat_type;
404
406 '0','0','0','0', -- cmdbusy,cmdack,cmderr,cmdmerr
407 '0','0','0','0', -- cpugo,cpustep,cpususp,cpuwait
408 c_cpurust_init, -- cpurust
409 '0','0', -- suspint,suspext
410 "00000","000", -- cpfunc, cprnum
411 '0', -- waitsusp
412 '0','0','0','0','0', -- itimer,creset,breset,intack,intpend
413 (others=>'0'),"111", -- intvect,resetcnt
414 '0','0','0','0', -- treq_(mmu|ysv|tbit), prefdone
415 '0','0','0','0' -- do_grwe, in_vec(flow|ser|ysv)
416 );
417
418 type cpuerr_type is record -- CPU error register
419 illhlt : slbit; -- illegal halt (in non-kernel mode)
420 oddadr : slbit; -- odd address error
421 nxm : slbit; -- non-existent memory
422 iobto : slbit; -- I/O bus timeout (non-exist UB)
423 ysv : slbit; -- yellow stack violation
424 rsv : slbit; -- red stack violation
425 end record cpuerr_type;
426
427 constant cpuerr_init : cpuerr_type := (others=>'0');
428
429 type vm_cntl_type is record -- virt memory control port
430 req : slbit; -- request
431 wacc : slbit; -- write access
432 macc : slbit; -- modify access (r-m-w sequence)
433 cacc : slbit; -- console access
434 bytop : slbit; -- byte operation
435 dspace : slbit; -- dspace operation
436 kstack : slbit; -- access through kernel stack
437 vecser : slbit; -- in fatal stack error vector flow
438 mode : slv2; -- mode
439 end record vm_cntl_type;
440
442 '0','0','0','0', -- req, wacc, macc,cacc
443 '0','0','0', -- bytop, dspace, kstack
444 '0',"00" -- vecser, mode
445 );
446
447 type vm_stat_type is record -- virt memory status port
448 ack : slbit; -- acknowledge
449 err : slbit; -- error (see err_xxx for reason)
450 fail : slbit; -- failure (machine check)
451 err_odd : slbit; -- abort: odd address error
452 err_mmu : slbit; -- abort: mmu reject
453 err_nxm : slbit; -- abort: non-existing memory
454 err_iobto : slbit; -- abort: non-existing I/O resource
455 err_rsv : slbit; -- abort: red stack violation
456 err_ser : slbit; -- abort: fatal stack error
457 trap_ysv : slbit; -- trap: yellow stack violation
458 trap_mmu : slbit; -- trap: mmu trap
459 end record vm_stat_type;
460
461 constant vm_stat_init : vm_stat_type := (others=>'0');
462
463 type em_mreq_type is record -- external memory - master request
464 req : slbit; -- request
465 we : slbit; -- write enable
466 be : slv2; -- byte enables
467 cancel : slbit; -- cancel request
468 addr : slv22_1; -- address
469 din : slv16; -- data in (input to memory)
470 end record em_mreq_type;
471
473 '0','0',"00",'0', -- req, we, be, cancel
474 (others=>'0'),(others=>'0') -- addr, din
475 );
476
477 type em_sres_type is record -- external memory - slave response
478 ack_r : slbit; -- acknowledge read
479 ack_w : slbit; -- acknowledge write
480 dout : slv16; -- data out (output from memory)
481 end record em_sres_type;
482
484 '0','0', -- ack_r, ack_w
485 (others=>'0') -- dout
486 );
487
488 type mmu_cntl_type is record -- mmu control port
489 req : slbit; -- translate request
490 wacc : slbit; -- write access
491 macc : slbit; -- modify access (r-m-w sequence)
492 cacc : slbit; -- console access (bypass mmu)
493 dspace : slbit; -- dspace access
494 mode : slv2; -- processor mode
495 end record mmu_cntl_type;
496
498 '0','0','0','0', -- req, wacc, macc, cacc
499 '0',"00" -- dspace, mode
500 );
501
502 type mmu_stat_type is record -- mmu status port
503 vaok : slbit; -- virtual address valid
504 trap : slbit; -- mmu trap request
505 ena_mmu : slbit; -- mmu enable (mmr0 bit 0)
506 ena_22bit : slbit; -- mmu in 22 bit mode (mmr3 bit 4)
507 ena_ubmap : slbit; -- ubmap enable (mmr3 bit 5)
508 end record mmu_stat_type;
509
510 constant mmu_stat_init : mmu_stat_type := (others=>'0');
511
512 type mmu_moni_type is record -- mmu monitor port
513 istart : slbit; -- instruction start
514 vstart : slbit; -- vector start
515 vflow : slbit; -- in vector flow
516 regmod : slbit; -- register modified
517 regnum : slv3; -- register number
518 delta : slv4; -- register offset
519 isdec : slbit; -- offset to be subtracted
520 trace_prev : slbit; -- use mmr12 trace state of prev. state
521 end record mmu_moni_type;
522
524 '0','0','0', -- istart, vstart, vflow
525 '0',"000","0000", -- regmod, regnum, delta
526 '0','0' -- isdec, trace_prev
527 );
528
529 type mmu_mmr0_type is record -- MMU mmr0
530 abo_nonres : slbit; -- abort non resident
531 abo_length : slbit; -- abort page length
532 abo_rdonly : slbit; -- abort read-only
533 trap_mmu : slbit; -- trap management
534 ena_trap : slbit; -- enable traps
535 inst_compl : slbit; -- instruction complete
536 page_mode : slv2; -- page mode
537 page_dspace : slbit; -- page address space (D=1, I=0)
538 page_num : slv3; -- page number
539 ena_mmu : slbit; -- enable memory management
540 trace_prev : slbit; -- mmr12 trace status in prev. state
541 end record mmu_mmr0_type;
542
544 inst_compl=>'0', page_mode=>"00", page_num=>"000",
545 others=>'0'
546 );
547
548 type mmu_mmr1_type is record -- MMU mmr1
549 rb_delta : slv5; -- RB: amount change
550 rb_num : slv3; -- RB: register number
551 ra_delta : slv5; -- RA: amount change
552 ra_num : slv3; -- RA: register number
553 end record mmu_mmr1_type;
554
556 "00000","000", -- rb_...
557 "00000","000" -- ra_...
558 );
559
560 type mmu_mmr3_type is record -- MMU mmr3
561 ena_ubmap : slbit; -- enable unibus mapping
562 ena_22bit : slbit; -- enable 22 bit mapping
563 dspace_km : slbit; -- enable dspace kernel
564 dspace_sm : slbit; -- enable dspace supervisor
565 dspace_um : slbit; -- enable dspace user
566 end record mmu_mmr3_type;
567
568 constant mmu_mmr3_init : mmu_mmr3_type := (others=>'0');
569
570-- control port definitions --------------------------------------------------
571
572 type cp_cntl_type is record -- control port control
573 req : slbit; -- request
574 func : slv5; -- function
575 rnum : slv3; -- register number
576 end record cp_cntl_type;
577
578 constant c_cpfunc_noop : slv5 := "00000"; -- noop : no operation
579 constant c_cpfunc_start : slv5 := "00001"; -- sta : cpu start
580 constant c_cpfunc_stop : slv5 := "00010"; -- sto : cpu stop
581 constant c_cpfunc_step : slv5 := "00011"; -- cont : cpu step
582 constant c_cpfunc_creset : slv5 := "00100"; -- step : cpu cpu reset
583 constant c_cpfunc_breset : slv5 := "00101"; -- rst : cpu bus reset
584 constant c_cpfunc_suspend : slv5 := "00110"; -- rst : cpu suspend
585 constant c_cpfunc_resume : slv5 := "00111"; -- rst : cpu resume
586
587 constant c_cpfunc_rreg : slv5 := "10000"; -- rreg : read register
588 constant c_cpfunc_wreg : slv5 := "10001"; -- wreg : write register
589 constant c_cpfunc_rpsw : slv5 := "10010"; -- rpsw : read psw
590 constant c_cpfunc_wpsw : slv5 := "10011"; -- wpsw : write psw
591 constant c_cpfunc_rmem : slv5 := "10100"; -- rmem : read memory
592 constant c_cpfunc_wmem : slv5 := "10101"; -- wmem : write memory
593
594 constant cp_cntl_init : cp_cntl_type := ('0',c_cpfunc_noop,"000");
595
596 type cp_stat_type is record -- control port status
597 cmdbusy : slbit; -- command busy
598 cmdack : slbit; -- command acknowledge
599 cmderr : slbit; -- command error
600 cmdmerr : slbit; -- command memory access error
601 cpugo : slbit; -- CPU go state
602 cpustep : slbit; -- CPU step flag
603 cpuwait : slbit; -- CPU wait flag
604 cpususp : slbit; -- CPU susp flag
605 cpurust : slv4; -- CPU run status
606 suspint : slbit; -- internal suspend
607 suspext : slbit; -- external suspend
608 end record cp_stat_type;
609
611 '0','0','0','0', -- cmd...
612 '0','0','0','0', -- cpu...
613 (others=>'0'), -- cpurust
614 '0','0' -- susp...
615 );
616
617 type cp_addr_type is record -- control port address
618 addr : slv22_1; -- address
619 racc : slbit; -- ibus remote access
620 be : slv2; -- byte enables
621 ena_22bit : slbit; -- enable 22 bit mode
622 ena_ubmap : slbit; -- enable unibus mapper
623 end record cp_addr_type;
624
626 (others=>'0'), -- addr
627 '0',"00", -- racc, be
628 '0','0' -- ena_...
629 );
630
631-- debug and monitoring port definitions -------------------------------------
632
633 type dm_stat_se_type is record -- debug and monitor status - sequencer
634 idle : slbit; -- sequencer ideling (for pdp11_dcmon)
635 cpbusy : slbit; -- in cp states
636 istart : slbit; -- instruction start
637 idec : slbit; -- instruction decode (for ibd_kw11p)
638 idone : slbit; -- instruction done
639 itimer : slbit; -- instruction timer (for ibdr_rhrp)
640 pcload : slbit; -- PC loaded (flow change)
641 vstart : slbit; -- vector start
642 snum : slv8; -- current state number
643 end record dm_stat_se_type;
644
646 '0','0', -- idle,cpbusy
647 '0','0','0','0', -- istart,idec,idone,itimer
648 '0','0', -- pcload,vstart
649 (others=>'0') -- snum
650 );
651
652 constant c_snum_f_con: integer := 0; -- control state flag
653 constant c_snum_f_ins: integer := 1; -- instruction state flag
654 constant c_snum_f_vec: integer := 2; -- vector state flag
655 constant c_snum_f_err: integer := 3; -- error state flag
656 constant c_snum_f_vmw: integer := 7; -- vm wait flag
657
658 type dm_stat_dp_type is record -- debug and monitor status - dpath
659 pc : slv16; -- pc
660 psw : psw_type; -- psw
661 psr_we: slbit; -- psr_we
662 ireg : slv16; -- ireg
663 ireg_we : slbit; -- ireg we
664 dsrc : slv16; -- dsrc register
665 dsrc_we: slbit; -- dsrc we
666 ddst : slv16; -- ddst register
667 ddst_we : slbit; -- ddst we
668 dtmp : slv16; -- dtmp register
669 dtmp_we : slbit; -- dtmp we
670 dres : slv16; -- dres bus
671 cpdout_we : slbit; -- cpdout we
672 gr_adst : slv3; -- gr dst regsiter
673 gr_mode : slv2; -- gr mode
674 gr_bytop : slbit; -- gr bytop
675 gr_we : slbit; -- gr we
676 end record dm_stat_dp_type;
677
679 (others=>'0'), -- pc
680 psw_init,'0', -- psw,psr_we
681 (others=>'0'),'0', -- ireg,ireg_we
682 (others=>'0'),'0', -- dsrc,dsrc_we
683 (others=>'0'),'0', -- ddst,ddst_we
684 (others=>'0'),'0', -- dtmp,dtmp_we
685 (others=>'0'), -- dres
686 '0', -- cpdout_we
687 (others=>'0'),(others=>'0'), -- gr_adst, gr_mode
688 '0','0' -- gr_bytop, gr_we
689 );
690
691 type dm_stat_vm_type is record -- debug and monitor status - vmbox
692 vmcntl : vm_cntl_type; -- vmbox: control
693 vmaddr : slv16; -- vmbox: address
694 vmdin : slv16; -- vmbox: data in
695 vmstat : vm_stat_type; -- vmbox: status
696 vmdout : slv16; -- vmbox: data out
697 ibmreq : ib_mreq_type; -- ibus: request
698 ibsres : ib_sres_type; -- ibus: response
699 emmreq : em_mreq_type; -- external memory: request
700 emsres : em_sres_type; -- external memory: response
701 end record dm_stat_vm_type;
702
704 vm_cntl_init, -- vmcntl
705 (others=>'0'), -- vmaddr
706 (others=>'0'), -- vmdin
707 vm_stat_init, -- vmstat
708 (others=>'0'), -- vmdout
709 ib_mreq_init, -- ibmreq
710 ib_sres_init, -- ibsres
711 em_mreq_init, -- emmreq
712 em_sres_init -- emsres
713 );
714
715 type dm_stat_co_type is record -- debug and monitor status - core
716 cpugo : slbit; -- cpugo state flag
717 cpustep : slbit; -- cpustep state flag
718 cpususp : slbit; -- cpususp state flag
719 suspint : slbit; -- suspint state flag
720 suspext : slbit; -- suspext state flag
721 end record dm_stat_co_type;
722
724 '0','0','0', -- cpu...
725 '0','0' -- susp...
726 );
727
728 type dm_stat_ca_type is record -- debug and monitor status - cache
729 rd : slbit; -- read request
730 wr : slbit; -- write request
731 rdhit : slbit; -- read hit
732 wrhit : slbit; -- write hit
733 rdmem : slbit; -- read memory
734 wrmem : slbit; -- write memory
735 rdwait : slbit; -- read wait
736 wrwait : slbit; -- write wait
737 end record dm_stat_ca_type;
738
740 '0','0','0','0', -- rd,wr,rdhit,wrhit
741 '0','0','0','0' -- rdmem,wrmem,rdwait,wrwait
742 );
743
744 type dm_stat_exp_type is record -- debug and monitor - sys70 export
745 dp_pc : slv16; -- DM_STAT_DP: pc
746 dp_psw : psw_type; -- DM_STAT_DP: psw
747 dp_dsrc : slv16; -- DM_STAT_DP: dsrc register
748 se_idec : slbit; -- DM_STAT_SE: instruction decode
749 se_itimer : slbit; -- DM_STAT_SE: instruction timer
750 end record dm_stat_exp_type;
751
753 (others=>'0'), -- dp_pc
754 psw_init, -- dp_psw
755 (others=>'0'), -- dp_dsrc
756 '0','0' -- se_idec,se_itimer
757 );
758
759-- rbus interface definitions ------------------------------------------------
760
761 constant c_rbaddr_conf : slv5 := "00000"; -- R/W configuration reg
762 constant c_rbaddr_cntl : slv5 := "00001"; -- -/F control reg
763 constant c_rbaddr_stat : slv5 := "00010"; -- R/- status reg
764 constant c_rbaddr_psw : slv5 := "00011"; -- R/W psw access
765 constant c_rbaddr_al : slv5 := "00100"; -- R/W address low reg
766 constant c_rbaddr_ah : slv5 := "00101"; -- R/W address high reg
767 constant c_rbaddr_mem : slv5 := "00110"; -- R/W memory access
768 constant c_rbaddr_memi : slv5 := "00111"; -- R/W memory access; inc addr
769
770 constant c_rbaddr_r0 : slv5 := "01000"; -- R/W gr 0
771 constant c_rbaddr_r1 : slv5 := "01001"; -- R/W gr 1
772 constant c_rbaddr_r2 : slv5 := "01010"; -- R/W gr 2
773 constant c_rbaddr_r3 : slv5 := "01011"; -- R/W gr 3
774 constant c_rbaddr_r4 : slv5 := "01100"; -- R/W gr 4
775 constant c_rbaddr_r5 : slv5 := "01101"; -- R/W gr 5
776 constant c_rbaddr_sp : slv5 := "01110"; -- R/W gr 6 (sp)
777 constant c_rbaddr_pc : slv5 := "01111"; -- R/W gr 7 (pc)
778
779 constant c_rbaddr_membe: slv5 := "10000"; -- R/W memory write byte enables
780
781 constant c_init_rbf_greset: integer := 0;
782
783 subtype c_al_rbf_addr is integer range 15 downto 1; -- al: address
784 constant c_ah_rbf_ena_ubmap: integer := 7; -- ah: ubmap
785 constant c_ah_rbf_ena_22bit: integer := 6; -- ah: 22bit
786 subtype c_ah_rbf_addr is integer range 5 downto 0; -- ah: address
787
788 constant c_stat_rbf_suspext: integer := 9; -- stat field: suspext
789 constant c_stat_rbf_suspint: integer := 8; -- stat field: suspint
790 subtype c_stat_rbf_cpurust is integer range 7 downto 4; -- cpurust
791 constant c_stat_rbf_cpususp: integer := 3; -- stat field: cpususp
792 constant c_stat_rbf_cpugo: integer := 2; -- stat field: cpugo
793 constant c_stat_rbf_cmdmerr: integer := 1; -- stat field: cmdmerr
794 constant c_stat_rbf_cmderr: integer := 0; -- stat field: cmderr
795
796 subtype c_membe_rbf_be is integer range 1 downto 0; -- membe: be's
797 constant c_membe_rbf_stick: integer := 2; -- membe: sticky flag
798
799-- -------------------------------------
800
801component pdp11_gr is -- general registers
802 port (
803 CLK : in slbit; -- clock
804 DIN : in slv16; -- input data
805 ASRC : in slv3; -- source register number
806 ADST : in slv3; -- destination register number
807 MODE : in slv2; -- processor mode (k=>00,s=>01,u=>11)
808 RSET : in slbit; -- register set
809 WE : in slbit; -- write enable
810 BYTOP : in slbit; -- byte operation (write low byte only)
811 PCINC : in slbit; -- increment PC
812 DSRC : out slv16; -- source register data
813 DDST : out slv16; -- destination register data
814 PC : out slv16 -- current PC value
815 );
816end component;
817
818constant c_gr_r5 : slv3 := "101"; -- register number of r5
819constant c_gr_sp : slv3 := "110"; -- register number of SP
820constant c_gr_pc : slv3 := "111"; -- register number of PC
821
822component pdp11_psr is -- processor status word register
823 port (
824 CLK : in slbit; -- clock
825 CRESET : in slbit; -- cpu reset
826 DIN : in slv16; -- input data
827 CCIN : in slv4; -- cc input
828 CCWE : in slbit; -- enable update cc
829 WE : in slbit; -- write enable (from DIN)
830 FUNC : in slv3; -- write function (from DIN)
831 PSW : out psw_type; -- current psw
832 IB_MREQ : in ib_mreq_type; -- ibus request
833 IB_SRES : out ib_sres_type -- ibus response
834 );
835end component;
836
837constant c_psr_func_wspl : slv3 := "000"; -- SPL mode: set pri
838constant c_psr_func_wcc : slv3 := "001"; -- CC mode: set/clear cc
839constant c_psr_func_wint : slv3 := "010"; -- interupt mode: pmode=cmode
840constant c_psr_func_wrti : slv3 := "011"; -- rti mode: protect modes
841constant c_psr_func_wall : slv3 := "100"; -- write all fields
842
843component pdp11_ounit is -- offset adder for addresses (ounit)
844 port (
845 DSRC : in slv16; -- 'src' data for port A
846 DDST : in slv16; -- 'dst' data for port A
847 DTMP : in slv16; -- 'tmp' data for port A
848 PC : in slv16; -- PC data for port A
849 ASEL : in slv2; -- selector for port A
850 AZERO : in slbit; -- force zero for port A
851 IREG8 : in slv8; -- 'ireg' data for port B
852 VMDOUT : in slv16; -- virt. memory data for port B
853 CONST : in slv9; -- sequencer const data for port B
854 BSEL : in slv2; -- selector for port B
855 OPSUB : in slbit; -- operation: 0 add, 1 sub
856 DOUT : out slv16; -- data output
857 NZOUT : out slv2 -- NZ condition codes out
858 );
859end component;
860
861constant c_ounit_asel_ddst : slv2 := "00"; -- A = DDST
862constant c_ounit_asel_dsrc : slv2 := "01"; -- A = DSRC
863constant c_ounit_asel_pc : slv2 := "10"; -- A = PC
864constant c_ounit_asel_dtmp : slv2 := "11"; -- A = DTMP
865
866constant c_ounit_bsel_const : slv2 := "00"; -- B = CONST
867constant c_ounit_bsel_vmdout : slv2 := "01"; -- B = VMDOUT
868constant c_ounit_bsel_ireg6 : slv2 := "10"; -- B = 2*IREG(6bit)
869constant c_ounit_bsel_ireg8 : slv2 := "11"; -- B = 2*IREG(8bit,sign-extend)
870
871component pdp11_aunit is -- arithmetic unit for data (aunit)
872 port (
873 DSRC : in slv16; -- 'src' data in
874 DDST : in slv16; -- 'dst' data in
875 CI : in slbit; -- carry flag in
876 SRCMOD : in slv2; -- src modifier mode
877 DSTMOD : in slv2; -- dst modifier mode
878 CIMOD : in slv2; -- ci modifier mode
879 CC1OP : in slbit; -- use cc modes (1 op instruction)
880 CCMODE : in slv3; -- cc mode
881 BYTOP : in slbit; -- byte operation
882 DOUT : out slv16; -- data output
883 CCOUT : out slv4 -- condition codes out
884 );
885end component;
886
887constant c_aunit_mod_pass : slv2 := "00"; -- pass data
888constant c_aunit_mod_inv : slv2 := "01"; -- invert data
889constant c_aunit_mod_zero : slv2 := "10"; -- set to 0
890constant c_aunit_mod_one : slv2 := "11"; -- set to 1
891
892-- the c_aunit_ccmode codes follow exactly the opcode format (bit 8:6)
893constant c_aunit_ccmode_clr : slv3 := "000"; -- do clr instruction
894constant c_aunit_ccmode_com : slv3 := "001"; -- do com instruction
895constant c_aunit_ccmode_inc : slv3 := "010"; -- do inc instruction
896constant c_aunit_ccmode_dec : slv3 := "011"; -- do dec instruction
897constant c_aunit_ccmode_neg : slv3 := "100"; -- do neg instruction
898constant c_aunit_ccmode_adc : slv3 := "101"; -- do adc instruction
899constant c_aunit_ccmode_sbc : slv3 := "110"; -- do sbc instruction
900constant c_aunit_ccmode_tst : slv3 := "111"; -- do tst instruction
901
902component pdp11_lunit is -- logic unit for data (lunit)
903 port (
904 DSRC : in slv16; -- 'src' data in
905 DDST : in slv16; -- 'dst' data in
906 CCIN : in slv4; -- condition codes in
907 FUNC : in slv4; -- function
908 BYTOP : in slbit; -- byte operation
909 DOUT : out slv16; -- data output
910 CCOUT : out slv4 -- condition codes out
911 );
912end component;
913
914constant c_lunit_func_asr : slv4 := "0000"; -- ASR/ASRB ??? recheck coding !!
915constant c_lunit_func_asl : slv4 := "0001"; -- ASL/ASLB
916constant c_lunit_func_ror : slv4 := "0010"; -- ROR/RORB
917constant c_lunit_func_rol : slv4 := "0011"; -- ROL/ROLB
918constant c_lunit_func_bis : slv4 := "0100"; -- BIS/BISB
919constant c_lunit_func_bic : slv4 := "0101"; -- BIC/BICB
920constant c_lunit_func_bit : slv4 := "0110"; -- BIT/BITB
921constant c_lunit_func_mov : slv4 := "0111"; -- MOV/MOVB
922constant c_lunit_func_sxt : slv4 := "1000"; -- SXT
923constant c_lunit_func_swap : slv4 := "1001"; -- SWAB
924constant c_lunit_func_xor : slv4 := "1010"; -- XOR
925
926component pdp11_munit is -- mul/div unit for data (munit)
927 port (
928 CLK : in slbit; -- clock
929 DSRC : in slv16; -- 'src' data in
930 DDST : in slv16; -- 'dst' data in
931 DTMP : in slv16; -- 'tmp' data in
932 GR_DSRC : in slv16; -- 'src' data from GR
933 FUNC : in slv2; -- function
934 S_DIV : in slbit; -- s_opg_div state (load dd_low)
935 S_DIV_CN : in slbit; -- s_opg_div_cn state (1st..16th cycle)
936 S_DIV_CR : in slbit; -- s_opg_div_cr state (remainder corr.)
937 S_DIV_SR : in slbit; -- s_opg_div_sr state (store remainder)
938 S_ASH : in slbit; -- s_opg_ash state
939 S_ASH_CN : in slbit; -- s_opg_ash_cn state
940 S_ASHC : in slbit; -- s_opg_ashc state
941 S_ASHC_CN : in slbit; -- s_opg_ashc_cn state
942 SHC_TC : out slbit; -- last shc cycle (shc==0)
943 DIV_CR : out slbit; -- division: remainder correction needed
944 DIV_CQ : out slbit; -- division: quotient correction needed
945 DIV_QUIT : out slbit; -- division: abort (0/ or /0 or V=1)
946 DOUT : out slv16; -- data output
947 DOUTE : out slv16; -- data output extra
948 CCOUT : out slv4 -- condition codes out
949 );
950end component;
951
952constant c_munit_func_mul : slv2 := "00"; -- MUL
953constant c_munit_func_div : slv2 := "01"; -- DIV
954constant c_munit_func_ash : slv2 := "10"; -- ASH
955constant c_munit_func_ashc : slv2 := "11"; -- ASHC
956
957component pdp11_mmu_padr is -- mmu PAR/PDR register set
958 port (
959 CLK : in slbit; -- clock
960 MODE : in slv2; -- mode
961 APN : in slv4; -- augmented page number (1+3 bit)
962 AIB_WE : in slbit; -- update AIB
963 AIB_SETA : in slbit; -- set access AIB
964 AIB_SETW : in slbit; -- set write AIB
965 PARPDR : out parpdr_type; -- combined PAR/PDR
966 IB_MREQ : in ib_mreq_type; -- ibus request
967 IB_SRES : out ib_sres_type -- ibus response
968 );
969end component;
970
971component pdp11_mmu_mmr12 is -- mmu register mmr1 and mmr2
972 port (
973 CLK : in slbit; -- clock
974 CRESET : in slbit; -- cpu reset
975 TRACE : in slbit; -- trace enable
976 MONI : in mmu_moni_type; -- MMU monitor port data
977 VADDR : in slv16; -- virtual address
978 IB_MREQ : in ib_mreq_type; -- ibus request
979 IB_SRES : out ib_sres_type -- ibus response
980 );
981end component;
982
983component pdp11_mmu is -- mmu - memory management unit
984 port (
985 CLK : in slbit; -- clock
986 CRESET : in slbit; -- cpu reset
987 BRESET : in slbit; -- bus reset
988 CNTL : in mmu_cntl_type; -- control port
989 VADDR : in slv16; -- virtual address
990 MONI : in mmu_moni_type; -- monitor port
991 STAT : out mmu_stat_type; -- status port
992 PADDRH : out slv16; -- physical address (upper 16 bit)
993 IB_MREQ : in ib_mreq_type; -- ibus request
994 IB_SRES : out ib_sres_type -- ibus response
995 );
996end component;
997
998component pdp11_vmbox is -- virtual memory
999 port (
1000 CLK : in slbit; -- clock
1001 GRESET : in slbit; -- general reset
1002 CRESET : in slbit; -- cpu reset
1003 BRESET : in slbit; -- bus reset
1004 CP_ADDR : in cp_addr_type; -- console port address
1005 VM_CNTL : in vm_cntl_type; -- vm control port
1006 VM_ADDR : in slv16; -- vm address
1007 VM_DIN : in slv16; -- vm data in
1008 VM_STAT : out vm_stat_type; -- vm status port
1009 VM_DOUT : out slv16; -- vm data out
1010 EM_MREQ : out em_mreq_type; -- external memory: request
1011 EM_SRES : in em_sres_type; -- external memory: response
1012 MMU_MONI : in mmu_moni_type; -- mmu monitor port
1013 IB_MREQ_M : out ib_mreq_type; -- ibus request (master)
1014 IB_SRES_CPU : in ib_sres_type; -- ibus response (CPU registers)
1015 IB_SRES_EXT : in ib_sres_type; -- ibus response (external devices)
1016 DM_STAT_VM : out dm_stat_vm_type -- debug and monitor status
1017 );
1018end component;
1019
1020component pdp11_dpath is -- CPU datapath
1021 port (
1022 CLK : in slbit; -- clock
1023 CRESET : in slbit; -- cpu reset
1024 CNTL : in dpath_cntl_type; -- control interface
1025 STAT : out dpath_stat_type; -- status interface
1026 CP_DIN : in slv16; -- console port data in
1027 CP_DOUT : out slv16; -- console port data out
1028 PSWOUT : out psw_type; -- current psw
1029 IREG : out slv16; -- ireg out
1030 VM_ADDR : out slv16; -- virt. memory address
1031 VM_DOUT : in slv16; -- virt. memory data out
1032 VM_DIN : out slv16; -- virt. memory data in
1033 IB_MREQ : in ib_mreq_type; -- ibus request
1034 IB_SRES : out ib_sres_type; -- ibus response
1035 DM_STAT_DP : out dm_stat_dp_type -- debug and monitor status - dpath
1036 );
1037end component;
1038
1039component pdp11_decode is -- instruction decoder
1040 port (
1041 IREG : in slv16; -- input instruction word
1042 STAT : out decode_stat_type -- status output
1043 );
1044end component;
1045
1046component pdp11_sequencer is -- cpu sequencer
1047 port (
1048 CLK : in slbit; -- clock
1049 GRESET : in slbit; -- general reset
1050 PSW : in psw_type; -- processor status
1051 IREG : in slv16; -- IREG
1052 ID_STAT : in decode_stat_type; -- instr. decoder status
1053 DP_STAT : in dpath_stat_type; -- data path status
1054 CP_CNTL : in cp_cntl_type; -- console port control
1055 VM_STAT : in vm_stat_type; -- virtual memory status port
1056 INT_PRI : in slv3; -- interrupt priority
1057 INT_VECT : in slv9_2; -- interrupt vector
1058 INT_ACK : out slbit; -- interrupt acknowledge
1059 CRESET : out slbit; -- cpu reset
1060 BRESET : out slbit; -- bus reset
1061 MMU_MONI : out mmu_moni_type; -- mmu monitor port
1062 DP_CNTL : out dpath_cntl_type; -- data path control
1063 VM_CNTL : out vm_cntl_type; -- virtual memory control port
1064 CP_STAT : out cp_stat_type; -- console port status
1065 ESUSP_O : out slbit; -- external suspend output
1066 ESUSP_I : in slbit; -- external suspend input
1067 HBPT : in slbit; -- hardware bpt
1068 IB_MREQ : in ib_mreq_type; -- ibus request
1069 IB_SRES : out ib_sres_type; -- ibus response
1070 DM_STAT_SE : out dm_stat_se_type -- debug and monitor status - sequencer
1071 );
1072end component;
1073
1074component pdp11_irq is -- interrupt requester
1075 port (
1076 CLK : in slbit; -- clock
1077 BRESET : in slbit; -- bus reset
1078 INT_ACK : in slbit; -- interrupt acknowledge from CPU
1079 EI_PRI : in slv3; -- external interrupt priority
1080 EI_VECT : in slv9_2; -- external interrupt vector
1081 EI_ACKM : out slbit; -- external interrupt acknowledge
1082 PRI : out slv3; -- interrupt priority
1083 VECT : out slv9_2; -- interrupt vector
1084 IB_MREQ : in ib_mreq_type; -- ibus request
1085 IB_SRES : out ib_sres_type -- ibus response
1086 );
1087end component;
1088
1089component pdp11_ubmap is -- 11/70 unibus mapper
1090 port (
1091 CLK : in slbit; -- clock
1092 MREQ : in slbit; -- request mapping
1093 ADDR_UB : in slv18_1; -- UNIBUS address (in)
1094 ADDR_PM : out slv22_1; -- physical memory address (out)
1095 IB_MREQ : in ib_mreq_type; -- ibus request
1096 IB_SRES : out ib_sres_type -- ibus response
1097 );
1098end component;
1099
1100component pdp11_reg70 is -- 11/70 memory system registers
1101 port (
1102 CLK : in slbit; -- clock
1103 CRESET : in slbit; -- cpu reset
1104 IB_MREQ : in ib_mreq_type; -- ibus request
1105 IB_SRES : out ib_sres_type -- ibus response
1106 );
1107end component;
1108
1109component pdp11_mem70 is -- 11/70 memory system registers
1110 port (
1111 CLK : in slbit; -- clock
1112 CRESET : in slbit; -- cpu reset
1113 HM_ENA : in slbit; -- hit/miss enable
1114 HM_VAL : in slbit; -- hit/miss value
1115 CACHE_FMISS : out slbit; -- cache force miss
1116 IB_MREQ : in ib_mreq_type; -- ibus request
1117 IB_SRES : out ib_sres_type -- ibus response
1118 );
1119end component;
1120
1121component pdp11_cache is -- cache
1122 generic (
1123 TWIDTH : positive := 9); -- tag width (5 to 9)
1124 port (
1125 CLK : in slbit; -- clock
1126 GRESET : in slbit; -- general reset
1127 EM_MREQ : in em_mreq_type; -- em request
1128 EM_SRES : out em_sres_type; -- em response
1129 FMISS : in slbit; -- force miss
1130 MEM_REQ : out slbit; -- memory: request
1131 MEM_WE : out slbit; -- memory: write enable
1132 MEM_BUSY : in slbit; -- memory: controller busy
1133 MEM_ACK_R : in slbit; -- memory: acknowledge read
1134 MEM_ADDR : out slv20; -- memory: address
1135 MEM_BE : out slv4; -- memory: byte enable
1136 MEM_DI : out slv32; -- memory: data in (memory view)
1137 MEM_DO : in slv32; -- memory: data out (memory view)
1138 DM_STAT_CA : out dm_stat_ca_type -- debug and monitor status - cache
1139 );
1140end component;
1141
1142component pdp11_core is -- full processor core
1143 port (
1144 CLK : in slbit; -- clock
1145 RESET : in slbit; -- reset
1146 CP_CNTL : in cp_cntl_type; -- console control port
1147 CP_ADDR : in cp_addr_type; -- console address port
1148 CP_DIN : in slv16; -- console data in
1149 CP_STAT : out cp_stat_type; -- console status port
1150 CP_DOUT : out slv16; -- console data out
1151 ESUSP_O : out slbit; -- external suspend output
1152 ESUSP_I : in slbit; -- external suspend input
1153 HBPT : in slbit; -- hardware bpt
1154 EI_PRI : in slv3; -- external interrupt priority
1155 EI_VECT : in slv9_2; -- external interrupt vector
1156 EI_ACKM : out slbit; -- external interrupt acknowledge
1157 EM_MREQ : out em_mreq_type; -- external memory: request
1158 EM_SRES : in em_sres_type; -- external memory: response
1159 CRESET : out slbit; -- cpu reset
1160 BRESET : out slbit; -- bus reset
1161 IB_MREQ_M : out ib_mreq_type; -- ibus master request (master)
1162 IB_SRES_M : in ib_sres_type; -- ibus slave response (master)
1163 DM_STAT_SE : out dm_stat_se_type; -- debug and monitor status - sequencer
1164 DM_STAT_DP : out dm_stat_dp_type; -- debug and monitor status - dpath
1165 DM_STAT_VM : out dm_stat_vm_type; -- debug and monitor status - vmbox
1166 DM_STAT_CO : out dm_stat_co_type -- debug and monitor status - core
1167 );
1168end component;
1169
1170component pdp11_tmu is -- trace and monitor unit
1171 port (
1172 CLK : in slbit; -- clock
1173 ENA : in slbit := '0'; -- enable trace output
1174 DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - dpath
1175 DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer
1176 DM_STAT_VM : in dm_stat_vm_type; -- debug and monitor status - vmbox
1177 DM_STAT_CO : in dm_stat_co_type; -- debug and monitor status - core
1178 DM_STAT_CA : in dm_stat_ca_type -- debug and monitor status - cache
1179 );
1180end component;
1181
1182-- this definition logically belongs into a 'for test benches' section'
1183-- it is here for convenience to simplify instantiations.
1184constant sbcntl_sbf_tmu : integer := 12;
1185
1186component pdp11_tmu_sb is -- trace and mon. unit; simbus wrapper
1187 generic (
1188 ENAPIN : integer := sbcntl_sbf_tmu); -- SB_CNTL for tmu
1189 port (
1190 CLK : in slbit; -- clock
1191 DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - dpath
1192 DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer
1193 DM_STAT_VM : in dm_stat_vm_type; -- debug and monitor status - vmbox
1194 DM_STAT_CO : in dm_stat_co_type; -- debug and monitor status - core
1195 DM_STAT_CA : in dm_stat_ca_type -- debug and monitor status - cache
1196 );
1197end component;
1198
1199component pdp11_du_drv is -- display unit low level driver
1200 generic (
1201 CDWIDTH : positive := 3); -- clock divider width
1202 port (
1203 CLK : in slbit; -- clock
1204 GRESET : in slbit; -- general reset
1205 ROW0 : in slv22; -- led row 0 (22 leds, top)
1206 ROW1 : in slv16; -- led row 1 (16 leds)
1207 ROW2 : in slv16; -- led row 2 (16 leds)
1208 ROW3 : in slv10; -- led row 3 (10 leds, bottom)
1209 SWOPT : out slv8; -- option pattern from du
1210 SWOPT_RDY : out slbit; -- marks update of swopt
1211 DU_SCLK : out slbit; -- DU: sclk
1212 DU_SS_N : out slbit; -- DU: ss_n
1213 DU_MOSI : out slbit; -- DU: mosi (master out, slave in)
1214 DU_MISO : in slbit -- DU: miso (master in, slave out)
1215 );
1216end component;
1217
1218component pdp11_bram is -- BRAM based ext. memory dummy
1219 generic (
1220 AWIDTH : positive := 14); -- address width
1221 port (
1222 CLK : in slbit; -- clock
1223 GRESET : in slbit; -- general reset
1224 EM_MREQ : in em_mreq_type; -- em request
1225 EM_SRES : out em_sres_type -- em response
1226 );
1227end component;
1228
1229component pdp11_bram_memctl is -- BRAM based memctl
1230 generic (
1231 MAWIDTH : positive := 4; -- mux address width
1232 NBLOCK : positive := 11); -- number of 16 kByte blocks
1233 port (
1234 CLK : in slbit; -- clock
1235 RESET : in slbit; -- reset
1236 REQ : in slbit; -- request
1237 WE : in slbit; -- write enable
1238 BUSY : out slbit; -- controller busy
1239 ACK_R : out slbit; -- acknowledge read
1240 ACK_W : out slbit; -- acknowledge write
1241 ACT_R : out slbit; -- signal active read
1242 ACT_W : out slbit; -- signal active write
1243 ADDR : in slv20; -- address
1244 BE : in slv4; -- byte enable
1245 DI : in slv32; -- data in (memory view)
1246 DO : out slv32 -- data out (memory view)
1247 );
1248end component;
1249
1250component pdp11_statleds is -- status leds
1251 port (
1252 MEM_ACT_R : in slbit; -- memory active read
1253 MEM_ACT_W : in slbit; -- memory active write
1254 CP_STAT : in cp_stat_type; -- console port status
1255 DM_STAT_EXP : in dm_stat_exp_type; -- debug and monitor - exports
1256 STATLEDS : out slv8 -- 8 bit CPU status
1257 );
1258end component;
1259
1260component pdp11_ledmux is -- hio led mux
1261 generic (
1262 LWIDTH : positive := 8); -- led width
1263 port (
1264 SEL : in slbit; -- select (0=stat;1=dr)
1265 STATLEDS : in slv8; -- 8 bit CPU status
1266 DM_STAT_EXP : in dm_stat_exp_type; -- debug and monitor - exports
1267 LED : out slv(LWIDTH-1 downto 0) -- hio leds
1268 );
1269end component;
1270
1271component pdp11_dspmux is -- hio dsp mux
1272 generic (
1273 DCWIDTH : positive := 2); -- digit counter width (2 or 3)
1274 port (
1275 SEL : in slv2; -- select
1276 ABCLKDIV : in slv16; -- serport clock divider
1277 DM_STAT_EXP : in dm_stat_exp_type; -- debug and monitor - exports
1278 DISPREG : in slv16; -- display register
1279 DSP_DAT : out slv(4*(2**DCWIDTH)-1 downto 0) -- display data
1280 );
1281end component;
1282
1283component pdp11_core_rbus is -- core to rbus interface
1284 generic (
1285 RB_ADDR_CORE : slv16 := rbaddr_cpu0_core;
1286 RB_ADDR_IBUS : slv16 := rbaddr_cpu0_ibus);
1287 port (
1288 CLK : in slbit; -- clock
1289 RESET : in slbit; -- reset
1290 RB_MREQ : in rb_mreq_type; -- rbus: request
1291 RB_SRES : out rb_sres_type; -- rbus: response
1292 RB_STAT : out slv4; -- rbus: status flags
1293 RB_LAM : out slbit; -- remote attention
1294 GRESET : out slbit; -- general reset
1295 CP_CNTL : out cp_cntl_type; -- console control port
1296 CP_ADDR : out cp_addr_type; -- console address port
1297 CP_DIN : out slv16; -- console data in
1298 CP_STAT : in cp_stat_type; -- console status port
1299 CP_DOUT : in slv16 -- console data out
1300 );
1301end component;
1302
1303component pdp11_sys70 is -- 11/70 system 1 core +rbus,debug,cache
1304 port (
1305 CLK : in slbit; -- clock
1306 RESET : in slbit; -- reset
1307 RB_MREQ : in rb_mreq_type; -- rbus request (slave)
1308 RB_SRES : out rb_sres_type; -- rbus response
1309 RB_STAT : out slv4; -- rbus status flags
1310 RB_LAM_CPU : out slbit; -- rbus lam (cpu)
1311 GRESET : out slbit; -- general reset (from rbus)
1312 CRESET : out slbit; -- cpu reset (from cp)
1313 BRESET : out slbit; -- bus reset (from cp or cpu)
1314 CP_STAT : out cp_stat_type; -- console port status
1315 EI_PRI : in slv3; -- external interrupt priority
1316 EI_VECT : in slv9_2; -- external interrupt vector
1317 EI_ACKM : out slbit; -- external interrupt acknowledge
1318 PERFEXT : in slv8; -- cpu external perf counter signals
1319 IB_MREQ : out ib_mreq_type; -- ibus request (master)
1320 IB_SRES : in ib_sres_type; -- ibus response (from IO system)
1321 MEM_REQ : out slbit; -- memory: request
1322 MEM_WE : out slbit; -- memory: write enable
1323 MEM_BUSY : in slbit; -- memory: controller busy
1324 MEM_ACK_R : in slbit; -- memory: acknowledge read
1325 MEM_ADDR : out slv20; -- memory: address
1326 MEM_BE : out slv4; -- memory: byte enable
1327 MEM_DI : out slv32; -- memory: data in (memory view)
1328 MEM_DO : in slv32; -- memory: data out (memory view)
1329 DM_STAT_EXP : out dm_stat_exp_type -- debug and monitor - sys70 exports
1330 );
1331end component;
1332
1333component pdp11_hio70 is -- hio led and dsp for sys70
1334 generic (
1335 LWIDTH : positive := 8; -- led width
1336 DCWIDTH : positive := 2); -- digit counter width (2 or 3)
1337 port (
1338 SEL_LED : in slbit; -- led select (0=stat;1=dr)
1339 SEL_DSP : in slv2; -- dsp select
1340 MEM_ACT_R : in slbit; -- memory active read
1341 MEM_ACT_W : in slbit; -- memory active write
1342 CP_STAT : in cp_stat_type; -- console port status
1343 DM_STAT_EXP : in dm_stat_exp_type; -- debug and monitor - exports
1344 ABCLKDIV : in slv16; -- serport clock divider
1345 DISPREG : in slv16; -- display register
1346 LED : out slv(LWIDTH-1 downto 0); -- hio leds
1347 DSP_DAT : out slv(4*(2**DCWIDTH)-1 downto 0) -- display data
1348 );
1349end component;
1350
1351component pdp11_dmscnt is -- debug&moni: state counter
1352 generic (
1353 RB_ADDR : slv16 := rbaddr_dmscnt_off);
1354 port (
1355 CLK : in slbit; -- clock
1356 RESET : in slbit; -- reset
1357 RB_MREQ : in rb_mreq_type; -- rbus: request
1358 RB_SRES : out rb_sres_type; -- rbus: response
1359 DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer
1360 DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - data path
1361 DM_STAT_CO : in dm_stat_co_type -- debug and monitor status - core
1362 );
1363end component;
1364
1365component pdp11_dmcmon is -- debug&moni: cpu monitor
1366 generic (
1367 RB_ADDR : slv16 := rbaddr_dmcmon_off;
1368 AWIDTH : natural := 8;
1369 SNUM : boolean := false);
1370 port (
1371 CLK : in slbit; -- clock
1372 RESET : in slbit; -- reset
1373 RB_MREQ : in rb_mreq_type; -- rbus: request
1374 RB_SRES : out rb_sres_type; -- rbus: response
1375 DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer
1376 DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - data path
1377 DM_STAT_VM : in dm_stat_vm_type; -- debug and monitor status - vmbox
1378 DM_STAT_CO : in dm_stat_co_type -- debug and monitor status - core
1379 );
1380end component;
1381
1382component pdp11_dmhbpt is -- debug&moni: hardware breakpoint
1383 generic (
1384 RB_ADDR : slv16 := rbaddr_dmhbpt_off;
1385 NUNIT : natural := 2);
1386 port (
1387 CLK : in slbit; -- clock
1388 RESET : in slbit; -- reset
1389 RB_MREQ : in rb_mreq_type; -- rbus: request
1390 RB_SRES : out rb_sres_type; -- rbus: response
1391 DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer
1392 DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - data path
1393 DM_STAT_VM : in dm_stat_vm_type; -- debug and monitor status - vmbox
1394 DM_STAT_CO : in dm_stat_co_type; -- debug and monitor status - core
1395 HBPT : out slbit -- hw break flag
1396 );
1397end component;
1398
1399component pdp11_dmhbpt_unit is -- dmhbpt - indivitial unit
1400 generic (
1401 RB_ADDR : slv16 := rbaddr_dmhbpt_off;
1402 INDEX : natural := 0);
1403 port (
1404 CLK : in slbit; -- clock
1405 RESET : in slbit; -- reset
1406 RB_MREQ : in rb_mreq_type; -- rbus: request
1407 RB_SRES : out rb_sres_type; -- rbus: response
1408 DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer
1409 DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - data path
1410 DM_STAT_VM : in dm_stat_vm_type; -- debug and monitor status - vmbox
1411 DM_STAT_CO : in dm_stat_co_type; -- debug and monitor status - core
1412 HBPT : out slbit -- hw break flag
1413 );
1414end component;
1415
1416component pdp11_dmpcnt is -- debug&moni: performance counters
1417 generic (
1418 RB_ADDR : slv16 := rbaddr_dmpcnt_off; -- rbus address
1419 VERS : slv8 := slv(to_unsigned(0, 8)); -- counter layout version
1420 CENA : slv32 := (others=>'1')); -- counter enables
1421 port (
1422 CLK : in slbit; -- clock
1423 RESET : in slbit; -- reset
1424 RB_MREQ : in rb_mreq_type; -- rbus: request
1425 RB_SRES : out rb_sres_type; -- rbus: response
1426 PERFSIG : in slv32 -- signals to count
1427 );
1428end component;
1429
1430
1431-- ----- move later to pdp11_conf --------------------------------------------
1432
1433constant conf_vect_pirq : integer := 8#240#;
1434constant conf_pri_pirq_1 : integer := 1;
1435constant conf_pri_pirq_2 : integer := 2;
1436constant conf_pri_pirq_3 : integer := 3;
1437constant conf_pri_pirq_4 : integer := 4;
1438constant conf_pri_pirq_5 : integer := 5;
1439constant conf_pri_pirq_6 : integer := 6;
1440constant conf_pri_pirq_7 : integer := 7;
1441
1442end package pdp11;
Definition: iblib.vhd:33
out CCOUT slv4
Definition: pdp11_aunit.vhd:58
in CC1OP slbit
Definition: pdp11_aunit.vhd:53
in SRCMOD slv2
Definition: pdp11_aunit.vhd:50
in DDST slv16
Definition: pdp11_aunit.vhd:48
in CCMODE slv3
Definition: pdp11_aunit.vhd:54
in CI slbit
Definition: pdp11_aunit.vhd:49
in DSTMOD slv2
Definition: pdp11_aunit.vhd:51
in CIMOD slv2
Definition: pdp11_aunit.vhd:52
in BYTOP slbit
Definition: pdp11_aunit.vhd:55
in DSRC slv16
Definition: pdp11_aunit.vhd:47
out DOUT slv16
Definition: pdp11_aunit.vhd:56
NBLOCK positive := 11
MAWIDTH positive := 4
AWIDTH positive := 14
Definition: pdp11_bram.vhd:31
in EM_MREQ em_mreq_type
Definition: pdp11_bram.vhd:35
in GRESET slbit
Definition: pdp11_bram.vhd:34
in CLK slbit
Definition: pdp11_bram.vhd:33
out EM_SRES em_sres_type
Definition: pdp11_bram.vhd:37
in MEM_BUSY slbit
Definition: pdp11_cache.vhd:57
out MEM_DI slv32
Definition: pdp11_cache.vhd:61
in EM_MREQ em_mreq_type
Definition: pdp11_cache.vhd:52
out DM_STAT_CA dm_stat_ca_type
Definition: pdp11_cache.vhd:64
out MEM_BE slv4
Definition: pdp11_cache.vhd:60
in GRESET slbit
Definition: pdp11_cache.vhd:51
in CLK slbit
Definition: pdp11_cache.vhd:50
out MEM_REQ slbit
Definition: pdp11_cache.vhd:55
in MEM_ACK_R slbit
Definition: pdp11_cache.vhd:58
out MEM_ADDR slv20
Definition: pdp11_cache.vhd:59
in MEM_DO slv32
Definition: pdp11_cache.vhd:62
out MEM_WE slbit
Definition: pdp11_cache.vhd:56
TWIDTH positive := 9
Definition: pdp11_cache.vhd:48
in FMISS slbit
Definition: pdp11_cache.vhd:54
out EM_SRES em_sres_type
Definition: pdp11_cache.vhd:53
in CP_STAT cp_stat_type
out CP_CNTL cp_cntl_type
in RB_MREQ rb_mreq_type
out CP_ADDR cp_addr_type
RB_ADDR_CORE slv16 := rbaddr_cpu0_core
RB_ADDR_IBUS slv16 := rbaddr_cpu0_ibus
out RB_SRES rb_sres_type
in RESET slbit
Definition: pdp11_core.vhd:65
in IB_SRES_M ib_sres_type
Definition: pdp11_core.vhd:82
out DM_STAT_DP dm_stat_dp_type
Definition: pdp11_core.vhd:84
in CP_ADDR cp_addr_type
Definition: pdp11_core.vhd:67
out EI_ACKM slbit
Definition: pdp11_core.vhd:76
out DM_STAT_CO dm_stat_co_type
Definition: pdp11_core.vhd:87
in CLK slbit
Definition: pdp11_core.vhd:64
in EM_SRES em_sres_type
Definition: pdp11_core.vhd:78
out CP_DOUT slv16
Definition: pdp11_core.vhd:70
out IB_MREQ_M ib_mreq_type
Definition: pdp11_core.vhd:81
out CRESET slbit
Definition: pdp11_core.vhd:79
in CP_DIN slv16
Definition: pdp11_core.vhd:68
in CP_CNTL cp_cntl_type
Definition: pdp11_core.vhd:66
in EI_VECT slv9_2
Definition: pdp11_core.vhd:75
in EI_PRI slv3
Definition: pdp11_core.vhd:74
out CP_STAT cp_stat_type
Definition: pdp11_core.vhd:69
out DM_STAT_VM dm_stat_vm_type
Definition: pdp11_core.vhd:85
out DM_STAT_SE dm_stat_se_type
Definition: pdp11_core.vhd:83
in ESUSP_I slbit
Definition: pdp11_core.vhd:72
out ESUSP_O slbit
Definition: pdp11_core.vhd:71
out EM_MREQ em_mreq_type
Definition: pdp11_core.vhd:77
out BRESET slbit
Definition: pdp11_core.vhd:80
in HBPT slbit
Definition: pdp11_core.vhd:73
in IREG slv16
out STAT decode_stat_type
in RESET slbit
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
RB_ADDR slv16 := rbaddr_dmcmon_off
AWIDTH natural := 8
in DM_STAT_SE dm_stat_se_type
in CLK slbit
in RB_MREQ rb_mreq_type
in DM_STAT_VM dm_stat_vm_type
SNUM boolean := false
out RB_SRES rb_sres_type
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
RB_ADDR slv16 := rbaddr_dmhbpt_off
in RB_MREQ rb_mreq_type
in DM_STAT_VM dm_stat_vm_type
out RB_SRES rb_sres_type
in RESET slbit
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
in CLK slbit
RB_ADDR slv16 := rbaddr_dmhbpt_off
in RB_MREQ rb_mreq_type
in DM_STAT_VM dm_stat_vm_type
out HBPT slbit
out RB_SRES rb_sres_type
NUNIT natural := 2
in RESET slbit
CENA slv32 :=( others => '1')
VERS slv8 := slv( to_unsigned( 1, 8) )
in CLK slbit
in RB_MREQ rb_mreq_type
RB_ADDR slv16 := rbaddr_dmpcnt_off
out RB_SRES rb_sres_type
in PERFSIG slv32
in RESET slbit
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
in CLK slbit
in RB_MREQ rb_mreq_type
out RB_SRES rb_sres_type
RB_ADDR slv16 := rbaddr_dmscnt_off
out DM_STAT_DP dm_stat_dp_type
Definition: pdp11_dpath.vhd:70
out PSWOUT psw_type
Definition: pdp11_dpath.vhd:62
in CNTL dpath_cntl_type
Definition: pdp11_dpath.vhd:58
in VM_DOUT slv16
Definition: pdp11_dpath.vhd:65
in CLK slbit
Definition: pdp11_dpath.vhd:56
out CP_DOUT slv16
Definition: pdp11_dpath.vhd:61
in CRESET slbit
Definition: pdp11_dpath.vhd:57
in IB_MREQ ib_mreq_type
Definition: pdp11_dpath.vhd:67
out VM_ADDR slv16
Definition: pdp11_dpath.vhd:64
out IB_SRES ib_sres_type
Definition: pdp11_dpath.vhd:68
in CP_DIN slv16
Definition: pdp11_dpath.vhd:60
out VM_DIN slv16
Definition: pdp11_dpath.vhd:66
out IREG slv16
Definition: pdp11_dpath.vhd:63
out STAT dpath_stat_type
Definition: pdp11_dpath.vhd:59
in ABCLKDIV slv16
in SEL slv2
DCWIDTH positive := 2
out DSP_DAT slv( 4*( 2** DCWIDTH)- 1 downto 0)
in DISPREG slv16
in DM_STAT_EXP dm_stat_exp_type
in MODE slv2
Definition: pdp11_gr.vhd:42
out DSRC slv16
Definition: pdp11_gr.vhd:47
out DDST slv16
Definition: pdp11_gr.vhd:48
in CLK slbit
Definition: pdp11_gr.vhd:38
in ADST slv3
Definition: pdp11_gr.vhd:41
in DIN slv16
Definition: pdp11_gr.vhd:39
in RSET slbit
Definition: pdp11_gr.vhd:43
in ASRC slv3
Definition: pdp11_gr.vhd:40
in BYTOP slbit
Definition: pdp11_gr.vhd:45
in WE slbit
Definition: pdp11_gr.vhd:44
in PCINC slbit
Definition: pdp11_gr.vhd:46
out PC slv16
Definition: pdp11_gr.vhd:50
in ABCLKDIV slv16
Definition: pdp11_hio70.vhd:42
in CP_STAT cp_stat_type
Definition: pdp11_hio70.vhd:40
DCWIDTH positive := 2
Definition: pdp11_hio70.vhd:34
out DSP_DAT slv( 4*( 2** DCWIDTH)- 1 downto 0)
Definition: pdp11_hio70.vhd:46
in SEL_LED slbit
Definition: pdp11_hio70.vhd:36
in DISPREG slv16
Definition: pdp11_hio70.vhd:43
LWIDTH positive := 8
Definition: pdp11_hio70.vhd:33
in MEM_ACT_W slbit
Definition: pdp11_hio70.vhd:39
out LED slv( LWIDTH- 1 downto 0)
Definition: pdp11_hio70.vhd:44
in MEM_ACT_R slbit
Definition: pdp11_hio70.vhd:38
in SEL_DSP slv2
Definition: pdp11_hio70.vhd:37
in DM_STAT_EXP dm_stat_exp_type
Definition: pdp11_hio70.vhd:41
in BRESET slbit
Definition: pdp11_irq.vhd:43
out EI_ACKM slbit
Definition: pdp11_irq.vhd:47
out PRI slv3
Definition: pdp11_irq.vhd:48
in INT_ACK slbit
Definition: pdp11_irq.vhd:44
in CLK slbit
Definition: pdp11_irq.vhd:42
in IB_MREQ ib_mreq_type
Definition: pdp11_irq.vhd:50
out IB_SRES ib_sres_type
Definition: pdp11_irq.vhd:52
in EI_VECT slv9_2
Definition: pdp11_irq.vhd:46
in EI_PRI slv3
Definition: pdp11_irq.vhd:45
out VECT slv9_2
Definition: pdp11_irq.vhd:49
in STATLEDS slv8
LWIDTH positive := 8
out LED slv( LWIDTH- 1 downto 0)
in DM_STAT_EXP dm_stat_exp_type
in SEL slbit
out CCOUT slv4
Definition: pdp11_lunit.vhd:41
in DDST slv16
Definition: pdp11_lunit.vhd:35
in BYTOP slbit
Definition: pdp11_lunit.vhd:38
in DSRC slv16
Definition: pdp11_lunit.vhd:34
in FUNC slv4
Definition: pdp11_lunit.vhd:37
out DOUT slv16
Definition: pdp11_lunit.vhd:39
in CCIN slv4
Definition: pdp11_lunit.vhd:36
in HM_ENA slbit
Definition: pdp11_mem70.vhd:38
in CLK slbit
Definition: pdp11_mem70.vhd:36
in HM_VAL slbit
Definition: pdp11_mem70.vhd:39
in CRESET slbit
Definition: pdp11_mem70.vhd:37
in IB_MREQ ib_mreq_type
Definition: pdp11_mem70.vhd:41
out CACHE_FMISS slbit
Definition: pdp11_mem70.vhd:40
out IB_SRES ib_sres_type
Definition: pdp11_mem70.vhd:43
in MONI mmu_moni_type
in IB_MREQ ib_mreq_type
out IB_SRES ib_sres_type
in AIB_WE slbit
in IB_MREQ ib_mreq_type
out IB_SRES ib_sres_type
in AIB_SETW slbit
out PARPDR parpdr_type
in AIB_SETA slbit
out PADDRH slv16
Definition: pdp11_mmu.vhd:66
in VADDR slv16
Definition: pdp11_mmu.vhd:63
in BRESET slbit
Definition: pdp11_mmu.vhd:61
out STAT mmu_stat_type
Definition: pdp11_mmu.vhd:65
in MONI mmu_moni_type
Definition: pdp11_mmu.vhd:64
in CLK slbit
Definition: pdp11_mmu.vhd:59
in CRESET slbit
Definition: pdp11_mmu.vhd:60
in IB_MREQ ib_mreq_type
Definition: pdp11_mmu.vhd:67
in CNTL mmu_cntl_type
Definition: pdp11_mmu.vhd:62
out IB_SRES ib_sres_type
Definition: pdp11_mmu.vhd:69
out DOUTE slv16
Definition: pdp11_munit.vhd:64
out CCOUT slv4
Definition: pdp11_munit.vhd:66
in S_DIV slbit
Definition: pdp11_munit.vhd:51
in S_DIV_CN slbit
Definition: pdp11_munit.vhd:52
out DIV_CR slbit
Definition: pdp11_munit.vhd:60
in S_ASHC_CN slbit
Definition: pdp11_munit.vhd:58
out DIV_QUIT slbit
Definition: pdp11_munit.vhd:62
out DIV_CQ slbit
Definition: pdp11_munit.vhd:61
in S_DIV_CR slbit
Definition: pdp11_munit.vhd:53
in DDST slv16
Definition: pdp11_munit.vhd:47
in CLK slbit
Definition: pdp11_munit.vhd:45
in S_ASH slbit
Definition: pdp11_munit.vhd:55
out SHC_TC slbit
Definition: pdp11_munit.vhd:59
in S_ASHC slbit
Definition: pdp11_munit.vhd:57
in DSRC slv16
Definition: pdp11_munit.vhd:46
in FUNC slv2
Definition: pdp11_munit.vhd:50
in S_DIV_SR slbit
Definition: pdp11_munit.vhd:54
in S_ASH_CN slbit
Definition: pdp11_munit.vhd:56
in GR_DSRC slv16
Definition: pdp11_munit.vhd:49
out DOUT slv16
Definition: pdp11_munit.vhd:63
in DTMP slv16
Definition: pdp11_munit.vhd:48
in VMDOUT slv16
Definition: pdp11_ounit.vhd:39
in OPSUB slbit
Definition: pdp11_ounit.vhd:42
in DDST slv16
Definition: pdp11_ounit.vhd:33
in AZERO slbit
Definition: pdp11_ounit.vhd:37
in ASEL slv2
Definition: pdp11_ounit.vhd:36
in IREG8 slv8
Definition: pdp11_ounit.vhd:38
out NZOUT slv2
Definition: pdp11_ounit.vhd:45
in DSRC slv16
Definition: pdp11_ounit.vhd:32
in CONST slv9
Definition: pdp11_ounit.vhd:40
in PC slv16
Definition: pdp11_ounit.vhd:35
in BSEL slv2
Definition: pdp11_ounit.vhd:41
out DOUT slv16
Definition: pdp11_ounit.vhd:43
in DTMP slv16
Definition: pdp11_ounit.vhd:34
in FUNC slv3
Definition: pdp11_psr.vhd:48
in CLK slbit
Definition: pdp11_psr.vhd:42
in DIN slv16
Definition: pdp11_psr.vhd:44
in CRESET slbit
Definition: pdp11_psr.vhd:43
in IB_MREQ ib_mreq_type
Definition: pdp11_psr.vhd:50
out IB_SRES ib_sres_type
Definition: pdp11_psr.vhd:52
in CCWE slbit
Definition: pdp11_psr.vhd:46
in WE slbit
Definition: pdp11_psr.vhd:47
out PSW psw_type
Definition: pdp11_psr.vhd:49
in CCIN slv4
Definition: pdp11_psr.vhd:45
in CLK slbit
Definition: pdp11_reg70.vhd:36
in CRESET slbit
Definition: pdp11_reg70.vhd:37
in IB_MREQ ib_mreq_type
Definition: pdp11_reg70.vhd:38
out IB_SRES ib_sres_type
Definition: pdp11_reg70.vhd:40
in ID_STAT decode_stat_type
out DP_CNTL dpath_cntl_type
in PSW psw_type
in VM_STAT vm_stat_type
out MMU_MONI mmu_moni_type
in IB_MREQ ib_mreq_type
out IB_SRES ib_sres_type
out VM_CNTL vm_cntl_type
in CP_CNTL cp_cntl_type
out CP_STAT cp_stat_type
out DM_STAT_SE dm_stat_se_type
in DP_STAT dpath_stat_type
in CP_STAT cp_stat_type
in MEM_ACT_W slbit
in MEM_ACT_R slbit
out STATLEDS slv8
in DM_STAT_EXP dm_stat_exp_type
in MEM_BUSY slbit
Definition: pdp11_sys70.vhd:81
out RB_LAM_CPU slbit
Definition: pdp11_sys70.vhd:68
out MEM_DI slv32
Definition: pdp11_sys70.vhd:85
in RESET slbit
Definition: pdp11_sys70.vhd:64
out GRESET slbit
Definition: pdp11_sys70.vhd:69
in PERFEXT slv8
Definition: pdp11_sys70.vhd:76
out EI_ACKM slbit
Definition: pdp11_sys70.vhd:75
out MEM_BE slv4
Definition: pdp11_sys70.vhd:84
out RB_STAT slv4
Definition: pdp11_sys70.vhd:67
in CLK slbit
Definition: pdp11_sys70.vhd:63
out MEM_REQ slbit
Definition: pdp11_sys70.vhd:79
in RB_MREQ rb_mreq_type
Definition: pdp11_sys70.vhd:65
out IB_MREQ ib_mreq_type
Definition: pdp11_sys70.vhd:77
out DM_STAT_EXP dm_stat_exp_type
Definition: pdp11_sys70.vhd:88
out CRESET slbit
Definition: pdp11_sys70.vhd:70
in EI_VECT slv9_2
Definition: pdp11_sys70.vhd:74
in EI_PRI slv3
Definition: pdp11_sys70.vhd:73
in MEM_ACK_R slbit
Definition: pdp11_sys70.vhd:82
out CP_STAT cp_stat_type
Definition: pdp11_sys70.vhd:72
out MEM_ADDR slv20
Definition: pdp11_sys70.vhd:83
out RB_SRES rb_sres_type
Definition: pdp11_sys70.vhd:66
in MEM_DO slv32
Definition: pdp11_sys70.vhd:86
out MEM_WE slbit
Definition: pdp11_sys70.vhd:80
in IB_SRES ib_sres_type
Definition: pdp11_sys70.vhd:78
out BRESET slbit
Definition: pdp11_sys70.vhd:71
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
in CLK slbit
in DM_STAT_VM dm_stat_vm_type
in DM_STAT_CA dm_stat_ca_type
ENAPIN integer := sbcntl_sbf_tmu
in DM_STAT_DP dm_stat_dp_type
Definition: pdp11_tmu.vhd:51
in DM_STAT_CO dm_stat_co_type
Definition: pdp11_tmu.vhd:54
in DM_STAT_SE dm_stat_se_type
Definition: pdp11_tmu.vhd:52
in CLK slbit
Definition: pdp11_tmu.vhd:49
in DM_STAT_VM dm_stat_vm_type
Definition: pdp11_tmu.vhd:53
in ENA slbit := '0'
Definition: pdp11_tmu.vhd:50
in DM_STAT_CA dm_stat_ca_type
Definition: pdp11_tmu.vhd:56
out ADDR_PM slv22_1
Definition: pdp11_ubmap.vhd:40
in CLK slbit
Definition: pdp11_ubmap.vhd:37
in ADDR_UB slv18_1
Definition: pdp11_ubmap.vhd:39
in MREQ slbit
Definition: pdp11_ubmap.vhd:38
in IB_MREQ ib_mreq_type
Definition: pdp11_ubmap.vhd:41
out IB_SRES ib_sres_type
Definition: pdp11_ubmap.vhd:43
in BRESET slbit
Definition: pdp11_vmbox.vhd:78
out VM_STAT vm_stat_type
Definition: pdp11_vmbox.vhd:83
in MMU_MONI mmu_moni_type
Definition: pdp11_vmbox.vhd:87
in CP_ADDR cp_addr_type
Definition: pdp11_vmbox.vhd:79
in IB_SRES_EXT ib_sres_type
Definition: pdp11_vmbox.vhd:90
in GRESET slbit
Definition: pdp11_vmbox.vhd:76
in CLK slbit
Definition: pdp11_vmbox.vhd:75
in EM_SRES em_sres_type
Definition: pdp11_vmbox.vhd:86
in CRESET slbit
Definition: pdp11_vmbox.vhd:77
out IB_MREQ_M ib_mreq_type
Definition: pdp11_vmbox.vhd:88
out VM_DOUT slv16
Definition: pdp11_vmbox.vhd:84
in VM_CNTL vm_cntl_type
Definition: pdp11_vmbox.vhd:80
out DM_STAT_VM dm_stat_vm_type
Definition: pdp11_vmbox.vhd:92
in VM_DIN slv16
Definition: pdp11_vmbox.vhd:82
in VM_ADDR slv16
Definition: pdp11_vmbox.vhd:81
out EM_MREQ em_mreq_type
Definition: pdp11_vmbox.vhd:85
in IB_SRES_CPU ib_sres_type
Definition: pdp11_vmbox.vhd:89
Definition: pdp11.vhd:123
slv3 := "110" c_aunit_ccmode_sbc
Definition: pdp11.vhd:899
slv2 := "00" c_fork_dstr_def
Definition: pdp11.vhd:333
slv3 := "101" c_dpath_res_fpdout
Definition: pdp11.vhd:248
slv4 := "0111" c_cpurust_runs
Definition: pdp11.vhd:367
slv2 := "00" c_aunit_mod_pass
Definition: pdp11.vhd:887
slv4 := "0010" c_cpurust_reset
Definition: pdp11.vhd:362
slv4 := "0110" c_lunit_func_bit
Definition: pdp11.vhd:920
slv2 := "00" c_fork_dsta_def
Definition: pdp11.vhd:338
slv2 := "11" c_munit_func_ashc
Definition: pdp11.vhd:955
slv3 := "101" c_gr_r5
Definition: pdp11.vhd:818
slv16 := x"0000" rbaddr_cpu0_core
Definition: pdp11.vhd:126
slv4 := "0001" c_fork_op_wait
Definition: pdp11.vhd:316
slv4 := "0000" c_lunit_func_asr
Definition: pdp11.vhd:914
slv4 := "0011" c_cpurust_stop
Definition: pdp11.vhd:363
slv4 := "1000" c_fork_op_br
Definition: pdp11.vhd:323
slbit := '1' c_dpath_dsrc_res
Definition: pdp11.vhd:234
slv4 := "0110" c_fork_op_spl
Definition: pdp11.vhd:321
parpdr_type :=(( others => '0'), "0000000", '0', "000") parpdr_init
Definition: pdp11.vhd:171
slv5 := "00010" c_rbaddr_stat
Definition: pdp11.vhd:763
slv5 := "00100" c_cpfunc_creset
Definition: pdp11.vhd:582
integer := 1 c_cc_f_v
Definition: pdp11.vhd:144
mmu_stat_type :=( others => '0') mmu_stat_init
Definition: pdp11.vhd:510
slv2 := "10" c_munit_func_ash
Definition: pdp11.vhd:954
cpustat_type :=( '0', '0', '0', '0', '0', '0', '0', '0', c_cpurust_init, '0', '0', "00000", "000", '0', '0', '0', '0', '0', '0',( others => '0'), "111", '0', '0', '0', '0', '0', '0', '0', '0') cpustat_init
Definition: pdp11.vhd:405
slv4 := "0100" c_fork_opg_wind
Definition: pdp11.vhd:347
slv2 := "10" c_ounit_asel_pc
Definition: pdp11.vhd:863
slv2 := "01" c_ounit_asel_dsrc
Definition: pdp11.vhd:862
dm_stat_se_type
Definition: pdp11.vhd:633
integer := 8#240# conf_vect_pirq
Definition: pdp11.vhd:1433
slv3 := "011" c_fork_opa_mfp_reg
Definition: pdp11.vhd:356
cp_addr_type :=(( others => '0'), '0', "00", '0', '0') cp_addr_init
Definition: pdp11.vhd:625
slv5 := "00000" c_rbaddr_conf
Definition: pdp11.vhd:761
slv2 := "11" c_aunit_mod_one
Definition: pdp11.vhd:890
slv4 := "0100" c_fork_op_reset
Definition: pdp11.vhd:319
slv4 := "0110" c_cpurust_hbpt
Definition: pdp11.vhd:366
slv2 := "10" c_dpath_vmaddr_pc
Definition: pdp11.vhd:254
slv4 := "1001" c_lunit_func_swap
Definition: pdp11.vhd:923
slv4 := "0101" c_fork_opg_mul
Definition: pdp11.vhd:348
psw_type :=( "00", "00", '0', "000", '0', "0000") psw_init
Definition: pdp11.vhd:147
slv3 := "011" c_dpath_res_munit
Definition: pdp11.vhd:246
slv5 := "00101" c_cpfunc_breset
Definition: pdp11.vhd:583
em_sres_type :=( '0', '0',( others => '0')) em_sres_init
Definition: pdp11.vhd:483
slv16 := x"0048" rbaddr_dmcmon_off
Definition: pdp11.vhd:129
em_mreq_type :=( '0', '0', "00", '0',( others => '0'),( others => '0')) em_mreq_init
Definition: pdp11.vhd:472
slv4 := "0001" c_fork_opg_wdef
Definition: pdp11.vhd:344
slv5 := "00101" c_rbaddr_ah
Definition: pdp11.vhd:766
slv4 := "0010" c_fork_opg_winc
Definition: pdp11.vhd:345
integer := 1 c_stat_rbf_cmdmerr
Definition: pdp11.vhd:793
slv4 := "1100" c_cpurust_sfail
Definition: pdp11.vhd:370
slv3 := "100" c_psr_func_wall
Definition: pdp11.vhd:841
slv4 := "0110" c_fork_opg_div
Definition: pdp11.vhd:349
slv5 := "00110" c_rbaddr_mem
Definition: pdp11.vhd:767
integer := 3 c_snum_f_err
Definition: pdp11.vhd:655
integer := 0 c_stat_rbf_cmderr
Definition: pdp11.vhd:794
mmu_mmr3_type :=( others => '0') mmu_mmr3_init
Definition: pdp11.vhd:568
slv4 := "0001" c_lunit_func_asl
Definition: pdp11.vhd:915
slv3 := "111" c_gr_pc
Definition: pdp11.vhd:820
em_sres_type
Definition: pdp11.vhd:477
dm_stat_exp_type
Definition: pdp11.vhd:744
slv2 := "01" c_dpath_vmaddr_ddst
Definition: pdp11.vhd:253
integer range 5 downto 0 c_ah_rbf_addr
Definition: pdp11.vhd:786
integer range 7 downto 4 c_stat_rbf_cpurust
Definition: pdp11.vhd:790
slv5 := "00001" c_rbaddr_cntl
Definition: pdp11.vhd:762
slv2 := "11" c_ounit_bsel_ireg8
Definition: pdp11.vhd:869
slv3 := "001" c_fork_opa_jmp
Definition: pdp11.vhd:354
slv3 := "001" c_psr_func_wcc
Definition: pdp11.vhd:838
integer range 3 downto 0 psw_ibf_cc
Definition: pdp11.vhd:162
slv5 := "10000" c_rbaddr_membe
Definition: pdp11.vhd:779
decode_stat_type :=( '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', "000", '0', '0', "00", "00", "00", '0', "000", "0000", "00", "000", "0000", "00", "00", "00", "0000", "000", '0', '0', '0', '0', '0', '0') decode_stat_init
Definition: pdp11.vhd:305
vm_stat_type :=( others => '0') vm_stat_init
Definition: pdp11.vhd:461
slv2 := "11" c_dpath_dtmp_drese
Definition: pdp11.vhd:241
slv16 := x"4000" rbaddr_cpu0_ibus
Definition: pdp11.vhd:127
slv3 := "011" c_aunit_ccmode_dec
Definition: pdp11.vhd:896
integer := 3 conf_pri_pirq_3
Definition: pdp11.vhd:1436
integer := 7 conf_pri_pirq_7
Definition: pdp11.vhd:1440
slv3 := "000" c_aunit_ccmode_clr
Definition: pdp11.vhd:893
dm_stat_vm_type
Definition: pdp11.vhd:691
integer := 9 c_stat_rbf_suspext
Definition: pdp11.vhd:788
slv3 := "100" c_dpath_res_vmdout
Definition: pdp11.vhd:247
dm_stat_co_type
Definition: pdp11.vhd:715
mmu_cntl_type :=( '0', '0', '0', '0', '0', "00") mmu_cntl_init
Definition: pdp11.vhd:497
dpath_stat_type :=( others => '0') dpath_stat_init
Definition: pdp11.vhd:265
slbit := '0' c_dpath_dsrc_src
Definition: pdp11.vhd:233
integer := 7 c_snum_f_vmw
Definition: pdp11.vhd:656
slv5 := "00110" c_cpfunc_suspend
Definition: pdp11.vhd:584
slv5 := "10100" c_cpfunc_rmem
Definition: pdp11.vhd:591
mmu_moni_type :=( '0', '0', '0', '0', "000", "0000", '0', '0') mmu_moni_init
Definition: pdp11.vhd:523
slv4 := "1000" c_fork_opg_ashc
Definition: pdp11.vhd:351
dm_stat_ca_type :=( '0', '0', '0', '0', '0', '0', '0', '0') dm_stat_ca_init
Definition: pdp11.vhd:739
slv5 := "00111" c_cpfunc_resume
Definition: pdp11.vhd:585
integer := 2 c_cc_f_z
Definition: pdp11.vhd:143
slv4 := "0011" c_fork_op_trap
Definition: pdp11.vhd:318
parpdr_type
Definition: pdp11.vhd:164
slv2 := "00" c_psw_kmode
Definition: pdp11.vhd:153
slv4 := "0000" c_fork_op_halt
Definition: pdp11.vhd:315
slv3 := "000" c_psr_func_wspl
Definition: pdp11.vhd:837
integer := 4 psw_ibf_tflag
Definition: pdp11.vhd:161
slbit := '0' c_dpath_ddst_dst
Definition: pdp11.vhd:235
integer := 0 c_cc_f_c
Definition: pdp11.vhd:145
slv3 := "111" c_dpath_res_cpdin
Definition: pdp11.vhd:250
slv3 := "101" c_aunit_ccmode_adc
Definition: pdp11.vhd:898
vm_cntl_type :=( '0', '0', '0', '0', '0', '0', '0', '0', "00") vm_cntl_init
Definition: pdp11.vhd:441
slv3 := "001" c_dpath_res_aunit
Definition: pdp11.vhd:244
slv3 := "010" c_dpath_res_lunit
Definition: pdp11.vhd:245
slv4 := "0101" c_lunit_func_bic
Definition: pdp11.vhd:919
integer := 7 c_ah_rbf_ena_ubmap
Definition: pdp11.vhd:784
cp_stat_type :=( '0', '0', '0', '0', '0', '0', '0', '0',( others => '0'), '0', '0') cp_stat_init
Definition: pdp11.vhd:610
slv5 := "01100" c_rbaddr_r4
Definition: pdp11.vhd:774
slv2 := "11" c_dpath_vmaddr_dtmp
Definition: pdp11.vhd:255
slv2 := "10" c_dpath_dtmp_dres
Definition: pdp11.vhd:240
integer range 15 downto 1 c_al_rbf_addr
Definition: pdp11.vhd:783
slv2 := "10" c_fork_dsta_dec
Definition: pdp11.vhd:340
slv5 := "01101" c_rbaddr_r5
Definition: pdp11.vhd:775
decode_stat_type
Definition: pdp11.vhd:267
cp_cntl_type
Definition: pdp11.vhd:572
slv2 := "00" c_fork_srcr_def
Definition: pdp11.vhd:328
cp_addr_type
Definition: pdp11.vhd:617
slv16 := x"0040" rbaddr_dmscnt_off
Definition: pdp11.vhd:128
slv3 := "010" c_fork_opa_mtp
Definition: pdp11.vhd:355
mmu_mmr1_type :=( "00000", "000", "00000", "000") mmu_mmr1_init
Definition: pdp11.vhd:555
slv4 := "0010" c_lunit_func_ror
Definition: pdp11.vhd:916
cp_cntl_type :=( '0', c_cpfunc_noop, "000") cp_cntl_init
Definition: pdp11.vhd:594
vm_cntl_type
Definition: pdp11.vhd:429
slv2 := "11" c_fork_dsta_ind
Definition: pdp11.vhd:341
slv4 := "0000" c_fork_opg_gen
Definition: pdp11.vhd:343
dm_stat_ca_type
Definition: pdp11.vhd:728
slv2 := "01" c_fork_dsta_inc
Definition: pdp11.vhd:339
slv2 := "10" c_aunit_mod_zero
Definition: pdp11.vhd:889
slv2 := "11" c_fork_dstr_ind
Definition: pdp11.vhd:336
dpath_stat_type
Definition: pdp11.vhd:257
slv5 := "01000" c_rbaddr_r0
Definition: pdp11.vhd:770
slv4 := "1010" c_lunit_func_xor
Definition: pdp11.vhd:924
slv2 := "01" c_fork_dstr_inc
Definition: pdp11.vhd:334
slv5 := "00011" c_rbaddr_psw
Definition: pdp11.vhd:764
slv4 := "1010" c_fork_op_sob
Definition: pdp11.vhd:325
integer := 2 c_snum_f_vec
Definition: pdp11.vhd:654
integer := 3 c_cc_f_n
Definition: pdp11.vhd:142
slv5 := "10010" c_cpfunc_rpsw
Definition: pdp11.vhd:589
slv5 := "01010" c_rbaddr_r2
Definition: pdp11.vhd:772
slv2 := "00" c_ounit_asel_ddst
Definition: pdp11.vhd:861
slv5 := "00010" c_cpfunc_stop
Definition: pdp11.vhd:580
integer := 0 c_init_rbf_greset
Definition: pdp11.vhd:781
slv4 := "0111" c_fork_opg_ash
Definition: pdp11.vhd:350
slv3 := "001" c_aunit_ccmode_com
Definition: pdp11.vhd:894
dpath_cntl_type :=( "000", "000", "00", '0', '0', '0', '0', '0', '0', "000", '0', '0', '0', '0', "00", '0', "00", '0', "000000000", "00", '0', "00", "00", "00", '0', "000", '0', "0000", '0', "00", '0', '0', '0', '0', '0', '0', '0', '0', '0', "000", "000", "00", '0') dpath_cntl_init
Definition: pdp11.vhd:222
integer := 12 sbcntl_sbf_tmu
Definition: pdp11.vhd:1184
slv5 := "10101" c_cpfunc_wmem
Definition: pdp11.vhd:592
cpustat_type
Definition: pdp11.vhd:373
integer := 8 c_stat_rbf_suspint
Definition: pdp11.vhd:789
slv3 := "110" c_gr_sp
Definition: pdp11.vhd:819
slv5 := "01011" c_rbaddr_r3
Definition: pdp11.vhd:773
slv4 := "0011" c_lunit_func_rol
Definition: pdp11.vhd:917
slv5 := "01001" c_rbaddr_r1
Definition: pdp11.vhd:771
slv2 := "11" c_psw_umode
Definition: pdp11.vhd:155
slv2 := "10" c_fork_dstr_dec
Definition: pdp11.vhd:335
slv2 := "00" c_dpath_dtmp_dsrc
Definition: pdp11.vhd:238
slv2 := "01" c_aunit_mod_inv
Definition: pdp11.vhd:888
slv5 := "01110" c_rbaddr_sp
Definition: pdp11.vhd:776
slv5 := "00011" c_cpfunc_step
Definition: pdp11.vhd:581
dm_stat_exp_type :=(( others => '0'), psw_init,( others => '0'), '0', '0') dm_stat_exp_init
Definition: pdp11.vhd:752
integer range 13 downto 12 psw_ibf_pmode
Definition: pdp11.vhd:158
slv5 := "10000" c_cpfunc_rreg
Definition: pdp11.vhd:587
slv3 := "010" c_aunit_ccmode_inc
Definition: pdp11.vhd:895
slv4 := "1101" c_cpurust_vfail
Definition: pdp11.vhd:371
slv4 := "1011" c_fork_op_mtp
Definition: pdp11.vhd:326
slv2 := "11" c_ounit_asel_dtmp
Definition: pdp11.vhd:864
mmu_cntl_type
Definition: pdp11.vhd:488
integer := 6 conf_pri_pirq_6
Definition: pdp11.vhd:1439
integer := 3 c_stat_rbf_cpususp
Definition: pdp11.vhd:791
dm_stat_vm_type :=( vm_cntl_init,( others => '0'),( others => '0'), vm_stat_init,( others => '0'), ib_mreq_init, ib_sres_init, em_mreq_init, em_sres_init) dm_stat_vm_init
Definition: pdp11.vhd:703
integer := 4 conf_pri_pirq_4
Definition: pdp11.vhd:1437
slv5 := "00000" c_cpfunc_noop
Definition: pdp11.vhd:578
integer range 15 downto 14 psw_ibf_cmode
Definition: pdp11.vhd:157
integer := 2 c_membe_rbf_stick
Definition: pdp11.vhd:797
slv4 := "0101" c_cpurust_susp
Definition: pdp11.vhd:365
cp_stat_type
Definition: pdp11.vhd:596
slv5 := "00111" c_rbaddr_memi
Definition: pdp11.vhd:768
slv4 := "1000" c_lunit_func_sxt
Definition: pdp11.vhd:922
integer := 1 c_snum_f_ins
Definition: pdp11.vhd:653
vm_stat_type
Definition: pdp11.vhd:447
mmu_mmr0_type
Definition: pdp11.vhd:529
slv4 := "0111" c_lunit_func_mov
Definition: pdp11.vhd:921
mmu_moni_type
Definition: pdp11.vhd:512
slv16 := x"0060" rbaddr_dmpcnt_off
Definition: pdp11.vhd:131
slv4 := "0100" c_lunit_func_bis
Definition: pdp11.vhd:918
slv4 := "0011" c_fork_opg_wdec
Definition: pdp11.vhd:346
slv3 := "111" c_aunit_ccmode_tst
Definition: pdp11.vhd:900
slv4 := "0101" c_fork_op_rts
Definition: pdp11.vhd:320
slv3 := "010" c_psr_func_wint
Definition: pdp11.vhd:839
mmu_mmr0_type :=( inst_compl=> '0', page_mode=> "00", page_num=> "000", others => '0') mmu_mmr0_init
Definition: pdp11.vhd:543
slv4 := "1000" c_cpurust_vecfet
Definition: pdp11.vhd:368
dpath_cntl_type
Definition: pdp11.vhd:176
cpuerr_type
Definition: pdp11.vhd:418
slv3 := "110" c_dpath_res_ireg
Definition: pdp11.vhd:249
integer range 1 downto 0 c_membe_rbf_be
Definition: pdp11.vhd:796
slv3 := "000" c_dpath_res_ounit
Definition: pdp11.vhd:243
integer := 2 c_stat_rbf_cpugo
Definition: pdp11.vhd:792
slv2 := "01" c_fork_srcr_inc
Definition: pdp11.vhd:329
slv4 := "0000" c_cpurust_init
Definition: pdp11.vhd:360
mmu_mmr1_type
Definition: pdp11.vhd:548
dm_stat_co_type :=( '0', '0', '0', '0', '0') dm_stat_co_init
Definition: pdp11.vhd:723
dm_stat_se_type :=( '0', '0', '0', '0', '0', '0', '0', '0',( others => '0')) dm_stat_se_init
Definition: pdp11.vhd:645
integer := 11 psw_ibf_rset
Definition: pdp11.vhd:159
em_mreq_type
Definition: pdp11.vhd:463
slv2 := "01" c_dpath_dtmp_psw
Definition: pdp11.vhd:239
integer := 5 conf_pri_pirq_5
Definition: pdp11.vhd:1438
slv2 := "01" c_munit_func_div
Definition: pdp11.vhd:953
dm_stat_dp_type
Definition: pdp11.vhd:658
slv5 := "10001" c_cpfunc_wreg
Definition: pdp11.vhd:588
integer := 2 conf_pri_pirq_2
Definition: pdp11.vhd:1435
slv5 := "10011" c_cpfunc_wpsw
Definition: pdp11.vhd:590
slv16 := x"0050" rbaddr_dmhbpt_off
Definition: pdp11.vhd:130
slv2 := "01" c_psw_smode
Definition: pdp11.vhd:154
dm_stat_dp_type :=(( others => '0'), psw_init, '0',( others => '0'), '0',( others => '0'), '0',( others => '0'), '0',( others => '0'), '0',( others => '0'), '0',( others => '0'),( others => '0'), '0', '0') dm_stat_dp_init
Definition: pdp11.vhd:678
slv4 := "0010" c_fork_op_rtti
Definition: pdp11.vhd:317
cpuerr_type :=( others => '0') cpuerr_init
Definition: pdp11.vhd:427
integer := 6 c_ah_rbf_ena_22bit
Definition: pdp11.vhd:785
slbit := '1' c_dpath_ddst_res
Definition: pdp11.vhd:236
slv5 := "01111" c_rbaddr_pc
Definition: pdp11.vhd:777
slv2 := "00" c_ounit_bsel_const
Definition: pdp11.vhd:866
integer := 0 c_snum_f_con
Definition: pdp11.vhd:652
integer range 7 downto 5 psw_ibf_pri
Definition: pdp11.vhd:160
psw_type
Definition: pdp11.vhd:133
slv4 := "0111" c_fork_op_mcc
Definition: pdp11.vhd:322
slv3 := "000" c_fork_opa_jsr
Definition: pdp11.vhd:353
slv3 := "100" c_aunit_ccmode_neg
Definition: pdp11.vhd:897
slv5 := "00100" c_rbaddr_al
Definition: pdp11.vhd:765
mmu_stat_type
Definition: pdp11.vhd:502
integer := 1 conf_pri_pirq_1
Definition: pdp11.vhd:1434
mmu_mmr3_type
Definition: pdp11.vhd:560
slv4 := "0100" c_cpurust_step
Definition: pdp11.vhd:364
slv2 := "01" c_ounit_bsel_vmdout
Definition: pdp11.vhd:867
slv3 := "100" c_fork_opa_mfp_mem
Definition: pdp11.vhd:357
slv2 := "00" c_munit_func_mul
Definition: pdp11.vhd:952
slv4 := "1001" c_cpurust_recser
Definition: pdp11.vhd:369
slv3 := "011" c_psr_func_wrti
Definition: pdp11.vhd:840
slv2 := "10" c_ounit_bsel_ireg6
Definition: pdp11.vhd:868
slv2 := "10" c_fork_srcr_dec
Definition: pdp11.vhd:330
slv4 := "1001" c_fork_op_mark
Definition: pdp11.vhd:324
slv2 := "00" c_dpath_vmaddr_dsrc
Definition: pdp11.vhd:252
slv5 := "00001" c_cpfunc_start
Definition: pdp11.vhd:579
slv2 := "11" c_fork_srcr_ind
Definition: pdp11.vhd:331
slv4 := "0001" c_cpurust_halt
Definition: pdp11.vhd:361
Definition: rblib.vhd:32
std_logic_vector( 19 downto 0) slv20
Definition: slvtypes.vhd:53
std_logic_vector( 21 downto 1) slv22_1
Definition: slvtypes.vhd:69
std_logic_vector( 3 downto 0) slv4
Definition: slvtypes.vhd:36
std_logic_vector( 4 downto 0) slv5
Definition: slvtypes.vhd:37
std_logic_vector( 6 downto 0) slv7
Definition: slvtypes.vhd:39
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( 8 downto 0) slv9
Definition: slvtypes.vhd:41
std_logic_vector( 31 downto 0) slv32
Definition: slvtypes.vhd:59
std_logic_vector( 15 downto 0) slv16
Definition: slvtypes.vhd:48
std_logic slbit
Definition: slvtypes.vhd:30
std_logic_vector( 17 downto 1) slv18_1
Definition: slvtypes.vhd:68
std_logic_vector( 7 downto 0) slv8
Definition: slvtypes.vhd:40
std_logic_vector( 1 downto 0) slv2
Definition: slvtypes.vhd:34
std_logic_vector slv
Definition: slvtypes.vhd:31