0

这是我的代码:

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

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

谢谢大家。

4

4 回答 4

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;
于 2013-09-17T10:26:47.540 回答
0

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

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

正如“引擎”所说,如果需要,您可以明确指定状态;尽管这通常不是必需的。

于 2013-09-17T13:24:32.823 回答
0

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

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

于 2013-09-18T10:57:47.697 回答
0

可能与它有关。

BR

注意:如果 Enumeration Type 表示状态机的状态,则使用 enum_encoding 属性指定手动状态编码会阻止 Compiler 根据 Enumeration Type 识别状态机。相反,编译器使用属性指定的编码将这些状态机作为“常规”逻辑处理,并且它们不会在项目的报告窗口中列为状态机。如果您希望控制已识别状态机的编码,请使用状态机处理逻辑选项或 syn_encoding 属性。有关在 VHDL 中正确实现状态机的更多信息,请参阅实现状态机。

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

于 2016-03-17T08:51:05.903 回答