- Cleaned up

git-svn-id: http://moon:8086/svn/vhdl/trunk@164 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2008-12-28 19:04:18 +00:00
parent ef5da14068
commit fb625665d2
8 changed files with 274 additions and 571 deletions
+42 -72
View File
@@ -33,27 +33,27 @@ use work.cordic_pkg.all;
entity mix is
Generic
(
nbits_wave_in : integer := 18;
nbits_wave_in_frac : integer := 16;
nbits_wave_out : integer := 18;
nbits_wave_out_frac : integer := 16;
nbits_phase : integer := 16
nbits_din : integer := 18;
nbits_din_frac : integer := 16;
nbits_dout : integer := 18;
nbits_dout_frac : integer := 16;
nbits_phase : integer := 16;
nbits_freq : integer := 16
);
Port
(
srst : in std_logic;
clk : in std_logic;
pacc_clr : in std_logic;
pacc_inc : in std_logic;
freq_in : in unsigned(nbits_phase-1 downto 0);
freq_load : in std_logic;
phase_in : in unsigned(nbits_phase-1 downto 0);
phase_load : in std_logic;
wave_in_i : in sfixed;
wave_in_q : in sfixed;
wave_out_i : out sfixed;
wave_out_q : out sfixed;
out_valid : out std_logic
rst : in std_logic;
clk : in std_logic;
nco_rst : in std_logic;
nco_en : in std_logic;
freq_in : in unsigned(nbits_freq-1 downto 0);
phase_in : in unsigned(nbits_phase-1 downto 0);
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 mix;
@@ -99,12 +99,10 @@ architecture Behavioral of mix is
-------------------------------------------------------------------------------
signal phase : signed(nbits_phase-1 downto 0);
signal freq_in_r : signed(nbits_phase-1 downto 0);
signal phase_in_r : signed(nbits_phase-1 downto 0);
signal xin, yin : sfixed(shi(nbits_wave_in, nbits_wave_in_frac) downto slo(nbits_wave_in, nbits_wave_in_frac));
signal xout, yout : sfixed(shi(nbits_wave_out, nbits_wave_out_frac) downto slo(nbits_wave_out, nbits_wave_out_frac));
signal xin, yin : sfixed(shi(nbits_din, nbits_din_frac) downto slo(nbits_din, nbits_din_frac));
signal xout, yout : sfixed(shi(nbits_dout, nbits_dout_frac) downto slo(nbits_dout, nbits_dout_frac));
signal wave_out_valid : std_logic;
signal dout_valid : std_logic;
signal zin : sfixed(shi(nbits_phase, nbits_phase_frac) downto slo(nbits_phase, nbits_phase_frac));
signal zout : sfixed(shi(nbits_phase, nbits_phase_frac) downto slo(nbits_phase, nbits_phase_frac));
@@ -112,12 +110,12 @@ architecture Behavioral of mix is
-------------------------------------------------------------------------------
begin
wave_out_i <= xout;
wave_out_q <= yout;
xin <= wave_in_i;
yin <= wave_in_q;
dout_i <= xout;
dout_q <= yout;
xin <= din_i;
yin <= din_q;
out_valid <= wave_out_valid;
dout_vld <= dout_valid;
------------------------------------------------------------
proc_phase_accu: process(clk)
@@ -125,44 +123,16 @@ begin
begin
if rising_edge(clk) then
if srst = '1' then
phase_accu := (others => '0');
else
phase <= phase_accu + phase_in_r;
if pacc_clr = '1' then
phase_accu := (others => '0');
elsif pacc_inc = '1' then
phase_accu := phase_accu + freq_in_r;
end if;
if rst = '1' or nco_rst = '1' then
phase_accu := (others => '0');
elsif nco_en = '1' then
phase <= phase_accu + signed(phase_in);
phase_accu := phase_accu + signed(freq_in);
end if;
end if;
zin <= sfixed(phase);
end process;
------------------------------------------------------------
freq_in_reg: process(srst, clk, freq_load, freq_in)
begin
if rising_edge(clk) then
if srst = '1' then
freq_in_r <= (others => '0');
elsif freq_load = '1' then
freq_in_r <= signed(freq_in);
end if;
end if;
end process;
------------------------------------------------------------
phase_in_reg: process(srst, clk, phase_load, phase_in)
begin
if rising_edge(clk) then
if srst = '1' then
phase_in_r <= (others => '0');
elsif phase_load = '1' then
phase_in_r <= signed(phase_in);
end if;
end if;
end process;
------------------------------------------------------------
inst_cordic_ud: cordic_pipe_top
GENERIC MAP
@@ -171,31 +141,31 @@ begin
z_range => 1.0,
gain_corr_mode => gain_mode_disabled,
nstages => nbits_phase,
nbits_x_in => nbits_wave_in,
nbits_frac_x_in => nbits_wave_in_frac,
nbits_y_in => nbits_wave_in,
nbits_frac_y_in => nbits_wave_in_frac,
nbits_x_in => nbits_din,
nbits_frac_x_in => nbits_din_frac,
nbits_y_in => nbits_din,
nbits_frac_y_in => nbits_din_frac,
nbits_z_in => nbits_phase,
nbits_frac_z_in => nbits_phase_frac,
nbits_x_out => nbits_wave_out,
nbits_frac_x_out => nbits_wave_out_frac,
nbits_y_out => nbits_wave_out,
nbits_frac_y_out => nbits_wave_out_frac,
nbits_x_out => nbits_dout,
nbits_frac_x_out => nbits_dout_frac,
nbits_y_out => nbits_dout,
nbits_frac_y_out => nbits_dout_frac,
nbits_z_out => nbits_phase,
nbits_frac_z_out => nbits_phase_frac
)
PORT MAP
(
rst => srst,
rst => rst,
clk => clk,
vld_in => '1',
vld_in => din_vld,
xin => xin,
yin => yin,
zin => zin,
xout => xout,
yout => yout,
zout => zout,
vld_out => wave_out_valid
vld_out => dout_valid
);
------------------------------------------------------------