Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VHDL读取通用默认值_Vhdl - Fatal编程技术网

VHDL读取通用默认值

VHDL读取通用默认值,vhdl,Vhdl,我想知道是否有一种方法可以在合成期间访问实体的默认通用值或实体架构常量 这是出于好奇(我想实现类似的东西) 可能的用例 1) 为默认实体生成测试台: entity testme is generic(outputs:integer:=4); ports(output:out bit_vector(0 to outputs); end entity; 在测试台中,我需要生成一个可以连接到输出的信号,在不知道泛型值的情况下,无法这样做 2) 我想知道实例化Blockram时使用的实

我想知道是否有一种方法可以在合成期间访问
实体的默认通用值
实体架构常量

这是出于好奇(我想实现类似的东西)

可能的用例

1) 为默认实体生成测试台:

entity testme is
    generic(outputs:integer:=4);
    ports(output:out bit_vector(0 to outputs);
end entity;
在测试台中,我需要生成一个可以连接到输出的信号,在不知道泛型值的情况下,无法这样做


2) 我想知道实例化Blockram时使用的实际大小。在FPGA上有块ram,一个人可以使用固定的ram块,如果一个人需要比一个块中可用的ram更多的ram,则可以组合多个块。随着技术的不同,可用区块的大小可能会发生变化。因此,我编写了一个具有两个通用参数
memory
technology
的实体,它们以尽可能少的块来实现我的内存。这可能导致内存大于请求的内存。如果我现在有另一个实体需要内存大小来充分利用它(即循环缓冲控制器),我必须向它提供分配的内存的实际大小。

您必须从顶部向下推这些东西(即从测试台)。不可能检查较低级别的块(尽管我想您可以将信号带出并返回顶部!)

您可以使用无约束类型,例如:

entity example
port(
    i: std_logic_vector;
    o: std_logic_vector
);
在测试台中,添加定义的向量,例如:

....
signal i,o: std_logic_vector(10 downto 0);

begin
   uut: example
   port map(
      i => i,
      o => o
   );

我想说的是,您正在以VHDL无法预见的方式看待它,坦率地说,我同意您的看法。通常,您会将这些值从体系结构传播到实例,特别是在TB中。你为什么不这样做?@BennyBarns:我不太明白你的意思。我的想法是瞥见默认值,多路复用器宽度的默认值有什么好处,如果我不能生成适合输出宽度的信号,并且在不知道默认值的情况下选择信号?我认为“输出模式泛型”有一些合法的用途,我偶尔也想要它们。查询一个体系结构以发现它的管道有多少个周期是有用的。也许是VHDL-2020?@BrianDrummond:无意冒犯,但我不会傲慢地使用这些功能。Vhdl 2008已经快5年了,但最有趣的东西还没有实现。我知道这是可能的,但我不想反过来做。Ram问题仍然存在。