检查unsigned是否为零VHDL

时间:2018-08-20 13:11:56

标签: vhdl counter

我有一个问题,很高兴有人能帮助我。

我有以下信号:

信号计数器=无符号(位宽减小到0);

现在,我要检查递减计数器是否已经达到零。

我可以这样写吗:如果counter = 0? 还是我必须写:if counter =(others =>'0')?

谢谢!

1 个答案:

答案 0 :(得分:-3)

当您比较两个带有 = 符号的向量时,合成器将逐位比较,如果位的长度不相等,则长度较小的向量会扩展(零填充)因此,使用 std_logic_vector 是最佳选择。如下所示:

signal counter :std_logic_vector(bits_width-1 downto 0);
... ########### ...
if counter = "0" then 
 outp <= '1'; -- your code
 end if;

任何类似std_logic_vector(有符号,无符号等)的类型都使用相同的方式。

当然,建议使用xnor与零进行比较:

if counter xnor "0" then 
 outp <= '1'; -- your code
 end if;