Line 1... |
Line 1... |
-- $Id: pdp11_irq.vhd 314 2010-07-09 17:38:41Z mueller $
|
-- $Id: pdp11_irq.vhd 335 2010-10-24 22:24:23Z mueller $
|
--
|
--
|
-- Copyright 2007-2008 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
-- Copyright 2007-2010 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 13... |
Line 13... |
--
|
--
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
-- Module Name: pdp11_irq - syn
|
-- Module Name: pdp11_irq - syn
|
-- Description: pdp11: interrupt requester
|
-- Description: pdp11: interrupt requester
|
--
|
--
|
-- Dependencies: -
|
-- 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.1, 8.2, 9.1, 9.2; ghdl 0.18-0.25
|
-- Tool versions: xst 8.1, 8.2, 9.1, 9.2, 12.1; ghdl 0.18-0.29
|
|
--
|
-- Revision History:
|
-- Revision History:
|
-- Date Rev Version Comment
|
-- Date Rev Version Comment
|
|
-- 2010-10-23 335 1.2.1 use ib_sel
|
|
-- 2010-10-17 333 1.2 use ibus V2 interface
|
-- 2008-08-22 161 1.1.4 use iblib
|
-- 2008-08-22 161 1.1.4 use iblib
|
-- 2008-04-25 138 1.1.3 use BRESET to clear pirq
|
-- 2008-04-25 138 1.1.3 use BRESET to clear pirq
|
-- 2008-01-06 111 1.1.2 rename signal EI_ACK->EI_ACKM (master ack)
|
-- 2008-01-06 111 1.1.2 rename signal EI_ACK->EI_ACKM (master ack)
|
-- 2008-01-05 110 1.1.1 rename IB_MREQ(ena->req) SRES(sel->ack, hold->busy)
|
-- 2008-01-05 110 1.1.1 rename IB_MREQ(ena->req) SRES(sel->ack, hold->busy)
|
-- 2007-12-30 107 1.1 use IB_MREQ/IB_SRES interface now
|
-- 2007-12-30 107 1.1 use IB_MREQ/IB_SRES interface now
|
Line 71... |
Line 74... |
-- attribute PRIORITY_EXTRACT : string;
|
-- attribute PRIORITY_EXTRACT : string;
|
-- attribute PRIORITY_EXTRACT of PI_PRI : signal is "force";
|
-- attribute PRIORITY_EXTRACT of PI_PRI : signal is "force";
|
|
|
begin
|
begin
|
|
|
proc_ibsel: process (IB_MREQ)
|
SEL : ib_sel
|
variable ipirq : slbit := '0';
|
generic map (
|
begin
|
IB_ADDR => ibaddr_pirq)
|
ipirq := '0';
|
port map (
|
if IB_MREQ.req='1' and IB_MREQ.addr=ibaddr_pirq(12 downto 1) then
|
CLK => CLK,
|
ipirq := '1';
|
IB_MREQ => IB_MREQ,
|
end if;
|
SEL => IBSEL_PIRQ
|
IBSEL_PIRQ <= ipirq;
|
);
|
IB_SRES.ack <= ipirq;
|
|
IB_SRES.busy <= '0';
|
|
end process proc_ibsel;
|
|
|
|
proc_ibdout : process (IBSEL_PIRQ, R_PIRQ, PI_PRI)
|
proc_ibres : process (IBSEL_PIRQ, IB_MREQ, R_PIRQ, PI_PRI)
|
variable pirqout : slv16 := (others=>'0');
|
variable idout : slv16 := (others=>'0');
|
begin
|
begin
|
pirqout := (others=>'0');
|
idout := (others=>'0');
|
if IBSEL_PIRQ = '1' then
|
if IBSEL_PIRQ = '1' then
|
pirqout(pirq_ubf_pir) := R_PIRQ;
|
idout(pirq_ubf_pir) := R_PIRQ;
|
pirqout(pirq_ubf_pia_h) := PI_PRI;
|
idout(pirq_ubf_pia_h) := PI_PRI;
|
pirqout(pirq_ubf_pia_l) := PI_PRI;
|
idout(pirq_ubf_pia_l) := PI_PRI;
|
end if;
|
end if;
|
IB_SRES.dout <= pirqout;
|
IB_SRES.dout <= idout;
|
end process proc_ibdout;
|
IB_SRES.ack <= IBSEL_PIRQ and (IB_MREQ.re or IB_MREQ.we); -- ack all
|
|
IB_SRES.busy <= '0';
|
|
end process proc_ibres;
|
|
|
proc_pirq : process (CLK)
|
proc_pirq : process (CLK)
|
begin
|
begin
|
if CLK'event and CLK='1' then
|
if CLK'event and CLK='1' then
|
if BRESET = '1' then
|
if BRESET = '1' then
|