VHDL中的可变大小数组

VHDL中的可变大小数组,vhdl,hdl,Vhdl,Hdl,我正在尝试编写使用变量数组进行某些计算的代码。我在为此声明数组时遇到了一些麻烦。目前我有 Generic(Y: integer:= ) ;---enter array width Z: integer:= );---enter array height | ----some code left out | type test is array(0 to Z-1) of std_logic_vector(Y-1 downto 0 ); 问题是

我正在尝试编写使用变量数组进行某些计算的代码。我在为此声明数组时遇到了一些麻烦。目前我有

    Generic(Y: integer:= ) ;---enter array width
    Z: integer:=  );---enter array height 
    | ----some code left out
    |
    type test is array(0 to Z-1) of std_logic_vector(Y-1 
    downto 0 );
问题是,当Y为1时,程序会收到错误,表示在此赋值过程中无法理解“0”和“1”

    signal T: test:=('0','1','0','1'); -----for Y=1 and z=4
我假设这是因为我声明了一个STD_逻辑向量,它只有一位长,因此应该是STD_逻辑?我想不出一个优雅的方法来解决这个问题,我在谷歌搜索“未声明大小的VHDL数组”时,只给出了我现在正在做的事情的例子。我是新的VHDL,所以请任何帮助将不胜感激

此外,我不确定如何为数组赋值。我也试过了

    signal T: test:=(('0'),('1'),('0'),('1')); 

但还是有一个错误。一些来源说我应该使用“”赋值,但编译器说它不正确,因为它是字符串。我很困惑,所以请帮助我

“我假设这是因为我声明的STD_logic_向量只有一位长,因此应该是STD_logic?”否,聚合元素表达式的类型必须转换为数组元素的类型,例如
信号T:test:=(“0”、“1”、“0”、“1”)。双引号,其中这些是长度为1的字符串文字。聚合的类型及其元素来自上下文(类型标记测试)。显示包含实际错误消息的。“我也尝试过”不起作用,具有单个元素的聚合必须使用命名关联
((0=>'0'),(0=>'1'),
…IEEE Std 1076-2008 9.3.2文本,第5段“……字符串或位字符串文字的类型只能从文字出现的上下文中确定,不包括文字本身,但使用文字类型应为字符类型的一维数组这一事实……”(std_logic_vector是一个解析的std_ulogic_vector,一种数组类型,其std_ulogic元素为字符枚举类型)。15.7字符串文字,第4段“字符串文字的长度是所表示序列中字符值的数量…”“15.6字符文字”字符文字由191个图形字符(包括空格和不间断空格字符)中的一个包含在两个撇号字符之间构成。字符文字具有属于字符类型的值。“5.2.2枚举类型,5.2.2.1概述,第4段”如果枚举类型至少有一个枚举文字是字符文字,则称其为字符类型。“我们看到字符文字不是数组类型的值。9.3.3聚合,9.3.3.1概述,第4段”、中,应始终使用命名关联指定包含单个元素关联的聚合,以便将其与括号中的表达式区分开来。”您应使用函数计算复杂的初始值。