VHDL - 如何检测std_logic_vector上的更改?

xx7*_*aBs 2 vhdl

我有一个std_logic_vector,我需要知道它何时发生了一些变化.到目前为止我写了这个:

process (cp, l1)
begin
    if rising_edge(cp) then
        rL1 <= l1;
    end if;
end process;
tickL1 <= rL1 xor l1;
Run Code Online (Sandbox Code Playgroud)

rL1是l1的延迟版本,l1是我正在检查更改的std_logic_vector.问题是xor返回std_logic_vector,但我只需要0或1.我怎么能得到它?

Pau*_*l S 9

为什么每个人都对XOR有所了解?

changed <= '0' when rL1 = l1 else '1';
Run Code Online (Sandbox Code Playgroud)

  • @AlehDouhi你认为平等比较会合成什么?可能是XOR和OR减少.所以你可能会得到同样的东西,但你可能会得到一些你没想过的更小,更快的方法.可读代码的规则1,说明您的意思,并在必要时进行优化.快速代码的规则1,说出你的意思,不要将编译器/合成器限制为一个(并且只有一个)实现. (3认同)