--/******************************************************************************
--    Company      		: MICROSEMI

--    File Name    		: dds_pack.vhd 
                   		
--    Description  		: This pack contain configuration options for DDS 

--    Targeted device 	: Family           Die          Package
--                   	  PolarFire     MPF300T_ES      MPF300T_ES

--    Author          	: India Solutions Team

--
-- SVN Revision Information:
-- SVN $Revision: 
-- SVN $Date:  $  
-- COPYRIGHT 2018 BY MICROSEMI 
-- THE INFORMATION CONTAINED IN THIS DOCUMENT IS SUBJECT TO LICENSING RESTRICTIONS 
-- FROM MICROSEMI CORP.  IF YOU ARE NOT IN POSSESSION OF WRITTEN AUTHORIZATION FROM 
-- MICROSEMI FOR USE OF THIS FILE, THEN THE FILE SHOULD BE IMMEDIATELY DESTROYED AND 
-- NO BACK-UP OF THE FILE SHOULD BE MADE. 
-- 

--******************************************************************************/
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
use ieee.math_real.all;
use work.System_pack.all;

package dds_pack is

constant  g_DATAWIDTH            : integer := 16;          									-- DDS output data width    
constant  g_NUM_CHANNELS         : integer := g_CLKFREQ/g_MIX_FREQ;							-- Number of channels multiplexed 
constant  g_NUM_CHANNELS_WIDTH   : integer := integer(ceil(log2(real(g_NUM_CHANNELS))));	-- Width of the channel number
constant  g_PHASE_WIDTH          : integer := 32;											-- Phase accumulator width
constant  C_LUT_ADDRWIDTH        : integer  := 11;											-- Phase quantizer width
constant  C_FRAC_WIDTH           : integer  :=  8;											-- Phase correction width
type T_PHASE_VALUE is array (0 to g_NUM_CHANNELS-1) of std_logic_vector(g_PHASE_WIDTH-1 downto 0);       
constant g_PHASE_VALUES         : T_PHASE_VALUE :=											-- Default phase values
                                                   (
                                                    x"00000000",
                                                    x"00000000",
                                                    x"00000000",
                                                    x"00000000"
                                                    );

end dds_pack;
