Browse Source

Supprimer 'mult_blk_5ndft.vhd'

testing
Lilian RM 3 years ago
parent
commit
0a9e9053bb
1 changed files with 0 additions and 62 deletions
  1. +0
    -62
      mult_blk_5ndft.vhd

+ 0
- 62
mult_blk_5ndft.vhd View File

@@ -1,64 +0,0 @@
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
USE work.FIVEn_DFT_PKG.ALL;
ENTITY MULT_BLK_5nDFT IS
GENERIC(
w_in : natural;
w_mult : natural
);
PORT(i_clk : IN std_logic;
i_data_re : IN smpl_out_radix2;
i_data_im : IN smpl_out_radix2;
i_cos : IN smpl_cos_sin_wb;
i_sin : IN smpl_cos_sin_wb;
o_data_re : OUT smpl_out_radix2;
o_data_im : OUT smpl_out_radix2
);
END MULT_BLK_5nDFT;
ARCHITECTURE Mult_Path OF MULT_BLK_5nDFT IS
SIGNAL data_mult_re_cos_signed : smpl_out_signed_radix2; -- intermediate result re*cos
SIGNAL data_mult_im_cos_signed : smpl_out_signed_radix2; -- intermediate result im*cos
SIGNAL data_mult_re_sin_signed : smpl_out_signed_radix2; -- intermediate result im*sin,!i*i=-1!
SIGNAL data_mult_im_sin_signed : smpl_out_signed_radix2; -- intermediate result re*sin
SIGNAL sin_signed : smpl_cos_sin_signed_wb; -- signed input sin
SIGNAL cos_signed : smpl_cos_sin_signed_wb; -- signed input cos
SIGNAL data_re_signed : smpl_out_signed_radix2; -- signed input data im
SIGNAL data_im_signed : smpl_out_signed_radix2; -- signed input data re
BEGIN
-- assign the signed signals before doing any operation
data_re_signed(w_in-1 DOWNTO 0) <= signed(i_data_re(w_in-1 DOWNTO 0));
data_im_signed(w_in-1 DOWNTO 0) <= signed(i_data_im(w_in-1 DOWNTO 0));
cos_signed <= signed(i_cos);
sin_signed <= signed(i_sin);
-- purpose: multiply the real and imag part with the cos ans isin part of the
-- exponential, and add the results of real parts and imag ones together.
-- Needs 2 clock edges to process the whole mult result
-- inputs: signed data(im & re), signed exponential (cos & sin)
-- outputs: o_data_re, o_data_im
mult : PROCESS(i_clk)
BEGIN
IF rising_edge(i_clk) THEN
data_mult_re_cos_signed(w_in+w_mult-1 DOWNTO 0) <= data_re_signed(w_in-1 DOWNTO 0) * cos_signed;
data_mult_im_cos_signed(w_in+w_mult-1 DOWNTO 0) <= data_im_signed(w_in-1 DOWNTO 0) * cos_signed;
data_mult_im_sin_signed(w_in+w_mult-1 DOWNTO 0) <= data_re_signed(w_in-1 DOWNTO 0) * sin_signed;
data_mult_re_sin_signed(w_in+w_mult-1 DOWNTO 0) <= data_im_signed(w_in-1 DOWNTO 0) * sin_signed;
o_data_re(w_in+w_mult DOWNTO 0) <= std_logic_vector(unsigned(signed(data_mult_re_cos_signed(w_in+w_mult-1)&data_mult_re_cos_signed(w_in+w_mult-1 DOWNTO 0)) - signed(data_mult_re_sin_signed(w_in+w_mult-1)&data_mult_re_sin_signed(w_in+w_mult-1 DOWNTO 0))));-- i*i=-1
o_data_im(w_in+w_mult DOWNTO 0) <= std_logic_vector(unsigned(signed(data_mult_im_cos_signed(w_in+w_mult-1)&data_mult_im_cos_signed(w_in+w_mult-1 DOWNTO 0)) + signed(data_mult_im_sin_signed(w_in+w_mult-1)&data_mult_im_sin_signed(w_in+w_mult-1 DOWNTO 0))));
END IF;
END PROCESS;
END Mult_Path;

Loading…
Cancel
Save