1 |
32 |
wfjm |
-- $Id: sys_w11a_n3.vhd 692 2015-06-21 11:53:24Z mueller $
|
2 |
15 |
wfjm |
--
|
3 |
29 |
wfjm |
-- Copyright 2011-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
4 |
15 |
wfjm |
--
|
5 |
|
|
-- This program is free software; you may redistribute and/or modify it under
|
6 |
|
|
-- the terms of the GNU General Public License as published by the Free
|
7 |
|
|
-- Software Foundation, either version 2, or at your option any later version.
|
8 |
|
|
--
|
9 |
|
|
-- This program is distributed in the hope that it will be useful, but
|
10 |
|
|
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
|
11 |
|
|
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
12 |
|
|
-- for complete details.
|
13 |
|
|
--
|
14 |
|
|
------------------------------------------------------------------------------
|
15 |
|
|
-- Module Name: sys_w11a_n3 - syn
|
16 |
|
|
-- Description: w11a test design for nexys3
|
17 |
|
|
--
|
18 |
22 |
wfjm |
-- Dependencies: vlib/xlib/s6_cmt_sfs
|
19 |
15 |
wfjm |
-- vlib/genlib/clkdivce
|
20 |
|
|
-- bplib/bpgen/bp_rs232_2l4l_iob
|
21 |
20 |
wfjm |
-- bplib/fx2rlink/rlink_sp1c_fx2
|
22 |
30 |
wfjm |
-- w11a/pdp11_sys70
|
23 |
|
|
-- ibus/ibdr_maxisys
|
24 |
15 |
wfjm |
-- bplib/nxcramlib/nx_cram_memctl_as
|
25 |
29 |
wfjm |
-- bplib/fx2rlink/ioleds_sp1c_fx2
|
26 |
30 |
wfjm |
-- w11a/pdp11_hio70
|
27 |
|
|
-- bplib/bpgen/sn_humanio_rbus
|
28 |
|
|
-- vlib/rbus/rb_sres_or_2
|
29 |
15 |
wfjm |
--
|
30 |
|
|
-- Test bench: tb/tb_sys_w11a_n3
|
31 |
|
|
--
|
32 |
|
|
-- Target Devices: generic
|
33 |
25 |
wfjm |
-- Tool versions: xst 13.1-14.7; ghdl 0.29-0.31
|
34 |
15 |
wfjm |
--
|
35 |
|
|
-- Synthesized (xst):
|
36 |
|
|
-- Date Rev ise Target flop lutl lutm slic t peri
|
37 |
32 |
wfjm |
-- 2015-06-21 692 14.7 131013 xc6slx16-2 2192 4518 161 1584 ok: rhrp fixes
|
38 |
31 |
wfjm |
-- 2015-06-04 686 14.7 131013 xc6slx16-2 2189 4492 161 1543 ok: +TM11 67%
|
39 |
|
|
-- 2015-05-14 680 14.7 131013 xc6slx16-2 2120 4443 161 1546 ok: +ibmon 67%
|
40 |
30 |
wfjm |
-- 2015-04-06 664 14.7 131013 xc6slx16-2 1991 4350 167 1489 ok: +RHRP 65%
|
41 |
|
|
-- 2015-02-21 649 14.7 131013 xc6slx16-2 1819 3905 160 1380 ok: +RL11
|
42 |
28 |
wfjm |
-- 2014-12-22 619 14.7 131013 xc6slx16-2 1742 3767 150 1350 ok: +rbmon
|
43 |
27 |
wfjm |
-- 2014-12-20 614 14.7 131013 xc6slx16-2 1640 3692 150 1297 ok: -RL11,rlv4
|
44 |
25 |
wfjm |
-- 2014-06-08 561 14.7 131013 xc6slx16-2 1531 3500 142 1165 ok: +RL11
|
45 |
|
|
-- 2014-05-29 556 14.7 131013 xc6slx16-2 1459 3342 128 1154 ok:
|
46 |
20 |
wfjm |
-- 2013-04-21 509 13.3 O76d xc6slx16-2 1516 3274 140 1184 ok: now + FX2 !
|
47 |
16 |
wfjm |
-- 2011-12-18 440 13.1 O40d xc6slx16-2 1441 3161 96 1084 ok: LP+PC+DL+II
|
48 |
15 |
wfjm |
-- 2011-11-20 430 13.1 O40d xc6slx16-2 1412 3206 84 1063 ok: LP+PC+DL+II
|
49 |
|
|
--
|
50 |
|
|
-- Revision History:
|
51 |
|
|
-- Date Rev Version Comment
|
52 |
30 |
wfjm |
-- 2015-05-09 677 2.1 start/stop/suspend overhaul; reset overhaul
|
53 |
|
|
-- 2015-05-01 672 2.0 use pdp11_sys70 and pdp11_hio70
|
54 |
|
|
-- 2015-04-24 668 1.8.3 added ibd_ibmon
|
55 |
|
|
-- 2015-04-11 666 1.8.2 rearrange XON handling
|
56 |
29 |
wfjm |
-- 2015-02-21 649 1.8.1 use ioleds_sp1c,pdp11_(statleds,ledmux,dspmux)
|
57 |
|
|
-- 2015-02-15 647 1.8 drop bram and minisys options
|
58 |
28 |
wfjm |
-- 2014-12-24 620 1.7.2 relocate ibus window and hio rbus address
|
59 |
|
|
-- 2014-12-22 619 1.7.1 add rbus monitor rbd_rbmon
|
60 |
27 |
wfjm |
-- 2014-08-28 588 1.7 use new rlink v4 iface generics and 4 bit STAT
|
61 |
|
|
-- 2014-08-15 583 1.6 rb_mreq addr now 16 bit
|
62 |
22 |
wfjm |
-- 2013-10-06 538 1.5 pll support, use clksys_vcodivide ect
|
63 |
20 |
wfjm |
-- 2013-04-21 509 1.4 added fx2 (cuff) support
|
64 |
16 |
wfjm |
-- 2011-12-18 440 1.0.4 use rlink_sp1c
|
65 |
15 |
wfjm |
-- 2011-12-04 435 1.0.3 increase ATOWIDTH 6->7 (saw i/o timeouts on wblks)
|
66 |
|
|
-- 2011-11-26 433 1.0.2 use nx_cram_(dummy|memctl_as) now
|
67 |
|
|
-- 2011-11-23 432 1.0.1 fixup PPCM handling
|
68 |
|
|
-- 2011-11-20 430 1.0 Initial version (derived from sys_w11a_n2)
|
69 |
|
|
------------------------------------------------------------------------------
|
70 |
|
|
--
|
71 |
|
|
-- w11a test design for nexys3
|
72 |
|
|
-- w11a + rlink + serport
|
73 |
|
|
--
|
74 |
|
|
-- Usage of Nexys 3 Switches, Buttons, LEDs:
|
75 |
|
|
--
|
76 |
29 |
wfjm |
-- SWI(7:6): no function (only connected to sn_humanio_rbus)
|
77 |
|
|
-- (5:4): select DSP
|
78 |
|
|
-- 00 abclkdiv & abclkdiv_f
|
79 |
|
|
-- 01 PC
|
80 |
|
|
-- 10 DISPREG
|
81 |
|
|
-- 11 DR emulation
|
82 |
|
|
-- (3): select LED display
|
83 |
|
|
-- 0 overall status
|
84 |
|
|
-- 1 DR emulation
|
85 |
20 |
wfjm |
-- (2) 0 -> int/ext RS242 port for rlink
|
86 |
|
|
-- 1 -> use USB interface for rlink
|
87 |
29 |
wfjm |
-- (1): 1 enable XON
|
88 |
|
|
-- (0): 0 -> main board RS232 port
|
89 |
15 |
wfjm |
-- 1 -> Pmod B/top RS232 port
|
90 |
|
|
--
|
91 |
29 |
wfjm |
-- LEDs if SWI(3) = 1
|
92 |
|
|
-- (7:0) DR emulation; shows R0(lower 8 bits) during wait like 11/45+70
|
93 |
|
|
--
|
94 |
|
|
-- LEDs if SWI(3) = 0
|
95 |
|
|
-- (7) MEM_ACT_W
|
96 |
|
|
-- (6) MEM_ACT_R
|
97 |
|
|
-- (5) cmdbusy (all rlink access, mostly rdma)
|
98 |
|
|
-- (4:0) if cpugo=1 show cpu mode activity
|
99 |
16 |
wfjm |
-- (4) kernel mode, pri>0
|
100 |
|
|
-- (3) kernel mode, pri=0
|
101 |
|
|
-- (2) kernel mode, wait
|
102 |
|
|
-- (1) supervisor mode
|
103 |
15 |
wfjm |
-- (0) user mode
|
104 |
|
|
-- if cpugo=0 shows cpurust
|
105 |
29 |
wfjm |
-- (4) '1'
|
106 |
15 |
wfjm |
-- (3:0) cpurust code
|
107 |
|
|
--
|
108 |
20 |
wfjm |
-- DP(3:0) shows IO activity
|
109 |
|
|
-- if SWI(2)=0 (serport)
|
110 |
|
|
-- (3): not SER_MONI.txok (shows tx back preasure)
|
111 |
|
|
-- (2): SER_MONI.txact (shows tx activity)
|
112 |
|
|
-- (1): not SER_MONI.rxok (shows rx back preasure)
|
113 |
|
|
-- (0): SER_MONI.rxact (shows rx activity)
|
114 |
|
|
-- if SWI(2)=1 (fx2-usb)
|
115 |
|
|
-- (3): RB_SRES.busy (shows rbus back preasure)
|
116 |
|
|
-- (2): RLB_TXBUSY (shows tx back preasure)
|
117 |
|
|
-- (1): RLB_TXENA (shows tx activity)
|
118 |
|
|
-- (0): RLB_RXVAL (shows rx activity)
|
119 |
16 |
wfjm |
--
|
120 |
15 |
wfjm |
|
121 |
|
|
library ieee;
|
122 |
|
|
use ieee.std_logic_1164.all;
|
123 |
|
|
use ieee.numeric_std.all;
|
124 |
|
|
|
125 |
|
|
use work.slvtypes.all;
|
126 |
|
|
use work.xlib.all;
|
127 |
|
|
use work.genlib.all;
|
128 |
19 |
wfjm |
use work.serportlib.all;
|
129 |
15 |
wfjm |
use work.rblib.all;
|
130 |
|
|
use work.rlinklib.all;
|
131 |
20 |
wfjm |
use work.fx2lib.all;
|
132 |
|
|
use work.fx2rlinklib.all;
|
133 |
15 |
wfjm |
use work.bpgenlib.all;
|
134 |
19 |
wfjm |
use work.bpgenrbuslib.all;
|
135 |
15 |
wfjm |
use work.nxcramlib.all;
|
136 |
|
|
use work.iblib.all;
|
137 |
|
|
use work.ibdlib.all;
|
138 |
|
|
use work.pdp11.all;
|
139 |
|
|
use work.sys_conf.all;
|
140 |
|
|
|
141 |
|
|
-- ----------------------------------------------------------------------------
|
142 |
|
|
|
143 |
|
|
entity sys_w11a_n3 is -- top level
|
144 |
20 |
wfjm |
-- implements nexys3_fusp_cuff_aif
|
145 |
15 |
wfjm |
port (
|
146 |
|
|
I_CLK100 : in slbit; -- 100 MHz clock
|
147 |
|
|
I_RXD : in slbit; -- receive data (board view)
|
148 |
|
|
O_TXD : out slbit; -- transmit data (board view)
|
149 |
|
|
I_SWI : in slv8; -- n3 switches
|
150 |
|
|
I_BTN : in slv5; -- n3 buttons
|
151 |
|
|
O_LED : out slv8; -- n3 leds
|
152 |
|
|
O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low)
|
153 |
|
|
O_SEG_N : out slv8; -- 7 segment disp: segments (act.low)
|
154 |
|
|
O_MEM_CE_N : out slbit; -- cram: chip enable (act.low)
|
155 |
|
|
O_MEM_BE_N : out slv2; -- cram: byte enables (act.low)
|
156 |
|
|
O_MEM_WE_N : out slbit; -- cram: write enable (act.low)
|
157 |
|
|
O_MEM_OE_N : out slbit; -- cram: output enable (act.low)
|
158 |
|
|
O_MEM_ADV_N : out slbit; -- cram: address valid (act.low)
|
159 |
|
|
O_MEM_CLK : out slbit; -- cram: clock
|
160 |
|
|
O_MEM_CRE : out slbit; -- cram: command register enable
|
161 |
|
|
I_MEM_WAIT : in slbit; -- cram: mem wait
|
162 |
|
|
O_MEM_ADDR : out slv23; -- cram: address lines
|
163 |
|
|
IO_MEM_DATA : inout slv16; -- cram: data lines
|
164 |
|
|
O_PPCM_CE_N : out slbit; -- ppcm: ...
|
165 |
|
|
O_PPCM_RST_N : out slbit; -- ppcm: ...
|
166 |
|
|
O_FUSP_RTS_N : out slbit; -- fusp: rs232 rts_n
|
167 |
|
|
I_FUSP_CTS_N : in slbit; -- fusp: rs232 cts_n
|
168 |
|
|
I_FUSP_RXD : in slbit; -- fusp: rs232 rx
|
169 |
20 |
wfjm |
O_FUSP_TXD : out slbit; -- fusp: rs232 tx
|
170 |
|
|
I_FX2_IFCLK : in slbit; -- fx2: interface clock
|
171 |
|
|
O_FX2_FIFO : out slv2; -- fx2: fifo address
|
172 |
|
|
I_FX2_FLAG : in slv4; -- fx2: fifo flags
|
173 |
|
|
O_FX2_SLRD_N : out slbit; -- fx2: read enable (act.low)
|
174 |
|
|
O_FX2_SLWR_N : out slbit; -- fx2: write enable (act.low)
|
175 |
|
|
O_FX2_SLOE_N : out slbit; -- fx2: output enable (act.low)
|
176 |
|
|
O_FX2_PKTEND_N : out slbit; -- fx2: packet end (act.low)
|
177 |
|
|
IO_FX2_DATA : inout slv8 -- fx2: data lines
|
178 |
15 |
wfjm |
);
|
179 |
|
|
end sys_w11a_n3;
|
180 |
|
|
|
181 |
|
|
architecture syn of sys_w11a_n3 is
|
182 |
|
|
|
183 |
|
|
signal CLK : slbit := '0';
|
184 |
|
|
|
185 |
30 |
wfjm |
signal RESET : slbit := '0';
|
186 |
|
|
signal CE_USEC : slbit := '0';
|
187 |
|
|
signal CE_MSEC : slbit := '0';
|
188 |
|
|
|
189 |
15 |
wfjm |
signal RXD : slbit := '1';
|
190 |
|
|
signal TXD : slbit := '0';
|
191 |
|
|
signal RTS_N : slbit := '0';
|
192 |
|
|
signal CTS_N : slbit := '0';
|
193 |
|
|
|
194 |
30 |
wfjm |
signal RB_MREQ : rb_mreq_type := rb_mreq_init;
|
195 |
|
|
signal RB_SRES : rb_sres_type := rb_sres_init;
|
196 |
|
|
signal RB_SRES_CPU : rb_sres_type := rb_sres_init;
|
197 |
|
|
signal RB_SRES_HIO : rb_sres_type := rb_sres_init;
|
198 |
15 |
wfjm |
|
199 |
|
|
signal RB_LAM : slv16 := (others=>'0');
|
200 |
27 |
wfjm |
signal RB_STAT : slv4 := (others=>'0');
|
201 |
30 |
wfjm |
|
202 |
20 |
wfjm |
signal RLB_MONI : rlb_moni_type := rlb_moni_init;
|
203 |
16 |
wfjm |
signal SER_MONI : serport_moni_type := serport_moni_init;
|
204 |
20 |
wfjm |
signal FX2_MONI : fx2ctl_moni_type := fx2ctl_moni_init;
|
205 |
15 |
wfjm |
|
206 |
30 |
wfjm |
signal GRESET : slbit := '0'; -- general reset (from rbus)
|
207 |
|
|
signal CRESET : slbit := '0'; -- cpu reset (from cp)
|
208 |
|
|
signal BRESET : slbit := '0'; -- bus reset (from cp or cpu)
|
209 |
|
|
signal ITIMER : slbit := '0';
|
210 |
15 |
wfjm |
|
211 |
|
|
signal EI_PRI : slv3 := (others=>'0');
|
212 |
|
|
signal EI_VECT : slv9_2 := (others=>'0');
|
213 |
|
|
signal EI_ACKM : slbit := '0';
|
214 |
|
|
|
215 |
30 |
wfjm |
signal CP_STAT : cp_stat_type := cp_stat_init;
|
216 |
|
|
signal DM_STAT_DP : dm_stat_dp_type := dm_stat_dp_init;
|
217 |
15 |
wfjm |
|
218 |
|
|
signal MEM_REQ : slbit := '0';
|
219 |
|
|
signal MEM_WE : slbit := '0';
|
220 |
|
|
signal MEM_BUSY : slbit := '0';
|
221 |
|
|
signal MEM_ACK_R : slbit := '0';
|
222 |
|
|
signal MEM_ACT_R : slbit := '0';
|
223 |
|
|
signal MEM_ACT_W : slbit := '0';
|
224 |
|
|
signal MEM_ADDR : slv20 := (others=>'0');
|
225 |
|
|
signal MEM_BE : slv4 := (others=>'0');
|
226 |
|
|
signal MEM_DI : slv32 := (others=>'0');
|
227 |
|
|
signal MEM_DO : slv32 := (others=>'0');
|
228 |
|
|
|
229 |
|
|
signal MEM_ADDR_EXT : slv22 := (others=>'0');
|
230 |
|
|
|
231 |
|
|
signal IB_MREQ : ib_mreq_type := ib_mreq_init;
|
232 |
30 |
wfjm |
signal IB_SRES_IBDR : ib_sres_type := ib_sres_init;
|
233 |
15 |
wfjm |
|
234 |
|
|
signal DISPREG : slv16 := (others=>'0');
|
235 |
29 |
wfjm |
signal STATLEDS : slv8 := (others=>'0');
|
236 |
|
|
signal ABCLKDIV : slv16 := (others=>'0');
|
237 |
15 |
wfjm |
|
238 |
30 |
wfjm |
signal SWI : slv8 := (others=>'0');
|
239 |
|
|
signal BTN : slv5 := (others=>'0');
|
240 |
|
|
signal LED : slv8 := (others=>'0');
|
241 |
|
|
signal DSP_DAT : slv16 := (others=>'0');
|
242 |
|
|
signal DSP_DP : slv4 := (others=>'0');
|
243 |
|
|
|
244 |
28 |
wfjm |
constant rbaddr_rbmon : slv16 := x"ffe8"; -- ffe8/0008: 1111 1111 1110 1xxx
|
245 |
|
|
constant rbaddr_hio : slv16 := x"fef0"; -- fef0/0004: 1111 1110 1111 00xx
|
246 |
15 |
wfjm |
|
247 |
|
|
begin
|
248 |
|
|
|
249 |
|
|
assert (sys_conf_clksys mod 1000000) = 0
|
250 |
|
|
report "assert sys_conf_clksys on MHz grid"
|
251 |
|
|
severity failure;
|
252 |
|
|
|
253 |
30 |
wfjm |
GEN_CLKSYS : s6_cmt_sfs -- clock generator -------------------
|
254 |
15 |
wfjm |
generic map (
|
255 |
22 |
wfjm |
VCO_DIVIDE => sys_conf_clksys_vcodivide,
|
256 |
|
|
VCO_MULTIPLY => sys_conf_clksys_vcomultiply,
|
257 |
|
|
OUT_DIVIDE => sys_conf_clksys_outdivide,
|
258 |
|
|
CLKIN_PERIOD => 10.0,
|
259 |
|
|
CLKIN_JITTER => 0.01,
|
260 |
|
|
STARTUP_WAIT => false,
|
261 |
|
|
GEN_TYPE => sys_conf_clksys_gentype)
|
262 |
15 |
wfjm |
port map (
|
263 |
|
|
CLKIN => I_CLK100,
|
264 |
|
|
CLKFX => CLK,
|
265 |
|
|
LOCKED => open
|
266 |
|
|
);
|
267 |
|
|
|
268 |
30 |
wfjm |
CLKDIV : clkdivce -- usec/msec clock divider -----------
|
269 |
15 |
wfjm |
generic map (
|
270 |
|
|
CDUWIDTH => 7,
|
271 |
|
|
USECDIV => sys_conf_clksys_mhz,
|
272 |
|
|
MSECDIV => 1000)
|
273 |
|
|
port map (
|
274 |
|
|
CLK => CLK,
|
275 |
|
|
CE_USEC => CE_USEC,
|
276 |
|
|
CE_MSEC => CE_MSEC
|
277 |
|
|
);
|
278 |
|
|
|
279 |
30 |
wfjm |
IOB_RS232 : bp_rs232_2l4l_iob -- serport iob/switch ----------------
|
280 |
15 |
wfjm |
port map (
|
281 |
|
|
CLK => CLK,
|
282 |
|
|
RESET => '0',
|
283 |
|
|
SEL => SWI(0),
|
284 |
|
|
RXD => RXD,
|
285 |
|
|
TXD => TXD,
|
286 |
|
|
CTS_N => CTS_N,
|
287 |
|
|
RTS_N => RTS_N,
|
288 |
|
|
I_RXD0 => I_RXD,
|
289 |
|
|
O_TXD0 => O_TXD,
|
290 |
|
|
I_RXD1 => I_FUSP_RXD,
|
291 |
|
|
O_TXD1 => O_FUSP_TXD,
|
292 |
|
|
I_CTS1_N => I_FUSP_CTS_N,
|
293 |
|
|
O_RTS1_N => O_FUSP_RTS_N
|
294 |
|
|
);
|
295 |
|
|
|
296 |
30 |
wfjm |
RLINK : rlink_sp1c_fx2 -- rlink for serport + fx2 -----------
|
297 |
15 |
wfjm |
generic map (
|
298 |
27 |
wfjm |
BTOWIDTH => 7, -- 128 cycles access timeout
|
299 |
|
|
RTAWIDTH => 12,
|
300 |
|
|
SYSID => (others=>'0'),
|
301 |
16 |
wfjm |
IFAWIDTH => 5, -- 32 word input fifo
|
302 |
|
|
OFAWIDTH => 5, -- 32 word output fifo
|
303 |
20 |
wfjm |
PETOWIDTH => sys_conf_fx2_petowidth,
|
304 |
|
|
CCWIDTH => sys_conf_fx2_ccwidth,
|
305 |
16 |
wfjm |
ENAPIN_RLMON => sbcntl_sbf_rlmon,
|
306 |
|
|
ENAPIN_RBMON => sbcntl_sbf_rbmon,
|
307 |
|
|
CDWIDTH => 13,
|
308 |
30 |
wfjm |
CDINIT => sys_conf_ser2rri_cdinit,
|
309 |
|
|
RBMON_AWIDTH => sys_conf_rbmon_awidth,
|
310 |
|
|
RBMON_RBADDR => rbaddr_rbmon)
|
311 |
15 |
wfjm |
port map (
|
312 |
|
|
CLK => CLK,
|
313 |
|
|
CE_USEC => CE_USEC,
|
314 |
|
|
CE_MSEC => CE_MSEC,
|
315 |
|
|
CE_INT => CE_MSEC,
|
316 |
|
|
RESET => RESET,
|
317 |
16 |
wfjm |
ENAXON => SWI(1),
|
318 |
20 |
wfjm |
ENAFX2 => SWI(2),
|
319 |
15 |
wfjm |
RXSD => RXD,
|
320 |
|
|
TXSD => TXD,
|
321 |
|
|
CTS_N => CTS_N,
|
322 |
|
|
RTS_N => RTS_N,
|
323 |
|
|
RB_MREQ => RB_MREQ,
|
324 |
|
|
RB_SRES => RB_SRES,
|
325 |
|
|
RB_LAM => RB_LAM,
|
326 |
|
|
RB_STAT => RB_STAT,
|
327 |
|
|
RL_MONI => open,
|
328 |
20 |
wfjm |
RLB_MONI => RLB_MONI,
|
329 |
|
|
SER_MONI => SER_MONI,
|
330 |
|
|
FX2_MONI => FX2_MONI,
|
331 |
|
|
I_FX2_IFCLK => I_FX2_IFCLK,
|
332 |
|
|
O_FX2_FIFO => O_FX2_FIFO,
|
333 |
|
|
I_FX2_FLAG => I_FX2_FLAG,
|
334 |
|
|
O_FX2_SLRD_N => O_FX2_SLRD_N,
|
335 |
|
|
O_FX2_SLWR_N => O_FX2_SLWR_N,
|
336 |
|
|
O_FX2_SLOE_N => O_FX2_SLOE_N,
|
337 |
|
|
O_FX2_PKTEND_N => O_FX2_PKTEND_N,
|
338 |
|
|
IO_FX2_DATA => IO_FX2_DATA
|
339 |
15 |
wfjm |
);
|
340 |
|
|
|
341 |
30 |
wfjm |
SYS70 : pdp11_sys70 -- 1 cpu system ----------------------
|
342 |
15 |
wfjm |
port map (
|
343 |
30 |
wfjm |
CLK => CLK,
|
344 |
|
|
RESET => RESET,
|
345 |
|
|
RB_MREQ => RB_MREQ,
|
346 |
|
|
RB_SRES => RB_SRES_CPU,
|
347 |
|
|
RB_STAT => RB_STAT,
|
348 |
|
|
RB_LAM_CPU => RB_LAM(0),
|
349 |
|
|
GRESET => GRESET,
|
350 |
|
|
CRESET => CRESET,
|
351 |
|
|
BRESET => BRESET,
|
352 |
|
|
CP_STAT => CP_STAT,
|
353 |
|
|
EI_PRI => EI_PRI,
|
354 |
|
|
EI_VECT => EI_VECT,
|
355 |
|
|
EI_ACKM => EI_ACKM,
|
356 |
|
|
ITIMER => ITIMER,
|
357 |
|
|
IB_MREQ => IB_MREQ,
|
358 |
|
|
IB_SRES => IB_SRES_IBDR,
|
359 |
|
|
MEM_REQ => MEM_REQ,
|
360 |
|
|
MEM_WE => MEM_WE,
|
361 |
|
|
MEM_BUSY => MEM_BUSY,
|
362 |
|
|
MEM_ACK_R => MEM_ACK_R,
|
363 |
|
|
MEM_ADDR => MEM_ADDR,
|
364 |
|
|
MEM_BE => MEM_BE,
|
365 |
|
|
MEM_DI => MEM_DI,
|
366 |
|
|
MEM_DO => MEM_DO,
|
367 |
|
|
DM_STAT_DP => DM_STAT_DP
|
368 |
15 |
wfjm |
);
|
369 |
28 |
wfjm |
|
370 |
30 |
wfjm |
IBDR_SYS : ibdr_maxisys -- IO system -------------------------
|
371 |
15 |
wfjm |
port map (
|
372 |
30 |
wfjm |
CLK => CLK,
|
373 |
|
|
CE_USEC => CE_USEC,
|
374 |
|
|
CE_MSEC => CE_MSEC,
|
375 |
|
|
RESET => GRESET,
|
376 |
|
|
BRESET => BRESET,
|
377 |
|
|
ITIMER => ITIMER,
|
378 |
|
|
CPUSUSP => CP_STAT.cpususp,
|
379 |
|
|
RB_LAM => RB_LAM(15 downto 1),
|
380 |
|
|
IB_MREQ => IB_MREQ,
|
381 |
|
|
IB_SRES => IB_SRES_IBDR,
|
382 |
|
|
EI_ACKM => EI_ACKM,
|
383 |
|
|
EI_PRI => EI_PRI,
|
384 |
|
|
EI_VECT => EI_VECT,
|
385 |
|
|
DISPREG => DISPREG
|
386 |
15 |
wfjm |
);
|
387 |
30 |
wfjm |
|
388 |
29 |
wfjm |
MEM_ADDR_EXT <= "00" & MEM_ADDR; -- just use lower 4 MB (of 16 MB)
|
389 |
15 |
wfjm |
|
390 |
30 |
wfjm |
SRAM_CTL: nx_cram_memctl_as -- memory controller -----------------
|
391 |
29 |
wfjm |
generic map (
|
392 |
|
|
READ0DELAY => sys_conf_memctl_read0delay,
|
393 |
|
|
READ1DELAY => sys_conf_memctl_read1delay,
|
394 |
|
|
WRITEDELAY => sys_conf_memctl_writedelay)
|
395 |
|
|
port map (
|
396 |
|
|
CLK => CLK,
|
397 |
30 |
wfjm |
RESET => GRESET,
|
398 |
29 |
wfjm |
REQ => MEM_REQ,
|
399 |
|
|
WE => MEM_WE,
|
400 |
|
|
BUSY => MEM_BUSY,
|
401 |
|
|
ACK_R => MEM_ACK_R,
|
402 |
|
|
ACK_W => open,
|
403 |
|
|
ACT_R => MEM_ACT_R,
|
404 |
|
|
ACT_W => MEM_ACT_W,
|
405 |
|
|
ADDR => MEM_ADDR_EXT,
|
406 |
|
|
BE => MEM_BE,
|
407 |
|
|
DI => MEM_DI,
|
408 |
|
|
DO => MEM_DO,
|
409 |
|
|
O_MEM_CE_N => O_MEM_CE_N,
|
410 |
|
|
O_MEM_BE_N => O_MEM_BE_N,
|
411 |
|
|
O_MEM_WE_N => O_MEM_WE_N,
|
412 |
|
|
O_MEM_OE_N => O_MEM_OE_N,
|
413 |
|
|
O_MEM_ADV_N => O_MEM_ADV_N,
|
414 |
|
|
O_MEM_CLK => O_MEM_CLK,
|
415 |
|
|
O_MEM_CRE => O_MEM_CRE,
|
416 |
|
|
I_MEM_WAIT => I_MEM_WAIT,
|
417 |
|
|
O_MEM_ADDR => O_MEM_ADDR,
|
418 |
|
|
IO_MEM_DATA => IO_MEM_DATA
|
419 |
|
|
);
|
420 |
15 |
wfjm |
|
421 |
29 |
wfjm |
O_PPCM_CE_N <= '1'; -- keep parallel PCM memory disabled
|
422 |
|
|
O_PPCM_RST_N <= '1'; --
|
423 |
15 |
wfjm |
|
424 |
30 |
wfjm |
LED_IO : ioleds_sp1c_fx2 -- hio leds from serport or fx2 ------
|
425 |
29 |
wfjm |
port map (
|
426 |
|
|
CLK => CLK,
|
427 |
|
|
CE_USEC => CE_USEC,
|
428 |
30 |
wfjm |
RESET => GRESET,
|
429 |
20 |
wfjm |
ENAFX2 => SWI(2),
|
430 |
|
|
RB_SRES => RB_SRES,
|
431 |
|
|
RLB_MONI => RLB_MONI,
|
432 |
|
|
SER_MONI => SER_MONI,
|
433 |
|
|
IOLEDS => DSP_DP
|
434 |
|
|
);
|
435 |
29 |
wfjm |
|
436 |
30 |
wfjm |
ABCLKDIV <= SER_MONI.abclkdiv(11 downto 0) & '0' & SER_MONI.abclkdiv_f;
|
437 |
|
|
|
438 |
|
|
HIO70 : pdp11_hio70 -- hio from sys70 --------------------
|
439 |
|
|
generic map (
|
440 |
|
|
LWIDTH => LED'length,
|
441 |
|
|
DCWIDTH => 2)
|
442 |
29 |
wfjm |
port map (
|
443 |
30 |
wfjm |
SEL_LED => SWI(3),
|
444 |
|
|
SEL_DSP => SWI(5 downto 4),
|
445 |
29 |
wfjm |
MEM_ACT_R => MEM_ACT_R,
|
446 |
|
|
MEM_ACT_W => MEM_ACT_W,
|
447 |
|
|
CP_STAT => CP_STAT,
|
448 |
|
|
DM_STAT_DP => DM_STAT_DP,
|
449 |
30 |
wfjm |
ABCLKDIV => ABCLKDIV,
|
450 |
|
|
DISPREG => DISPREG,
|
451 |
|
|
LED => LED,
|
452 |
|
|
DSP_DAT => DSP_DAT
|
453 |
29 |
wfjm |
);
|
454 |
30 |
wfjm |
|
455 |
|
|
HIO : sn_humanio_rbus -- hio manager -----------------------
|
456 |
29 |
wfjm |
generic map (
|
457 |
30 |
wfjm |
BWIDTH => 5,
|
458 |
|
|
DEBOUNCE => sys_conf_hio_debounce,
|
459 |
|
|
RB_ADDR => rbaddr_hio)
|
460 |
29 |
wfjm |
port map (
|
461 |
30 |
wfjm |
CLK => CLK,
|
462 |
|
|
RESET => RESET,
|
463 |
|
|
CE_MSEC => CE_MSEC,
|
464 |
|
|
RB_MREQ => RB_MREQ,
|
465 |
|
|
RB_SRES => RB_SRES_HIO,
|
466 |
|
|
SWI => SWI,
|
467 |
|
|
BTN => BTN,
|
468 |
|
|
LED => LED,
|
469 |
|
|
DSP_DAT => DSP_DAT,
|
470 |
|
|
DSP_DP => DSP_DP,
|
471 |
|
|
I_SWI => I_SWI,
|
472 |
|
|
I_BTN => I_BTN,
|
473 |
|
|
O_LED => O_LED,
|
474 |
|
|
O_ANO_N => O_ANO_N,
|
475 |
|
|
O_SEG_N => O_SEG_N
|
476 |
29 |
wfjm |
);
|
477 |
20 |
wfjm |
|
478 |
30 |
wfjm |
RB_SRES_OR : rb_sres_or_2 -- rbus or ---------------------------
|
479 |
29 |
wfjm |
port map (
|
480 |
30 |
wfjm |
RB_SRES_1 => RB_SRES_CPU,
|
481 |
|
|
RB_SRES_2 => RB_SRES_HIO,
|
482 |
|
|
RB_SRES_OR => RB_SRES
|
483 |
29 |
wfjm |
);
|
484 |
15 |
wfjm |
|
485 |
|
|
end syn;
|