我想创建一个带有一个通用参数的VHDL实体,该通用参数可以更改另一个通用参数的宽度。
entity lfsr_n is
generic (
WIDTH : integer := 32; -- counter width
POLYNOMIAL : std_logic_vector (WIDTH-1 downto 0) := "1000_0000_0000_0000_0000_0000_0110_0010"
);
很不幸的是,似乎我不能在泛型列表中稍后引用先前定义的泛型。Active-HDL会出现以下错误:
错误:COMP96_0300: modules/m3_test_load/lfsr_n.vhd :(26, 45):在接口列表完成之前无法引用“WIDTH”。
错误:COMP96_0077:modules/m3_test_load/lfsr_n.vhd :(26, 66): 表达式类型未定义。期望类型为'STD_LOGIC_VECTOR'。
一种解决方法是将POLYNOMIAL作为端口。但它应该是一个泛型,因为它在实例化时是常量。我知道如果将常量应用到端口,它会按照我要求进行综合,并将常量值优化到模块中,但我想找到某种方法使它成为一个泛型。有什么建议吗?