12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- library ieee;
- use ieee.std_logic_1164.all;
- use ieee.numeric_std.all;
- use ieee.math_real.all;
-
- library work;
- use work.cordic_pkg.all;
- use work.float.all;
-
- entity float_sine is
- generic (
- ITERATIONS : positive -- Number of CORDIC iterations
- );
- port (
- clk : in std_logic;
- reset : in std_logic;
-
- data_valid : in std_logic; --# load new input data
- busy : out std_logic; --# generating new result
- result_valid : out std_logic; --# flag when result is valid
- angle : in signed(31 downto 0); -- angle in brads (2**size brads = 2*pi radians)
- sine : out signed(31 downto 0)
- );
- end entity float_sine;
-
- architecture rtl of float_sine is
- signal fixed : signed( 31 downto 0 );
- begin
-
- u_fixed_sine : entity work.fixed_sine
- generic map (
- SIZE => 32,
- ITERATIONS => 8,
- FRAC_BITS => 31
- )
- port map (
- clock => clk,
- reset => reset,
-
- data_valid => data_valid,
- busy => busy,
- result_valid => result_valid,
- angle => angle,
- sine => fixed
- );
-
- sine <= signed( to_float( std_logic_vector( fixed ) ) );
-
- end architecture;
|