OpenCores
URL https://opencores.org/ocsvn/adaptive_lms_equalizer/adaptive_lms_equalizer/trunk

Subversion Repositories adaptive_lms_equalizer

[/] [adaptive_lms_equalizer/] [trunk/] [code/] [const_ch_filt.vhd] - Blame information for rev 6

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 digish
--  Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com>
2
 
3
--  This program is free software; you can redistribute it and/or modify
4
--  it under the terms of the GNU General Public License as published by
5
--  the Free Software Foundation; either version 2 of the License, or
6
--  (at your option) any later version.
7
--
8
--  This program is distributed in the hope that it will be useful,
9
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
10
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
--  GNU General Public License for more details.
12
--
13
--  You should have received a copy of the GNU General Public License
14
--  along with this program; if not, write to the Free Software
15
--  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
16
 
17
 
18
-- A.4
19
-- channel filter with optimized for constant input data and 
20
-- constant coefficients
21
-- coefficients are rounded to power of two
22
 
23
library IEEE;
24
use IEEE.STD_LOGIC_1164.ALL;
25
use IEEE.STD_LOGIC_ARITH.ALL;
26
use IEEE.STD_LOGIC_UNSIGNED.ALL;
27
 
28
 
29
entity const_ch_filt is
30
    Port ( clock : in std_logic;
31
           data_in : in std_logic_vector(7 downto 0);
32
           shifted_data_out : out std_logic_vector(7 downto 0);
33
           filtered_data_out : out std_logic_vector(7 downto 0));
34
end const_ch_filt;
35
 
36
architecture structural of const_ch_filt is
37
 
38
        component ch_filt_tap
39
            Port ( din : in std_logic_vector(7 downto 0);
40
                   dout : out std_logic_vector(7 downto 0);
41
                   c1_in : in std_logic_vector(7 downto 0);
42
                   c2_in : in std_logic_vector(7 downto 0);
43
                   add_in : in std_logic_vector(7 downto 0);
44
                   add_out : out std_logic_vector(7 downto 0);
45
                   clock : in std_logic);
46
        end component;
47
 
48
        signal t_data_out1: std_logic_vector (7 downto 0);
49
        signal t_data_out2: std_logic_vector (7 downto 0);
50
        signal t_res_out1: std_logic_vector (7 downto 0);
51
        signal t_res_out2: std_logic_vector (7 downto 0);
52
 
53
begin
54
 
55
tap1: ch_filt_tap       --      -0.2031
56
        port map(
57
                        din => data_in,
58
                dout => t_data_out1,
59
                c1_in => "11110011",                -- +1
60
                c2_in => "00001101",                -- -1
61
                add_in => "00000000",
62
                add_out => t_res_out1,
63
                clock => clock
64
                    );
65
 
66
tap2: ch_filt_tap         -- 0.4063
67
        port map(
68
                        din => t_data_out1,
69
                dout => t_data_out2,
70
                c1_in => "00011010",
71
                c2_in => "11100110",
72
                add_in => t_res_out1,
73
                add_out => t_res_out2,
74
                clock => clock
75
                    );
76
tap3: ch_filt_tap         --   -0.7969
77
        port map(
78
                        din => t_data_out2,
79
                dout => shifted_data_out,
80
                c1_in => "11001101",
81
                c2_in => "00110011",
82
                add_in => t_res_out2,
83
                add_out => filtered_data_out,
84
                clock => clock
85
                    );
86
 
87
 
88
 
89
end structural;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.