使用枚举索引声明和使用带符号的复数量时出错

时间:2017-05-09 10:44:21

标签: vhdl

我在名为FAT_Lib的公共包文件中声明了以下内容:

type complex_field is (re,im);
type signed_complex is array(complex_field) of signed;

然后我通过以下方式在实体的端口接口中声明了一个信号:

MF: out signed_complex(9 downto 0);

在编译实体时,Modelsim会产生以下错误:

  

在深度为1的数组约束中,数组fat_rtl.FAT_Lib.signed_complex已被约束。

我理解编译器将(9 downto 0)作为约束数组大小而不是带符号数量字长。有没有人在我的声明中看到错误?我的目标是能够MFMF(re)访问MF(im)的实部和虚部。

由于

2 个答案:

答案 0 :(得分:2)

你需要VHDL 2008.你需要这样的东西:

MF: out signed_complex_array(open)(9 downto 0);

其中(open)用于跳过约束维度。

答案 1 :(得分:0)

当我使用复杂数量的记录时,Altera的Quartus 13.1合成器出现了问题。因此,稍微复杂的声明复杂数量的方式。我使用的是VHDL-2008。

我设法通过以下方式解决了我的声明中的问题:

通用包装:

type complex_field is (re,im);
type signed_complex is array(complex_field range <>) of signed;

在实体端口界面中:

MF: out signed_complex(re to im)(9 downto 0);

我按照以下方式尝试了马修泰勒的建议,并且也很有效。

type complex_field is (re,im);
type signed_complex is array(complex_field) of signed;

MF: out signed_complex(open)(9 downto 0);

感谢您的评论。