我确实了解如何将二进制数转换为十进制数,但是下面应该这样做的代码没有意义。我的意思是让我们有一个二进制数 10,然后 v(i) 将为 0,因此结果保持为 0。在下一次迭代时 v(i) 将为 1,因此结果将为 0 + 1 。循环停止,函数将返回结果值 1 而不是 2,这是放入函数的二进制数的值。有人能告诉我为什么我错了吗?此代码附带大学作业,因此它应该是正确的。谢谢。:)
-------------------------------------------------------------------------------
-- convert std_logic vector v to natural
-------------------------------------------------------------------------------
FUNCTION s2n(v: std_logic_vector)
RETURN natural IS
VARIABLE result: natural := 0;
BEGIN
FOR i IN v'range LOOP
result := result * 2;
IF v(i) = '1' THEN
result := result + 1;
END IF;
END LOOP;
RETURN result;
END s2n;