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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.7/] [rtl/] [w11a/] [pdp11_sys70.vhd] - Blame information for rev 40

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 wfjm
-- $Id: pdp11_sys70.vhd 677 2015-05-09 21:52:32Z mueller $
2 2 wfjm
--
3 30 wfjm
-- Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4 2 wfjm
--
5
-- This program is free software; you may redistribute and/or modify it under
6
-- the terms of the GNU General Public License as published by the Free
7
-- Software Foundation, either version 2, or at your option any later version.
8
--
9
-- This program is distributed in the hope that it will be useful, but
10
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
-- for complete details.
13
--
14
------------------------------------------------------------------------------
15
-- Module Name:    pdp11_sys70 - syn
16 30 wfjm
-- Description:    pdp11: 11/70 system - single core +rbus,debug,cache
17 2 wfjm
--
18 30 wfjm
-- Dependencies:   w11a/pdp11_core_rbus
19
--                 w11a/pdp11_core
20
--                 w11a/pdp11_cache
21
--                 w11a/pdp11_mem70
22
--                 ibus/ibd_ibmon
23
--                 ibus/ib_sres_or_3
24
--                 w11a/pdp11_tmu_sb           [sim only]
25
--
26 2 wfjm
-- Test bench:     tb/tb_pdp11_core (implicit)
27
-- Target Devices: generic
28 30 wfjm
-- Tool versions:  ise 14.7; viv 2014.4; ghdl 0.31
29 8 wfjm
--
30 2 wfjm
-- Revision History: 
31
-- Date         Rev Version  Comment
32 30 wfjm
-- 2015-05-09   677   1.1    start/stop/suspend overhaul; reset overhaul
33
-- 2015-05-01   672   1.0    Initial version (extracted from sys_w11a_*)
34 2 wfjm
------------------------------------------------------------------------------
35
 
36
library ieee;
37
use ieee.std_logic_1164.all;
38 13 wfjm
use ieee.numeric_std.all;
39 2 wfjm
 
40
use work.slvtypes.all;
41 30 wfjm
use work.rblib.all;
42 2 wfjm
use work.pdp11.all;
43
use work.iblib.all;
44
use work.sys_conf.all;
45
 
46
-- ----------------------------------------------------------------------------
47
 
48 30 wfjm
entity pdp11_sys70 is                   -- 11/70 system 1 core +rbus,debug,cache
49 2 wfjm
  port (
50
    CLK : in slbit;                     -- clock
51 30 wfjm
    RESET : in slbit;                   -- reset
52
    RB_MREQ : in rb_mreq_type;          -- rbus request  (slave)
53
    RB_SRES : out rb_sres_type;         -- rbus response
54
    RB_STAT : out slv4;                 -- rbus status flags
55
    RB_LAM_CPU : out slbit;             -- rbus lam (cpu)
56
    GRESET : out slbit;                 -- general reset (from rbus)
57
    CRESET : out slbit;                 -- cpu reset     (from cp)
58
    BRESET : out slbit;                 -- bus reset     (from cp or cpu)
59
    CP_STAT : out cp_stat_type;         -- console port status
60
    EI_PRI  : in slv3;                  -- external interrupt priority
61
    EI_VECT : in slv9_2;                -- external interrupt vector
62
    EI_ACKM : out slbit;                -- external interrupt acknowledge
63
    ITIMER : out slbit;                 -- instruction timer
64
    IB_MREQ : out ib_mreq_type;         -- ibus request  (master)
65
    IB_SRES : in ib_sres_type;          -- ibus response
66
    MEM_REQ : out slbit;                -- memory: request
67
    MEM_WE : out slbit;                 -- memory: write enable
68
    MEM_BUSY : in slbit;                -- memory: controller busy
69
    MEM_ACK_R : in slbit;               -- memory: acknowledge read
70
    MEM_ADDR : out slv20;               -- memory: address
71
    MEM_BE : out slv4;                  -- memory: byte enable
72
    MEM_DI : out slv32;                 -- memory: data in  (memory view)
73
    MEM_DO : in slv32;                  -- memory: data out (memory view)
74
    DM_STAT_DP : out dm_stat_dp_type    -- debug and monitor status - dpath
75 2 wfjm
  );
76
end pdp11_sys70;
77
 
78
architecture syn of pdp11_sys70 is
79
 
80 30 wfjm
  signal RB_SRES_CPU   : rb_sres_type := rb_sres_init;
81 2 wfjm
 
82 30 wfjm
  signal CP_CNTL : cp_cntl_type := cp_cntl_init;
83
  signal CP_ADDR : cp_addr_type := cp_addr_init;
84
  signal CP_DIN  : slv16 := (others=>'0');
85
  signal CP_STAT_L : cp_stat_type := cp_stat_init;
86
  signal CP_DOUT : slv16 := (others=>'0');
87 2 wfjm
 
88 30 wfjm
  signal EM_MREQ : em_mreq_type := em_mreq_init;
89
  signal EM_SRES : em_sres_type := em_sres_init;
90
 
91
  signal GRESET_L : slbit := '0';
92
  signal CRESET_L : slbit := '0';
93
  signal BRESET_L : slbit := '0';
94 2 wfjm
 
95 30 wfjm
  signal HM_ENA      : slbit := '0';
96
  signal MEM70_FMISS : slbit := '0';
97
  signal CACHE_FMISS : slbit := '0';
98
  signal CACHE_CHIT  : slbit := '0';
99 2 wfjm
 
100 30 wfjm
  signal DM_STAT_DP_L : dm_stat_dp_type := dm_stat_dp_init;
101
  signal DM_STAT_VM   : dm_stat_vm_type := dm_stat_vm_init;
102
  signal DM_STAT_CO   : dm_stat_co_type := dm_stat_co_init;
103
  signal DM_STAT_SY   : dm_stat_sy_type := dm_stat_sy_init;
104
 
105
  signal IB_MREQ_M : ib_mreq_type := ib_mreq_init;
106
  signal IB_SRES_M : ib_sres_type := ib_sres_init;
107
  signal IB_SRES_MEM70 : ib_sres_type := ib_sres_init;
108
  signal IB_SRES_IBMON : ib_sres_type := ib_sres_init;
109
 
110
  constant rbaddr_ibus0 : slv16 := x"4000"; -- 4000/1000: 0100 xxxx xxxx xxxx
111
  constant rbaddr_core0 : slv16 := x"0000"; -- 0000/0020: 0000 0000 000x xxxx
112
 
113 2 wfjm
begin
114
 
115 30 wfjm
  RB2CP : pdp11_core_rbus
116
    generic map (
117
      RB_ADDR_CORE => rbaddr_core0,
118
      RB_ADDR_IBUS => rbaddr_ibus0)
119
    port map (
120
      CLK       => CLK,
121
      RESET     => RESET,
122
      RB_MREQ   => RB_MREQ,
123
      RB_SRES   => RB_SRES_CPU,
124
      RB_STAT   => RB_STAT,
125
      RB_LAM    => RB_LAM_CPU,
126
      GRESET    => GRESET_L,
127
      CP_CNTL   => CP_CNTL,
128
      CP_ADDR   => CP_ADDR,
129
      CP_DIN    => CP_DIN,
130
      CP_STAT   => CP_STAT_L,
131
      CP_DOUT   => CP_DOUT
132
    );
133 2 wfjm
 
134 30 wfjm
  W11A : pdp11_core
135
    port map (
136
      CLK       => CLK,
137
      RESET     => GRESET_L,
138
      CP_CNTL   => CP_CNTL,
139
      CP_ADDR   => CP_ADDR,
140
      CP_DIN    => CP_DIN,
141
      CP_STAT   => CP_STAT_L,
142
      CP_DOUT   => CP_DOUT,
143
      ESUSP_O   => open,
144
      ESUSP_I   => '0',
145
      ITIMER    => ITIMER,
146
      EBREAK    => '0',
147
      DBREAK    => '0',
148
      EI_PRI    => EI_PRI,
149
      EI_VECT   => EI_VECT,
150
      EI_ACKM   => EI_ACKM,
151
      EM_MREQ   => EM_MREQ,
152
      EM_SRES   => EM_SRES,
153
      CRESET    => CRESET_L,
154
      BRESET    => BRESET_L,
155
      IB_MREQ_M => IB_MREQ_M,
156
      IB_SRES_M => IB_SRES_M,
157
      DM_STAT_DP => DM_STAT_DP_L,
158
      DM_STAT_VM => DM_STAT_VM,
159
      DM_STAT_CO => DM_STAT_CO
160
    );
161 2 wfjm
 
162 30 wfjm
  CACHE: pdp11_cache
163
    port map (
164
      CLK       => CLK,
165
      GRESET    => GRESET_L,
166
      EM_MREQ   => EM_MREQ,
167
      EM_SRES   => EM_SRES,
168
      FMISS     => CACHE_FMISS,
169
      CHIT      => CACHE_CHIT,
170
      MEM_REQ   => MEM_REQ,
171
      MEM_WE    => MEM_WE,
172
      MEM_BUSY  => MEM_BUSY,
173
      MEM_ACK_R => MEM_ACK_R,
174
      MEM_ADDR  => MEM_ADDR,
175
      MEM_BE    => MEM_BE,
176
      MEM_DI    => MEM_DI,
177
      MEM_DO    => MEM_DO
178
    );
179 2 wfjm
 
180 30 wfjm
  MEM70: pdp11_mem70
181
    port map (
182
      CLK         => CLK,
183
      CRESET      => BRESET_L,
184
      HM_ENA      => HM_ENA,
185
      HM_VAL      => CACHE_CHIT,
186
      CACHE_FMISS => MEM70_FMISS,
187
      IB_MREQ     => IB_MREQ_M,
188
      IB_SRES     => IB_SRES_MEM70
189
    );
190 2 wfjm
 
191 30 wfjm
  HM_ENA      <= EM_SRES.ack_r or EM_SRES.ack_w;
192
  CACHE_FMISS <= MEM70_FMISS or sys_conf_cache_fmiss;
193
 
194
  IBMON : if sys_conf_ibmon_awidth > 0 generate
195
  begin
196
    I0 : ibd_ibmon
197
      generic map (
198
        IB_ADDR => slv(to_unsigned(8#160000#,16)),
199
        AWIDTH  => sys_conf_ibmon_awidth)
200
      port map (
201
        CLK         => CLK,
202
        RESET       => RESET,
203
        IB_MREQ     => IB_MREQ_M,
204
        IB_SRES     => IB_SRES_IBMON,
205
        IB_SRES_SUM => DM_STAT_VM.ibsres
206
      );
207
  end generate IBMON;
208 2 wfjm
 
209 30 wfjm
  IB_SRES_OR : ib_sres_or_3
210
    port map (
211
      IB_SRES_1  => IB_SRES_MEM70,
212
      IB_SRES_2  => IB_SRES,
213
      IB_SRES_3  => IB_SRES_IBMON,
214
      IB_SRES_OR => IB_SRES_M
215
    );
216 2 wfjm
 
217 30 wfjm
  RB_SRES    <= RB_SRES_CPU;        -- currently single rbus device
218
  IB_MREQ    <= IB_MREQ_M;          -- setup output signals
219
  GRESET     <= GRESET_L;
220
  CRESET     <= CRESET_L;
221
  BRESET     <= BRESET_L;
222
  CP_STAT    <= CP_STAT_L;
223
  DM_STAT_DP <= DM_STAT_DP_L;
224
 
225
-- synthesis translate_off
226
  DM_STAT_SY.emmreq <= EM_MREQ;
227
  DM_STAT_SY.emsres <= EM_SRES;
228
  DM_STAT_SY.chit   <= CACHE_CHIT;
229
 
230
  TMU : pdp11_tmu_sb
231
    generic map (
232
      ENAPIN => 13)
233
    port map (
234
      CLK        => CLK,
235
      DM_STAT_DP => DM_STAT_DP_L,
236
      DM_STAT_VM => DM_STAT_VM,
237
      DM_STAT_CO => DM_STAT_CO,
238
      DM_STAT_SY => DM_STAT_SY
239
    );
240
-- synthesis translate_on
241
 
242 2 wfjm
end syn;

powered by: WebSVN 2.1.0

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