VHDL:枚举类型最小维度

时间:2013-09-17 10:23:23

标签: vhdl

这是我的代码:

  

类型T_mean_state是(IDLE_S,WRITE_NEW_S,READ_OLD_S_W,   READ_OLD_S);

枚举类型由综合工具编码,没有最小维度的硬件资源。 在继续合成之前,我是否要指定最小的HW尺寸?

谢谢大家。

4 个答案:

答案 0 :(得分:1)

我不确定你的问题,但这里有一个例子,说明我将如何列举我的状态:

   type STATE_TYPE is (IDLE, GNT1, GNT2, GNT3, GNT4, GNT5, GNT6, GNT7, GNT8); 
    attribute ENUM_ENCODING: string; 
    attribute ENUM_ENCODING of STATE_TYPE: type is 
    "0000 0001 0010 0100 1000 0011 0101 0110 1001"; 
    signal STATE, NEXT_STATE: STATE_TYPE;

答案 1 :(得分:0)

不同的综合工具可以不同地编码状态;或者您可以在“过程属性”菜单或命令行选项中控制编码样式。在任何情况下,综合报告将描述合成选择的特定编码,以最好地适合您的目标 - 例如速度或大小。

所以看看合成报告;大多数合成工具都非常擅长优化,所以它可能已经选择了你想要的编码。或者,您可以了解如何为工具设置选项。

正如“引擎”所说,如果需要,您可以明确指定状态;虽然这通常没有必要。

答案 2 :(得分:0)

将它留给合成器以确定如何最好地表示枚举类型,除非您有特定的理由想要特定的表示。

例如,您可能希望在某个关键状态机中使用灰色编码表示。通过应用于信号的属性或使用约束文件,在此级别的控制发生在语言之外。您必须阅读所用工具的文档,以了解如何执行此操作。

答案 3 :(得分:0)

可能与它有关。

BR

  

注意:如果枚举类型表示状态的状态   machine,使用enum_encoding属性指定手动状态   编码可防止编译器识别状态机   关于枚举类型。相反,编译器处理这些状态   机器和#34;常规"逻辑使用由...指定的编码   属性,它们未在报告中列为状态机   项目的窗口。如果你想控制a的编码   识别状态机,使用状态机处理逻辑   选项或syn_encoding属性。有关正确的更多信息   在VHDL中实现状态机,请参阅实现状态   机等。

http://quartushelp.altera.com/15.0/mergedProjects/hdl/vhdl/vhdl_file_dir_enum_encoding.htm