VHDL wrapper for sin/cos function with 18-bit sin/cos, 20-bit phase.

This commit is contained in:
Joris van Rantwijk 2016-03-24 23:34:20 +01:00
parent 59ec0505ab
commit 8090886ab0
1 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,61 @@
--
-- Sine / cosine function core
--
-- Phase input:
-- unsigned 20 bits (2**20 steps for a full circle)
--
-- Sin/cos output:
-- signed 18 bits (nominal amplitude = 2**17-1)
--
-- Copyright 2016 Joris van Rantwijk
--
-- This design is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity sincos_gen_d18_p20 is
port (
-- System clock, active on rising edge.
clk: in std_logic;
-- Clock enable.
clk_en: in std_logic;
-- Phase input.
in_phase: in unsigned(19 downto 0);
-- Sine output.
-- (6 clock cycles latency after in_phase).
out_sin: out signed(17 downto 0);
-- Cosine output.
-- (6 clock cycles latency after in_phase).
out_cos: out signed(17 downto 0) );
end entity;
architecture rtl of sincos_gen_d18_p20 is
begin
gen0: entity work.sincos_gen
generic map (
data_bits => 18,
phase_bits => 20,
table_addrbits => 10,
taylor_order => 1 )
port map (
clk => clk,
clk_en => clk_en,
in_phase => in_phase,
out_sin => out_sin,
out_cos => out_cos );
end architecture;