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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.74/] [rtl/] [w11a/] [pdp11_core_rbus.vhd] - Diff between revs 30 and 34

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 30 Rev 34
Line 1... Line 1...
-- $Id: pdp11_core_rbus.vhd 677 2015-05-09 21:52:32Z mueller $
-- $Id: pdp11_core_rbus.vhd 700 2015-07-12 19:28:31Z mueller $
--
--
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
--
-- This program is free software; you may redistribute and/or modify it under
-- This program is free software; you may redistribute and/or modify it under
-- the terms of the GNU General Public License as published by the Free
-- the terms of the GNU General Public License as published by the Free
Line 25... Line 25...
-- Date         Rev  ise         Target      flop lutl lutm slic t peri
-- Date         Rev  ise         Target      flop lutl lutm slic t peri
-- 2014-12-21   591 14.7  131013 xc6slx16-2    52  118    0   58 s  4.9
-- 2014-12-21   591 14.7  131013 xc6slx16-2    52  118    0   58 s  4.9
--
--
-- Revision History: -
-- Revision History: -
-- Date         Rev Version  Comment
-- Date         Rev Version  Comment
 
-- 2015-07-10   700   1.5.1  add cpuact logic, redefine lam as cpuact 1->0
-- 2015-05-09   677   1.5    start/stop/suspend overhaul; reset overhaul
-- 2015-05-09   677   1.5    start/stop/suspend overhaul; reset overhaul
-- 2014-12-26   621   1.4    use full size 4k word ibus window
-- 2014-12-26   621   1.4    use full size 4k word ibus window
-- 2014-12-21   617   1.3.1  use separate RB_STAT bits for cmderr and cmdmerr
-- 2014-12-21   617   1.3.1  use separate RB_STAT bits for cmderr and cmdmerr
-- 2014-09-05   591   1.3    use new rlink v4 iface and 4 bit STAT
-- 2014-09-05   591   1.3    use new rlink v4 iface and 4 bit STAT
-- 2014-08-15   583   1.2    rb_mreq addr now 16 bit
-- 2014-08-15   583   1.2    rb_mreq addr now 16 bit
Line 125... Line 126...
 
 
 
 
architecture syn of pdp11_core_rbus is
architecture syn of pdp11_core_rbus is
 
 
  type state_type is (
  type state_type is (
    s_idle,                             -- s_idle: wait for rp access
    s_idle,                             -- s_idle: wait for rbus access
    s_cpwait,                           -- s_cpwait: wait for cp port ack
    s_cpwait,                           -- s_cpwait: wait for cp port ack
    s_cpstep                            -- s_cpstep: wait for cpustep done
    s_cpstep                            -- s_cpstep: wait for cpustep done
  );
  );
 
 
  type regs_type is record
  type regs_type is record
Line 137... Line 138...
    rbselc : slbit;                     -- rbus select for core
    rbselc : slbit;                     -- rbus select for core
    rbseli : slbit;                     -- rbus select for ibus
    rbseli : slbit;                     -- rbus select for ibus
    rbinit : slbit;                     -- rbus init seen (1 cycle pulse)
    rbinit : slbit;                     -- rbus init seen (1 cycle pulse)
    cpreq : slbit;                      -- cp request flag
    cpreq : slbit;                      -- cp request flag
    cpfunc : slv5;                      -- cp function
    cpfunc : slv5;                      -- cp function
    cpugo_1 : slbit;                    -- prev cycle cpugo
    cpuact_1 : slbit;                   -- prev cycle cpuact
    addr : slv22_1;                     -- address register
    addr : slv22_1;                     -- address register
    ena_22bit : slbit;                  -- 22bit enable
    ena_22bit : slbit;                  -- 22bit enable
    ena_ubmap : slbit;                  -- ubmap enable
    ena_ubmap : slbit;                  -- ubmap enable
    membe : slv2;                       -- memory write byte enables
    membe : slv2;                       -- memory write byte enables
    membestick : slbit;                 -- memory write byte enables sticky
    membestick : slbit;                 -- memory write byte enables sticky
Line 153... Line 154...
    s_idle,                             -- state
    s_idle,                             -- state
    '0','0',                            -- rbselc,rbseli
    '0','0',                            -- rbselc,rbseli
    '0',                                -- rbinit
    '0',                                -- rbinit
    '0',                                -- cpreq
    '0',                                -- cpreq
    (others=>'0'),                      -- cpfunc
    (others=>'0'),                      -- cpfunc
    '0',                                -- cpugo_1
    '0',                                -- cpuact_1
    (others=>'0'),                      -- addr
    (others=>'0'),                      -- addr
    '0','0',                            -- ena_22bit, ena_ubmap
    '0','0',                            -- ena_22bit, ena_ubmap
    "11",'0',                           -- membe,membestick
    "11",'0',                           -- membe,membestick
    '0','0'                             -- doinc, waitstep
    '0','0'                             -- doinc, waitstep
  );
  );
Line 190... Line 191...
    variable irb_err  : slbit := '0';
    variable irb_err  : slbit := '0';
    variable irb_dout : slv16 := (others=>'0');
    variable irb_dout : slv16 := (others=>'0');
    variable irb_lam  : slbit := '0';
    variable irb_lam  : slbit := '0';
    variable irbena   : slbit := '0';
    variable irbena   : slbit := '0';
 
 
 
    variable icpuact  : slbit := '0';
    variable icpreq    : slbit := '0';
    variable icpreq    : slbit := '0';
    variable icpaddr   : cp_addr_type := cp_addr_init;
    variable icpaddr   : cp_addr_type := cp_addr_init;
 
 
  begin
  begin
 
 
Line 405... Line 407...
      icpaddr.racc      := '1';
      icpaddr.racc      := '1';
      icpaddr.ena_22bit := '0';
      icpaddr.ena_22bit := '0';
      icpaddr.ena_ubmap := '0';
      icpaddr.ena_ubmap := '0';
    end if;
    end if;
 
 
    n.cpugo_1 := CP_STAT.cpugo;         -- delay cpugo 
    icpuact := CP_STAT.cpugo and not CP_STAT.suspint;
    if CP_STAT.cpugo='0' and r.cpugo_1='1' then  -- cpugo 1 -> 0 transition ?
    n.cpuact_1 := icpuact;              -- delay cpuact
 
    if (r.cpuact_1='1' and icpuact='0') then       -- cpuact 1 -> 0
      irb_lam := '1';
      irb_lam := '1';
    end if;
    end if;
 
 
    N_REGS <= n;
    N_REGS <= n;
 
 

powered by: WebSVN 2.1.0

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