如果我在 VHDL 中有一个非时钟驱动的实体,而其他实体是时钟驱动的,会发生什么?

问题描述 投票:0回答:1

我正在做一个关于使用 VHDL 创建加密块的作业。 在执行此操作时,我需要创建几个基本实体,如异或或复用器,它们是用过程描述的,并且时钟信号不包含在敏感列表中。 以 MUX 为例:

process(S,D0,D1)
begin 
    case S is
        when '0' =>
            O <= D0;
        when '1' =>
            O <= D1;
        when others =>
            O <= (others => 'X');
    end case;
end process;

同时,其他一些模块使用clk作为驱动信号: 作为注册者:

process (Clock)
begin
    if (Clock='1' and Clock'EVENT )then
        if (ENABLE='1') then
            Q <= D;
        end if;
    end if;
end process;

这是合法的吗?我认为这是我们在实际设计中不想要的东西,我是对的吗?

可以通过模拟和综合。但这样做可以吗?

vhdl
1个回答
0
投票

这是完全合法的。

由时钟驱动的组件是同步电路。根据链接的维基百科页面:

[...]同步电路是一种数字电路,其中存储元件的状态变化通过时钟信号同步。

没有时钟的组件是异步电路。根据链接的维基百科页面:

异步电路不需要全局时钟,只要输入改变,电路的状态就会改变。

您可以在设计中混合使用两种电路。实际上,如果您将同步电路视为有限状态机,那么组合逻辑就是异步电路。

在时钟驱动设计的示例中,触发器的输入端有一个多路复用器,用于存储输出值

Q
。它通过选择输入
D
Q
和(回读)
ENABLE
之间切换。

© www.soinside.com 2019 - 2024. All rights reserved.