VHDL 中 don't cares 和 null 做什么?

What does don't cares and null do in VHDL?

在 VHDL 中将值设置为无关实际上意味着什么?另外,将值设置为无关与将其设置为空之间有什么区别? 这是我正在做的实验室的一个片段:

with selector select
    mux_data_selected <=    Channel_1_registered_data when '0';
                            Channel_2_registered_data when '1';
                            (others => '-') when others;

mux_data_selected 的元素类型可能是 std_ulogic 或类似的类型之一。要回答你的最后一个问题,这些类型中没有 null 值,因此你不能分配 (others => null).

null 是一个无效指令,它什么都不做,有时用来表示在控制流的一个分支中没有什么可做的,它是有意的。

也是指针值(访问类型)。最后,我们有时会谈论空数组,但这意味着数组有一个空范围,例如 1 to 0。如果你的向量有一个非空范围,你不能给它分配一个空数组值,这会导致错误。

- 无关值是 std_ulogic 枚举类型的 9 个值之一。顾名思义,它适用于您不关心价值的情况。要么因为你知道这种情况在现实生活中永远不会发生,要么因为当这种情况发生时你不使用信号。

一个足够聪明的逻辑合成器可以使用这个指示来实现任何实际的 '0''1' 值来提高一个指标(速度、面积、功率......)而如果你编码,例如, '0' 合成器被迫服从,这可能导致速度、面积或功率浪费。

如@user16145658 所述,'-' 值也被 VHDL2008 STD_MATCH 函数和预定义的匹配关系运算符(?=?/= 视为匹配任何通配符、?<?<=?>?>=)。所以你也可以用它来进行软比较。