我有一个问题,很高兴有人能帮助我。
我有以下信号:
信号计数器=无符号(位宽减小到0);
现在,我要检查递减计数器是否已经达到零。
我可以这样写吗:如果counter = 0? 还是我必须写:if counter =(others =>'0')?
谢谢!
答案 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;