Floating point 有人能理解这段代码中实现了什么样的除法算法吗?

Floating point 有人能理解这段代码中实现了什么样的除法算法吗?,floating-point,vhdl,division,Floating Point,Vhdl,Division,我用VHDL实现了一个浮点除法算法,我要写一个C版本。我很难理解这段代码中使用了什么类型的算法。自功能表提供了所有链接(即使我不太清楚) 我做了一些关于除法算法的研究,但我还没有真正找到答案,我不了解填充的替代方案,也不了解预分级的原因。然后,该过程当然会重复n次。是否有人至少可以帮助我对这个算法进行分类,以便我可以查找它? 非常感谢 fX <= "1" & X(22 downto 0); fY <= "1" & Y(22 downto 0); -- Presca

我用VHDL实现了一个浮点除法算法,我要写一个C版本。我很难理解这段代码中使用了什么类型的算法。
自功能表
提供了所有链接(即使我不太清楚)

我做了一些关于除法算法的研究,但我还没有真正找到答案,我不了解填充的替代方案,也不了解预分级的原因。然后,该过程当然会重复
n次
。是否有人至少可以帮助我对这个算法进行分类,以便我可以查找它? 非常感谢

fX <= "1" & X(22 downto 0);
fY <= "1" & Y(22 downto 0); 

-- Prescaling
with fY (22 downto 21)  select 
  prescaledfY <= 
     ("0" & fY & "0") + (fY & "00") when "00",
     ("00" & fY) + (fY & "00") when "01",
     fY &"00" when others;
with fY (22 downto 21)  select 
  prescaledfX <= 
     ("00" & fX & "0") + ("0" & fX & "00") when "00",
     ("000" & fX) + ("0" & fX & "00") when "01",
     "0" & fX &"00" when others;
w9 <=  "00" & prescaledfX;
sel9 <= w9(28 downto 24) & prescaledfY(23 downto 22);
SelFunctionTable9: selFunction7_4_F10_uid4
  port map ( X => sel9,
             Y => q9_copy5);
q9 <= q9_copy5; -- output copy to hold a pipeline register if needed
w9pad <= w9 & '0';
with q9(1 downto 0)  select  
w8fulla <= 
  w9pad - ("0000" & prescaledfY)            when "01",
  w9pad + ("0000" & prescaledfY)            when "11",
  w9pad + ("000" & prescaledfY & "0")       when "10",
  w9pad                     when others;

with q9(3 downto 1)  select  
fYdec8 <= 
  ("00" & prescaledfY & "00")           when "001" | "010" | "110"| 
  ("0" & prescaledfY & "000")           when "011"| "100",
  (29 downto 0 => '0')when others;
with q9(3)  select 
w8full <= 
  w8fulla - fYdec8          when '0',
  w8fulla + fYdec8          when others;
w8 <= w8full(26 downto 0) & "00";
sel8 <= w8(28 downto 24) & prescaledfY(23 downto 22);
SelFunctionTable8: selFunction7_4_F10_uid4

fX只是一种预感,但在Knuth的除法算法中,除数必须向左移位,直到所有前导零位都被删除。股息必须完全转移到相同数量的头寸。像22到0这样的数字让我想起了浮点数,但我可能错了。ISTM这只是为浮点除法设置了一些东西,其中自函数的东西似乎实际进行除法。我认为,如果不知道自函数的具体功能是什么,甚至是有了这些知识,这几乎不可能转换成C。这是一种硬件描述语言。只是一种预感,但在Knuth的除法算法中,除数必须向左移位,直到所有前导零位都被删除。股息必须完全转移到相同数量的头寸。像22到0这样的数字让我想起了浮点数,但我可能错了。ISTM这只是为浮点除法设置了一些东西,其中自函数的东西似乎实际进行除法。我认为,如果不知道自函数的具体功能是什么,甚至是有了这些知识,这几乎不可能转换成C。这是一种硬件描述语言。