Line 1... |
Line 1... |
-- $Id: pdp11_sequencer.vhd 427 2011-11-19 21:04:11Z mueller $
|
-- $Id: pdp11_sequencer.vhd 556 2014-05-29 19:01:39Z mueller $
|
--
|
--
|
-- Copyright 2006-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
-- Copyright 2006-2014 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
|
-- Software Foundation, either version 2, or at your option any later version.
|
-- Software Foundation, either version 2, or at your option any later version.
|
--
|
--
|
Line 16... |
Line 16... |
-- Description: pdp11: CPU sequencer
|
-- Description: pdp11: CPU sequencer
|
--
|
--
|
-- Dependencies: ib_sel
|
-- Dependencies: ib_sel
|
-- Test bench: tb/tb_pdp11_core (implicit)
|
-- Test bench: tb/tb_pdp11_core (implicit)
|
-- Target Devices: generic
|
-- Target Devices: generic
|
-- Tool versions: xst 8.2, 9.1, 9.2, 12.1, 13.1; ghdl 0.18-0.29
|
-- Tool versions: xst 8.2-14.7; viv 2014.1; ghdl 0.18-0.29
|
--
|
--
|
-- Revision History:
|
-- Revision History:
|
-- Date Rev Version Comment
|
-- Date Rev Version Comment
|
|
-- 2014-04-20 554 1.5 now vivado compatible (add dummy assigns in procs)
|
-- 2011-11-18 427 1.4.2 now numeric_std clean
|
-- 2011-11-18 427 1.4.2 now numeric_std clean
|
-- 2010-10-23 335 1.4.1 use ib_sel
|
-- 2010-10-23 335 1.4.1 use ib_sel
|
-- 2010-10-17 333 1.4 use ibus V2 interface
|
-- 2010-10-17 333 1.4 use ibus V2 interface
|
-- 2010-09-18 300 1.3.2 rename (adlm)box->(oalm)unit
|
-- 2010-09-18 300 1.3.2 rename (adlm)box->(oalm)unit
|
-- 2010-06-20 307 1.3.1 rename cpacc to cacc in vm_cntl_type
|
-- 2010-06-20 307 1.3.1 rename cpacc to cacc in vm_cntl_type
|
Line 410... |
Line 411... |
|
|
procedure do_memcheck(nstate : inout state_type;
|
procedure do_memcheck(nstate : inout state_type;
|
nstatus : inout cpustat_type;
|
nstatus : inout cpustat_type;
|
mok : out boolean) is
|
mok : out boolean) is
|
begin
|
begin
|
|
nstate := nstate; -- dummy to add driver (vivado)
|
|
nstatus := nstatus; -- "
|
mok := false;
|
mok := false;
|
if VM_STAT.ack = '1' then
|
if VM_STAT.ack = '1' then
|
mok := true;
|
mok := true;
|
nstatus.trap_mmu := VM_STAT.trap_mmu;
|
nstatus.trap_mmu := VM_STAT.trap_mmu;
|
if R_CPUERR.ysv = '0' then -- ysv trap when cpuerr not yet set
|
if R_CPUERR.ysv = '0' then -- ysv trap when cpuerr not yet set
|
Line 427... |
Line 430... |
procedure do_const_opsize(ndpcntl : inout dpath_cntl_type;
|
procedure do_const_opsize(ndpcntl : inout dpath_cntl_type;
|
bytop : in slbit;
|
bytop : in slbit;
|
isdef : in slbit;
|
isdef : in slbit;
|
regnum : in slv3) is
|
regnum : in slv3) is
|
begin
|
begin
|
|
ndpcntl := ndpcntl; -- dummy to add driver (vivado)
|
if bytop='0' or isdef='1' or
|
if bytop='0' or isdef='1' or
|
regnum=c_gpr_pc or regnum=c_gpr_sp then
|
regnum=c_gpr_pc or regnum=c_gpr_sp then
|
ndpcntl.ounit_const := "000000010";
|
ndpcntl.ounit_const := "000000010";
|
else
|
else
|
ndpcntl.ounit_const := "000000001";
|
ndpcntl.ounit_const := "000000001";
|
Line 501... |
Line 505... |
nstatus : inout cpustat_type;
|
nstatus : inout cpustat_type;
|
ndpcntl : inout dpath_cntl_type;
|
ndpcntl : inout dpath_cntl_type;
|
nvmcntl : inout vm_cntl_type;
|
nvmcntl : inout vm_cntl_type;
|
nmmumoni : inout mmu_moni_type) is
|
nmmumoni : inout mmu_moni_type) is
|
begin
|
begin
|
|
ndpcntl := ndpcntl; -- dummy to add driver (vivado)
|
|
nvmcntl := nvmcntl; -- "
|
nmmumoni.idone := '1';
|
nmmumoni.idone := '1';
|
if unsigned(INT_PRI) > unsigned(PSW.pri) then
|
if unsigned(INT_PRI) > unsigned(PSW.pri) then
|
nstate := s_idle;
|
nstate := s_idle;
|
elsif R_STATUS.trap_mmu='1' or nstatus.trap_mmu='1' or
|
elsif R_STATUS.trap_mmu='1' or nstatus.trap_mmu='1' or
|
R_STATUS.trap_ysv='1' or nstatus.trap_ysv='1' or
|
R_STATUS.trap_ysv='1' or nstatus.trap_ysv='1' or
|