Line 1... |
Line 1... |
-- $Id: tb_pdp11core.vhd 352 2011-01-02 13:01:37Z mueller $
|
-- $Id: tb_pdp11core.vhd 427 2011-11-19 21:04:11Z mueller $
|
--
|
--
|
-- Copyright 2006-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
-- Copyright 2006-2011 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 44... |
Line 44... |
-- 2007-10-07 88 _ssim 0.26 8.1 I24 xc3s1000 c:fail -> blog_webpack
|
-- 2007-10-07 88 _ssim 0.26 8.1 I24 xc3s1000 c:fail -> blog_webpack
|
-- 2007-10-07 88 - 0.26 - - c:ok
|
-- 2007-10-07 88 - 0.26 - - c:ok
|
--
|
--
|
-- Revision History:
|
-- Revision History:
|
-- Date Rev Version Comment
|
-- Date Rev Version Comment
|
|
-- 2011-11-18 427 1.3.2 now numeric_std clean
|
-- 2011-01-02 352 1.3.1 rename .cpmon->.rlmon
|
-- 2011-01-02 352 1.3.1 rename .cpmon->.rlmon
|
-- 2010-12-30 351 1.3 rename tb_pdp11_core -> tb_pdp11core
|
-- 2010-12-30 351 1.3 rename tb_pdp11_core -> tb_pdp11core
|
-- 2010-06-20 308 1.2.2 add wibrb, ribr, wibr commands for ibr accesses
|
-- 2010-06-20 308 1.2.2 add wibrb, ribr, wibr commands for ibr accesses
|
-- 2010-06-20 307 1.2.1 add CP_ADDR_racc, CP_ADDR_be to tbd interface
|
-- 2010-06-20 307 1.2.1 add CP_ADDR_racc, CP_ADDR_be to tbd interface
|
-- 2010-06-13 305 1.2 add CP_CNTL_rnum and CP_ADDR_...; emulate old
|
-- 2010-06-13 305 1.2 add CP_CNTL_rnum and CP_ADDR_...; emulate old
|
Line 75... |
Line 76... |
-- 2007-09-02 79 1.0 Initial version
|
-- 2007-09-02 79 1.0 Initial version
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
|
|
library ieee;
|
library ieee;
|
use ieee.std_logic_1164.all;
|
use ieee.std_logic_1164.all;
|
use ieee.std_logic_arith.all;
|
use ieee.numeric_std.all;
|
use ieee.std_logic_textio.all;
|
use ieee.std_logic_textio.all;
|
use std.textio.all;
|
use std.textio.all;
|
|
|
use work.slvtypes.all;
|
use work.slvtypes.all;
|
use work.simlib.all;
|
use work.simlib.all;
|
Line 351... |
Line 352... |
xmicmd := "wmi";
|
xmicmd := "wmi";
|
next file_loop;
|
next file_loop;
|
|
|
when "rr| " => -- rr[0-7]
|
when "rr| " => -- rr[0-7]
|
ifunc := c_cpfunc_rreg;
|
ifunc := c_cpfunc_rreg;
|
irnum := conv_std_logic_vector(rind, 3);
|
irnum := slv(to_unsigned(rind, 3));
|
readtagval2_ea(iline, "d", ichk, idin, imsk, 8);
|
readtagval2_ea(iline, "d", ichk, idin, imsk, 8);
|
|
|
when "wr| " => -- wr[0-7]
|
when "wr| " => -- wr[0-7]
|
ifunc := c_cpfunc_wreg;
|
ifunc := c_cpfunc_wreg;
|
irnum := conv_std_logic_vector(rind, 3);
|
irnum := slv(to_unsigned(rind, 3));
|
readoct_ea(iline, idin);
|
readoct_ea(iline, idin);
|
|
|
-- Note: there are no field definitions for wal, wah, wibrb because
|
-- Note: there are no field definitions for wal, wah, wibrb because
|
-- there is no corresponding cp command. Therefore the
|
-- there is no corresponding cp command. Therefore the
|
-- rbus field definitions are used here
|
-- rbus field definitions are used here
|
Line 522... |
Line 523... |
dcycle := dcycle + 1;
|
dcycle := dcycle + 1;
|
idelta := idelta - 1;
|
idelta := idelta - 1;
|
end loop;
|
end loop;
|
|
|
if imemi then -- rmi or wmi seen ? then inc ar
|
if imemi then -- rmi or wmi seen ? then inc ar
|
r_addr := unsigned(r_addr) + 1;
|
r_addr := slv(unsigned(r_addr) + 1);
|
end if;
|
end if;
|
|
|
write(oline, dcycle, right, 4);
|
write(oline, dcycle, right, 4);
|
write(oline, string'(" "));
|
write(oline, string'(" "));
|
if ireq then
|
if ireq then
|
Line 635... |
Line 636... |
|
|
proc_moni: process
|
proc_moni: process
|
begin
|
begin
|
|
|
loop
|
loop
|
wait until CLK'event and CLK='1';
|
wait until rising_edge(CLK);
|
wait for c2out_time;
|
wait for c2out_time;
|
|
|
R_WAITOK <= '0';
|
R_WAITOK <= '0';
|
if R_WAITCMD = '1' then
|
if R_WAITCMD = '1' then
|
if CP_STAT_cmdack = '1' then
|
if CP_STAT_cmdack = '1' then
|