目的是提供多个架构?

时间:2011-04-02 18:08:29

标签: syntax hardware vhdl hdl

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

有一点我不太明白为什么你想要提供多个架构。例如,这个example MUX code

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,所以我想先在这里试试。

3 个答案:

答案 0 :(得分:7)

虽然这个特定的例子似乎仅仅是为了一个例子,但是有几个原因可以解释为什么你需要为某些设计采用不同的架构。

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

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

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

答案 1 :(得分:2)

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

通过在同一模块中将每个不同的实现作为单独的体系结构,可以轻松地为任务选择适当的实现,或者根据需要在它们之间切换。

答案 2 :(得分:2)

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

对我来说:

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

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