7

我正在学习 VHDL,我正在尝试从示例、语法指南和实验中学习。

我不太明白的一件事是为什么您要提供不止一种架构。例如,这个示例 MUX 代码

architecture behv1 of Mux is
begin
    process(I3,I2,I1,I0,S)
    begin

        -- use case statement
        case S is
        when "00" =>    O <= I0;
        when "01" =>    O <= I1;
        when "10" =>    O <= I2;
        when "11" =>    O <= I3;
        when others =>  O <= "ZZZ";
    end case;

    end process;
end behv1;

architecture behv2 of Mux is
begin

    -- use when.. else statement
    O <=    I0 when S="00" else
        I1 when S="01" else
        I2 when S="10" else
        I3 when S="11" else
        "ZZZ";

end behv2;

它是有目的的,还是只是为了举例?

另外,不确定这是属于这里还是属于 Electronics.SE,所以我想先在这里尝试。

4

3 回答 3

7

尽管该特定示例似乎只是为了示例,但您需要为某些设计使用不同的体系结构有几个原因。

当您尝试模拟整个 SoC 设计的另一个(不相关)部分时,通常会做的一件事是出于性能原因提供 IP 设计的黑盒模型。

或者,您可能拥有允许更快仿真时间的更高级别的 IP 模型,以及用于综合的模型。更高级别的模型通常用于处理器内核,因为在验证设计的其余部分时通常不需要模拟整个内核。

另一个可能的原因是在 IP 设计中选择性地具有不同的行为,以便在将 IP 集成到 SoC 设计中时可以实例化略有不同的版本。例如,一种架构可能旨在用于一个时钟域操作,而另一种架构可能在两个不同的时钟域之间进行同步。

于 2011-04-02T19:22:26.023 回答
2

设计师可以以不同的方式使用架构。

为了我:

  • 实体与所需的特定功能相关联。
  • 架构描述了该特定功能的实现细节。因此,如果您需要以不同的方式描述相同的功能(出于任何原因,其他人已经提到了很多),那么您可以拥有多种架构。

我回避使用架构来实现需要相同 I/O 的不同功能。也就是说,在使用实体时,无论我选择哪种架构,我都希望实体在功能上以相同的方式运行(我说功能上是因为可能存在时序差异,例如,如果一个架构模型放置在芯片上)。架构选择更多地基于您选择的“目标”(模拟、综合等)。

于 2011-04-04T17:08:53.527 回答
2

作为一个真实的例子,我有一个用多种架构实现的通用仲裁模块。我可以使用所需数量的输入来实例化仲裁器,并为手头的任务选择适当的后端逻辑。在某些情况下,我使用一个简单的循环架构,每个时钟查看一个信号(速度慢,但门数少)。其他时候,我需要更复杂的功能,例如按优先级加权或更高的速度(即:每个时钟查看 4 或 8 个信号)。这些比简单的循环设计需要更多的逻辑,但在某些情况下可能需要。

通过在同一个模块中将每个不同的实现作为单独的架构,很容易为任务选择合适的实现,或者根据需要在它们之间切换。

于 2011-04-03T02:03:06.703 回答