-3
 back:while (sub1_mantissa(52)='0') loop
      sub1_mantissa := sub1_mantissa(51 downto 0) & '0';
      count := count + "000000000001";
 end loop back;

嗨。我想计算向量中的前导零......就像我的结果是 0001 所以它会显示 3 个零......所以我的计数器将增加 3..当我将在 msb 中获得第一个 1 时,我的循环会停止...

我正在使用上面的代码..但它不工作......它所需要的计数器值太大,如 1100111......我不知道问题在哪里......伙计们请帮助我......很快就会回复

4

1 回答 1

1

我会使用 for 循环来计算这个,如下所示:

  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;

注意:如果 sub1_mantissa 使用 DOWNTO 表示法声明,这只会计算前导零。

于 2013-05-24T13:44:22.713 回答