我在名为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)
作为约束数组大小而不是带符号数量字长。有没有人在我的声明中看到错误?我的目标是能够MF
和MF(re)
访问MF(im)
的实部和虚部。
由于
答案 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);
感谢您的评论。