Vhdl 如何计算向量中的前导0
嗨,我想计算向量中的前导零…比如,如果我的结果是0001,那么它将显示3个零..那么我的计数器将递增3..当我得到msb中的第一个1时,我的循环将停止Vhdl 如何计算向量中的前导0,vhdl,Vhdl,嗨,我想计算向量中的前导零…比如,如果我的结果是0001,那么它将显示3个零..那么我的计数器将递增3..当我得到msb中的第一个1时,我的循环将停止 我正在使用上面的代码..但它不起作用…计数器值太大,如1100111…我不知道哪里有d问题…伙计们请帮助我…尽快回复我会使用for循环来计算,类似这样: back:while (sub1_mantissa(52)='0') loop sub1_mantissa := sub1_mantissa(51 downto 0) &
我正在使用上面的代码..但它不起作用…计数器值太大,如1100111…我不知道哪里有d问题…伙计们请帮助我…尽快回复我会使用for循环来计算,类似这样:
back:while (sub1_mantissa(52)='0') loop
sub1_mantissa := sub1_mantissa(51 downto 0) & '0';
count := count + "000000000001";
end loop back;
注意:如果使用DOWNTO表示法声明sub1_尾数,这将只计算前导零。据我所知,您没有得到预期的结果。然而,你发布的代码基本上应该是有效的;你应该发布完整的代码,让我们重现这个问题!前面有一条评论:如果你的向量“sub1_尾数”只包含“0”,你将有一个无限循环!别这样!
variable zero_count : natural := 0;
for i in sub1_mantissa'range loop
if sub1_mantissa(i) = '0' then
zero_count := zero_count + 1;
else
exit;
end if;
end loop;