2016-04-18 22:57:41 +02:00
|
|
|
--
|
|
|
|
-- Top-level design for synthesis dry-run of the sine / cosine function core.
|
|
|
|
--
|
|
|
|
|
|
|
|
library ieee;
|
|
|
|
use ieee.std_logic_1164.all;
|
|
|
|
use ieee.numeric_std.all;
|
|
|
|
|
|
|
|
entity top_d18_p20 is
|
|
|
|
port (
|
|
|
|
clk: in std_logic;
|
|
|
|
clk_en: in std_logic;
|
|
|
|
in_phase: in std_logic_vector(19 downto 0);
|
|
|
|
out_sin: out std_logic_vector(17 downto 0);
|
|
|
|
out_cos: out std_logic_vector(17 downto 0) );
|
|
|
|
end entity;
|
|
|
|
|
|
|
|
architecture rtl of top_d18_p20 is
|
|
|
|
|
|
|
|
signal r_in_phase: unsigned(19 downto 0);
|
|
|
|
signal s_out_sin: signed(17 downto 0);
|
|
|
|
signal s_out_cos: signed(17 downto 0);
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
-- Instantiate core.
|
|
|
|
gen0: entity work.sincos_gen_d18_p20
|
|
|
|
port map (
|
|
|
|
clk => clk,
|
|
|
|
clk_en => clk_en,
|
|
|
|
in_phase => r_in_phase,
|
|
|
|
out_sin => s_out_sin,
|
|
|
|
out_cos => s_out_cos );
|
|
|
|
|
|
|
|
-- Input/output flip-flops.
|
|
|
|
process (clk) is
|
|
|
|
begin
|
|
|
|
if rising_edge(clk) then
|
2016-04-18 23:37:23 +02:00
|
|
|
r_in_phase <= unsigned(in_phase);
|
|
|
|
out_sin <= std_logic_vector(s_out_sin);
|
|
|
|
out_cos <= std_logic_vector(s_out_cos);
|
2016-04-18 22:57:41 +02:00
|
|
|
end if;
|
|
|
|
end process;
|
|
|
|
|
|
|
|
end architecture;
|