我无法找到我做错的事情,如果有人可以帮助我,我会很高兴...
entity fsmF is
port(S, R : in std_logic;
Q : out std_logic);
end;
architecture FSM_beh of fsmF is
begin
process(S, R)
begin
if S = '0' then
Q <= '0';
else
if (R'event and R = '1' and S = '1') then -- <= ERROR
Q <= '0';
else
Q <= '1';
end if;
end if;
end process;
end FSM_beh;
答案 0 :(得分:1)
if
部分根据Q
(R'event
and R = '1'
)和rising_edge(R)
的上升沿指定S = '1'
的分配,这是正常的。
问题在于,else
部分会在没有Q
时分配给else
R和S的上升沿是&#39; 1&#39;。 Q
部分需要一个可以的电路
更新过程灵敏度列表中的信号事件,然后检查
除了上升沿之外的其他事件,以便在这些事件中分配if (R'event and R = '1') then -- <= ERROR
...
end if;
。
因此请将上升沿检测作为单独的条件和其他条件 下面,如:
{{1}}