URL
https://opencores.org/ocsvn/adaptive_lms_equalizer/adaptive_lms_equalizer/trunk
Subversion Repositories adaptive_lms_equalizer
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 3 to Rev 4
- ↔ Reverse comparison
Rev 3 → Rev 4
/tags/V10/code/clock_div.vhd
File deleted
/tags/V10/code/add16.vhd
File deleted
/tags/V10/code/bin_to_7seg.vhd
File deleted
/tags/V10/code/filt_test_system.vhd
File deleted
\ No newline at end of file
/tags/V10/code/unit_calc.vhd
File deleted
/tags/V10/code/test_data_gen.vhd
File deleted
/tags/V10/code/data_gen.vhd
File deleted
/tags/V10/code/d_to_a_1bit.vhd
File deleted
/tags/V10/code/u_scaling.vhd
File deleted
/tags/V10/code/core_filt.vhd
File deleted
/tags/V10/code/shift_1d_16.vhd
File deleted
/tags/V10/code/Mux.vhd
File deleted
/tags/V10/code/Display_MSE.vhd
File deleted
\ No newline at end of file
/tags/V10/code/ch_filt_tap.vhd
File deleted
/tags/V10/code/const_ch_filt.vhd
File deleted
/tags/V10/code/data_gen_translate.vhd
File deleted
/tags/V10/code/tf_lms.vhd
File deleted
/tags/V10/code/mul8.vhd
File deleted
/tags/V10/code/shift_15d.vhd
File deleted
/tags/V10/code/truncation.vhd
File deleted
/tags/V10/code/tr_seq_gen.vhd
File deleted
/tags/V10/code/shift_16d.vhd
File deleted
/tags/V10/code/saturation.vhd
File deleted
/tags/V10/code/test_filt_test_sys.vhd
File deleted
/tags/V10/code/test_lms.vhd
File deleted
/trunk/code/core_filt.vhd
File deleted
/trunk/code/shift_1d_16.vhd
File deleted
/trunk/code/Mux.vhd
File deleted
/trunk/code/Display_MSE.vhd
File deleted
\ No newline at end of file
/trunk/code/ch_filt_tap.vhd
File deleted
/trunk/code/const_ch_filt.vhd
File deleted
/trunk/code/data_gen_translate.vhd
File deleted
/trunk/code/tf_lms.vhd
File deleted
/trunk/code/mul8.vhd
File deleted
/trunk/code/shift_15d.vhd
File deleted
/trunk/code/truncation.vhd
File deleted
/trunk/code/tr_seq_gen.vhd
File deleted
/trunk/code/shift_16d.vhd
File deleted
/trunk/code/saturation.vhd
File deleted
/trunk/code/test_filt_test_sys.vhd
File deleted
/trunk/code/test_lms.vhd
File deleted
/trunk/code/clock_div.vhd
File deleted
/trunk/code/add16.vhd
File deleted
/trunk/code/bin_to_7seg.vhd
File deleted
/trunk/code/filt_test_system.vhd
File deleted
\ No newline at end of file
/trunk/code/unit_calc.vhd
File deleted
/trunk/code/test_data_gen.vhd
File deleted
/trunk/code/data_gen.vhd
File deleted
/trunk/code/d_to_a_1bit.vhd
File deleted
/trunk/code/u_scaling.vhd
File deleted
/adaptive_lms_equalizer/trunk/code/add16.vhd
0,0 → 1,36
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- 16 bit adder |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_SIGNED.ALL; |
|
|
entity add16 is |
Port ( d1_in : in std_logic_vector(15 downto 0); |
d2_in : in std_logic_vector(15 downto 0); |
d_out : out std_logic_vector(15 downto 0)); |
end add16; |
|
architecture Behavioral of add16 is |
|
begin |
d_out <= d1_in + d2_in; |
|
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/bin_to_7seg.vhd
0,0 → 1,56
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
|
-- seven segment display mapping from 8 bit no |
|
|
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
|
entity bin_to_7seg is |
Port ( din : in std_logic_vector(3 downto 0); |
dis_out : out std_logic_vector(7 downto 0)); |
end bin_to_7seg; |
|
architecture Behavioral of bin_to_7seg is |
|
begin |
|
|
dis_out <= "00000010" when din = "0000" else |
"10011110" when din = "0001" else |
"00100100" when din = "0010" else |
"00001100" when din = "0011" else |
"10011000" when din = "0100" else |
"01001000" when din = "0101" else |
"01000000" when din = "0110" else |
"00011110" when din = "0111" else |
"00000000" when din = "1000" else |
"00011000" when din = "1001" else |
"00010000" when din = "1010" else |
"11000000" when din = "1011" else |
"01100010" when din = "1100" else |
"10000100" when din = "1101" else |
"01100000" when din = "1110" else |
"01110000"; |
|
|
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/unit_calc.vhd
0,0 → 1,169
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- A.8 |
-- unit program module of filter core |
-- we have to cascade instance of this module to make multi tap filter |
|
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_SIGNED.ALL; |
|
|
entity unit_calc is |
Port ( x_in : in std_logic_vector(7 downto 0); |
x_N_in : in std_logic_vector(7 downto 0); |
ue_in : in std_logic_vector(7 downto 0); |
y_in : in std_logic_vector(7 downto 0); |
x_out : out std_logic_vector(7 downto 0); |
x_N_out : out std_logic_vector(7 downto 0); |
ue_out : out std_logic_vector(7 downto 0); |
y_out: out std_logic_vector(7 downto 0); |
clock : in std_logic); |
|
end unit_calc; |
|
architecture standard of unit_calc is |
-- component declarations |
-- 8 bit multiplier |
component mul8 |
Port ( d1_in : in std_logic_vector(7 downto 0); |
d2_in : in std_logic_vector(7 downto 0); |
d_out : out std_logic_vector(15 downto 0)); |
|
end component; |
-- 16 bit adder |
component add16 |
Port ( d1_in : in std_logic_vector(15 downto 0); |
d2_in : in std_logic_vector(15 downto 0); |
d_out : out std_logic_vector(15 downto 0)); |
|
end component; |
|
-- saturation circuit |
component saturation |
Port ( d_in : in std_logic_vector(15 downto 0); |
d_out : out std_logic_vector(15 downto 0)); |
end component; |
|
-- u scaling circuit |
component u_scaling |
Port ( d_in : in std_logic_vector(15 downto 0); |
d_out : out std_logic_vector(15 downto 0); |
clock : in std_logic); |
end component; |
|
-- truncation circuit |
component truncation |
Port ( d_in : in std_logic_vector(15 downto 0); |
d_out : out std_logic_vector(7 downto 0)); |
end component; |
-- one sample delay |
component shift_1d |
Port ( xin : in std_logic_vector(7 downto 0); |
xout : out std_logic_vector(7 downto 0); |
clock : in std_logic); |
end component; |
|
-- shift regester |
component shift_1d_16 |
Port ( xin : in std_logic_vector(15 downto 0); |
xout : out std_logic_vector(15 downto 0); |
clock : in std_logic); |
end component; |
|
|
signal shiftx: std_logic_vector(31 downto 0); |
signal shiftxn: std_logic_vector(31 downto 0); |
signal shiftue: std_logic_vector(23 downto 0); |
signal shifty: std_logic_vector(15 downto 0); |
|
signal coeff8: std_logic_vector(7 downto 0); |
signal coeff16:std_logic_vector(15 downto 0); |
signal xnin_ue:std_logic_vector(15 downto 0); |
signal xnin_ue_scaled:std_logic_vector(15 downto 0); |
signal new_coeff_true:std_logic_vector(15 downto 0); |
signal delayed_new_coeff_true:std_logic_vector(15 downto 0); |
signal y_out16:std_logic_vector(15 downto 0); |
signal y_out8:std_logic_vector(7 downto 0); |
begin |
-- basic pipelining |
unit_process: |
process (clock) |
begin |
if(clock'event and clock = '1') then |
|
shiftx <= x_in & shiftx(31 downto 8); |
shiftxn <= x_N_in & shiftxn(31 downto 8); |
shiftue <= ue_in & shiftue(23 downto 8); |
shifty <= y_in & shifty(15 downto 8); |
|
end if; |
end process; |
|
x_out <= shiftx(7 downto 0); |
x_N_out <= shiftxn(7 downto 0); |
ue_out <= shiftue(7 downto 0); |
|
mul_xnin_ue: mul8 -- no delay |
port map( d1_in => x_N_in, |
d2_in => ue_in, |
d_out => xnin_ue); |
|
u1:u_scaling -- 1 clock cycle |
port map( d_in => xnin_ue, |
d_out => xnin_ue_scaled, |
clock => clock |
); |
|
add1:add16 -- no delay |
port map( d1_in => xnin_ue_scaled, |
d2_in => coeff16, |
d_out => new_coeff_true |
); |
|
delay_2:shift_1d_16 -- each clock |
port map( clock => clock, |
xin => new_coeff_true, |
xout => delayed_new_coeff_true |
); |
|
|
sat_1:saturation |
port map( d_in => delayed_new_coeff_true, |
d_out => coeff16 |
); |
trunc_1:truncation |
port map( |
d_in => coeff16, |
d_out => coeff8 |
); |
|
mul_coeff_x_in:mul8 |
port map( d1_in => coeff8, |
d2_in => shiftx(31 downto 24), |
d_out => y_out16 |
); |
trunc_2:truncation |
port map( |
d_in => y_out16, |
d_out => y_out8 |
); |
y_out <= y_out8 + shifty(7 downto 0); |
end standard; |
|
/adaptive_lms_equalizer/trunk/code/test_data_gen.vhd
0,0 → 1,85
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- VHDL Test Bench Created from source file data_gen.vhd -- 09:38:13 03/25/2005 |
-- |
-- Notes: |
-- This testbench has been automatically generated using types std_logic and |
-- std_logic_vector for the ports of the unit under test. Xilinx recommends |
-- that these types always be used for the top-level I/O of a design in order |
-- to guarantee that the testbench will bind correctly to the post-implementation |
-- simulation model. |
-- |
LIBRARY ieee; |
USE ieee.std_logic_1164.ALL; |
USE ieee.numeric_std.ALL; |
|
ENTITY testbench IS |
END testbench; |
|
ARCHITECTURE behavior OF testbench IS |
|
COMPONENT data_gen |
PORT( |
clock : IN std_logic; |
reset : IN std_logic; |
xout : OUT std_logic_vector(7 downto 0); |
dxout : OUT std_logic_vector(7 downto 0) |
); |
END COMPONENT; |
|
SIGNAL clock : std_logic; |
SIGNAL reset : std_logic; |
SIGNAL xout : std_logic_vector(7 downto 0); |
SIGNAL dxout : std_logic_vector(7 downto 0); |
|
CONSTANT clk_high : time := 10 ns; |
CONSTANT clk_low : time := 10 ns; |
CONSTANT clk_period : time := 20 ns; |
CONSTANT clk_hold : time := 4 ns; |
|
|
BEGIN |
|
uut: data_gen PORT MAP( |
clock => clock, |
reset => reset, |
xout => xout, |
dxout => dxout |
); |
|
|
-- *** Test Bench - User Defined Section *** |
clk_gen: PROCESS |
BEGIN |
clock <= '1'; |
WAIT FOR clk_high; |
clock <= '0'; |
WAIT FOR clk_low; |
|
END PROCESS clk_gen; |
|
reset_gen: process |
begin |
reset <= '1'; |
wait for clk_period*5; |
reset <= '0'; |
|
wait; |
end process reset_gen; |
-- *** End Test Bench - User Defined Section *** |
|
END; |
/adaptive_lms_equalizer/trunk/code/filt_test_system.vhd
0,0 → 1,173
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- This File is Testing System For Equalizer |
-- It Includes DATA generator Equalizer core and Error Display unit |
|
-- File: Filt_test_system.vhd |
-- Developer: Digish K. Pandya |
-- Test bench file test_filt_test_sys.vhd |
|
-- Main Testing system for LMS adaptive filter |
-- Synthesised and tested on SPARTAN II xc2s100-6qt144 |
|
--Libraries from vendor |
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_SIGNED.ALL; |
|
-- Pin Definations |
entity filt_test_system is |
Port ( clock : in std_logic; |
error_led_out : out std_logic_vector(7 downto 0); |
seg_select:out std_logic_vector(3 downto 0); |
error_freq_out : out std_logic; |
filt_data_out : out std_logic_vector(7 downto 0); |
reset : in std_logic; |
reset_clk : in std_logic; |
adaption_enable : in std_logic); |
end filt_test_system; |
|
-- Architecture body |
|
architecture test_chip of filt_test_system is |
|
-- Component Declarations |
|
-- 1 LMS filter Transpose form Architecture |
component tf_lms |
Port ( |
xin : in std_logic_vector(7 downto 0); -- data input |
dxin : in std_logic_vector(7 downto 0); -- desired response input |
clock : in std_logic; -- clock |
adapt_en: in std_logic; -- enable adaption |
|
err:out std_logic_vector(7 downto 0); -- error output |
yout : out std_logic_vector(7 downto 0) -- output data |
); |
end component ; |
|
-- 2 Data generator system |
component data_gen |
Port ( |
clock : in std_logic; |
reset : in std_logic; |
|
xout : out std_logic_vector(7 downto 0); |
dxout : out std_logic_vector(7 downto 0) |
); |
end component ; |
|
-- 3 Clock devider |
-- Provides two clocks for different purpose |
component clock_div |
Port ( reset: in std_logic; |
in_clk : in std_logic; |
|
out1 : out std_logic; -- fast |
out2 : out std_logic); -- slow |
end component; |
|
-- 4 Displays MSE on seven segment diplay |
component Display_MSE |
Port ( reset: in std_logic; |
error_in : in std_logic_vector(7 downto 0); |
clock : in std_logic; |
|
an_out: out std_logic; |
seg_select_out : out std_logic_vector(3 downto 0); |
seg_dis_out : out std_logic_vector(7 downto 0)); |
end component; |
|
-- global clock buffer primary (for input pin) |
-- [Not able to display linkage but available in RTL] |
component BUFGP |
port (I: in std_logic; O: out std_logic); |
end component; |
-- clock buffer Secondary (for internal logic) |
-- [Not able to display linkage but available in RTL] |
component BUFGS |
port (I: in STD_LOGIC;O: out STD_LOGIC); |
end component; |
|
|
-- Local Interconnects |
signal xout_tmp: std_logic_vector( 7 downto 0); |
signal dxout_tmp: std_logic_vector( 7 downto 0); |
signal clock_fast,clock_slow: std_logic; |
signal error_dis_in : std_logic_vector(7 downto 0); |
signal CLK_SIG,clock_f,clock_s: std_logic; |
|
begin |
-- Clock Input through buffer |
U1: BUFGP port map (I => clock, O => CLK_SIG); |
|
-- Test DATA generator |
data_gen1: data_gen |
port map( |
|
clock => clock_slow, |
reset => reset, |
xout => xout_tmp, |
dxout => dxout_tmp |
); |
|
-- LMS core UNDER test |
lms: tf_lms |
Port map( |
xin => xout_tmp, |
dxin => dxout_tmp, |
clock => clock_slow, |
err => error_dis_in, |
yout => filt_data_out, |
adapt_en => adaption_enable |
); |
|
|
-- Fast clock used to avoide flicker |
err_display:display_mse |
port map( |
reset => reset, |
error_in => error_dis_in, |
clock => clock_fast, |
|
an_out => error_freq_out, |
seg_select_out => seg_select, |
seg_dis_out => error_led_out |
|
); |
|
|
-- Clock Devider |
cd: clock_div |
port map( |
reset => reset_clk, |
in_clk => clk_sig, |
out1 => clock_f, |
out2 => clock_s |
); |
|
-- Fast clock for Seven Segment Display refresh |
U2: BUFGS port map (I => clock_f, O => clock_fast); |
|
-- Slow clock for Filtering (SO we can see changes in on Sevensegment) |
-- In actual application we have to keep maximum possible clock here |
U3: BUFGS port map (I => clock_s, O => clock_slow); |
|
|
end test_chip; |
-- The End -- |
/adaptive_lms_equalizer/trunk/code/data_gen.vhd
0,0 → 1,76
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- A.3 data_gen.vhd |
-- datagenerator system for generating test data feed to lms filter |
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
|
|
entity data_gen is |
Port ( clock : in std_logic; |
reset : in std_logic; |
xout : out std_logic_vector(7 downto 0); |
dxout : out std_logic_vector(7 downto 0)); |
end data_gen; |
|
architecture structural of data_gen is |
-- training sequence generator |
component tr_seq_gen |
Port ( clock : in std_logic; |
reset : in std_logic; |
data_out : out std_logic_vector(7 downto 0) |
); |
end component; |
-- channel filter |
component const_ch_filt |
Port ( |
clock : in std_logic; |
data_in : in std_logic_vector(7 downto 0); |
shifted_data_out : out std_logic_vector(7 downto 0); |
filtered_data_out : out std_logic_vector(7 downto 0) |
); |
end component; |
|
signal data : std_logic_vector (7 downto 0); |
|
begin |
-- Test Data generator |
data_generator: |
process(clock,reset) |
begin |
if(clock'event and clock = '1') then |
if (data = "01000000") then |
data <= "11000000"; |
else |
data <= "01000000"; |
end if; |
end if; |
if(reset = '0') then |
data <= "01000000"; |
end if; |
|
end process; |
-- This Channel Filter will convolve our input Signal |
channel: const_ch_filt |
port map ( |
clock => clock, |
data_in => data, |
shifted_data_out => dxout, |
filtered_data_out => xout |
); |
|
end structural; |
/adaptive_lms_equalizer/trunk/code/u_scaling.vhd
0,0 → 1,44
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- A.10 |
-- multiply by 0.0625 |
-- only simple shift logic is applied |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_SIGNED.ALL; |
|
|
entity u_scaling is |
Port ( d_in : in std_logic_vector(15 downto 0); |
d_out : out std_logic_vector(15 downto 0); |
clock : in std_logic); |
end u_scaling; |
|
architecture combinational of u_scaling is |
signal sign_bit:std_logic_vector(4 downto 0); |
begin |
p1: |
process(clock) |
begin |
|
if(clock'event and clock = '1') then |
d_out <= d_in(15) & d_in(15) & d_in(15) & d_in(15) & d_in(15) & d_in(14 downto 4); |
end if; |
end process; |
end combinational; |
/adaptive_lms_equalizer/trunk/code/d_to_a_1bit.vhd
0,0 → 1,50
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- simple one bit analog output |
-- is outputting frequency in responce to count no |
-- so it repressent amount of error with frequency |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.all; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
entity d_a is |
port ( |
clk : in std_logic; |
data_in : in std_logic_vector (15 downto 0); |
an_out : out std_logic; |
reset: in std_logic |
); |
end d_a; |
|
architecture d_a_arch of d_a is |
signal d_a_Accumulator : std_logic_vector(8 downto 0); |
begin |
process(clk) |
begin |
if (clk'event and clk = '1') then |
if (reset = '0') then |
d_a_Accumulator <= "000000000"; |
else |
d_a_Accumulator <= ("0" & d_a_Accumulator(7 downto 0)) + ("0" & data_in(7 downto 0)); |
end if; |
end if; |
end process; |
|
an_out <= d_a_Accumulator(8); |
end d_a_arch; |
|
/adaptive_lms_equalizer/trunk/code/core_filt.vhd
0,0 → 1,141
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
|
-- A.7 |
-- Filter core for adaptive equalizer |
-- Five tap filter |
-- structuaral description |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
entity core_filt is |
Port ( |
x_in : in std_logic_vector(7 downto 0); |
x_N_in : in std_logic_vector(7 downto 0); |
ue_in : in std_logic_vector(7 downto 0); |
clock : in std_logic; |
y_out : out std_logic_vector(7 downto 0)); |
end core_filt; |
|
architecture pm_chain of core_filt is |
|
-- basic tap processing element |
component unit_calc |
Port ( x_in : in std_logic_vector(7 downto 0); |
x_N_in : in std_logic_vector(7 downto 0); |
ue_in : in std_logic_vector(7 downto 0); |
y_in : in std_logic_vector(7 downto 0); |
x_out : out std_logic_vector(7 downto 0); |
x_N_out : out std_logic_vector(7 downto 0); |
ue_out : out std_logic_vector(7 downto 0); |
y_out: out std_logic_vector(7 downto 0); |
clock : in std_logic); |
end component ; |
|
|
signal x_out_t1 :std_logic_vector(7 downto 0); |
signal x_out_t2 :std_logic_vector(7 downto 0); |
signal x_out_t3 :std_logic_vector(7 downto 0); |
signal x_out_t4 :std_logic_vector(7 downto 0); |
|
signal x_N_out_t1 :std_logic_vector(7 downto 0); |
signal x_N_out_t2 :std_logic_vector(7 downto 0); |
signal x_N_out_t3 :std_logic_vector(7 downto 0); |
signal x_N_out_t4 :std_logic_vector(7 downto 0); |
|
signal ue_out_t1 :std_logic_vector(7 downto 0); |
signal ue_out_t2 :std_logic_vector(7 downto 0); |
signal ue_out_t3 :std_logic_vector(7 downto 0); |
signal ue_out_t4 :std_logic_vector(7 downto 0); |
|
signal y_out_t1 :std_logic_vector(7 downto 0); |
signal y_out_t2 :std_logic_vector(7 downto 0); |
signal y_out_t3 :std_logic_vector(7 downto 0); |
signal y_out_t4 :std_logic_vector(7 downto 0); |
|
|
|
begin |
|
tap1: unit_calc |
port map ( |
x_in => x_in, |
x_N_in => x_N_in, |
ue_in => ue_in, |
y_in => "00000000", |
x_out => x_out_t1, |
x_N_out => x_N_out_t1, |
ue_out => ue_out_t1, |
y_out => y_out_t1, |
clock => clock |
); |
tap2: unit_calc |
port map ( |
x_in => x_out_t1, |
x_N_in => x_N_out_t1, |
ue_in => ue_out_t1, |
y_in => y_out_t1, |
x_out => x_out_t2, |
x_N_out => x_N_out_t2, |
ue_out => ue_out_t2, |
y_out => y_out_t2, |
clock => clock |
); |
tap3: unit_calc |
port map ( |
x_in => x_out_t2, |
x_N_in => x_N_out_t2, |
ue_in => ue_out_t2, |
y_in => y_out_t2, |
x_out => x_out_t3, |
x_N_out => x_N_out_t3, |
ue_out => ue_out_t3, |
y_out => y_out_t3, |
clock => clock |
); |
tap4: unit_calc |
port map ( |
x_in => x_out_t3, |
x_N_in => x_N_out_t3, |
ue_in => ue_out_t3, |
y_in => y_out_t3, |
x_out => x_out_t4, |
x_N_out => x_N_out_t4, |
ue_out => ue_out_t4, |
y_out => y_out_t4, |
clock => clock |
); |
tap5: unit_calc |
port map ( |
x_in => x_out_t4, |
x_N_in => x_N_out_t4, |
ue_in => ue_out_t4, |
y_in => y_out_t4, |
x_out => open, |
x_N_out => open, |
ue_out => open, |
y_out => y_out, |
clock => clock |
); |
|
|
|
|
end pm_chain; |
/adaptive_lms_equalizer/trunk/code/shift_1d_16.vhd
0,0 → 1,47
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- 16 vit shift regester |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
|
entity shift_1d_16 is |
Port ( xin : in std_logic_vector(15 downto 0); |
xout : out std_logic_vector(15 downto 0); |
clock : in std_logic); |
end shift_1d_16; |
|
architecture Behavioral of shift_1d_16 is |
signal shift_reg: std_logic_vector (15 downto 0); |
|
begin |
shift: |
process(clock) |
begin |
if(clock'event and clock = '1') then |
|
shift_reg <= xin ; |
|
end if; |
end process; |
xout <= shift_reg; |
|
|
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/Display_MSE.vhd
0,0 → 1,140
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
|
-- ******************--- |
-- |
-- To be used with LMS testing rutine |
-- process Error signal for proper display |
-- |
-- ******************--- |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_SIGNED.ALL; |
|
-- Main BLOCK BODY |
entity Display_MSE is |
Port ( |
reset: in std_logic; |
error_in : in std_logic_vector(7 downto 0); |
clock : in std_logic; |
an_out: out std_logic; |
seg_select_out : out std_logic_vector(3 downto 0); |
seg_dis_out : out std_logic_vector(7 downto 0)); |
end Display_MSE; |
|
-- Architecture |
architecture mixed of Display_MSE is |
|
-- Components Used |
|
-- 1 Multiplexer For input to 7 segment module |
component mux |
Port ( in1 : in std_logic_vector(3 downto 0); |
in2 : in std_logic_vector(3 downto 0); |
in3 : in std_logic_vector(3 downto 0); |
in4 : in std_logic_vector(3 downto 0); |
sel : in std_logic_vector( 1 downto 0); |
|
o_ut : out std_logic_vector(3 downto 0)); |
end component; |
|
-- 2 Binary to sevenseg Mapping module |
component bin_to_7seg |
Port ( din : in std_logic_vector(3 downto 0); |
dis_out : out std_logic_vector(7 downto 0)); |
end component; |
|
-- 3 Digital to analog output 1 bit (frequency) |
component d_a |
port ( |
clk : in std_logic; |
data_in : in std_logic_vector (15 downto 0); |
reset:in std_logic; |
|
an_out : out std_logic |
); |
end component; |
|
-- Local Interconnects |
signal error_tmp: std_logic_vector( 15 downto 0); |
signal error_led_out_tmp:std_logic_vector(7 downto 0); |
signal seg_in: std_logic_vector( 3 downto 0); |
signal seg_sel: std_logic_vector( 1 downto 0); |
|
begin |
|
-- FSM for Selcting 7 segment display (Multiplexed mode) |
|
mux_display_sel: |
process (clock) |
begin |
if(clock'event and clock = '1') then |
if reset = '0' then seg_sel <= "00"; |
elsif seg_sel = "00" then seg_sel <= "01"; |
elsif seg_sel = "01" then seg_sel <= "10"; |
elsif seg_sel = "10" then seg_sel <= "11"; |
elsif seg_sel = "11" then seg_sel <= "00"; |
else seg_sel <= "ZZ"; |
end if; |
|
end if; |
end process; |
|
-- Selecting perticular segment for display |
|
seg_select_out <= "0ZZZ" when seg_sel = "00" else |
"Z0ZZ" when seg_sel = "01" else |
"ZZ0Z" when seg_sel = "10" else |
"ZZZ0" when seg_sel = "11" else |
"ZZZZ"; |
|
-- IT is Square of ERROR |
error_tmp <= error_in * error_in; |
|
-- Converting Binary to Seven segment pattern |
seven_seg:bin_to_7seg |
Port map( |
din => seg_in, |
dis_out => error_led_out_tmp |
); |
|
-- Negative logic out |
seg_dis_out <= not error_led_out_tmp; |
|
-- MULTIPLEXED DISPLAY thats why .. |
m1:mux |
port map(in1 => error_tmp(3 downto 0), |
in2 => error_tmp(7 downto 4), |
in3 => error_tmp(11 downto 8), |
in4 => error_tmp(15 downto 12), |
sel => seg_sel, -- Changing with fast clock |
o_ut => seg_in |
); |
|
-- NUMBER to FREQ Generator (1 bit Analog) |
d_to_a:d_a |
port map( |
clk => clock, |
data_in => error_tmp, -- 16 bit |
an_out => an_out, -- 1 bit |
reset => reset |
); |
|
end mixed; |
--************ END *******----- |
/adaptive_lms_equalizer/trunk/code/Mux.vhd
0,0 → 1,43
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
|
entity Mux is |
Port ( in1 : in std_logic_vector(3 downto 0); |
in2 : in std_logic_vector(3 downto 0); |
in3 : in std_logic_vector(3 downto 0); |
in4 : in std_logic_vector(3 downto 0); |
sel : in std_logic_vector(1 downto 0); |
o_ut : out std_logic_vector(3 downto 0)); |
end Mux; |
|
architecture Behavioral of Mux is |
|
begin |
|
o_ut <= in1 when sel = "00" else |
in2 when sel = "01" else |
in3 when sel = "10" else |
in4 when sel = "11" else |
"0000"; |
|
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/ch_filt_tap.vhd
0,0 → 1,59
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
|
-- A.5 |
-- simple logic for filter tap operation optimized for the fact that |
-- that there are only two possible data at input |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_SIGNED.ALL; |
|
|
|
entity ch_filt_tap is |
Port ( din : in std_logic_vector(7 downto 0); |
dout : out std_logic_vector(7 downto 0); |
c1_in : in std_logic_vector(7 downto 0); |
c2_in : in std_logic_vector(7 downto 0); |
add_in : in std_logic_vector(7 downto 0); |
add_out : out std_logic_vector(7 downto 0); |
clock : in std_logic); |
end ch_filt_tap; |
|
architecture Behavioral of ch_filt_tap is |
|
signal mul_res:std_logic_vector(7 downto 0); |
|
begin |
shift_process: |
process (clock) |
begin |
if(clock'event and clock = '1') then |
dout <= din; |
end if; |
end process; |
|
|
with din select |
mul_res <= c1_in when "11000000", -- -1 |
c2_in when others; -- +1 |
|
add_out <= add_in + mul_res; |
|
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/const_ch_filt.vhd
0,0 → 1,89
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
|
-- A.4 |
-- channel filter with optimized for constant input data and |
-- constant coefficients |
-- coefficients are rounded to power of two |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
|
entity const_ch_filt is |
Port ( clock : in std_logic; |
data_in : in std_logic_vector(7 downto 0); |
shifted_data_out : out std_logic_vector(7 downto 0); |
filtered_data_out : out std_logic_vector(7 downto 0)); |
end const_ch_filt; |
|
architecture structural of const_ch_filt is |
|
component ch_filt_tap |
Port ( din : in std_logic_vector(7 downto 0); |
dout : out std_logic_vector(7 downto 0); |
c1_in : in std_logic_vector(7 downto 0); |
c2_in : in std_logic_vector(7 downto 0); |
add_in : in std_logic_vector(7 downto 0); |
add_out : out std_logic_vector(7 downto 0); |
clock : in std_logic); |
end component; |
|
signal t_data_out1: std_logic_vector (7 downto 0); |
signal t_data_out2: std_logic_vector (7 downto 0); |
signal t_res_out1: std_logic_vector (7 downto 0); |
signal t_res_out2: std_logic_vector (7 downto 0); |
|
begin |
|
tap1: ch_filt_tap -- -0.2031 |
port map( |
din => data_in, |
dout => t_data_out1, |
c1_in => "11110011", -- +1 |
c2_in => "00001101", -- -1 |
add_in => "00000000", |
add_out => t_res_out1, |
clock => clock |
); |
|
tap2: ch_filt_tap -- 0.4063 |
port map( |
din => t_data_out1, |
dout => t_data_out2, |
c1_in => "00011010", |
c2_in => "11100110", |
add_in => t_res_out1, |
add_out => t_res_out2, |
clock => clock |
); |
tap3: ch_filt_tap -- -0.7969 |
port map( |
din => t_data_out2, |
dout => shifted_data_out, |
c1_in => "11001101", |
c2_in => "00110011", |
add_in => t_res_out2, |
add_out => filtered_data_out, |
clock => clock |
); |
|
|
|
end structural; |
/adaptive_lms_equalizer/trunk/code/data_gen_translate.vhd
0,0 → 1,828
-- Xilinx Vhdl produced by program ngd2vhdl F.28 |
-- Command: -quiet -rpw 100 -tpw 0 -ar Structure -xon true -w -log __projnav/ngd2vhdl.log data_gen.ngd data_gen_translate.vhd |
-- Input file: data_gen.ngd |
-- Output file: data_gen_translate.vhd |
-- Design name: data_gen |
-- Xilinx: E:/xilinx |
-- # of Entities: 1 |
-- Device: 2s100tq144-6 |
|
-- The output of ngd2vhdl is a simulation model. This file cannot be synthesized, |
-- or used in any other manner other than simulation. This netlist uses simulation |
-- primitives which may not represent the true implementation of the device, however |
-- the netlist is functionally correct. Do not modify this file. |
|
-- Model for ROC (Reset-On-Configuration) Cell |
library IEEE; |
use IEEE.std_logic_1164.all; |
use IEEE.VITAL_Timing.all; |
entity ROC is |
generic (InstancePath: STRING := "*"; |
WIDTH : Time := 100 ns); |
port(O : out std_ulogic := '1') ; |
attribute VITAL_LEVEL0 of ROC : entity is TRUE; |
end ROC; |
|
architecture ROC_V of ROC is |
attribute VITAL_LEVEL0 of ROC_V : architecture is TRUE; |
begin |
ONE_SHOT : process |
begin |
if (WIDTH <= 0 ns) then |
assert FALSE report |
"*** Error: a positive value of WIDTH must be specified ***" |
severity failure; |
else |
wait for WIDTH; |
O <= '0'; |
end if; |
wait; |
end process ONE_SHOT; |
end ROC_V; |
|
-- Model for TOC (Tristate-On-Configuration) Cell |
library IEEE; |
use IEEE.std_logic_1164.all; |
use IEEE.VITAL_Timing.all; |
entity TOC is |
generic (InstancePath: STRING := "*"; |
WIDTH : Time := 0 ns); |
port(O : out std_ulogic := '0'); |
attribute VITAL_LEVEL0 of TOC : entity is TRUE; |
end TOC; |
|
architecture TOC_V of TOC is |
attribute VITAL_LEVEL0 of TOC_V : architecture is TRUE; |
begin |
ONE_SHOT : process |
begin |
O <= '1'; |
if (WIDTH <= 0 ns) then |
O <= '0'; |
else |
wait for WIDTH; |
O <= '0'; |
end if; |
wait; |
end process ONE_SHOT; |
end TOC_V; |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
library SIMPRIM; |
use SIMPRIM.VCOMPONENTS.ALL; |
use SIMPRIM.VPACKAGE.ALL; |
entity data_gen is |
port ( |
reset : in STD_LOGIC := 'X'; |
clock : in STD_LOGIC := 'X'; |
dxout : out STD_LOGIC_VECTOR ( 7 downto 0 ); |
xout : out STD_LOGIC_VECTOR ( 7 downto 0 ) |
); |
end data_gen; |
|
architecture Structure of data_gen is |
component ROC |
generic (InstancePath: STRING := "*"; |
WIDTH : Time := 100 ns); |
port (O : out STD_ULOGIC := '1'); |
end component; |
component TOC |
generic (InstancePath: STRING := "*"; |
WIDTH : Time := 0 ns); |
port (O : out STD_ULOGIC := '1'); |
end component; |
signal data_0_Q : STD_LOGIC; |
signal reset_ibuf : STD_LOGIC; |
signal clock_bufgp : STD_LOGIC; |
signal Q_n0003 : STD_LOGIC; |
signal xout_1_obuf : STD_LOGIC; |
signal n2175 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_lut2_5 : STD_LOGIC; |
signal xout_2_obuf : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_lut2_4 : STD_LOGIC; |
signal data_7_Q : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_cy_3 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_lut2_3 : STD_LOGIC; |
signal channel_tap1_madd_add_out_inst_cy_6 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_cy_5 : STD_LOGIC; |
signal xout_7_obuf : STD_LOGIC; |
signal xout_6_obuf : STD_LOGIC; |
signal xout_5_obuf : STD_LOGIC; |
signal xout_4_obuf : STD_LOGIC; |
signal xout_3_obuf : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_lut2_3 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_cy_1 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_lut2_6 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_lut2_7 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_cy_6 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_cy_1 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_cy_4 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_cy_3 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_lut2_1 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_lut2_5 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_lut2_2 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_lut2_2 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_lut2_1 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_cy_2 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_cy_2 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_lut2_6 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_cy_5 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_cy_6 : STD_LOGIC; |
signal channel_tap2_madd_add_out_inst_cy_4 : STD_LOGIC; |
signal channel_tap3_madd_add_out_inst_lut2_4 : STD_LOGIC; |
signal Q_n0003_O : STD_LOGIC; |
signal clock_bufgp_IBUFG : STD_LOGIC; |
signal GSR : STD_LOGIC; |
signal dxout_7_obuf_GTS_TRI : STD_LOGIC; |
signal GTS : STD_LOGIC; |
signal dxout_6_obuf_GTS_TRI : STD_LOGIC; |
signal dxout_5_obuf_GTS_TRI : STD_LOGIC; |
signal dxout_4_obuf_GTS_TRI : STD_LOGIC; |
signal dxout_3_obuf_GTS_TRI : STD_LOGIC; |
signal dxout_2_obuf_GTS_TRI : STD_LOGIC; |
signal dxout_1_obuf_GTS_TRI : STD_LOGIC; |
signal dxout_0_obuf_GTS_TRI : STD_LOGIC; |
signal xout_7_obuf_GTS_TRI : STD_LOGIC; |
signal xout_6_obuf_GTS_TRI : STD_LOGIC; |
signal xout_5_obuf_GTS_TRI : STD_LOGIC; |
signal xout_4_obuf_GTS_TRI : STD_LOGIC; |
signal xout_3_obuf_GTS_TRI : STD_LOGIC; |
signal xout_2_obuf_GTS_TRI : STD_LOGIC; |
signal xout_1_obuf_GTS_TRI : STD_LOGIC; |
signal xout_0_obuf_GTS_TRI : STD_LOGIC; |
signal VCC : STD_LOGIC; |
signal GND : STD_LOGIC; |
signal NlwInverterSignal_dxout_7_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_dxout_6_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_dxout_5_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_dxout_4_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_dxout_3_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_dxout_2_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_dxout_1_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_dxout_0_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_xout_7_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_xout_6_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_xout_5_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_xout_4_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_xout_3_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_xout_2_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_xout_1_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal NlwInverterSignal_xout_0_obuf_GTS_TRI_CTL : STD_LOGIC; |
signal channel_tap3_dout : STD_LOGIC_VECTOR ( 7 downto 7 ); |
signal channel_tap1_dout : STD_LOGIC_VECTOR ( 7 downto 7 ); |
signal channel_t_res_out2 : STD_LOGIC_VECTOR ( 7 downto 2 ); |
signal channel_tap2_mul_res : STD_LOGIC_VECTOR ( 2 downto 2 ); |
signal channel_tap3_mul_res : STD_LOGIC_VECTOR ( 5 downto 5 ); |
signal channel_tap2_dout : STD_LOGIC_VECTOR ( 7 downto 7 ); |
begin |
channel_tap2_madd_add_out_inst_lut2_511 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_tap2_mul_res(2), |
ADR1 => data_7_Q, |
O => n2175 |
); |
channel_tap3_madd_add_out_inst_sum_1 : X_XOR2 |
port map ( |
I0 => data_0_Q, |
I1 => channel_tap3_madd_add_out_inst_lut2_1, |
O => xout_1_obuf |
); |
channel_tap2_madd_add_out_inst_lut2_41 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_tap1_dout(7), |
ADR1 => data_7_Q, |
O => channel_tap2_madd_add_out_inst_lut2_4 |
); |
channel_tap3_madd_add_out_inst_sum_6 : X_XOR2 |
port map ( |
I0 => channel_tap3_madd_add_out_inst_cy_5, |
I1 => channel_tap3_madd_add_out_inst_lut2_6, |
O => xout_6_obuf |
); |
data_7 : X_SFF |
port map ( |
I => Q_n0003, |
SRST => reset_ibuf, |
CLK => clock_bufgp, |
O => data_7_Q, |
CE => VCC, |
SET => GND, |
RST => GSR, |
SSET => GND |
); |
xout_0_obuf : X_BUF |
port map ( |
I => channel_tap1_madd_add_out_inst_cy_6, |
O => xout_0_obuf_GTS_TRI |
); |
channel_tap2_madd_add_out_inst_sum_6 : X_XOR2 |
port map ( |
I0 => channel_tap2_madd_add_out_inst_cy_5, |
I1 => channel_tap2_madd_add_out_inst_lut2_6, |
O => channel_t_res_out2(6) |
); |
dxout_0_obuf : X_BUF |
port map ( |
I => data_0_Q, |
O => dxout_0_obuf_GTS_TRI |
); |
channel_tap3_madd_add_out_inst_lut2_21 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_t_res_out2(2), |
ADR1 => channel_tap2_dout(7), |
O => channel_tap3_madd_add_out_inst_lut2_2 |
); |
channel_tap2_madd_add_out_inst_cy_1_0 : X_MUX2 |
port map ( |
IA => data_0_Q, |
IB => channel_tap1_madd_add_out_inst_cy_6, |
SEL => channel_tap2_madd_add_out_inst_lut2_1, |
O => channel_tap2_madd_add_out_inst_cy_1 |
); |
channel_tap2_madd_add_out_inst_lut2_111 : X_LUT2 |
generic map( |
INIT => X"5" |
) |
port map ( |
ADR0 => data_7_Q, |
O => channel_tap2_madd_add_out_inst_lut2_1, |
ADR1 => GND |
); |
xst_vcc : X_ONE |
port map ( |
O => data_0_Q |
); |
xst_gnd : X_ZERO |
port map ( |
O => channel_tap1_madd_add_out_inst_cy_6 |
); |
channel_tap3_madd_add_out_inst_cy_6_1 : X_MUX2 |
port map ( |
IA => channel_t_res_out2(6), |
IB => channel_tap3_madd_add_out_inst_cy_5, |
SEL => channel_tap3_madd_add_out_inst_lut2_6, |
O => channel_tap3_madd_add_out_inst_cy_6 |
); |
channel_tap2_madd_add_out_inst_cy_6_2 : X_MUX2 |
port map ( |
IA => channel_tap2_mul_res(2), |
IB => channel_tap2_madd_add_out_inst_cy_5, |
SEL => channel_tap2_madd_add_out_inst_lut2_6, |
O => channel_tap2_madd_add_out_inst_cy_6 |
); |
channel_tap3_madd_add_out_inst_lut2_61 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_t_res_out2(6), |
ADR1 => channel_tap2_dout(7), |
O => channel_tap3_madd_add_out_inst_lut2_6 |
); |
channel_tap2_madd_add_out_inst_lut2_31 : X_LUT2 |
generic map( |
INIT => X"9" |
) |
port map ( |
ADR0 => channel_tap1_dout(7), |
ADR1 => data_7_Q, |
O => channel_tap2_madd_add_out_inst_lut2_3 |
); |
channel_tap3_madd_add_out_inst_lut2_71 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_tap2_dout(7), |
ADR1 => channel_t_res_out2(7), |
O => channel_tap3_madd_add_out_inst_lut2_7 |
); |
channel_tap3_madd_add_out_inst_sum_5 : X_XOR2 |
port map ( |
I0 => channel_tap3_madd_add_out_inst_cy_4, |
I1 => channel_tap3_madd_add_out_inst_lut2_5, |
O => xout_5_obuf |
); |
channel_tap3_dout_7 : X_FF |
port map ( |
I => channel_tap2_dout(7), |
CLK => clock_bufgp, |
O => channel_tap3_dout(7), |
CE => VCC, |
SET => GND, |
RST => GSR |
); |
channel_tap2_madd_add_out_inst_cy_5_3 : X_MUX2 |
port map ( |
IA => channel_tap2_mul_res(2), |
IB => channel_tap2_madd_add_out_inst_cy_4, |
SEL => n2175, |
O => channel_tap2_madd_add_out_inst_cy_5 |
); |
dxout_5_obuf : X_BUF |
port map ( |
I => channel_tap3_dout(7), |
O => dxout_5_obuf_GTS_TRI |
); |
xout_7_obuf_4 : X_BUF |
port map ( |
I => xout_7_obuf, |
O => xout_7_obuf_GTS_TRI |
); |
xout_1_obuf_5 : X_BUF |
port map ( |
I => xout_1_obuf, |
O => xout_1_obuf_GTS_TRI |
); |
dxout_4_obuf : X_BUF |
port map ( |
I => channel_tap3_dout(7), |
O => dxout_4_obuf_GTS_TRI |
); |
reset_ibuf_6 : X_BUF |
port map ( |
I => reset, |
O => reset_ibuf |
); |
xout_5_obuf_7 : X_BUF |
port map ( |
I => xout_5_obuf, |
O => xout_5_obuf_GTS_TRI |
); |
channel_tap2_madd_add_out_inst_lut2_51 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_tap2_mul_res(2), |
ADR1 => data_7_Q, |
O => channel_tap2_madd_add_out_inst_lut2_5 |
); |
channel_tap3_madd_add_out_inst_cy_5_8 : X_MUX2 |
port map ( |
IA => channel_t_res_out2(5), |
IB => channel_tap3_madd_add_out_inst_cy_4, |
SEL => channel_tap3_madd_add_out_inst_lut2_5, |
O => channel_tap3_madd_add_out_inst_cy_5 |
); |
channel_tap3_madd_add_out_inst_lut2_41 : X_LUT2 |
generic map( |
INIT => X"9" |
) |
port map ( |
ADR0 => channel_t_res_out2(4), |
ADR1 => channel_tap2_dout(7), |
O => channel_tap3_madd_add_out_inst_lut2_4 |
); |
channel_tap3_madd_add_out_inst_cy_1_9 : X_MUX2 |
port map ( |
IA => channel_tap3_mul_res(5), |
IB => data_0_Q, |
SEL => channel_tap3_madd_add_out_inst_lut2_1, |
O => channel_tap3_madd_add_out_inst_cy_1 |
); |
channel_tap3_mmux_mul_res_i2_result1 : X_LUT2 |
generic map( |
INIT => X"5" |
) |
port map ( |
ADR0 => channel_tap2_dout(7), |
O => channel_tap3_mul_res(5), |
ADR1 => GND |
); |
channel_tap2_madd_add_out_inst_sum_4 : X_XOR2 |
port map ( |
I0 => channel_tap2_madd_add_out_inst_cy_3, |
I1 => channel_tap2_madd_add_out_inst_lut2_4, |
O => channel_t_res_out2(4) |
); |
channel_tap2_madd_add_out_inst_cy_2_10 : X_MUX2 |
port map ( |
IA => channel_tap2_mul_res(2), |
IB => channel_tap2_madd_add_out_inst_cy_1, |
SEL => channel_tap2_madd_add_out_inst_lut2_2, |
O => channel_tap2_madd_add_out_inst_cy_2 |
); |
channel_tap2_madd_add_out_inst_cy_3_11 : X_MUX2 |
port map ( |
IA => channel_tap1_dout(7), |
IB => channel_tap2_madd_add_out_inst_cy_2, |
SEL => channel_tap2_madd_add_out_inst_lut2_3, |
O => channel_tap2_madd_add_out_inst_cy_3 |
); |
channel_tap2_dout_7 : X_FF |
port map ( |
I => channel_tap1_dout(7), |
CLK => clock_bufgp, |
O => channel_tap2_dout(7), |
CE => VCC, |
SET => GND, |
RST => GSR |
); |
channel_tap2_madd_add_out_inst_sum_5 : X_XOR2 |
port map ( |
I0 => channel_tap2_madd_add_out_inst_cy_4, |
I1 => n2175, |
O => channel_t_res_out2(5) |
); |
dxout_6_obuf : X_BUF |
port map ( |
I => channel_tap3_dout(7), |
O => dxout_6_obuf_GTS_TRI |
); |
dxout_3_obuf : X_BUF |
port map ( |
I => channel_tap3_dout(7), |
O => dxout_3_obuf_GTS_TRI |
); |
dxout_2_obuf : X_BUF |
port map ( |
I => channel_tap3_dout(7), |
O => dxout_2_obuf_GTS_TRI |
); |
xout_3_obuf_12 : X_BUF |
port map ( |
I => xout_3_obuf, |
O => xout_3_obuf_GTS_TRI |
); |
channel_tap3_madd_add_out_inst_sum_2 : X_XOR2 |
port map ( |
I0 => channel_tap3_madd_add_out_inst_cy_1, |
I1 => channel_tap3_madd_add_out_inst_lut2_2, |
O => xout_2_obuf |
); |
channel_tap3_madd_add_out_inst_cy_2_13 : X_MUX2 |
port map ( |
IA => channel_t_res_out2(2), |
IB => channel_tap3_madd_add_out_inst_cy_1, |
SEL => channel_tap3_madd_add_out_inst_lut2_2, |
O => channel_tap3_madd_add_out_inst_cy_2 |
); |
channel_tap3_madd_add_out_inst_sum_4 : X_XOR2 |
port map ( |
I0 => channel_tap3_madd_add_out_inst_cy_3, |
I1 => channel_tap3_madd_add_out_inst_lut2_4, |
O => xout_4_obuf |
); |
channel_tap2_madd_add_out_inst_lut2_21 : X_LUT2 |
generic map( |
INIT => X"9" |
) |
port map ( |
ADR0 => channel_tap2_mul_res(2), |
ADR1 => data_7_Q, |
O => channel_tap2_madd_add_out_inst_lut2_2 |
); |
channel_tap2_mmux_mul_res_i5_result1 : X_LUT2 |
generic map( |
INIT => X"5" |
) |
port map ( |
ADR0 => channel_tap1_dout(7), |
O => channel_tap2_mul_res(2), |
ADR1 => GND |
); |
channel_tap3_madd_add_out_inst_cy_4_14 : X_MUX2 |
port map ( |
IA => channel_t_res_out2(4), |
IB => channel_tap3_madd_add_out_inst_cy_3, |
SEL => channel_tap3_madd_add_out_inst_lut2_4, |
O => channel_tap3_madd_add_out_inst_cy_4 |
); |
channel_tap3_madd_add_out_inst_lut2_31 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_t_res_out2(3), |
ADR1 => channel_tap2_dout(7), |
O => channel_tap3_madd_add_out_inst_lut2_3 |
); |
channel_tap2_madd_add_out_inst_sum_3 : X_XOR2 |
port map ( |
I0 => channel_tap2_madd_add_out_inst_cy_2, |
I1 => channel_tap2_madd_add_out_inst_lut2_3, |
O => channel_t_res_out2(3) |
); |
channel_tap3_madd_add_out_inst_lut2_51 : X_LUT2 |
generic map( |
INIT => X"9" |
) |
port map ( |
ADR0 => channel_t_res_out2(5), |
ADR1 => channel_tap2_dout(7), |
O => channel_tap3_madd_add_out_inst_lut2_5 |
); |
xout_6_obuf_15 : X_BUF |
port map ( |
I => xout_6_obuf, |
O => xout_6_obuf_GTS_TRI |
); |
channel_tap3_madd_add_out_inst_sum_3 : X_XOR2 |
port map ( |
I0 => channel_tap3_madd_add_out_inst_cy_2, |
I1 => channel_tap3_madd_add_out_inst_lut2_3, |
O => xout_3_obuf |
); |
channel_tap1_dout_7 : X_FF |
port map ( |
I => data_7_Q, |
CLK => clock_bufgp, |
O => channel_tap1_dout(7), |
CE => VCC, |
SET => GND, |
RST => GSR |
); |
channel_tap2_madd_add_out_inst_lut2_61 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_tap2_mul_res(2), |
ADR1 => data_7_Q, |
O => channel_tap2_madd_add_out_inst_lut2_6 |
); |
dxout_7_obuf : X_BUF |
port map ( |
I => channel_tap3_dout(7), |
O => dxout_7_obuf_GTS_TRI |
); |
xout_2_obuf_16 : X_BUF |
port map ( |
I => xout_2_obuf, |
O => xout_2_obuf_GTS_TRI |
); |
xout_4_obuf_17 : X_BUF |
port map ( |
I => xout_4_obuf, |
O => xout_4_obuf_GTS_TRI |
); |
channel_tap2_madd_add_out_inst_sum_7 : X_XOR2 |
port map ( |
I0 => channel_tap2_madd_add_out_inst_cy_6, |
I1 => channel_tap2_madd_add_out_inst_lut2_5, |
O => channel_t_res_out2(7) |
); |
channel_tap2_madd_add_out_inst_cy_4_18 : X_MUX2 |
port map ( |
IA => channel_tap1_dout(7), |
IB => channel_tap2_madd_add_out_inst_cy_3, |
SEL => channel_tap2_madd_add_out_inst_lut2_4, |
O => channel_tap2_madd_add_out_inst_cy_4 |
); |
channel_tap2_madd_add_out_inst_sum_2 : X_XOR2 |
port map ( |
I0 => channel_tap2_madd_add_out_inst_cy_1, |
I1 => channel_tap2_madd_add_out_inst_lut2_2, |
O => channel_t_res_out2(2) |
); |
channel_tap3_madd_add_out_inst_cy_3_19 : X_MUX2 |
port map ( |
IA => channel_t_res_out2(3), |
IB => channel_tap3_madd_add_out_inst_cy_2, |
SEL => channel_tap3_madd_add_out_inst_lut2_3, |
O => channel_tap3_madd_add_out_inst_cy_3 |
); |
dxout_1_obuf : X_BUF |
port map ( |
I => channel_tap3_dout(7), |
O => dxout_1_obuf_GTS_TRI |
); |
channel_tap3_madd_add_out_inst_sum_7 : X_XOR2 |
port map ( |
I0 => channel_tap3_madd_add_out_inst_cy_6, |
I1 => channel_tap3_madd_add_out_inst_lut2_7, |
O => xout_7_obuf |
); |
channel_tap3_madd_add_out_inst_lut2_11 : X_LUT2 |
generic map( |
INIT => X"6" |
) |
port map ( |
ADR0 => channel_tap2_dout(7), |
ADR1 => data_7_Q, |
O => channel_tap3_madd_add_out_inst_lut2_1 |
); |
Q_n0003_22 : X_LUT2 |
generic map( |
INIT => X"5" |
) |
port map ( |
ADR0 => data_7_Q, |
ADR1 => GND, |
O => Q_n0003_O |
); |
Q_n0003_LUT1_L_BUF : X_BUF |
port map ( |
I => Q_n0003_O, |
O => Q_n0003 |
); |
clock_bufgp_IBUFG_23 : X_CKBUF |
port map ( |
I => clock, |
O => clock_bufgp_IBUFG |
); |
clock_bufgp_BUFG : X_CKBUF |
port map ( |
I => clock_bufgp_IBUFG, |
O => clock_bufgp |
); |
dxout_7_obuf_GTS_TRI_24 : X_TRI |
port map ( |
I => dxout_7_obuf_GTS_TRI, |
CTL => NlwInverterSignal_dxout_7_obuf_GTS_TRI_CTL, |
O => dxout(7) |
); |
dxout_6_obuf_GTS_TRI_25 : X_TRI |
port map ( |
I => dxout_6_obuf_GTS_TRI, |
CTL => NlwInverterSignal_dxout_6_obuf_GTS_TRI_CTL, |
O => dxout(6) |
); |
dxout_5_obuf_GTS_TRI_26 : X_TRI |
port map ( |
I => dxout_5_obuf_GTS_TRI, |
CTL => NlwInverterSignal_dxout_5_obuf_GTS_TRI_CTL, |
O => dxout(5) |
); |
dxout_4_obuf_GTS_TRI_27 : X_TRI |
port map ( |
I => dxout_4_obuf_GTS_TRI, |
CTL => NlwInverterSignal_dxout_4_obuf_GTS_TRI_CTL, |
O => dxout(4) |
); |
dxout_3_obuf_GTS_TRI_28 : X_TRI |
port map ( |
I => dxout_3_obuf_GTS_TRI, |
CTL => NlwInverterSignal_dxout_3_obuf_GTS_TRI_CTL, |
O => dxout(3) |
); |
dxout_2_obuf_GTS_TRI_29 : X_TRI |
port map ( |
I => dxout_2_obuf_GTS_TRI, |
CTL => NlwInverterSignal_dxout_2_obuf_GTS_TRI_CTL, |
O => dxout(2) |
); |
dxout_1_obuf_GTS_TRI_30 : X_TRI |
port map ( |
I => dxout_1_obuf_GTS_TRI, |
CTL => NlwInverterSignal_dxout_1_obuf_GTS_TRI_CTL, |
O => dxout(1) |
); |
dxout_0_obuf_GTS_TRI_31 : X_TRI |
port map ( |
I => dxout_0_obuf_GTS_TRI, |
CTL => NlwInverterSignal_dxout_0_obuf_GTS_TRI_CTL, |
O => dxout(0) |
); |
xout_7_obuf_GTS_TRI_32 : X_TRI |
port map ( |
I => xout_7_obuf_GTS_TRI, |
CTL => NlwInverterSignal_xout_7_obuf_GTS_TRI_CTL, |
O => xout(7) |
); |
xout_6_obuf_GTS_TRI_33 : X_TRI |
port map ( |
I => xout_6_obuf_GTS_TRI, |
CTL => NlwInverterSignal_xout_6_obuf_GTS_TRI_CTL, |
O => xout(6) |
); |
xout_5_obuf_GTS_TRI_34 : X_TRI |
port map ( |
I => xout_5_obuf_GTS_TRI, |
CTL => NlwInverterSignal_xout_5_obuf_GTS_TRI_CTL, |
O => xout(5) |
); |
xout_4_obuf_GTS_TRI_35 : X_TRI |
port map ( |
I => xout_4_obuf_GTS_TRI, |
CTL => NlwInverterSignal_xout_4_obuf_GTS_TRI_CTL, |
O => xout(4) |
); |
xout_3_obuf_GTS_TRI_36 : X_TRI |
port map ( |
I => xout_3_obuf_GTS_TRI, |
CTL => NlwInverterSignal_xout_3_obuf_GTS_TRI_CTL, |
O => xout(3) |
); |
xout_2_obuf_GTS_TRI_37 : X_TRI |
port map ( |
I => xout_2_obuf_GTS_TRI, |
CTL => NlwInverterSignal_xout_2_obuf_GTS_TRI_CTL, |
O => xout(2) |
); |
xout_1_obuf_GTS_TRI_38 : X_TRI |
port map ( |
I => xout_1_obuf_GTS_TRI, |
CTL => NlwInverterSignal_xout_1_obuf_GTS_TRI_CTL, |
O => xout(1) |
); |
xout_0_obuf_GTS_TRI_39 : X_TRI |
port map ( |
I => xout_0_obuf_GTS_TRI, |
CTL => NlwInverterSignal_xout_0_obuf_GTS_TRI_CTL, |
O => xout(0) |
); |
NlwBlock_data_gen_VCC : X_ONE |
port map ( |
O => VCC |
); |
NlwBlock_data_gen_GND : X_ZERO |
port map ( |
O => GND |
); |
NlwInverterBlock_dxout_7_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_dxout_7_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_dxout_6_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_dxout_6_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_dxout_5_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_dxout_5_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_dxout_4_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_dxout_4_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_dxout_3_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_dxout_3_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_dxout_2_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_dxout_2_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_dxout_1_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_dxout_1_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_dxout_0_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_dxout_0_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_xout_7_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_xout_7_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_xout_6_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_xout_6_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_xout_5_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_xout_5_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_xout_4_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_xout_4_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_xout_3_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_xout_3_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_xout_2_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_xout_2_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_xout_1_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_xout_1_obuf_GTS_TRI_CTL |
); |
NlwInverterBlock_xout_0_obuf_GTS_TRI_CTL : X_INV |
port map ( |
I => GTS, |
O => NlwInverterSignal_xout_0_obuf_GTS_TRI_CTL |
); |
NlwBlockROC : ROC generic map ( WIDTH => 100 ns) |
port map (O => GSR); |
NlwBlockTOC : TOC port map (O => GTS); |
end Structure; |
|
/adaptive_lms_equalizer/trunk/code/tf_lms.vhd
0,0 → 1,101
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
|
-- A.6 tf_lms.vhd |
-- Adaptive equalizer routine |
-- |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_SIGNED.ALL; |
|
|
entity tf_lms is |
Port ( |
xin : in std_logic_vector(7 downto 0); -- data input |
dxin : in std_logic_vector(7 downto 0); -- desired response input |
clock : in std_logic; -- clock |
err:out std_logic_vector(7 downto 0); -- error output |
yout : out std_logic_vector(7 downto 0); -- output data |
adapt_en: in std_logic -- enable adaption |
); |
end tf_lms; |
|
architecture structural of tf_lms is |
|
-- filter core |
component core_filt |
Port ( |
x_in : in std_logic_vector(7 downto 0); |
x_N_in : in std_logic_vector(7 downto 0); |
ue_in : in std_logic_vector(7 downto 0); |
clock : in std_logic; |
y_out : out std_logic_vector(7 downto 0)); |
end component ; |
|
-- shift regesters |
component shift_21d |
Port ( xin : in std_logic_vector(7 downto 0); |
x_N_out : out std_logic_vector(7 downto 0); |
x_1_out : out std_logic_vector(7 downto 0); |
clock : in std_logic); |
end component; |
|
component shift_20d |
Port ( xin : in std_logic_vector(7 downto 0); |
xout : out std_logic_vector(7 downto 0); |
clock : in std_logic); |
end component; |
|
signal e,e_t,y_o,x_1,x_N:std_logic_vector(7 downto 0); |
|
begin |
|
-- if Adaption is not enabled then ERROR signal is ZERO |
with adapt_en select |
e <= y_o - e_t when '1', |
"00000000" when others; |
|
err <= e; |
|
shift_1:shift_20d |
port map ( |
xin => dxin, |
xout => e_t, |
clock => clock |
); |
|
shift_2:shift_21d |
port map ( |
xin => xin, |
x_N_out =>x_N, |
x_1_out =>x_1, |
clock => clock |
); |
|
cflt: core_filt |
port map ( |
x_in => x_1, |
x_N_in => x_N, |
ue_in => e, |
y_out => y_o, |
clock => clock |
); |
|
yout <= y_o; |
end structural; |
/adaptive_lms_equalizer/trunk/code/mul8.vhd
0,0 → 1,36
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- 8 bit multi plier |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_SIGNED.ALL; |
|
|
entity mul8 is |
Port ( d1_in : in std_logic_vector(7 downto 0); |
d2_in : in std_logic_vector(7 downto 0); |
d_out : out std_logic_vector(15 downto 0)); |
end mul8; |
|
architecture Behavioral of mul8 is |
|
begin |
|
d_out <= d1_in * d2_in; |
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/shift_15d.vhd
0,0 → 1,47
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- producing delay of 20 unit |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
|
entity shift_20d is |
Port ( xin : in std_logic_vector(7 downto 0); |
xout : out std_logic_vector(7 downto 0); |
clock : in std_logic); |
end shift_20d; |
|
architecture Behavioral of shift_20d is |
signal shift_reg: std_logic_vector (159 downto 0); |
--signal shift_reg: std_logic_vector (119 downto 0); |
begin |
|
shift: |
process(clock) |
begin |
if(clock'event and clock = '1') then |
|
shift_reg <= xin & shift_reg(159 downto 8); |
|
end if; |
end process; |
xout <= shift_reg(7 downto 0); |
|
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/tr_seq_gen.vhd
0,0 → 1,22
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
-- Uncomment the following lines to use the declarations that are |
-- provided for instantiating Xilinx primitive components. |
--library UNISIM; |
--use UNISIM.VComponents.all; |
|
entity tr_seq_gen is |
Port ( clock : in std_logic; |
reset : in std_logic; |
data_out : out std_logic_vector(7 downto 0)); |
end tr_seq_gen; |
|
architecture Behavioral of tr_seq_gen is |
|
begin |
|
|
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/truncation.vhd
0,0 → 1,36
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
|
-- simple 16 to 8 bit truncation circuit |
-- it is only for fixed point(6,8) system |
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
|
entity truncation is |
Port ( d_in : in std_logic_vector(15 downto 0); |
d_out : out std_logic_vector(7 downto 0)); |
end truncation; |
|
architecture Behavioral of truncation is |
|
begin |
|
d_out <= d_in(13 downto 6); |
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/shift_16d.vhd
0,0 → 1,48
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- delay of 21 and 1 unit |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
|
entity shift_21d is |
Port ( xin : in std_logic_vector(7 downto 0); |
x_N_out : out std_logic_vector(7 downto 0); |
x_1_out : out std_logic_vector(7 downto 0); |
clock : in std_logic); |
end shift_21d; |
|
architecture Behavioral of shift_21d is |
signal shift_reg: std_logic_vector (167 downto 0); |
--signal shift_reg: std_logic_vector (127 downto 0); |
begin |
|
shift: |
process(clock) |
begin |
if(clock'event and clock = '1') then |
|
shift_reg <= xin & shift_reg(167 downto 8); |
|
end if; |
end process; |
x_N_out <= shift_reg(7 downto 0); |
x_1_out <= shift_reg(167 downto 160); |
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/saturation.vhd
0,0 → 1,45
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- A.9 saturation.vhd |
-- saturation circuit |
-- important for avoiding adverse effect of truncation |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
|
entity saturation is |
Port ( d_in : in std_logic_vector(15 downto 0); |
d_out : out std_logic_vector(15 downto 0)); |
end saturation; |
|
architecture Behavioral of saturation is |
signal sel:std_logic_vector(1 downto 0); |
begin |
|
sel(1) <= not(d_in(12) xor d_in(13)xor d_in(14) xor d_in(15)); |
sel(0) <= d_in(15); |
|
with sel select |
d_out <= d_in when "11"|"10", |
"0001000000000000" when "00", |
"1111000000000000" when "01", |
"0000000000000000" when others; |
|
end Behavioral; |
/adaptive_lms_equalizer/trunk/code/test_filt_test_sys.vhd
0,0 → 1,88
|
-- VHDL Test Bench Created from source file filt_test_system.vhd -- 13:41:17 03/25/2005 |
-- |
-- Notes: |
-- This testbench has been automatically generated using types std_logic and |
-- std_logic_vector for the ports of the unit under test. Xilinx recommends |
-- that these types always be used for the top-level I/O of a design in order |
-- to guarantee that the testbench will bind correctly to the post-implementation |
-- simulation model. |
-- |
LIBRARY ieee; |
USE ieee.std_logic_1164.ALL; |
USE ieee.numeric_std.ALL; |
|
ENTITY testbench IS |
END testbench; |
|
ARCHITECTURE behavior OF testbench IS |
|
COMPONENT filt_test_system |
PORT( |
clock : IN std_logic; |
reset : IN std_logic; |
adaption_enable : IN std_logic; |
error_led_out : OUT std_logic_vector(7 downto 0); |
seg_select : OUT std_logic_vector(3 downto 0); |
error_freq_out : OUT std_logic; |
reset_clk : in std_logic; |
filt_data_out : OUT std_logic_vector(7 downto 0) |
); |
END COMPONENT; |
|
SIGNAL clock : std_logic; |
SIGNAL error_led_out : std_logic_vector(7 downto 0); |
SIGNAL seg_select : std_logic_vector(3 downto 0); |
SIGNAL error_freq_out : std_logic; |
SIGNAL filt_data_out : std_logic_vector(7 downto 0); |
SIGNAL reset : std_logic; |
signal reset_clk : std_logic; |
SIGNAL adaption_enable : std_logic; |
|
CONSTANT clk_high : time := 10 ns; |
CONSTANT clk_low : time := 10 ns; |
CONSTANT clk_period : time := 20 ns; |
CONSTANT clk_hold : time := 4 ns; |
|
|
|
|
BEGIN |
|
uut: filt_test_system PORT MAP( |
clock => clock, |
error_led_out => error_led_out, |
seg_select => seg_select, |
error_freq_out => error_freq_out, |
filt_data_out => filt_data_out, |
reset => reset, |
reset_clk => reset_clk, |
adaption_enable => adaption_enable |
); |
|
|
-- *** Test Bench - User Defined Section *** |
clk_gen: PROCESS |
BEGIN |
clock <= '1'; |
WAIT FOR clk_high; |
clock <= '0'; |
WAIT FOR clk_low; |
|
END PROCESS clk_gen; |
|
reset_gen: process |
begin |
reset <= '0'; |
reset_clk <= '0'; |
wait for clk_period*2; |
reset_clk <= '1'; |
adaption_enable <= '1'; |
wait for clk_period*10; |
reset <= '1'; |
|
wait; |
end process reset_gen; |
-- *** End Test Bench - User Defined Section *** |
|
END; |
/adaptive_lms_equalizer/trunk/code/test_lms.vhd
0,0 → 1,2185
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- VHDL Test Bench Created from source file tf_lms.vhd -- 14:23:32 02/24/2005 |
-- |
-- Notes: |
-- This testbench has been automatically generated using types std_logic and |
-- std_logic_vector for the ports of the unit under test. Xilinx recommends |
-- that these types always be used for the top-level I/O of a design in order |
-- to guarantee that the testbench will bind correctly to the post-implementation |
-- simulation model. |
-- |
LIBRARY ieee; |
USE ieee.std_logic_1164.ALL; |
USE ieee.numeric_std.ALL; |
|
LIBRARY ieee; |
USE IEEE.STD_LOGIC_TEXTIO.ALL; |
USE STD.TEXTIO.ALL; |
|
ENTITY testbench IS |
END testbench; |
|
ARCHITECTURE behavior OF testbench IS |
FILE RESULTS: TEXT IS OUT "yout.txt"; |
FILE ERRF: TEXT IS OUT "error.txt"; |
|
FUNCTION to_hex( x : IN std_logic_vector) RETURN string IS |
VARIABLE result : STRING(1 TO 8); -- 1024 bits max |
VARIABLE i : INTEGER; |
VARIABLE imod : INTEGER; |
VARIABLE j : INTEGER; |
VARIABLE newx : std_logic_vector(1023 DOWNTO 0); |
BEGIN |
newx := (OTHERS => '0'); |
newx(x'RANGE) := x; |
i := 7; |
j := 1; |
|
WHILE i >= 0 LOOP |
IF newx(i) = '0' THEN result(j) := '0'; |
elsif newx(i) = '1' THEN result(j) := '1'; |
ELSE result(j) := 'X'; |
END IF; |
|
i := i-1; |
j := j+1; |
END LOOP; |
RETURN result(1 TO j-1); |
END; |
|
COMPONENT tf_lms |
PORT( |
xin : IN std_logic_vector(7 downto 0); |
dxin : IN std_logic_vector(7 downto 0); |
clock : IN std_logic; |
err: out std_logic_vector(7 downto 0); |
adapt_en: in std_logic; |
yout : OUT std_logic_vector(7 downto 0) |
); |
END COMPONENT; |
|
SIGNAL xin : std_logic_vector(7 downto 0); |
SIGNAL dxin : std_logic_vector(7 downto 0); |
SIGNAL clock : std_logic; |
SIGNAL yout : std_logic_vector(7 downto 0); |
signal err: std_logic_vector(7 downto 0); |
signal adapt_en : std_logic; |
CONSTANT clk_high : time := 10 ns; |
CONSTANT clk_low : time := 10 ns; |
CONSTANT clk_period : time := 20 ns; |
CONSTANT clk_hold : time := 4 ns; |
|
|
|
TYPE filter_data IS ARRAY (0 TO 999) OF std_logic_vector(7 downto 0); |
TYPE filter_out_table IS ARRAY (0 TO 999)OF std_logic_vector(7 downto 0); |
|
-- Constants |
CONSTANT filter_dx_in : filter_data := |
( |
|
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000", |
"01000000", |
"11000000" |
|
); |
CONSTANT filter_x_in : filter_data := |
( |
|
"11110011", |
"00100110", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010", |
"10100110", |
"01011010" |
|
); |
|
|
|
BEGIN |
|
uut: tf_lms PORT MAP( |
xin => xin, |
dxin => dxin, |
clock => clock, |
err => err, |
adapt_en => adapt_en, |
yout => yout |
); |
|
|
-- *** Test Bench - User Defined Section *** |
clk_gen: PROCESS |
BEGIN |
clock <= '1'; |
WAIT FOR clk_high; |
clock <= '0'; |
WAIT FOR clk_low; |
|
END PROCESS clk_gen; |
|
tb: |
PROCESS |
variable IN_x,IN_dx:std_logic_vector(7 downto 0); |
VARIABLE TX_STR : String(1 to 512); |
VARIABLE TX_LOC : LINE; |
VARIABLE RX_LOC : LINE; |
|
|
BEGIN |
|
adapt_en <= '1'; |
|
FOR n IN 0 TO 500 LOOP |
-- readline(F_XIN,xin); |
--xin <= IN_X; |
--Deallocate(RX_LOC); |
xin <= filter_x_in(n); |
dxin <= filter_dx_in(n); |
wait for clk_period; |
write(TX_LOC,string'("'")); |
write(TX_LOC, yout); |
write(TX_LOC,string'("'")); |
writeline(results, TX_LOC); |
Deallocate(TX_LOC); |
write(TX_LOC,string'("'")); |
write(TX_LOC, err); |
write(TX_LOC,string'("'")); |
writeline(ERRF, TX_LOC); |
Deallocate(TX_LOC); |
end loop; |
|
-- adapt_en <= '0'; |
|
FOR n IN 501 TO 999 LOOP |
-- readline(F_XIN,xin); |
--xin <= IN_X; |
--Deallocate(RX_LOC); |
xin <= filter_x_in(n); |
dxin <= filter_dx_in(n); |
wait for clk_period; |
write(TX_LOC,string'("'")); |
write(TX_LOC, yout); |
write(TX_LOC,string'("'")); |
writeline(results, TX_LOC); |
Deallocate(TX_LOC); |
write(TX_LOC,string'("'")); |
write(TX_LOC, err); |
write(TX_LOC,string'("'")); |
writeline(ERRF, TX_LOC); |
Deallocate(TX_LOC); |
end loop; |
|
|
wait; -- will wait forever |
END PROCESS; |
-- *** End Test Bench - User Defined Section *** |
|
END; |
/adaptive_lms_equalizer/trunk/code/clock_div.vhd
0,0 → 1,57
-- Copyright (C) 2004-2005 Digish Pandya <digish.pandya@gmail.com> |
|
-- This program is free software; you can redistribute it and/or modify |
-- it under the terms of the GNU General Public License as published by |
-- the Free Software Foundation; either version 2 of the License, or |
-- (at your option) any later version. |
-- |
-- This program is distributed in the hope that it will be useful, |
-- but WITHOUT ANY WARRANTY; without even the implied warranty of |
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-- GNU General Public License for more details. |
-- |
-- You should have received a copy of the GNU General Public License |
-- along with this program; if not, write to the Free Software |
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
-- clock devider routine |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.STD_LOGIC_ARITH.ALL; |
use IEEE.STD_LOGIC_UNSIGNED.ALL; |
|
entity clock_div is |
Port ( reset: in std_logic; |
in_clk : in std_logic; |
out1 : out std_logic; |
out2 : out std_logic); |
end clock_div; |
|
architecture Behavioral of clock_div is |
|
signal ct: std_logic_vector(19 downto 0); |
--signal ct: std_logic_vector(1 downto 0); |
|
begin |
|
process(reset,in_clk) |
begin |
if reset = '0' then |
ct <= "00000000000000000000"; |
-- ct <= "00"; |
elsif in_clk'event and in_clk = '1' then |
ct <= ct + "00000000000000000001"; |
-- ct <= ct + "01"; |
end if; |
end process; |
-- Using this value we can adjust different clock speed |
-- Fast Clock |
out1 <= ct(5); |
-- Slow clock |
out2 <= ct(19); |
|
--out1 <= ct(0); |
--out2 <= ct(1); |
|
end Behavioral; |
adaptive_lms_equalizer/trunk
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: adaptive_lms_equalizer/web_uploads
===================================================================
--- adaptive_lms_equalizer/web_uploads (nonexistent)
+++ adaptive_lms_equalizer/web_uploads (revision 4)
adaptive_lms_equalizer/web_uploads
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: adaptive_lms_equalizer/branches
===================================================================
--- adaptive_lms_equalizer/branches (nonexistent)
+++ adaptive_lms_equalizer/branches (revision 4)
adaptive_lms_equalizer/branches
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: adaptive_lms_equalizer/tags/V10/code/add16.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/add16.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/add16.vhd (revision 4)
@@ -0,0 +1,36 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- 16 bit adder
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_SIGNED.ALL;
+
+
+entity add16 is
+ Port ( d1_in : in std_logic_vector(15 downto 0);
+ d2_in : in std_logic_vector(15 downto 0);
+ d_out : out std_logic_vector(15 downto 0));
+end add16;
+
+architecture Behavioral of add16 is
+
+begin
+ d_out <= d1_in + d2_in;
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/bin_to_7seg.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/bin_to_7seg.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/bin_to_7seg.vhd (revision 4)
@@ -0,0 +1,56 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+-- seven segment display mapping from 8 bit no
+
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+
+entity bin_to_7seg is
+ Port ( din : in std_logic_vector(3 downto 0);
+ dis_out : out std_logic_vector(7 downto 0));
+end bin_to_7seg;
+
+architecture Behavioral of bin_to_7seg is
+
+begin
+
+
+dis_out <= "00000010" when din = "0000" else
+ "10011110" when din = "0001" else
+ "00100100" when din = "0010" else
+ "00001100" when din = "0011" else
+ "10011000" when din = "0100" else
+ "01001000" when din = "0101" else
+ "01000000" when din = "0110" else
+ "00011110" when din = "0111" else
+ "00000000" when din = "1000" else
+ "00011000" when din = "1001" else
+ "00010000" when din = "1010" else
+ "11000000" when din = "1011" else
+ "01100010" when din = "1100" else
+ "10000100" when din = "1101" else
+ "01100000" when din = "1110" else
+ "01110000";
+
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/unit_calc.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/unit_calc.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/unit_calc.vhd (revision 4)
@@ -0,0 +1,169 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- A.8
+-- unit program module of filter core
+-- we have to cascade instance of this module to make multi tap filter
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_SIGNED.ALL;
+
+
+entity unit_calc is
+ Port ( x_in : in std_logic_vector(7 downto 0);
+ x_N_in : in std_logic_vector(7 downto 0);
+ ue_in : in std_logic_vector(7 downto 0);
+ y_in : in std_logic_vector(7 downto 0);
+ x_out : out std_logic_vector(7 downto 0);
+ x_N_out : out std_logic_vector(7 downto 0);
+ ue_out : out std_logic_vector(7 downto 0);
+ y_out: out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+
+end unit_calc;
+
+architecture standard of unit_calc is
+ -- component declarations
+ -- 8 bit multiplier
+ component mul8
+ Port ( d1_in : in std_logic_vector(7 downto 0);
+ d2_in : in std_logic_vector(7 downto 0);
+ d_out : out std_logic_vector(15 downto 0));
+
+ end component;
+ -- 16 bit adder
+ component add16
+ Port ( d1_in : in std_logic_vector(15 downto 0);
+ d2_in : in std_logic_vector(15 downto 0);
+ d_out : out std_logic_vector(15 downto 0));
+
+ end component;
+
+ -- saturation circuit
+ component saturation
+ Port ( d_in : in std_logic_vector(15 downto 0);
+ d_out : out std_logic_vector(15 downto 0));
+ end component;
+
+ -- u scaling circuit
+ component u_scaling
+ Port ( d_in : in std_logic_vector(15 downto 0);
+ d_out : out std_logic_vector(15 downto 0);
+ clock : in std_logic);
+ end component;
+
+ -- truncation circuit
+ component truncation
+ Port ( d_in : in std_logic_vector(15 downto 0);
+ d_out : out std_logic_vector(7 downto 0));
+ end component;
+ -- one sample delay
+ component shift_1d
+ Port ( xin : in std_logic_vector(7 downto 0);
+ xout : out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+ end component;
+
+ -- shift regester
+ component shift_1d_16
+ Port ( xin : in std_logic_vector(15 downto 0);
+ xout : out std_logic_vector(15 downto 0);
+ clock : in std_logic);
+ end component;
+
+
+ signal shiftx: std_logic_vector(31 downto 0);
+ signal shiftxn: std_logic_vector(31 downto 0);
+ signal shiftue: std_logic_vector(23 downto 0);
+ signal shifty: std_logic_vector(15 downto 0);
+
+ signal coeff8: std_logic_vector(7 downto 0);
+ signal coeff16:std_logic_vector(15 downto 0);
+ signal xnin_ue:std_logic_vector(15 downto 0);
+ signal xnin_ue_scaled:std_logic_vector(15 downto 0);
+ signal new_coeff_true:std_logic_vector(15 downto 0);
+ signal delayed_new_coeff_true:std_logic_vector(15 downto 0);
+ signal y_out16:std_logic_vector(15 downto 0);
+ signal y_out8:std_logic_vector(7 downto 0);
+begin
+ -- basic pipelining
+ unit_process:
+ process (clock)
+ begin
+ if(clock'event and clock = '1') then
+
+ shiftx <= x_in & shiftx(31 downto 8);
+ shiftxn <= x_N_in & shiftxn(31 downto 8);
+ shiftue <= ue_in & shiftue(23 downto 8);
+ shifty <= y_in & shifty(15 downto 8);
+
+ end if;
+ end process;
+
+ x_out <= shiftx(7 downto 0);
+ x_N_out <= shiftxn(7 downto 0);
+ ue_out <= shiftue(7 downto 0);
+
+ mul_xnin_ue: mul8 -- no delay
+ port map( d1_in => x_N_in,
+ d2_in => ue_in,
+ d_out => xnin_ue);
+
+ u1:u_scaling -- 1 clock cycle
+ port map( d_in => xnin_ue,
+ d_out => xnin_ue_scaled,
+ clock => clock
+ );
+
+ add1:add16 -- no delay
+ port map( d1_in => xnin_ue_scaled,
+ d2_in => coeff16,
+ d_out => new_coeff_true
+ );
+
+ delay_2:shift_1d_16 -- each clock
+ port map( clock => clock,
+ xin => new_coeff_true,
+ xout => delayed_new_coeff_true
+ );
+
+
+ sat_1:saturation
+ port map( d_in => delayed_new_coeff_true,
+ d_out => coeff16
+ );
+ trunc_1:truncation
+ port map(
+ d_in => coeff16,
+ d_out => coeff8
+ );
+
+ mul_coeff_x_in:mul8
+ port map( d1_in => coeff8,
+ d2_in => shiftx(31 downto 24),
+ d_out => y_out16
+ );
+ trunc_2:truncation
+ port map(
+ d_in => y_out16,
+ d_out => y_out8
+ );
+ y_out <= y_out8 + shifty(7 downto 0);
+end standard;
+
Index: adaptive_lms_equalizer/tags/V10/code/test_data_gen.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/test_data_gen.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/test_data_gen.vhd (revision 4)
@@ -0,0 +1,85 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- VHDL Test Bench Created from source file data_gen.vhd -- 09:38:13 03/25/2005
+--
+-- Notes:
+-- This testbench has been automatically generated using types std_logic and
+-- std_logic_vector for the ports of the unit under test. Xilinx recommends
+-- that these types always be used for the top-level I/O of a design in order
+-- to guarantee that the testbench will bind correctly to the post-implementation
+-- simulation model.
+--
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+USE ieee.numeric_std.ALL;
+
+ENTITY testbench IS
+END testbench;
+
+ARCHITECTURE behavior OF testbench IS
+
+ COMPONENT data_gen
+ PORT(
+ clock : IN std_logic;
+ reset : IN std_logic;
+ xout : OUT std_logic_vector(7 downto 0);
+ dxout : OUT std_logic_vector(7 downto 0)
+ );
+ END COMPONENT;
+
+ SIGNAL clock : std_logic;
+ SIGNAL reset : std_logic;
+ SIGNAL xout : std_logic_vector(7 downto 0);
+ SIGNAL dxout : std_logic_vector(7 downto 0);
+
+ CONSTANT clk_high : time := 10 ns;
+ CONSTANT clk_low : time := 10 ns;
+ CONSTANT clk_period : time := 20 ns;
+ CONSTANT clk_hold : time := 4 ns;
+
+
+BEGIN
+
+ uut: data_gen PORT MAP(
+ clock => clock,
+ reset => reset,
+ xout => xout,
+ dxout => dxout
+ );
+
+
+-- *** Test Bench - User Defined Section ***
+ clk_gen: PROCESS
+ BEGIN
+ clock <= '1';
+ WAIT FOR clk_high;
+ clock <= '0';
+ WAIT FOR clk_low;
+
+ END PROCESS clk_gen;
+
+ reset_gen: process
+ begin
+ reset <= '1';
+ wait for clk_period*5;
+ reset <= '0';
+
+ wait;
+ end process reset_gen;
+-- *** End Test Bench - User Defined Section ***
+
+END;
Index: adaptive_lms_equalizer/tags/V10/code/filt_test_system.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/filt_test_system.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/filt_test_system.vhd (revision 4)
@@ -0,0 +1,173 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- This File is Testing System For Equalizer
+-- It Includes DATA generator Equalizer core and Error Display unit
+
+-- File: Filt_test_system.vhd
+-- Developer: Digish K. Pandya
+-- Test bench file test_filt_test_sys.vhd
+
+-- Main Testing system for LMS adaptive filter
+-- Synthesised and tested on SPARTAN II xc2s100-6qt144
+
+--Libraries from vendor
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_SIGNED.ALL;
+
+-- Pin Definations
+entity filt_test_system is
+ Port ( clock : in std_logic;
+ error_led_out : out std_logic_vector(7 downto 0);
+ seg_select:out std_logic_vector(3 downto 0);
+ error_freq_out : out std_logic;
+ filt_data_out : out std_logic_vector(7 downto 0);
+ reset : in std_logic;
+ reset_clk : in std_logic;
+ adaption_enable : in std_logic);
+end filt_test_system;
+
+-- Architecture body
+
+architecture test_chip of filt_test_system is
+
+ -- Component Declarations
+
+ -- 1 LMS filter Transpose form Architecture
+ component tf_lms
+ Port (
+ xin : in std_logic_vector(7 downto 0); -- data input
+ dxin : in std_logic_vector(7 downto 0); -- desired response input
+ clock : in std_logic; -- clock
+ adapt_en: in std_logic; -- enable adaption
+
+ err:out std_logic_vector(7 downto 0); -- error output
+ yout : out std_logic_vector(7 downto 0) -- output data
+ );
+ end component ;
+
+ -- 2 Data generator system
+ component data_gen
+ Port (
+ clock : in std_logic;
+ reset : in std_logic;
+
+ xout : out std_logic_vector(7 downto 0);
+ dxout : out std_logic_vector(7 downto 0)
+ );
+ end component ;
+
+ -- 3 Clock devider
+ -- Provides two clocks for different purpose
+ component clock_div
+ Port ( reset: in std_logic;
+ in_clk : in std_logic;
+
+ out1 : out std_logic; -- fast
+ out2 : out std_logic); -- slow
+ end component;
+
+ -- 4 Displays MSE on seven segment diplay
+ component Display_MSE
+ Port ( reset: in std_logic;
+ error_in : in std_logic_vector(7 downto 0);
+ clock : in std_logic;
+
+ an_out: out std_logic;
+ seg_select_out : out std_logic_vector(3 downto 0);
+ seg_dis_out : out std_logic_vector(7 downto 0));
+ end component;
+
+ -- global clock buffer primary (for input pin)
+ -- [Not able to display linkage but available in RTL]
+ component BUFGP
+ port (I: in std_logic; O: out std_logic);
+ end component;
+ -- clock buffer Secondary (for internal logic)
+ -- [Not able to display linkage but available in RTL]
+ component BUFGS
+ port (I: in STD_LOGIC;O: out STD_LOGIC);
+ end component;
+
+
+ -- Local Interconnects
+ signal xout_tmp: std_logic_vector( 7 downto 0);
+ signal dxout_tmp: std_logic_vector( 7 downto 0);
+ signal clock_fast,clock_slow: std_logic;
+ signal error_dis_in : std_logic_vector(7 downto 0);
+ signal CLK_SIG,clock_f,clock_s: std_logic;
+
+begin
+ -- Clock Input through buffer
+ U1: BUFGP port map (I => clock, O => CLK_SIG);
+
+ -- Test DATA generator
+ data_gen1: data_gen
+ port map(
+
+ clock => clock_slow,
+ reset => reset,
+ xout => xout_tmp,
+ dxout => dxout_tmp
+ );
+
+ -- LMS core UNDER test
+ lms: tf_lms
+ Port map(
+ xin => xout_tmp,
+ dxin => dxout_tmp,
+ clock => clock_slow,
+ err => error_dis_in,
+ yout => filt_data_out,
+ adapt_en => adaption_enable
+ );
+
+
+ -- Fast clock used to avoide flicker
+ err_display:display_mse
+ port map(
+ reset => reset,
+ error_in => error_dis_in,
+ clock => clock_fast,
+
+ an_out => error_freq_out,
+ seg_select_out => seg_select,
+ seg_dis_out => error_led_out
+
+ );
+
+
+ -- Clock Devider
+ cd: clock_div
+ port map(
+ reset => reset_clk,
+ in_clk => clk_sig,
+ out1 => clock_f,
+ out2 => clock_s
+ );
+
+ -- Fast clock for Seven Segment Display refresh
+ U2: BUFGS port map (I => clock_f, O => clock_fast);
+
+ -- Slow clock for Filtering (SO we can see changes in on Sevensegment)
+ -- In actual application we have to keep maximum possible clock here
+ U3: BUFGS port map (I => clock_s, O => clock_slow);
+
+
+end test_chip;
+-- The End --
\ No newline at end of file
Index: adaptive_lms_equalizer/tags/V10/code/data_gen.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/data_gen.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/data_gen.vhd (revision 4)
@@ -0,0 +1,76 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- A.3 data_gen.vhd
+-- datagenerator system for generating test data feed to lms filter
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+
+
+entity data_gen is
+ Port ( clock : in std_logic;
+ reset : in std_logic;
+ xout : out std_logic_vector(7 downto 0);
+ dxout : out std_logic_vector(7 downto 0));
+end data_gen;
+
+architecture structural of data_gen is
+ -- training sequence generator
+ component tr_seq_gen
+ Port ( clock : in std_logic;
+ reset : in std_logic;
+ data_out : out std_logic_vector(7 downto 0)
+ );
+ end component;
+ -- channel filter
+ component const_ch_filt
+ Port (
+ clock : in std_logic;
+ data_in : in std_logic_vector(7 downto 0);
+ shifted_data_out : out std_logic_vector(7 downto 0);
+ filtered_data_out : out std_logic_vector(7 downto 0)
+ );
+ end component;
+
+ signal data : std_logic_vector (7 downto 0);
+
+begin
+ -- Test Data generator
+ data_generator:
+ process(clock,reset)
+ begin
+ if(clock'event and clock = '1') then
+ if (data = "01000000") then
+ data <= "11000000";
+ else
+ data <= "01000000";
+ end if;
+ end if;
+ if(reset = '0') then
+ data <= "01000000";
+ end if;
+
+ end process;
+ -- This Channel Filter will convolve our input Signal
+ channel: const_ch_filt
+ port map (
+ clock => clock,
+ data_in => data,
+ shifted_data_out => dxout,
+ filtered_data_out => xout
+ );
+
+end structural;
Index: adaptive_lms_equalizer/tags/V10/code/u_scaling.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/u_scaling.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/u_scaling.vhd (revision 4)
@@ -0,0 +1,44 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- A.10
+-- multiply by 0.0625
+-- only simple shift logic is applied
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_SIGNED.ALL;
+
+
+entity u_scaling is
+ Port ( d_in : in std_logic_vector(15 downto 0);
+ d_out : out std_logic_vector(15 downto 0);
+ clock : in std_logic);
+end u_scaling;
+
+architecture combinational of u_scaling is
+signal sign_bit:std_logic_vector(4 downto 0);
+begin
+ p1:
+ process(clock)
+ begin
+
+ if(clock'event and clock = '1') then
+ d_out <= d_in(15) & d_in(15) & d_in(15) & d_in(15) & d_in(15) & d_in(14 downto 4);
+ end if;
+ end process;
+end combinational;
Index: adaptive_lms_equalizer/tags/V10/code/d_to_a_1bit.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/d_to_a_1bit.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/d_to_a_1bit.vhd (revision 4)
@@ -0,0 +1,50 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- simple one bit analog output
+-- is outputting frequency in responce to count no
+-- so it repressent amount of error with frequency
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity d_a is
+ port (
+ clk : in std_logic;
+ data_in : in std_logic_vector (15 downto 0);
+ an_out : out std_logic;
+ reset: in std_logic
+ );
+end d_a;
+
+architecture d_a_arch of d_a is
+ signal d_a_Accumulator : std_logic_vector(8 downto 0);
+begin
+ process(clk)
+ begin
+ if (clk'event and clk = '1') then
+ if (reset = '0') then
+ d_a_Accumulator <= "000000000";
+ else
+ d_a_Accumulator <= ("0" & d_a_Accumulator(7 downto 0)) + ("0" & data_in(7 downto 0));
+ end if;
+ end if;
+ end process;
+
+ an_out <= d_a_Accumulator(8);
+end d_a_arch;
+
Index: adaptive_lms_equalizer/tags/V10/code/core_filt.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/core_filt.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/core_filt.vhd (revision 4)
@@ -0,0 +1,141 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+-- A.7
+-- Filter core for adaptive equalizer
+-- Five tap filter
+-- structuaral description
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity core_filt is
+ Port (
+ x_in : in std_logic_vector(7 downto 0);
+ x_N_in : in std_logic_vector(7 downto 0);
+ ue_in : in std_logic_vector(7 downto 0);
+ clock : in std_logic;
+ y_out : out std_logic_vector(7 downto 0));
+end core_filt;
+
+architecture pm_chain of core_filt is
+
+ -- basic tap processing element
+ component unit_calc
+ Port ( x_in : in std_logic_vector(7 downto 0);
+ x_N_in : in std_logic_vector(7 downto 0);
+ ue_in : in std_logic_vector(7 downto 0);
+ y_in : in std_logic_vector(7 downto 0);
+ x_out : out std_logic_vector(7 downto 0);
+ x_N_out : out std_logic_vector(7 downto 0);
+ ue_out : out std_logic_vector(7 downto 0);
+ y_out: out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+ end component ;
+
+
+ signal x_out_t1 :std_logic_vector(7 downto 0);
+ signal x_out_t2 :std_logic_vector(7 downto 0);
+ signal x_out_t3 :std_logic_vector(7 downto 0);
+ signal x_out_t4 :std_logic_vector(7 downto 0);
+
+ signal x_N_out_t1 :std_logic_vector(7 downto 0);
+ signal x_N_out_t2 :std_logic_vector(7 downto 0);
+ signal x_N_out_t3 :std_logic_vector(7 downto 0);
+ signal x_N_out_t4 :std_logic_vector(7 downto 0);
+
+ signal ue_out_t1 :std_logic_vector(7 downto 0);
+ signal ue_out_t2 :std_logic_vector(7 downto 0);
+ signal ue_out_t3 :std_logic_vector(7 downto 0);
+ signal ue_out_t4 :std_logic_vector(7 downto 0);
+
+ signal y_out_t1 :std_logic_vector(7 downto 0);
+ signal y_out_t2 :std_logic_vector(7 downto 0);
+ signal y_out_t3 :std_logic_vector(7 downto 0);
+ signal y_out_t4 :std_logic_vector(7 downto 0);
+
+
+
+begin
+
+ tap1: unit_calc
+ port map (
+ x_in => x_in,
+ x_N_in => x_N_in,
+ ue_in => ue_in,
+ y_in => "00000000",
+ x_out => x_out_t1,
+ x_N_out => x_N_out_t1,
+ ue_out => ue_out_t1,
+ y_out => y_out_t1,
+ clock => clock
+ );
+ tap2: unit_calc
+ port map (
+ x_in => x_out_t1,
+ x_N_in => x_N_out_t1,
+ ue_in => ue_out_t1,
+ y_in => y_out_t1,
+ x_out => x_out_t2,
+ x_N_out => x_N_out_t2,
+ ue_out => ue_out_t2,
+ y_out => y_out_t2,
+ clock => clock
+ );
+ tap3: unit_calc
+ port map (
+ x_in => x_out_t2,
+ x_N_in => x_N_out_t2,
+ ue_in => ue_out_t2,
+ y_in => y_out_t2,
+ x_out => x_out_t3,
+ x_N_out => x_N_out_t3,
+ ue_out => ue_out_t3,
+ y_out => y_out_t3,
+ clock => clock
+ );
+ tap4: unit_calc
+ port map (
+ x_in => x_out_t3,
+ x_N_in => x_N_out_t3,
+ ue_in => ue_out_t3,
+ y_in => y_out_t3,
+ x_out => x_out_t4,
+ x_N_out => x_N_out_t4,
+ ue_out => ue_out_t4,
+ y_out => y_out_t4,
+ clock => clock
+ );
+ tap5: unit_calc
+ port map (
+ x_in => x_out_t4,
+ x_N_in => x_N_out_t4,
+ ue_in => ue_out_t4,
+ y_in => y_out_t4,
+ x_out => open,
+ x_N_out => open,
+ ue_out => open,
+ y_out => y_out,
+ clock => clock
+ );
+
+
+
+
+end pm_chain;
Index: adaptive_lms_equalizer/tags/V10/code/shift_1d_16.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/shift_1d_16.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/shift_1d_16.vhd (revision 4)
@@ -0,0 +1,47 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- 16 vit shift regester
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+
+entity shift_1d_16 is
+ Port ( xin : in std_logic_vector(15 downto 0);
+ xout : out std_logic_vector(15 downto 0);
+ clock : in std_logic);
+end shift_1d_16;
+
+architecture Behavioral of shift_1d_16 is
+signal shift_reg: std_logic_vector (15 downto 0);
+
+begin
+ shift:
+ process(clock)
+ begin
+ if(clock'event and clock = '1') then
+
+ shift_reg <= xin ;
+
+ end if;
+ end process;
+ xout <= shift_reg;
+
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/Display_MSE.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/Display_MSE.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/Display_MSE.vhd (revision 4)
@@ -0,0 +1,140 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+-- ******************---
+--
+-- To be used with LMS testing rutine
+-- process Error signal for proper display
+--
+-- ******************---
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_SIGNED.ALL;
+
+-- Main BLOCK BODY
+entity Display_MSE is
+ Port (
+ reset: in std_logic;
+ error_in : in std_logic_vector(7 downto 0);
+ clock : in std_logic;
+ an_out: out std_logic;
+ seg_select_out : out std_logic_vector(3 downto 0);
+ seg_dis_out : out std_logic_vector(7 downto 0));
+end Display_MSE;
+
+-- Architecture
+architecture mixed of Display_MSE is
+
+-- Components Used
+
+ -- 1 Multiplexer For input to 7 segment module
+ component mux
+ Port ( in1 : in std_logic_vector(3 downto 0);
+ in2 : in std_logic_vector(3 downto 0);
+ in3 : in std_logic_vector(3 downto 0);
+ in4 : in std_logic_vector(3 downto 0);
+ sel : in std_logic_vector( 1 downto 0);
+
+ o_ut : out std_logic_vector(3 downto 0));
+ end component;
+
+ -- 2 Binary to sevenseg Mapping module
+ component bin_to_7seg
+ Port ( din : in std_logic_vector(3 downto 0);
+ dis_out : out std_logic_vector(7 downto 0));
+ end component;
+
+ -- 3 Digital to analog output 1 bit (frequency)
+ component d_a
+ port (
+ clk : in std_logic;
+ data_in : in std_logic_vector (15 downto 0);
+ reset:in std_logic;
+
+ an_out : out std_logic
+ );
+ end component;
+
+ -- Local Interconnects
+ signal error_tmp: std_logic_vector( 15 downto 0);
+ signal error_led_out_tmp:std_logic_vector(7 downto 0);
+ signal seg_in: std_logic_vector( 3 downto 0);
+ signal seg_sel: std_logic_vector( 1 downto 0);
+
+begin
+
+ -- FSM for Selcting 7 segment display (Multiplexed mode)
+
+ mux_display_sel:
+ process (clock)
+ begin
+ if(clock'event and clock = '1') then
+ if reset = '0' then seg_sel <= "00";
+ elsif seg_sel = "00" then seg_sel <= "01";
+ elsif seg_sel = "01" then seg_sel <= "10";
+ elsif seg_sel = "10" then seg_sel <= "11";
+ elsif seg_sel = "11" then seg_sel <= "00";
+ else seg_sel <= "ZZ";
+ end if;
+
+ end if;
+ end process;
+
+ -- Selecting perticular segment for display
+
+ seg_select_out <= "0ZZZ" when seg_sel = "00" else
+ "Z0ZZ" when seg_sel = "01" else
+ "ZZ0Z" when seg_sel = "10" else
+ "ZZZ0" when seg_sel = "11" else
+ "ZZZZ";
+
+ -- IT is Square of ERROR
+ error_tmp <= error_in * error_in;
+
+ -- Converting Binary to Seven segment pattern
+ seven_seg:bin_to_7seg
+ Port map(
+ din => seg_in,
+ dis_out => error_led_out_tmp
+ );
+
+ -- Negative logic out
+ seg_dis_out <= not error_led_out_tmp;
+
+ -- MULTIPLEXED DISPLAY thats why ..
+ m1:mux
+ port map(in1 => error_tmp(3 downto 0),
+ in2 => error_tmp(7 downto 4),
+ in3 => error_tmp(11 downto 8),
+ in4 => error_tmp(15 downto 12),
+ sel => seg_sel, -- Changing with fast clock
+ o_ut => seg_in
+ );
+
+ -- NUMBER to FREQ Generator (1 bit Analog)
+ d_to_a:d_a
+ port map(
+ clk => clock,
+ data_in => error_tmp, -- 16 bit
+ an_out => an_out, -- 1 bit
+ reset => reset
+ );
+
+end mixed;
+--************ END *******-----
\ No newline at end of file
Index: adaptive_lms_equalizer/tags/V10/code/Mux.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/Mux.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/Mux.vhd (revision 4)
@@ -0,0 +1,43 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+
+entity Mux is
+ Port ( in1 : in std_logic_vector(3 downto 0);
+ in2 : in std_logic_vector(3 downto 0);
+ in3 : in std_logic_vector(3 downto 0);
+ in4 : in std_logic_vector(3 downto 0);
+ sel : in std_logic_vector(1 downto 0);
+ o_ut : out std_logic_vector(3 downto 0));
+end Mux;
+
+architecture Behavioral of Mux is
+
+begin
+
+o_ut <= in1 when sel = "00" else
+ in2 when sel = "01" else
+ in3 when sel = "10" else
+ in4 when sel = "11" else
+ "0000";
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/ch_filt_tap.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/ch_filt_tap.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/ch_filt_tap.vhd (revision 4)
@@ -0,0 +1,59 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+-- A.5
+-- simple logic for filter tap operation optimized for the fact that
+-- that there are only two possible data at input
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_SIGNED.ALL;
+
+
+
+entity ch_filt_tap is
+ Port ( din : in std_logic_vector(7 downto 0);
+ dout : out std_logic_vector(7 downto 0);
+ c1_in : in std_logic_vector(7 downto 0);
+ c2_in : in std_logic_vector(7 downto 0);
+ add_in : in std_logic_vector(7 downto 0);
+ add_out : out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+end ch_filt_tap;
+
+architecture Behavioral of ch_filt_tap is
+
+signal mul_res:std_logic_vector(7 downto 0);
+
+begin
+ shift_process:
+ process (clock)
+ begin
+ if(clock'event and clock = '1') then
+ dout <= din;
+ end if;
+ end process;
+
+
+ with din select
+ mul_res <= c1_in when "11000000", -- -1
+ c2_in when others; -- +1
+
+ add_out <= add_in + mul_res;
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/const_ch_filt.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/const_ch_filt.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/const_ch_filt.vhd (revision 4)
@@ -0,0 +1,89 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+-- A.4
+-- channel filter with optimized for constant input data and
+-- constant coefficients
+-- coefficients are rounded to power of two
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+
+entity const_ch_filt is
+ Port ( clock : in std_logic;
+ data_in : in std_logic_vector(7 downto 0);
+ shifted_data_out : out std_logic_vector(7 downto 0);
+ filtered_data_out : out std_logic_vector(7 downto 0));
+end const_ch_filt;
+
+architecture structural of const_ch_filt is
+
+ component ch_filt_tap
+ Port ( din : in std_logic_vector(7 downto 0);
+ dout : out std_logic_vector(7 downto 0);
+ c1_in : in std_logic_vector(7 downto 0);
+ c2_in : in std_logic_vector(7 downto 0);
+ add_in : in std_logic_vector(7 downto 0);
+ add_out : out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+ end component;
+
+ signal t_data_out1: std_logic_vector (7 downto 0);
+ signal t_data_out2: std_logic_vector (7 downto 0);
+ signal t_res_out1: std_logic_vector (7 downto 0);
+ signal t_res_out2: std_logic_vector (7 downto 0);
+
+begin
+
+tap1: ch_filt_tap -- -0.2031
+ port map(
+ din => data_in,
+ dout => t_data_out1,
+ c1_in => "11110011", -- +1
+ c2_in => "00001101", -- -1
+ add_in => "00000000",
+ add_out => t_res_out1,
+ clock => clock
+ );
+
+tap2: ch_filt_tap -- 0.4063
+ port map(
+ din => t_data_out1,
+ dout => t_data_out2,
+ c1_in => "00011010",
+ c2_in => "11100110",
+ add_in => t_res_out1,
+ add_out => t_res_out2,
+ clock => clock
+ );
+tap3: ch_filt_tap -- -0.7969
+ port map(
+ din => t_data_out2,
+ dout => shifted_data_out,
+ c1_in => "11001101",
+ c2_in => "00110011",
+ add_in => t_res_out2,
+ add_out => filtered_data_out,
+ clock => clock
+ );
+
+
+
+end structural;
Index: adaptive_lms_equalizer/tags/V10/code/data_gen_translate.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/data_gen_translate.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/data_gen_translate.vhd (revision 4)
@@ -0,0 +1,828 @@
+-- Xilinx Vhdl produced by program ngd2vhdl F.28
+-- Command: -quiet -rpw 100 -tpw 0 -ar Structure -xon true -w -log __projnav/ngd2vhdl.log data_gen.ngd data_gen_translate.vhd
+-- Input file: data_gen.ngd
+-- Output file: data_gen_translate.vhd
+-- Design name: data_gen
+-- Xilinx: E:/xilinx
+-- # of Entities: 1
+-- Device: 2s100tq144-6
+
+-- The output of ngd2vhdl is a simulation model. This file cannot be synthesized,
+-- or used in any other manner other than simulation. This netlist uses simulation
+-- primitives which may not represent the true implementation of the device, however
+-- the netlist is functionally correct. Do not modify this file.
+
+-- Model for ROC (Reset-On-Configuration) Cell
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.VITAL_Timing.all;
+entity ROC is
+ generic (InstancePath: STRING := "*";
+ WIDTH : Time := 100 ns);
+ port(O : out std_ulogic := '1') ;
+ attribute VITAL_LEVEL0 of ROC : entity is TRUE;
+end ROC;
+
+architecture ROC_V of ROC is
+attribute VITAL_LEVEL0 of ROC_V : architecture is TRUE;
+begin
+ ONE_SHOT : process
+ begin
+ if (WIDTH <= 0 ns) then
+ assert FALSE report
+ "*** Error: a positive value of WIDTH must be specified ***"
+ severity failure;
+ else
+ wait for WIDTH;
+ O <= '0';
+ end if;
+ wait;
+ end process ONE_SHOT;
+end ROC_V;
+
+-- Model for TOC (Tristate-On-Configuration) Cell
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.VITAL_Timing.all;
+entity TOC is
+ generic (InstancePath: STRING := "*";
+ WIDTH : Time := 0 ns);
+ port(O : out std_ulogic := '0');
+ attribute VITAL_LEVEL0 of TOC : entity is TRUE;
+end TOC;
+
+architecture TOC_V of TOC is
+attribute VITAL_LEVEL0 of TOC_V : architecture is TRUE;
+begin
+ ONE_SHOT : process
+ begin
+ O <= '1';
+ if (WIDTH <= 0 ns) then
+ O <= '0';
+ else
+ wait for WIDTH;
+ O <= '0';
+ end if;
+ wait;
+ end process ONE_SHOT;
+end TOC_V;
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+library SIMPRIM;
+use SIMPRIM.VCOMPONENTS.ALL;
+use SIMPRIM.VPACKAGE.ALL;
+entity data_gen is
+ port (
+ reset : in STD_LOGIC := 'X';
+ clock : in STD_LOGIC := 'X';
+ dxout : out STD_LOGIC_VECTOR ( 7 downto 0 );
+ xout : out STD_LOGIC_VECTOR ( 7 downto 0 )
+ );
+end data_gen;
+
+architecture Structure of data_gen is
+ component ROC
+ generic (InstancePath: STRING := "*";
+ WIDTH : Time := 100 ns);
+ port (O : out STD_ULOGIC := '1');
+ end component;
+ component TOC
+ generic (InstancePath: STRING := "*";
+ WIDTH : Time := 0 ns);
+ port (O : out STD_ULOGIC := '1');
+ end component;
+ signal data_0_Q : STD_LOGIC;
+ signal reset_ibuf : STD_LOGIC;
+ signal clock_bufgp : STD_LOGIC;
+ signal Q_n0003 : STD_LOGIC;
+ signal xout_1_obuf : STD_LOGIC;
+ signal n2175 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_lut2_5 : STD_LOGIC;
+ signal xout_2_obuf : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_lut2_4 : STD_LOGIC;
+ signal data_7_Q : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_cy_3 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_lut2_3 : STD_LOGIC;
+ signal channel_tap1_madd_add_out_inst_cy_6 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_cy_5 : STD_LOGIC;
+ signal xout_7_obuf : STD_LOGIC;
+ signal xout_6_obuf : STD_LOGIC;
+ signal xout_5_obuf : STD_LOGIC;
+ signal xout_4_obuf : STD_LOGIC;
+ signal xout_3_obuf : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_lut2_3 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_cy_1 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_lut2_6 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_lut2_7 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_cy_6 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_cy_1 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_cy_4 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_cy_3 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_lut2_1 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_lut2_5 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_lut2_2 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_lut2_2 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_lut2_1 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_cy_2 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_cy_2 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_lut2_6 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_cy_5 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_cy_6 : STD_LOGIC;
+ signal channel_tap2_madd_add_out_inst_cy_4 : STD_LOGIC;
+ signal channel_tap3_madd_add_out_inst_lut2_4 : STD_LOGIC;
+ signal Q_n0003_O : STD_LOGIC;
+ signal clock_bufgp_IBUFG : STD_LOGIC;
+ signal GSR : STD_LOGIC;
+ signal dxout_7_obuf_GTS_TRI : STD_LOGIC;
+ signal GTS : STD_LOGIC;
+ signal dxout_6_obuf_GTS_TRI : STD_LOGIC;
+ signal dxout_5_obuf_GTS_TRI : STD_LOGIC;
+ signal dxout_4_obuf_GTS_TRI : STD_LOGIC;
+ signal dxout_3_obuf_GTS_TRI : STD_LOGIC;
+ signal dxout_2_obuf_GTS_TRI : STD_LOGIC;
+ signal dxout_1_obuf_GTS_TRI : STD_LOGIC;
+ signal dxout_0_obuf_GTS_TRI : STD_LOGIC;
+ signal xout_7_obuf_GTS_TRI : STD_LOGIC;
+ signal xout_6_obuf_GTS_TRI : STD_LOGIC;
+ signal xout_5_obuf_GTS_TRI : STD_LOGIC;
+ signal xout_4_obuf_GTS_TRI : STD_LOGIC;
+ signal xout_3_obuf_GTS_TRI : STD_LOGIC;
+ signal xout_2_obuf_GTS_TRI : STD_LOGIC;
+ signal xout_1_obuf_GTS_TRI : STD_LOGIC;
+ signal xout_0_obuf_GTS_TRI : STD_LOGIC;
+ signal VCC : STD_LOGIC;
+ signal GND : STD_LOGIC;
+ signal NlwInverterSignal_dxout_7_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_dxout_6_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_dxout_5_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_dxout_4_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_dxout_3_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_dxout_2_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_dxout_1_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_dxout_0_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_xout_7_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_xout_6_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_xout_5_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_xout_4_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_xout_3_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_xout_2_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_xout_1_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal NlwInverterSignal_xout_0_obuf_GTS_TRI_CTL : STD_LOGIC;
+ signal channel_tap3_dout : STD_LOGIC_VECTOR ( 7 downto 7 );
+ signal channel_tap1_dout : STD_LOGIC_VECTOR ( 7 downto 7 );
+ signal channel_t_res_out2 : STD_LOGIC_VECTOR ( 7 downto 2 );
+ signal channel_tap2_mul_res : STD_LOGIC_VECTOR ( 2 downto 2 );
+ signal channel_tap3_mul_res : STD_LOGIC_VECTOR ( 5 downto 5 );
+ signal channel_tap2_dout : STD_LOGIC_VECTOR ( 7 downto 7 );
+begin
+ channel_tap2_madd_add_out_inst_lut2_511 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_tap2_mul_res(2),
+ ADR1 => data_7_Q,
+ O => n2175
+ );
+ channel_tap3_madd_add_out_inst_sum_1 : X_XOR2
+ port map (
+ I0 => data_0_Q,
+ I1 => channel_tap3_madd_add_out_inst_lut2_1,
+ O => xout_1_obuf
+ );
+ channel_tap2_madd_add_out_inst_lut2_41 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_tap1_dout(7),
+ ADR1 => data_7_Q,
+ O => channel_tap2_madd_add_out_inst_lut2_4
+ );
+ channel_tap3_madd_add_out_inst_sum_6 : X_XOR2
+ port map (
+ I0 => channel_tap3_madd_add_out_inst_cy_5,
+ I1 => channel_tap3_madd_add_out_inst_lut2_6,
+ O => xout_6_obuf
+ );
+ data_7 : X_SFF
+ port map (
+ I => Q_n0003,
+ SRST => reset_ibuf,
+ CLK => clock_bufgp,
+ O => data_7_Q,
+ CE => VCC,
+ SET => GND,
+ RST => GSR,
+ SSET => GND
+ );
+ xout_0_obuf : X_BUF
+ port map (
+ I => channel_tap1_madd_add_out_inst_cy_6,
+ O => xout_0_obuf_GTS_TRI
+ );
+ channel_tap2_madd_add_out_inst_sum_6 : X_XOR2
+ port map (
+ I0 => channel_tap2_madd_add_out_inst_cy_5,
+ I1 => channel_tap2_madd_add_out_inst_lut2_6,
+ O => channel_t_res_out2(6)
+ );
+ dxout_0_obuf : X_BUF
+ port map (
+ I => data_0_Q,
+ O => dxout_0_obuf_GTS_TRI
+ );
+ channel_tap3_madd_add_out_inst_lut2_21 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_t_res_out2(2),
+ ADR1 => channel_tap2_dout(7),
+ O => channel_tap3_madd_add_out_inst_lut2_2
+ );
+ channel_tap2_madd_add_out_inst_cy_1_0 : X_MUX2
+ port map (
+ IA => data_0_Q,
+ IB => channel_tap1_madd_add_out_inst_cy_6,
+ SEL => channel_tap2_madd_add_out_inst_lut2_1,
+ O => channel_tap2_madd_add_out_inst_cy_1
+ );
+ channel_tap2_madd_add_out_inst_lut2_111 : X_LUT2
+ generic map(
+ INIT => X"5"
+ )
+ port map (
+ ADR0 => data_7_Q,
+ O => channel_tap2_madd_add_out_inst_lut2_1,
+ ADR1 => GND
+ );
+ xst_vcc : X_ONE
+ port map (
+ O => data_0_Q
+ );
+ xst_gnd : X_ZERO
+ port map (
+ O => channel_tap1_madd_add_out_inst_cy_6
+ );
+ channel_tap3_madd_add_out_inst_cy_6_1 : X_MUX2
+ port map (
+ IA => channel_t_res_out2(6),
+ IB => channel_tap3_madd_add_out_inst_cy_5,
+ SEL => channel_tap3_madd_add_out_inst_lut2_6,
+ O => channel_tap3_madd_add_out_inst_cy_6
+ );
+ channel_tap2_madd_add_out_inst_cy_6_2 : X_MUX2
+ port map (
+ IA => channel_tap2_mul_res(2),
+ IB => channel_tap2_madd_add_out_inst_cy_5,
+ SEL => channel_tap2_madd_add_out_inst_lut2_6,
+ O => channel_tap2_madd_add_out_inst_cy_6
+ );
+ channel_tap3_madd_add_out_inst_lut2_61 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_t_res_out2(6),
+ ADR1 => channel_tap2_dout(7),
+ O => channel_tap3_madd_add_out_inst_lut2_6
+ );
+ channel_tap2_madd_add_out_inst_lut2_31 : X_LUT2
+ generic map(
+ INIT => X"9"
+ )
+ port map (
+ ADR0 => channel_tap1_dout(7),
+ ADR1 => data_7_Q,
+ O => channel_tap2_madd_add_out_inst_lut2_3
+ );
+ channel_tap3_madd_add_out_inst_lut2_71 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_tap2_dout(7),
+ ADR1 => channel_t_res_out2(7),
+ O => channel_tap3_madd_add_out_inst_lut2_7
+ );
+ channel_tap3_madd_add_out_inst_sum_5 : X_XOR2
+ port map (
+ I0 => channel_tap3_madd_add_out_inst_cy_4,
+ I1 => channel_tap3_madd_add_out_inst_lut2_5,
+ O => xout_5_obuf
+ );
+ channel_tap3_dout_7 : X_FF
+ port map (
+ I => channel_tap2_dout(7),
+ CLK => clock_bufgp,
+ O => channel_tap3_dout(7),
+ CE => VCC,
+ SET => GND,
+ RST => GSR
+ );
+ channel_tap2_madd_add_out_inst_cy_5_3 : X_MUX2
+ port map (
+ IA => channel_tap2_mul_res(2),
+ IB => channel_tap2_madd_add_out_inst_cy_4,
+ SEL => n2175,
+ O => channel_tap2_madd_add_out_inst_cy_5
+ );
+ dxout_5_obuf : X_BUF
+ port map (
+ I => channel_tap3_dout(7),
+ O => dxout_5_obuf_GTS_TRI
+ );
+ xout_7_obuf_4 : X_BUF
+ port map (
+ I => xout_7_obuf,
+ O => xout_7_obuf_GTS_TRI
+ );
+ xout_1_obuf_5 : X_BUF
+ port map (
+ I => xout_1_obuf,
+ O => xout_1_obuf_GTS_TRI
+ );
+ dxout_4_obuf : X_BUF
+ port map (
+ I => channel_tap3_dout(7),
+ O => dxout_4_obuf_GTS_TRI
+ );
+ reset_ibuf_6 : X_BUF
+ port map (
+ I => reset,
+ O => reset_ibuf
+ );
+ xout_5_obuf_7 : X_BUF
+ port map (
+ I => xout_5_obuf,
+ O => xout_5_obuf_GTS_TRI
+ );
+ channel_tap2_madd_add_out_inst_lut2_51 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_tap2_mul_res(2),
+ ADR1 => data_7_Q,
+ O => channel_tap2_madd_add_out_inst_lut2_5
+ );
+ channel_tap3_madd_add_out_inst_cy_5_8 : X_MUX2
+ port map (
+ IA => channel_t_res_out2(5),
+ IB => channel_tap3_madd_add_out_inst_cy_4,
+ SEL => channel_tap3_madd_add_out_inst_lut2_5,
+ O => channel_tap3_madd_add_out_inst_cy_5
+ );
+ channel_tap3_madd_add_out_inst_lut2_41 : X_LUT2
+ generic map(
+ INIT => X"9"
+ )
+ port map (
+ ADR0 => channel_t_res_out2(4),
+ ADR1 => channel_tap2_dout(7),
+ O => channel_tap3_madd_add_out_inst_lut2_4
+ );
+ channel_tap3_madd_add_out_inst_cy_1_9 : X_MUX2
+ port map (
+ IA => channel_tap3_mul_res(5),
+ IB => data_0_Q,
+ SEL => channel_tap3_madd_add_out_inst_lut2_1,
+ O => channel_tap3_madd_add_out_inst_cy_1
+ );
+ channel_tap3_mmux_mul_res_i2_result1 : X_LUT2
+ generic map(
+ INIT => X"5"
+ )
+ port map (
+ ADR0 => channel_tap2_dout(7),
+ O => channel_tap3_mul_res(5),
+ ADR1 => GND
+ );
+ channel_tap2_madd_add_out_inst_sum_4 : X_XOR2
+ port map (
+ I0 => channel_tap2_madd_add_out_inst_cy_3,
+ I1 => channel_tap2_madd_add_out_inst_lut2_4,
+ O => channel_t_res_out2(4)
+ );
+ channel_tap2_madd_add_out_inst_cy_2_10 : X_MUX2
+ port map (
+ IA => channel_tap2_mul_res(2),
+ IB => channel_tap2_madd_add_out_inst_cy_1,
+ SEL => channel_tap2_madd_add_out_inst_lut2_2,
+ O => channel_tap2_madd_add_out_inst_cy_2
+ );
+ channel_tap2_madd_add_out_inst_cy_3_11 : X_MUX2
+ port map (
+ IA => channel_tap1_dout(7),
+ IB => channel_tap2_madd_add_out_inst_cy_2,
+ SEL => channel_tap2_madd_add_out_inst_lut2_3,
+ O => channel_tap2_madd_add_out_inst_cy_3
+ );
+ channel_tap2_dout_7 : X_FF
+ port map (
+ I => channel_tap1_dout(7),
+ CLK => clock_bufgp,
+ O => channel_tap2_dout(7),
+ CE => VCC,
+ SET => GND,
+ RST => GSR
+ );
+ channel_tap2_madd_add_out_inst_sum_5 : X_XOR2
+ port map (
+ I0 => channel_tap2_madd_add_out_inst_cy_4,
+ I1 => n2175,
+ O => channel_t_res_out2(5)
+ );
+ dxout_6_obuf : X_BUF
+ port map (
+ I => channel_tap3_dout(7),
+ O => dxout_6_obuf_GTS_TRI
+ );
+ dxout_3_obuf : X_BUF
+ port map (
+ I => channel_tap3_dout(7),
+ O => dxout_3_obuf_GTS_TRI
+ );
+ dxout_2_obuf : X_BUF
+ port map (
+ I => channel_tap3_dout(7),
+ O => dxout_2_obuf_GTS_TRI
+ );
+ xout_3_obuf_12 : X_BUF
+ port map (
+ I => xout_3_obuf,
+ O => xout_3_obuf_GTS_TRI
+ );
+ channel_tap3_madd_add_out_inst_sum_2 : X_XOR2
+ port map (
+ I0 => channel_tap3_madd_add_out_inst_cy_1,
+ I1 => channel_tap3_madd_add_out_inst_lut2_2,
+ O => xout_2_obuf
+ );
+ channel_tap3_madd_add_out_inst_cy_2_13 : X_MUX2
+ port map (
+ IA => channel_t_res_out2(2),
+ IB => channel_tap3_madd_add_out_inst_cy_1,
+ SEL => channel_tap3_madd_add_out_inst_lut2_2,
+ O => channel_tap3_madd_add_out_inst_cy_2
+ );
+ channel_tap3_madd_add_out_inst_sum_4 : X_XOR2
+ port map (
+ I0 => channel_tap3_madd_add_out_inst_cy_3,
+ I1 => channel_tap3_madd_add_out_inst_lut2_4,
+ O => xout_4_obuf
+ );
+ channel_tap2_madd_add_out_inst_lut2_21 : X_LUT2
+ generic map(
+ INIT => X"9"
+ )
+ port map (
+ ADR0 => channel_tap2_mul_res(2),
+ ADR1 => data_7_Q,
+ O => channel_tap2_madd_add_out_inst_lut2_2
+ );
+ channel_tap2_mmux_mul_res_i5_result1 : X_LUT2
+ generic map(
+ INIT => X"5"
+ )
+ port map (
+ ADR0 => channel_tap1_dout(7),
+ O => channel_tap2_mul_res(2),
+ ADR1 => GND
+ );
+ channel_tap3_madd_add_out_inst_cy_4_14 : X_MUX2
+ port map (
+ IA => channel_t_res_out2(4),
+ IB => channel_tap3_madd_add_out_inst_cy_3,
+ SEL => channel_tap3_madd_add_out_inst_lut2_4,
+ O => channel_tap3_madd_add_out_inst_cy_4
+ );
+ channel_tap3_madd_add_out_inst_lut2_31 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_t_res_out2(3),
+ ADR1 => channel_tap2_dout(7),
+ O => channel_tap3_madd_add_out_inst_lut2_3
+ );
+ channel_tap2_madd_add_out_inst_sum_3 : X_XOR2
+ port map (
+ I0 => channel_tap2_madd_add_out_inst_cy_2,
+ I1 => channel_tap2_madd_add_out_inst_lut2_3,
+ O => channel_t_res_out2(3)
+ );
+ channel_tap3_madd_add_out_inst_lut2_51 : X_LUT2
+ generic map(
+ INIT => X"9"
+ )
+ port map (
+ ADR0 => channel_t_res_out2(5),
+ ADR1 => channel_tap2_dout(7),
+ O => channel_tap3_madd_add_out_inst_lut2_5
+ );
+ xout_6_obuf_15 : X_BUF
+ port map (
+ I => xout_6_obuf,
+ O => xout_6_obuf_GTS_TRI
+ );
+ channel_tap3_madd_add_out_inst_sum_3 : X_XOR2
+ port map (
+ I0 => channel_tap3_madd_add_out_inst_cy_2,
+ I1 => channel_tap3_madd_add_out_inst_lut2_3,
+ O => xout_3_obuf
+ );
+ channel_tap1_dout_7 : X_FF
+ port map (
+ I => data_7_Q,
+ CLK => clock_bufgp,
+ O => channel_tap1_dout(7),
+ CE => VCC,
+ SET => GND,
+ RST => GSR
+ );
+ channel_tap2_madd_add_out_inst_lut2_61 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_tap2_mul_res(2),
+ ADR1 => data_7_Q,
+ O => channel_tap2_madd_add_out_inst_lut2_6
+ );
+ dxout_7_obuf : X_BUF
+ port map (
+ I => channel_tap3_dout(7),
+ O => dxout_7_obuf_GTS_TRI
+ );
+ xout_2_obuf_16 : X_BUF
+ port map (
+ I => xout_2_obuf,
+ O => xout_2_obuf_GTS_TRI
+ );
+ xout_4_obuf_17 : X_BUF
+ port map (
+ I => xout_4_obuf,
+ O => xout_4_obuf_GTS_TRI
+ );
+ channel_tap2_madd_add_out_inst_sum_7 : X_XOR2
+ port map (
+ I0 => channel_tap2_madd_add_out_inst_cy_6,
+ I1 => channel_tap2_madd_add_out_inst_lut2_5,
+ O => channel_t_res_out2(7)
+ );
+ channel_tap2_madd_add_out_inst_cy_4_18 : X_MUX2
+ port map (
+ IA => channel_tap1_dout(7),
+ IB => channel_tap2_madd_add_out_inst_cy_3,
+ SEL => channel_tap2_madd_add_out_inst_lut2_4,
+ O => channel_tap2_madd_add_out_inst_cy_4
+ );
+ channel_tap2_madd_add_out_inst_sum_2 : X_XOR2
+ port map (
+ I0 => channel_tap2_madd_add_out_inst_cy_1,
+ I1 => channel_tap2_madd_add_out_inst_lut2_2,
+ O => channel_t_res_out2(2)
+ );
+ channel_tap3_madd_add_out_inst_cy_3_19 : X_MUX2
+ port map (
+ IA => channel_t_res_out2(3),
+ IB => channel_tap3_madd_add_out_inst_cy_2,
+ SEL => channel_tap3_madd_add_out_inst_lut2_3,
+ O => channel_tap3_madd_add_out_inst_cy_3
+ );
+ dxout_1_obuf : X_BUF
+ port map (
+ I => channel_tap3_dout(7),
+ O => dxout_1_obuf_GTS_TRI
+ );
+ channel_tap3_madd_add_out_inst_sum_7 : X_XOR2
+ port map (
+ I0 => channel_tap3_madd_add_out_inst_cy_6,
+ I1 => channel_tap3_madd_add_out_inst_lut2_7,
+ O => xout_7_obuf
+ );
+ channel_tap3_madd_add_out_inst_lut2_11 : X_LUT2
+ generic map(
+ INIT => X"6"
+ )
+ port map (
+ ADR0 => channel_tap2_dout(7),
+ ADR1 => data_7_Q,
+ O => channel_tap3_madd_add_out_inst_lut2_1
+ );
+ Q_n0003_22 : X_LUT2
+ generic map(
+ INIT => X"5"
+ )
+ port map (
+ ADR0 => data_7_Q,
+ ADR1 => GND,
+ O => Q_n0003_O
+ );
+ Q_n0003_LUT1_L_BUF : X_BUF
+ port map (
+ I => Q_n0003_O,
+ O => Q_n0003
+ );
+ clock_bufgp_IBUFG_23 : X_CKBUF
+ port map (
+ I => clock,
+ O => clock_bufgp_IBUFG
+ );
+ clock_bufgp_BUFG : X_CKBUF
+ port map (
+ I => clock_bufgp_IBUFG,
+ O => clock_bufgp
+ );
+ dxout_7_obuf_GTS_TRI_24 : X_TRI
+ port map (
+ I => dxout_7_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_dxout_7_obuf_GTS_TRI_CTL,
+ O => dxout(7)
+ );
+ dxout_6_obuf_GTS_TRI_25 : X_TRI
+ port map (
+ I => dxout_6_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_dxout_6_obuf_GTS_TRI_CTL,
+ O => dxout(6)
+ );
+ dxout_5_obuf_GTS_TRI_26 : X_TRI
+ port map (
+ I => dxout_5_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_dxout_5_obuf_GTS_TRI_CTL,
+ O => dxout(5)
+ );
+ dxout_4_obuf_GTS_TRI_27 : X_TRI
+ port map (
+ I => dxout_4_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_dxout_4_obuf_GTS_TRI_CTL,
+ O => dxout(4)
+ );
+ dxout_3_obuf_GTS_TRI_28 : X_TRI
+ port map (
+ I => dxout_3_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_dxout_3_obuf_GTS_TRI_CTL,
+ O => dxout(3)
+ );
+ dxout_2_obuf_GTS_TRI_29 : X_TRI
+ port map (
+ I => dxout_2_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_dxout_2_obuf_GTS_TRI_CTL,
+ O => dxout(2)
+ );
+ dxout_1_obuf_GTS_TRI_30 : X_TRI
+ port map (
+ I => dxout_1_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_dxout_1_obuf_GTS_TRI_CTL,
+ O => dxout(1)
+ );
+ dxout_0_obuf_GTS_TRI_31 : X_TRI
+ port map (
+ I => dxout_0_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_dxout_0_obuf_GTS_TRI_CTL,
+ O => dxout(0)
+ );
+ xout_7_obuf_GTS_TRI_32 : X_TRI
+ port map (
+ I => xout_7_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_xout_7_obuf_GTS_TRI_CTL,
+ O => xout(7)
+ );
+ xout_6_obuf_GTS_TRI_33 : X_TRI
+ port map (
+ I => xout_6_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_xout_6_obuf_GTS_TRI_CTL,
+ O => xout(6)
+ );
+ xout_5_obuf_GTS_TRI_34 : X_TRI
+ port map (
+ I => xout_5_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_xout_5_obuf_GTS_TRI_CTL,
+ O => xout(5)
+ );
+ xout_4_obuf_GTS_TRI_35 : X_TRI
+ port map (
+ I => xout_4_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_xout_4_obuf_GTS_TRI_CTL,
+ O => xout(4)
+ );
+ xout_3_obuf_GTS_TRI_36 : X_TRI
+ port map (
+ I => xout_3_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_xout_3_obuf_GTS_TRI_CTL,
+ O => xout(3)
+ );
+ xout_2_obuf_GTS_TRI_37 : X_TRI
+ port map (
+ I => xout_2_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_xout_2_obuf_GTS_TRI_CTL,
+ O => xout(2)
+ );
+ xout_1_obuf_GTS_TRI_38 : X_TRI
+ port map (
+ I => xout_1_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_xout_1_obuf_GTS_TRI_CTL,
+ O => xout(1)
+ );
+ xout_0_obuf_GTS_TRI_39 : X_TRI
+ port map (
+ I => xout_0_obuf_GTS_TRI,
+ CTL => NlwInverterSignal_xout_0_obuf_GTS_TRI_CTL,
+ O => xout(0)
+ );
+ NlwBlock_data_gen_VCC : X_ONE
+ port map (
+ O => VCC
+ );
+ NlwBlock_data_gen_GND : X_ZERO
+ port map (
+ O => GND
+ );
+ NlwInverterBlock_dxout_7_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_dxout_7_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_dxout_6_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_dxout_6_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_dxout_5_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_dxout_5_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_dxout_4_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_dxout_4_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_dxout_3_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_dxout_3_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_dxout_2_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_dxout_2_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_dxout_1_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_dxout_1_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_dxout_0_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_dxout_0_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_xout_7_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_xout_7_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_xout_6_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_xout_6_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_xout_5_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_xout_5_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_xout_4_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_xout_4_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_xout_3_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_xout_3_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_xout_2_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_xout_2_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_xout_1_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_xout_1_obuf_GTS_TRI_CTL
+ );
+ NlwInverterBlock_xout_0_obuf_GTS_TRI_CTL : X_INV
+ port map (
+ I => GTS,
+ O => NlwInverterSignal_xout_0_obuf_GTS_TRI_CTL
+ );
+ NlwBlockROC : ROC generic map ( WIDTH => 100 ns)
+ port map (O => GSR);
+ NlwBlockTOC : TOC port map (O => GTS);
+end Structure;
+
Index: adaptive_lms_equalizer/tags/V10/code/tf_lms.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/tf_lms.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/tf_lms.vhd (revision 4)
@@ -0,0 +1,101 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+-- A.6 tf_lms.vhd
+-- Adaptive equalizer routine
+--
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_SIGNED.ALL;
+
+
+entity tf_lms is
+ Port (
+ xin : in std_logic_vector(7 downto 0); -- data input
+ dxin : in std_logic_vector(7 downto 0); -- desired response input
+ clock : in std_logic; -- clock
+ err:out std_logic_vector(7 downto 0); -- error output
+ yout : out std_logic_vector(7 downto 0); -- output data
+ adapt_en: in std_logic -- enable adaption
+ );
+end tf_lms;
+
+architecture structural of tf_lms is
+
+ -- filter core
+ component core_filt
+ Port (
+ x_in : in std_logic_vector(7 downto 0);
+ x_N_in : in std_logic_vector(7 downto 0);
+ ue_in : in std_logic_vector(7 downto 0);
+ clock : in std_logic;
+ y_out : out std_logic_vector(7 downto 0));
+ end component ;
+
+ -- shift regesters
+ component shift_21d
+ Port ( xin : in std_logic_vector(7 downto 0);
+ x_N_out : out std_logic_vector(7 downto 0);
+ x_1_out : out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+ end component;
+
+ component shift_20d
+ Port ( xin : in std_logic_vector(7 downto 0);
+ xout : out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+ end component;
+
+ signal e,e_t,y_o,x_1,x_N:std_logic_vector(7 downto 0);
+
+begin
+
+ -- if Adaption is not enabled then ERROR signal is ZERO
+ with adapt_en select
+ e <= y_o - e_t when '1',
+ "00000000" when others;
+
+ err <= e;
+
+ shift_1:shift_20d
+ port map (
+ xin => dxin,
+ xout => e_t,
+ clock => clock
+ );
+
+ shift_2:shift_21d
+ port map (
+ xin => xin,
+ x_N_out =>x_N,
+ x_1_out =>x_1,
+ clock => clock
+ );
+
+ cflt: core_filt
+ port map (
+ x_in => x_1,
+ x_N_in => x_N,
+ ue_in => e,
+ y_out => y_o,
+ clock => clock
+ );
+
+ yout <= y_o;
+end structural;
Index: adaptive_lms_equalizer/tags/V10/code/mul8.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/mul8.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/mul8.vhd (revision 4)
@@ -0,0 +1,36 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- 8 bit multi plier
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_SIGNED.ALL;
+
+
+entity mul8 is
+ Port ( d1_in : in std_logic_vector(7 downto 0);
+ d2_in : in std_logic_vector(7 downto 0);
+ d_out : out std_logic_vector(15 downto 0));
+end mul8;
+
+architecture Behavioral of mul8 is
+
+begin
+
+ d_out <= d1_in * d2_in;
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/shift_15d.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/shift_15d.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/shift_15d.vhd (revision 4)
@@ -0,0 +1,47 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- producing delay of 20 unit
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+
+entity shift_20d is
+ Port ( xin : in std_logic_vector(7 downto 0);
+ xout : out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+end shift_20d;
+
+architecture Behavioral of shift_20d is
+signal shift_reg: std_logic_vector (159 downto 0);
+--signal shift_reg: std_logic_vector (119 downto 0);
+begin
+
+ shift:
+ process(clock)
+ begin
+ if(clock'event and clock = '1') then
+
+ shift_reg <= xin & shift_reg(159 downto 8);
+
+ end if;
+ end process;
+ xout <= shift_reg(7 downto 0);
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/tr_seq_gen.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/tr_seq_gen.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/tr_seq_gen.vhd (revision 4)
@@ -0,0 +1,22 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+-- Uncomment the following lines to use the declarations that are
+-- provided for instantiating Xilinx primitive components.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity tr_seq_gen is
+ Port ( clock : in std_logic;
+ reset : in std_logic;
+ data_out : out std_logic_vector(7 downto 0));
+end tr_seq_gen;
+
+architecture Behavioral of tr_seq_gen is
+
+begin
+
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/truncation.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/truncation.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/truncation.vhd (revision 4)
@@ -0,0 +1,36 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+-- simple 16 to 8 bit truncation circuit
+-- it is only for fixed point(6,8) system
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+
+entity truncation is
+ Port ( d_in : in std_logic_vector(15 downto 0);
+ d_out : out std_logic_vector(7 downto 0));
+end truncation;
+
+architecture Behavioral of truncation is
+
+begin
+
+ d_out <= d_in(13 downto 6);
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/shift_16d.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/shift_16d.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/shift_16d.vhd (revision 4)
@@ -0,0 +1,48 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- delay of 21 and 1 unit
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+
+entity shift_21d is
+ Port ( xin : in std_logic_vector(7 downto 0);
+ x_N_out : out std_logic_vector(7 downto 0);
+ x_1_out : out std_logic_vector(7 downto 0);
+ clock : in std_logic);
+end shift_21d;
+
+architecture Behavioral of shift_21d is
+signal shift_reg: std_logic_vector (167 downto 0);
+--signal shift_reg: std_logic_vector (127 downto 0);
+begin
+
+ shift:
+ process(clock)
+ begin
+ if(clock'event and clock = '1') then
+
+ shift_reg <= xin & shift_reg(167 downto 8);
+
+ end if;
+ end process;
+ x_N_out <= shift_reg(7 downto 0);
+ x_1_out <= shift_reg(167 downto 160);
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/saturation.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/saturation.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/saturation.vhd (revision 4)
@@ -0,0 +1,45 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- A.9 saturation.vhd
+-- saturation circuit
+-- important for avoiding adverse effect of truncation
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+
+entity saturation is
+ Port ( d_in : in std_logic_vector(15 downto 0);
+ d_out : out std_logic_vector(15 downto 0));
+end saturation;
+
+architecture Behavioral of saturation is
+ signal sel:std_logic_vector(1 downto 0);
+begin
+
+ sel(1) <= not(d_in(12) xor d_in(13)xor d_in(14) xor d_in(15));
+ sel(0) <= d_in(15);
+
+ with sel select
+ d_out <= d_in when "11"|"10",
+ "0001000000000000" when "00",
+ "1111000000000000" when "01",
+ "0000000000000000" when others;
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags/V10/code/test_filt_test_sys.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/test_filt_test_sys.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/test_filt_test_sys.vhd (revision 4)
@@ -0,0 +1,88 @@
+
+-- VHDL Test Bench Created from source file filt_test_system.vhd -- 13:41:17 03/25/2005
+--
+-- Notes:
+-- This testbench has been automatically generated using types std_logic and
+-- std_logic_vector for the ports of the unit under test. Xilinx recommends
+-- that these types always be used for the top-level I/O of a design in order
+-- to guarantee that the testbench will bind correctly to the post-implementation
+-- simulation model.
+--
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+USE ieee.numeric_std.ALL;
+
+ENTITY testbench IS
+END testbench;
+
+ARCHITECTURE behavior OF testbench IS
+
+ COMPONENT filt_test_system
+ PORT(
+ clock : IN std_logic;
+ reset : IN std_logic;
+ adaption_enable : IN std_logic;
+ error_led_out : OUT std_logic_vector(7 downto 0);
+ seg_select : OUT std_logic_vector(3 downto 0);
+ error_freq_out : OUT std_logic;
+ reset_clk : in std_logic;
+ filt_data_out : OUT std_logic_vector(7 downto 0)
+ );
+ END COMPONENT;
+
+ SIGNAL clock : std_logic;
+ SIGNAL error_led_out : std_logic_vector(7 downto 0);
+ SIGNAL seg_select : std_logic_vector(3 downto 0);
+ SIGNAL error_freq_out : std_logic;
+ SIGNAL filt_data_out : std_logic_vector(7 downto 0);
+ SIGNAL reset : std_logic;
+ signal reset_clk : std_logic;
+ SIGNAL adaption_enable : std_logic;
+
+ CONSTANT clk_high : time := 10 ns;
+ CONSTANT clk_low : time := 10 ns;
+ CONSTANT clk_period : time := 20 ns;
+ CONSTANT clk_hold : time := 4 ns;
+
+
+
+
+BEGIN
+
+ uut: filt_test_system PORT MAP(
+ clock => clock,
+ error_led_out => error_led_out,
+ seg_select => seg_select,
+ error_freq_out => error_freq_out,
+ filt_data_out => filt_data_out,
+ reset => reset,
+ reset_clk => reset_clk,
+ adaption_enable => adaption_enable
+ );
+
+
+-- *** Test Bench - User Defined Section ***
+ clk_gen: PROCESS
+ BEGIN
+ clock <= '1';
+ WAIT FOR clk_high;
+ clock <= '0';
+ WAIT FOR clk_low;
+
+ END PROCESS clk_gen;
+
+ reset_gen: process
+ begin
+ reset <= '0';
+ reset_clk <= '0';
+ wait for clk_period*2;
+ reset_clk <= '1';
+ adaption_enable <= '1';
+ wait for clk_period*10;
+ reset <= '1';
+
+ wait;
+ end process reset_gen;
+-- *** End Test Bench - User Defined Section ***
+
+END;
Index: adaptive_lms_equalizer/tags/V10/code/test_lms.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/test_lms.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/test_lms.vhd (revision 4)
@@ -0,0 +1,2185 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- VHDL Test Bench Created from source file tf_lms.vhd -- 14:23:32 02/24/2005
+--
+-- Notes:
+-- This testbench has been automatically generated using types std_logic and
+-- std_logic_vector for the ports of the unit under test. Xilinx recommends
+-- that these types always be used for the top-level I/O of a design in order
+-- to guarantee that the testbench will bind correctly to the post-implementation
+-- simulation model.
+--
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+USE ieee.numeric_std.ALL;
+
+LIBRARY ieee;
+USE IEEE.STD_LOGIC_TEXTIO.ALL;
+USE STD.TEXTIO.ALL;
+
+ENTITY testbench IS
+END testbench;
+
+ARCHITECTURE behavior OF testbench IS
+ FILE RESULTS: TEXT IS OUT "yout.txt";
+ FILE ERRF: TEXT IS OUT "error.txt";
+
+ FUNCTION to_hex( x : IN std_logic_vector) RETURN string IS
+ VARIABLE result : STRING(1 TO 8); -- 1024 bits max
+ VARIABLE i : INTEGER;
+ VARIABLE imod : INTEGER;
+ VARIABLE j : INTEGER;
+ VARIABLE newx : std_logic_vector(1023 DOWNTO 0);
+ BEGIN
+ newx := (OTHERS => '0');
+ newx(x'RANGE) := x;
+ i := 7;
+ j := 1;
+
+ WHILE i >= 0 LOOP
+ IF newx(i) = '0' THEN result(j) := '0';
+ elsif newx(i) = '1' THEN result(j) := '1';
+ ELSE result(j) := 'X';
+ END IF;
+
+ i := i-1;
+ j := j+1;
+ END LOOP;
+ RETURN result(1 TO j-1);
+ END;
+
+ COMPONENT tf_lms
+ PORT(
+ xin : IN std_logic_vector(7 downto 0);
+ dxin : IN std_logic_vector(7 downto 0);
+ clock : IN std_logic;
+ err: out std_logic_vector(7 downto 0);
+ adapt_en: in std_logic;
+ yout : OUT std_logic_vector(7 downto 0)
+ );
+ END COMPONENT;
+
+ SIGNAL xin : std_logic_vector(7 downto 0);
+ SIGNAL dxin : std_logic_vector(7 downto 0);
+ SIGNAL clock : std_logic;
+ SIGNAL yout : std_logic_vector(7 downto 0);
+ signal err: std_logic_vector(7 downto 0);
+ signal adapt_en : std_logic;
+ CONSTANT clk_high : time := 10 ns;
+ CONSTANT clk_low : time := 10 ns;
+ CONSTANT clk_period : time := 20 ns;
+ CONSTANT clk_hold : time := 4 ns;
+
+
+
+ TYPE filter_data IS ARRAY (0 TO 999) OF std_logic_vector(7 downto 0);
+ TYPE filter_out_table IS ARRAY (0 TO 999)OF std_logic_vector(7 downto 0);
+
+ -- Constants
+ CONSTANT filter_dx_in : filter_data :=
+ (
+
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000",
+"01000000",
+"11000000"
+
+);
+ CONSTANT filter_x_in : filter_data :=
+ (
+
+"11110011",
+"00100110",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010",
+"10100110",
+"01011010"
+
+);
+
+
+
+BEGIN
+
+ uut: tf_lms PORT MAP(
+ xin => xin,
+ dxin => dxin,
+ clock => clock,
+ err => err,
+ adapt_en => adapt_en,
+ yout => yout
+ );
+
+
+-- *** Test Bench - User Defined Section ***
+ clk_gen: PROCESS
+ BEGIN
+ clock <= '1';
+ WAIT FOR clk_high;
+ clock <= '0';
+ WAIT FOR clk_low;
+
+ END PROCESS clk_gen;
+
+ tb:
+ PROCESS
+ variable IN_x,IN_dx:std_logic_vector(7 downto 0);
+ VARIABLE TX_STR : String(1 to 512);
+ VARIABLE TX_LOC : LINE;
+ VARIABLE RX_LOC : LINE;
+
+
+ BEGIN
+
+ adapt_en <= '1';
+
+ FOR n IN 0 TO 500 LOOP
+-- readline(F_XIN,xin);
+ --xin <= IN_X;
+ --Deallocate(RX_LOC);
+ xin <= filter_x_in(n);
+ dxin <= filter_dx_in(n);
+ wait for clk_period;
+ write(TX_LOC,string'("'"));
+ write(TX_LOC, yout);
+ write(TX_LOC,string'("'"));
+ writeline(results, TX_LOC);
+ Deallocate(TX_LOC);
+ write(TX_LOC,string'("'"));
+ write(TX_LOC, err);
+ write(TX_LOC,string'("'"));
+ writeline(ERRF, TX_LOC);
+ Deallocate(TX_LOC);
+ end loop;
+
+ -- adapt_en <= '0';
+
+ FOR n IN 501 TO 999 LOOP
+-- readline(F_XIN,xin);
+ --xin <= IN_X;
+ --Deallocate(RX_LOC);
+ xin <= filter_x_in(n);
+ dxin <= filter_dx_in(n);
+ wait for clk_period;
+ write(TX_LOC,string'("'"));
+ write(TX_LOC, yout);
+ write(TX_LOC,string'("'"));
+ writeline(results, TX_LOC);
+ Deallocate(TX_LOC);
+ write(TX_LOC,string'("'"));
+ write(TX_LOC, err);
+ write(TX_LOC,string'("'"));
+ writeline(ERRF, TX_LOC);
+ Deallocate(TX_LOC);
+ end loop;
+
+
+ wait; -- will wait forever
+ END PROCESS;
+-- *** End Test Bench - User Defined Section ***
+
+END;
Index: adaptive_lms_equalizer/tags/V10/code/clock_div.vhd
===================================================================
--- adaptive_lms_equalizer/tags/V10/code/clock_div.vhd (nonexistent)
+++ adaptive_lms_equalizer/tags/V10/code/clock_div.vhd (revision 4)
@@ -0,0 +1,57 @@
+-- Copyright (C) 2004-2005 Digish Pandya
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-- clock devider routine
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity clock_div is
+ Port ( reset: in std_logic;
+ in_clk : in std_logic;
+ out1 : out std_logic;
+ out2 : out std_logic);
+end clock_div;
+
+architecture Behavioral of clock_div is
+
+signal ct: std_logic_vector(19 downto 0);
+--signal ct: std_logic_vector(1 downto 0);
+
+begin
+
+ process(reset,in_clk)
+ begin
+ if reset = '0' then
+ ct <= "00000000000000000000";
+-- ct <= "00";
+ elsif in_clk'event and in_clk = '1' then
+ ct <= ct + "00000000000000000001";
+-- ct <= ct + "01";
+ end if;
+ end process;
+-- Using this value we can adjust different clock speed
+-- Fast Clock
+out1 <= ct(5);
+-- Slow clock
+out2 <= ct(19);
+
+--out1 <= ct(0);
+--out2 <= ct(1);
+
+end Behavioral;
Index: adaptive_lms_equalizer/tags
===================================================================
--- adaptive_lms_equalizer/tags (nonexistent)
+++ adaptive_lms_equalizer/tags (revision 4)
adaptive_lms_equalizer/tags
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##