📄 interrupt.vhd
字号:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
Entity interrupt is
Port(
LINT,READY,LCLK,RST : IN STD_LOGIC;
CCS,ADS,BLAST,WR : OUT STD_LOGIC;
LINT1,LINT2,CTL : OUT STD_LOGIC;
LBE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
LD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0);
LA : OUT STD_LOGIC_VECTOR(31 DOWNTO 2);
COUNT1 : OUT STD_LOGIC_VECTOR( 27 DOWNTO 0)
);
END INTERRUPT;
ARCHITECTURE A OF INTERRUPT IS
SIGNAL EN,tLINT0,tLINT1 : STD_LOGIC;
SIGNAL COUNT : STD_LOGIC_VECTOR( 27 DOWNTO 0);
SIGNAL tDATA : STD_LOGIC_VECTOR(31 DOWNTO 0);
BEGIN
COUNT1<=COUNT;
PROCESS(RST,LCLK)
BEGIN
IF RST='0' THEN
EN<='0';CCS<='1';ADS<='1';BLAST<='1';WR<='1';
CTL<='1';LBE(3 DOWNTO 0)<="0000";tLINT0<='1';tLINT1<='1';
COUNT<="0000000000000000000000000000";tDATA<="00000000000000000000000000000000";
ELSIF LCLK'EVENT AND LCLK='1' THEN
COUNT<=COUNT+1;
IF LINT='0' THEN
tLINT0<='0'; END IF;
IF tLINT0='0' THEN
-- COUNT<=COUNT+1;
IF COUNT="0000000000000000000000000001" THEN
CCS<='0';ADS<='0';WR<='0';BLAST<='0';
LA(31 DOWNTO 2)<="000000000000000000000011100000"; END IF;--E0
IF COUNT="0000000000000000000000000010" THEN
CCS<='1';ADS<='1';WR<='0';BLAST<='0';END IF;
IF READY='0' THEN
tDATA<= LD;tLINT0<='1';WR<='1';COUNT<="0000000000000000000000000000"; END IF;
END IF;
IF COUNT="0010111100000000000000000001" THEN tLINT1<='0';END IF;
IF tLINT1='0' THEN
COUNT<=COUNT+1;
IF COUNT="0000000000000000000000000001" THEN
CCS<='0';ADS<='0';WR<='1';BLAST<='0';
LA(31 DOWNTO 2)<="000000000000000000000011100000";END IF;--E0
IF COUNT="0000000000000000000000000010" THEN
CCS<='1';ADS<='1';BLAST<='0';LD<= tDATA;END IF;
IF READY='0' THEN
BLAST<='1';tLINT1<='1';COUNT<="0000000000000000000000000000"; END IF;
END IF;
--IF tDATA="00000000000000000000000000000001" THEN
END IF;
END PROCESS;
END A;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -