Кто-то может понять, какой алгоритм деления реализован в этом коде? - PullRequest
1 голос
/ 06 мая 2019

У меня есть этот код, реализующий алгоритм деления с плавающей запятой в VHDL, я должен написать его C версию.Я изо всех сил пытаюсь понять, какой тип алгоритма используется в этом коде.SelFunctionTable предоставляется со всеми ссылками (даже если они мне не очень понятны)

Я провел некоторое исследование об алгоритмах деления, но на самом деле я не нашел ответа, я неЯ не понимаю альтернативы заполнения и причины предварительного масштабирования.Затем процесс повторяется 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
...