VHDL:是否可以用记录定义泛型?

| 我正在尝试定义一个复杂的类型(即由实部和虚部组成的类型),并试图找到一种使其通用的方法。
This my current static code:

  type complex_vector is record
    Re : signed(15 downto 0);
    Im : signed(15 downto 0);
  end record;
现在,我想知道是否有一种方法可以使这种通用名称,换句话说,是这样的:
  type complex_vector (Generic: Integer := WIDTH) is record
    Re : signed(WIDTH downto 0);
    Im : signed(WIDTH downto 0);
  end record;
我尝试通过谷歌搜索解决方案以及浏览书籍,但找不到任何解决方案。真的没有吗?没有记录,可能会发生以下情况:
type blaaa is array (NATURAL range <>) of STD_LOGIC;
感谢您的输入 编辑: 还是我可以做以下事情?
type complex_primitives is (re, im);
type complex_vector is array (re to im) of signed(natural range <>);
编译器虽然抱怨。     
已邀请:
        以下是VHDL-2008中的合法语法:
type complex is record
  re : signed ;  -- Note that this is unconstrained
  im : signed ;
end record ;

signal my_complex_signal : complex (re(7 downto 0), im(7 downto 0)) ;
重要说明此示例使用具有不受约束的数组的记录。目前对VHDL-2008的支持是一败涂地。一些工具支持许多VHDL-2008功能,但许多工具尚未完全支持所有新功能。 要阅读有关VHDL-2008和新功能的信息,请参阅此演示文稿,它是有关该主题的很好的摘要。     
        在支持VHDL-2008之前(不要屏住呼吸!),会出现次优的错误。 在具有相同名称的多个程序包中创建所需大小不同的记录,然后根据需要在程序包中进行编译,以定义要使用的宽度。
-- complex_vector_16.vhd
package types is
  type complex_vector is record
    Re : signed(15 downto 0);
    Im : signed(15 downto 0);
  end record;
end;

-- complex_vector_32.vhd
package types is
  type complex_vector is record
    Re : signed(31 downto 0);
    Im : signed(31 downto 0);
  end record;
end;


library complex.types
use complex.types.complex_vector;
这种方法的严重局限性在于,您在设计中只能支持单个形式的complex_vector,但从正面看,您不必担心工具支持! 与您的用例一起向工具链中的每个供应商提出支持/增强请求将非常有用。他们越受错误困扰,越会支持VHDL-2008。     

要回复问题请先登录注册