vhdl - 使用 VHDL 泛型选择实体

标签 vhdl

我有一个 VHDL 设计,具有两种名为快速慢速 的架构。我希望能够在模拟/细化时使用命令行和泛型在它们之间进行选择。

我不知道如何选择配置,即使用 VHDL 泛型实例化具有我想要的架构的组件。

有没有办法做到这一点,或者我是否需要使用generate语句并对所选架构进行硬编码?

最佳答案

事实证明,您不能使用泛型来控制配置语句。而是使用 generate 使用泛型来选择架构:

LIBRARY ieee;
use ieee.std_logic_1164.all;

entity dut is
    generic (
         SPEED : string := "fast"
     );
    port(
        clk : in std_logic;
        reset: in std_logic;
        start: in std_logic;
        done:  out std_logic);
    end entity dut;


architecture dutarch of dut is

    component delay is
        port (
            clk : in std_logic;
            reset: in std_logic;
            start: in std_logic;
            done: out std_logic
        );
    end component delay;
    begin
     d1g: if (SPEED = "fast") generate
          d1 : entity work.delay(fast)
           port map (
                clk     => clk,
                reset   => reset,
                start   => start,
                done => done
            );
        else generate
          d1 : entity work.delay(slow)
            port map (
                clk     => clk,
                reset   => reset,
                start   => start,
                done => done
            );

        end generate;
end architecture dutarch;   

关于vhdl - 使用 VHDL 泛型选择实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57045008/

相关文章:

vhdl - "template"VHDL实体

vhdl - HDL中的组合循环

case - VHDL 中 CASE 语句中的多项赋值

logic - 计算 ALU 中的溢出标志

tcl - Modelsim - 为没有 GUI 的文件设置 "compile to library"

vhdl - RAM模拟代码在VHDL中不能很好地模拟

port - VHDL:使用 inout 端口是不好的做法吗?

if-statement - 编写VHDL优先级编码器的简短方法

c# - 最好有递减循环?

c - fpga(14 位)vhdl 模块与 NIos II 系统(16 位)之间的数据传输