-------------------------------------------------------------------------------- -- Company: -- Engineer: -- -- Create Date: 17:16:42 13.05.2007 -- Design Name: tb_nco -- Module Name: tb_nco.vhd -- Project Name: nco -- Target Device: -- Tool versions: -- Description: -- -------------------------------------------------------------------------------- LIBRARY ieee; use IEEE.STD_LOGIC_1164.ALL; use IEEE.MATH_REAL.ALL; USE ieee.numeric_std.ALL; library ieee_proposed; use ieee_proposed.fixed_float_types.all; use ieee_proposed.fixed_pkg.all; library work; use work.fixed_util_pkg.all; use work.cordic_pkg.all; ENTITY syn_ddc IS Generic ( nbits_in : integer := 18; nbits_in_frac : integer := 16; nbits_out : integer := 18; nbits_out_frac : integer := 16; lo_nbits_phase : integer := 20; lo_nbits_freq : integer := 20; cic_nstages : integer := 3; cic_max_ratio : integer := 1024; cic_max_diff_delay : integer := 2; cic_scale_nbits_min : integer := 9; cic_scale_nbits_max : integer := 24 ); PORT ( rst : in std_logic; clk : in std_logic; lo_nco_rst : in std_logic; lo_nco_en : in std_logic; lo_freq_in : in unsigned(lo_nbits_freq-1 downto 0); lo_phase_in : in unsigned(lo_nbits_phase-1 downto 0); cic_ratio : in natural range 1 to cic_max_ratio; cic_diff_delay : in natural range 1 to cic_max_diff_delay; cic_shift_in : in natural range 0 to cic_scale_nbits_max; din_i : in signed(nbits_in-1 downto 0); din_q : in signed(nbits_in-1 downto 0); dout_i : out signed(nbits_out-1 downto 0); dout_q : out signed(nbits_out-1 downto 0); din_vld : in std_logic; dout_vld : out std_logic ); END syn_ddc; ARCHITECTURE behavior OF syn_ddc IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT ddc GENERIC ( nbits_in : integer; nbits_in_frac : integer; nbits_out : integer; nbits_out_frac : integer; lo_nbits_phase : integer; lo_nbits_freq : integer; cic_nstages : integer; cic_max_ratio : integer; cic_max_diff_delay : integer; cic_scale_nbits_min : integer; cic_scale_nbits_max : integer ); PORT ( rst : in std_logic; clk : in std_logic; lo_nco_rst : in std_logic; lo_nco_en : in std_logic; lo_freq_in : in unsigned(lo_nbits_freq-1 downto 0); lo_phase_in : in unsigned(lo_nbits_phase-1 downto 0); cic_ratio : in natural range 1 to cic_max_ratio; cic_diff_delay : in natural range 1 to cic_max_diff_delay; cic_shift_in : in natural range 0 to cic_scale_nbits_max; din_i : in sfixed; din_q : in sfixed; dout_i : out sfixed; dout_q : out sfixed; din_vld : in std_logic; dout_vld : out std_logic ); END COMPONENT; --Outputs SIGNAL ddc_din_i : sfixed(shi(nbits_in, nbits_in_frac) downto slo(nbits_in, nbits_in_frac)); SIGNAL ddc_din_q : sfixed(shi(nbits_in, nbits_in_frac) downto slo(nbits_in, nbits_in_frac)); SIGNAL ddc_dout_i : sfixed(shi(nbits_out, nbits_out_frac) downto slo(nbits_out, nbits_out_frac)); SIGNAL ddc_dout_q : sfixed(shi(nbits_out, nbits_out_frac) downto slo(nbits_out, nbits_out_frac)); BEGIN -- Instantiate the Unit Under Test (UUT) inst_ddc : ddc GENERIC MAP ( nbits_in => nbits_in, nbits_in_frac => nbits_in_frac, nbits_out => nbits_out, nbits_out_frac => nbits_out_frac, lo_nbits_phase => lo_nbits_phase, lo_nbits_freq => lo_nbits_freq, cic_nstages => cic_nstages, cic_max_ratio => cic_max_ratio, cic_max_diff_delay => cic_max_diff_delay, cic_scale_nbits_min => cic_scale_nbits_min, cic_scale_nbits_max => cic_scale_nbits_max ) PORT MAP ( rst => rst, clk => clk, lo_nco_rst => lo_nco_rst, lo_nco_en => lo_nco_en, lo_freq_in => lo_freq_in, lo_phase_in => lo_phase_in, cic_ratio => cic_ratio, cic_diff_delay => cic_diff_delay, cic_shift_in => cic_shift_in, din_i => ddc_din_i, din_q => ddc_din_q, dout_i => ddc_dout_i, dout_q => ddc_dout_q, din_vld => din_vld, dout_vld => dout_vld ); ddc_din_i <= to_sfixed(din_i, ddc_din_i); ddc_din_q <= to_sfixed(din_q, ddc_din_q); dout_i <= signed(ddc_dout_i); dout_q <= signed(ddc_dout_q); END;