Syntax 提供多个体系结构的目的?

Syntax 提供多个体系结构的目的?,syntax,hardware,vhdl,hdl,Syntax,Hardware,Vhdl,Hdl,我正在学习VHDL,我正在尝试从示例、语法指南和实验中学习 有一件事我不太明白,那就是为什么您要提供不止一种体系结构。例如: 这是有目的的,还是只是为了举例 另外,不确定这是属于here还是Electronics.SE,所以我想我先试试这里。虽然这个特定的示例似乎只是为了一个示例,但有几个原因可以解释为什么有些设计需要不同的体系结构 当您试图模拟整个SoC设计的另一个不相关部分时,通常会做的一件事是出于性能原因提供IP设计的黑盒模型 或者,您可能有一个更高级别的IP模型,该模型允许更快的模拟时间

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

有一件事我不太明白,那就是为什么您要提供不止一种体系结构。例如:

这是有目的的,还是只是为了举例


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

虽然这个特定的示例似乎只是为了一个示例,但有几个原因可以解释为什么有些设计需要不同的体系结构

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

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


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

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


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

设计人员可以以不同的方式使用体系结构

对我来说:

实体与所需的特定功能相关联。 体系结构描述了该特定功能的实现细节。因此,如果出于任何原因,您需要以不同的方式描述相同的功能,许多人已经提到了,那么您可以有多个体系结构。 我避免使用体系结构来实现需要相同I/O的不同功能。也就是说,在使用实体时,我希望实体在功能上的表现是相同的,无论我选择哪种体系结构,我说的是功能上的,因为可能会有时间差异,例如,如果一种体系结构对芯片上的布局进行建模。架构的选择更多地基于您选择的目标模拟、合成等

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;