Math VHDL中的除法(int/float)
我想用VHDL在1个周期(组合电路)中划分两个数字(16位二进制)。分子是一个整数。分母是一个浮点数。结果应该是浮动的。我使用什么算法进行除法Math VHDL中的除法(int/float),math,floating-point,binary,vhdl,division,Math,Floating Point,Binary,Vhdl,Division,我想用VHDL在1个周期(组合电路)中划分两个数字(16位二进制)。分子是一个整数。分母是一个浮点数。结果应该是浮动的。我使用什么算法进行除法 请帮助我,我认为这是不可能的。是否有任何理由需要在1个时钟周期内完成?接近的唯一方法是使用查找表,但您必须牺牲输出的一些精度 这里有一个实体可以做你想做的事(如果我理解正确的话): ieee库; 使用ieee.numeric_std.all; 使用ieee.float_pkg.all; 实体整数除以浮点数除法为 港口( 分子:有符号(15到0); 分母:
请帮助我,我认为这是不可能的。是否有任何理由需要在1个时钟周期内完成?接近的唯一方法是使用查找表,但您必须牺牲输出的一些精度 这里有一个实体可以做你想做的事(如果我理解正确的话):
ieee库;
使用ieee.numeric_std.all;
使用ieee.float_pkg.all;
实体整数除以浮点数除法为
港口(
分子:有符号(15到0);
分母:有符号(15到0);
结果:向外浮动(6向下至-9)
);
结束;
采用浮点除法实现整数除法的rtl体系结构
子类型float16是float(6到-9);
信号分子浮点数:浮点数16;
信号分母_float:float16;
开始
分子_是我项目的一部分,我需要在每个步骤中进行除法。所以我不能给除法更多的时间。你的时钟频率是多少?你需要在一个周期内除法,还是每个周期完成一次除法?许多浮点除法器都是流水线的,因此它们可以在每个周期产生一个结果,而不会使周期时间长到足以在一个周期内进行除法。时钟周期有多长?我认为OP在说“float”时表示“IEEE754单精度”,所以分母和out可能需要是float32
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;