在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
是一个空指令,它什么也不做,有时用来表示在控制流的分支中没有什么可做的,并且是故意的。
也是一个指针值(访问类型)。最后,我们有时会讨论null数组,但这意味着数组的范围为空,例如1 to 0
。如果你的vector有一个非空范围,你不能给它赋一个空数组值,这会导致错误。
-
don't care值是std_ulogic
枚举类型的9个值之一。顾名思义,它适用于您不关心值的情况。要么是因为你知道这种情况在现实生活中永远不会发生,要么是因为当这种情况发生时,你没有使用这个信号。
一个足够智能的逻辑合成器可以使用此指示来实现任何实际的'0'
或'1'
值,从而提高一个度量(速度,面积,功率…)而如果你编码,例如'0'
,合成器被迫服从,这可能导致速度,面积或功率浪费。
正如@user16145658所指出的,'-'
值也被VHDL2008STD_MATCH
函数和预定义的匹配关系操作符(?=
,?/=
,?<
,?<=
,?>
和?>=
)视为匹配任何通配符。所以你也可以用它来进行软比较。