mirror of
https://github.com/wfjm/w11.git
synced 2026-04-28 12:58:31 +00:00
minor changes
- asm-11/lib/vec_devcatch.mac: use tti,tto instead of dlr,dlt
- ibdr_pc11: set rbuf.[rp]size0 (like dl11)
- librw11/Rw11Cntl{LP11,PC11}: use RtraceTools::
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
-- $Id: ibdr_pc11.vhd 1137 2019-04-24 10:49:19Z mueller $
|
||||
-- $Id: ibdr_pc11.vhd 1140 2019-04-28 10:21:21Z mueller $
|
||||
--
|
||||
-- Copyright 2009-2019 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
--
|
||||
@@ -27,6 +27,7 @@
|
||||
--
|
||||
-- Revision History:
|
||||
-- Date Rev Version Comment
|
||||
-- 2019-04-27 1140 1.4.2 set rbuf.[rp]size0
|
||||
-- 2019-04-24 1137 1.4.1 add rcsr.ir,ique,iack and pcsr.ir fields (rem)
|
||||
-- 2019-04-06 1126 1.4 for pc11_buf compat: pbuf.pval in bit 15 and 8;
|
||||
-- move rbusy reporting from pbuf to rbuf register
|
||||
@@ -84,6 +85,9 @@ architecture syn of ibdr_pc11 is
|
||||
constant rcsr_ibf_renb : integer := 0;
|
||||
|
||||
constant rbuf_ibf_rbusy : integer := 15;
|
||||
constant rbuf_ibf_rsize0: integer := 8;
|
||||
constant rbuf_ibf_psize0: integer := 0;
|
||||
subtype rbuf_ibf_data is integer range 7 downto 0;
|
||||
|
||||
constant pcsr_ibf_perr : integer := 15;
|
||||
constant pcsr_ibf_prdy : integer := 7;
|
||||
@@ -234,9 +238,8 @@ begin
|
||||
|
||||
when ibaddr_rbuf => -- RBUF -- reader data buffer --------
|
||||
|
||||
idout(r.rbuf'range) := r.rbuf;
|
||||
|
||||
if IB_MREQ.racc = '0' then -- cpu ---------------------
|
||||
idout(rbuf_ibf_data) := r.rbuf;
|
||||
if ibreq = '1' then -- !! PC11 is unusual !!
|
||||
n.rdone := '0'; -- *any* read or write will clear done
|
||||
n.rbuf := (others=>'0'); -- and the reader buffer
|
||||
@@ -244,9 +247,11 @@ begin
|
||||
end if;
|
||||
|
||||
else -- rri ---------------------
|
||||
idout(rbuf_ibf_rbusy) := r.rbusy;
|
||||
idout(rbuf_ibf_rbusy) := r.rbusy;
|
||||
idout(rbuf_ibf_rsize0) := r.rdone; -- rbuf occupied when rdone=1
|
||||
idout(rbuf_ibf_psize0) := not r.prdy; -- pbuf empty when prdy=1
|
||||
if ibw0 = '1' then
|
||||
n.rbuf := IB_MREQ.din(n.rbuf'range);
|
||||
n.rbuf := IB_MREQ.din(rbuf_ibf_data);
|
||||
n.rbusy := '0';
|
||||
n.rdone := '1';
|
||||
if r.rie = '1' then -- if interrupts on
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- $Id: ibdr_pc11_buf.vhd 1137 2019-04-24 10:49:19Z mueller $
|
||||
-- $Id: ibdr_pc11_buf.vhd 1139 2019-04-27 14:00:38Z mueller $
|
||||
--
|
||||
-- Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
--
|
||||
@@ -169,7 +169,7 @@ begin
|
||||
EMPTY => RBUF_EMPTY,
|
||||
FULL => RBUF_FULL,
|
||||
SIZE => RBUF_SIZE
|
||||
);
|
||||
);
|
||||
|
||||
PBUF : fifo_simple_dram
|
||||
generic map (
|
||||
@@ -185,7 +185,7 @@ begin
|
||||
EMPTY => PBUF_EMPTY,
|
||||
FULL => PBUF_FULL,
|
||||
SIZE => PBUF_SIZE
|
||||
);
|
||||
);
|
||||
|
||||
RRLIM : ib_rlim_slv
|
||||
port map (
|
||||
@@ -197,7 +197,7 @@ begin
|
||||
STOP => BRESET,
|
||||
DONE => open,
|
||||
BUSY => RRLIM_BUSY
|
||||
);
|
||||
);
|
||||
|
||||
PRLIM : ib_rlim_slv
|
||||
port map (
|
||||
@@ -217,10 +217,10 @@ begin
|
||||
if BRESET = '1' then -- BRESET is 1 for system and ibus reset
|
||||
R_REGS <= regs_init; --
|
||||
if RESET = '0' then -- if RESET=0 we do just an ibus reset
|
||||
R_REGS.rerr <= N_REGS.rerr; -- keep RERR flag
|
||||
R_REGS.rrlim <= N_REGS.rrlim; -- keep RRLIM flag
|
||||
R_REGS.perr <= N_REGS.perr; -- keep PERR flag
|
||||
R_REGS.prlim <= N_REGS.prlim; -- keep PRLIM flag
|
||||
R_REGS.rerr <= N_REGS.rerr; -- keep RERR flag
|
||||
R_REGS.rrlim <= N_REGS.rrlim; -- keep RRLIM field
|
||||
R_REGS.perr <= N_REGS.perr; -- keep PERR flag
|
||||
R_REGS.prlim <= N_REGS.prlim; -- keep PRLIM field
|
||||
end if;
|
||||
else
|
||||
R_REGS <= N_REGS;
|
||||
@@ -228,7 +228,7 @@ begin
|
||||
end if;
|
||||
end process proc_regs;
|
||||
|
||||
proc_next : process (R_REGS, IB_MREQ, EI_ACK_PTR, EI_ACK_PTP, RESET, BRESET,
|
||||
proc_next : process (R_REGS, IB_MREQ, EI_ACK_PTR, EI_ACK_PTP, RESET,
|
||||
RBUF_DO, RBUF_EMPTY, RBUF_FULL, RBUF_SIZE, RRLIM_BUSY,
|
||||
PBUF_DO, PBUF_EMPTY, PBUF_FULL, PBUF_SIZE, PRLIM_BUSY)
|
||||
variable r : regs_type := regs_init;
|
||||
@@ -448,7 +448,7 @@ begin
|
||||
when others => null;
|
||||
end case;
|
||||
|
||||
end if;
|
||||
end if;
|
||||
|
||||
-- other state changes
|
||||
if EI_ACK_PTR = '1' then
|
||||
@@ -477,8 +477,8 @@ begin
|
||||
n.prdy := '0'; -- clear ready
|
||||
n.pintreq := '0'; -- clear interrupt
|
||||
else -- not busy and fifo not full
|
||||
n.prdy := '1'; -- set done
|
||||
if r.prdy='0' and -- done going 0->1
|
||||
n.prdy := '1'; -- set ready
|
||||
if r.prdy='0' and -- ready going 0->1
|
||||
r.perr='0' and r.pie='1' then -- and err=0 and interrupt enabled
|
||||
n.pintreq := '1'; -- request interrupt
|
||||
end if;
|
||||
|
||||
Reference in New Issue
Block a user