integer - VHDL 使用什么更有效 : an integer with range or a std_logic_vector

标签 integer vhdl

如果我声明一个信号整数范围 0 到 6 ,与声明一个 std_logic_vector (2 downto 0) 来做完全相同的工作是好还是坏。我指的是设计成本,以便我可以决定是否使用具有小范围的整数或带有向量的 one-hot 表示。

说白了会为0到n的整数范围保留多少空间?

最佳答案

如果综合工具以最少的资源实现范围为 0 到 N 的整数,则其大小为:

integer range 0 to N : std_logic_vector(ceil(log2(N + 1)) - 1 downto 0)

因此,您的 integer range 0 到 6 将具有 std_logic_vector(2 downto 0) 的大小。

但是 VHDL 语言本身并没有针对不同数据结构的成本函数,因为成本取决于实现。模拟工具以一种方式实现数据结构,而综合工具则以不同的方式实现。

例如,FPGA 的大小取决于综合工具的性能。综合工具必须进行实现,其中最终设计的操作等同于 VHDL 规范,但综合工具可以自由地进行比要求更大的实现,例如通过实现所有整数 32 位 std_logic_vector。

了解实际大小的最佳方法是使用综合工具进行小型实验,由此您还将了解很多关于综合工具和 VHDL 实现的知识。

关于integer - VHDL 使用什么更有效 : an integer with range or a std_logic_vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884239/

相关文章:

计算 C 中整数的个数

c++ - 了解 SystemC 中的类型

vhdl - 与其他 if-else 语句具有相同条件的 if-else 语句不会产生相同的输出

python - 将软件转换为 FPGA 的 VHDL/Verilog 的更好平台

vhdl - VHDL 中的指针取消引用

python - 在 Python 中随机舍入为整数

java - 如果数组大小先验未知,如何填充数组

javascript - 在 Javascript 中从整数解码固定字符串

java - 如何让我的程序识别给定字符串中的字符串和整数?

c - 我无法从 UART/Nios 读取