Реализовал функцию вычисления квадратного корня на VHDL
К сожалению алгоритм последовательный, в итоге вычисляет sqrt(2 147 395 600)=46300 - за 46300*3 =139 020 тактов.
Реализация:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.all;
ENTITY square_root_2 IS
GENERIC(n: NATURAL := 32);
PORT (
x: IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);
clk, reset, start: IN STD_LOGIC;
r: INOUT STD_LOGIC_VECTOR(n-1 DOWNTO 0);
done: OUT STD_LOGIC
);
E