微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 FLAGS 寄存器在尽可能简单 (SAP) 计算机中实现外部中断

如何解决使用 FLAGS 寄存器在尽可能简单 (SAP) 计算机中实现外部中断

我目前正在学习基础计算机体系结构,我正在努力实现一个处理外部中断的 FLAGS 寄存器。假设寄存器的输出连接到控制器以处理在中断时执行的指令。根据输出信号,当将信号驱动到控制器时,输出显示冲突信号。我认为这是因为外部中断驱动信号到 flag_data(3) 中断标志​​和 flag_out

为了提供更多上下文,一旦中断发生在执行周期(50ns),控制器应该将进位标志设置为 1,即 flag_data(0)。信号是电平触发的,控制器和数据路径操作分别发生在时钟的下降沿和上升沿。在计算机周期的这部分,外部中断只操作标志信号(中断和进位标志)的 MSB 和 LSB。此外,Lf 引脚用于更新 flag_reg 信号,而新的标志输出在上升沿提供,因为它仅在数据路径执行期间(时钟的上升沿)驱动新信号。

library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    
    entity flags is
        Port ( 
           clk : in STD_LOGIC;
           i : in STD_LOGIC; --interrupt pin
           Lf : in STD_LOGIC; -- update flags register
           flag_in : in STD_LOGIC_VECTOR (3 downto 0); -- input from ALU
           flag_out : out STD_LOGIC_VECTOR (3 downto 0)); -- output to controller
end flags;

architecture Behavioral of flags is
    signal flag_reg : STD_LOGIC_VECTOR (3 downto 0) := (others => '0');
begin

    flag_reg <= flag_in when Lf = '1';

    process(clk,i) is
    begin
        flag_reg(3) <= i;
        if rising_edge(clk) then flag_out <= flag_reg; end if;
    end process;

end Behavioral;

Output signals for datapath simulation where flag register output is conflicted during external interrupt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。