Nuestra biblioteca de código abierto de PoC tiene un núcleo IP de división de múltiples ciclos, que se puede sintetizar como una canalización. El recuento de bits del dividendo y el divisor, así como el radix, se pueden configurar según las necesidades de los usuarios. Este módulo devuelve el cociente, así como el resto.
entity arith_div is
generic (
A_BITS : positive; -- Dividend Width
D_BITS : positive; -- Divisor Width
RAPOW : positive := 1; -- Power of Compute Radix (2**RAPOW)
PIPELINED : boolean := false -- Computation Pipeline
);
port (
-- Global Reset/Clock
clk : in std_logic;
rst : in std_logic;
-- Ready / Start
start : in std_logic;
ready : out std_logic;
-- Arguments / Result (2's complement)
A : in std_logic_vector(A_BITS-1 downto 0); -- Dividend
D : in std_logic_vector(D_BITS-1 downto 0); -- Divisor
Q : out std_logic_vector(A_BITS-1 downto 0); -- Quotient
R : out std_logic_vector(D_BITS-1 downto 0); -- Remainder
Z : out std_logic -- Division by Zero
);
end arith_div;
Consulte la fuente de PoC.arith.div para obtener el implementación completa (es demasiado largo para publicarla aquí).