我想在 1 个周期(组合电路)中将 VHDL 中的两个数字(16 位二进制)相除。分子是整数。分母是一个浮点数。结果应该是浮动的。我用什么算法来执行除法。
请帮忙
我想在 1 个周期(组合电路)中将 VHDL 中的两个数字(16 位二进制)相除。分子是整数。分母是一个浮点数。结果应该是浮动的。我用什么算法来执行除法。
请帮忙
这是一个做你想做的事的实体(如果我正确理解了这个问题):
library ieee;
use ieee.numeric_std.all;
use ieee.float_pkg.all;
entity integer_by_float_division is
port (
numerator: in signed(15 downto 0);
denominator: in signed(15 downto 0);
result: out float(6 downto -9)
);
end;
architecture rtl of integer_by_float_division is
subtype float16 is float(6 downto -9);
signal numerator_float: float16;
signal denominator_float: float16;
begin
numerator_float <= to_float(numerator, numerator_float);
denominator_float <= to_float(denominator, denominator_float);
result <= numerator_float / denominator_float;
end;
我不认为这是可能的。有什么理由需要在 1 个时钟周期内完成吗?接近的唯一方法是使用查找表,但您必须牺牲一些输出精度。