Vhdl 如何计算向量中的前导0

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) &

嗨,我想计算向量中的前导零…比如,如果我的结果是0001,那么它将显示3个零..那么我的计数器将递增3..当我得到msb中的第一个1时,我的循环将停止


我正在使用上面的代码..但它不起作用…计数器值太大,如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;