当 must/should 我在 VHDL 中用 range 关键字声明一个变量?

When must/should I declare a variable with the range keyword in VHDL?

我是 VHDL 的新手,可能有一个基本问题,但这里是:

声明变量时,说一个整数,有什么好处

variable count_baud  : integer range 0 to clk_freq/baud_rate - 1 := 0;

对比

variable count_baud  : integer := 0;

使用范围(仅)的意义在于限制CPLD/FPGA中的合成房地产规模吗?

有两个很好的理由:

  1. 正在调试。如果您知道您的整数应保持在 [min..max] 范围内,请使用适当的范围声明将其告知模拟器。如果您的代码中存在错误并且您尝试分配一个超出范围的值,模拟器将通过一条非常有用的消息通知您。而如果你只是声明了一个 integer 错误可能会在伪造赋值后很久发生。

  2. 合成质量。默认情况下,逻辑合成器将为整数分配 32 位。根据周围环境,它可能会发现更少的位就足够了……或者不够。因此,告诉合成器实际范围通常可以节省硬件、功耗并提高最终性能(速度),尤其是当实际范围可以用远少于 32 位表示时。