📄 fir.vhd
字号:
-- AccelDSP 9.1.00 build 868 Production, compiled Feb 16 2007
--
-- THIS IS UNPUBLISHED, LICENSED SOFTWARE THAT IS THE CONFIDENTIAL
-- AND PROPRIETARY PROPERTY OF XILINX OR ITS LICENSORS
--
-- Copyright(c) Xilinx, Inc., 2000-2007, All Rights Reserved.
-- Reproduction or reuse, in any form, without the explicit written
-- consent of Xilinx, Inc., is strictly prohibited.
--
-- User: WangQian
-- Machine: A2D3DF917F70473 (i1586, Windows XP Service Pack 2, 5.01.2600)
-- Date: Mon May 12 10:57:37 2008
--
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
entity fir is
port (
indatabuf : in signed( 11 downto 0 );
outdatabuf : out signed( 25 downto 0 );
ac_InputAvail : in std_logic;
ac_OutputAvail : out std_logic;
Reset : in std_logic;
Clock : in std_logic
);
end fir;
architecture RTL of fir is
signal ac_is_busy : boolean;
signal ac_latch_indatabuf_1 : signed( 11 downto 0 );
constant ac_scalar_ac_input_mtimes_1_0 : unsigned( 11 downto 0 ) := "000000010001";
constant ac_scalar_ac_input_mtimes_1_1 : unsigned( 11 downto 0 ) := "000000100011";
constant ac_scalar_ac_input_mtimes_1_10 : unsigned( 11 downto 0 ) := "000110010000";
constant ac_scalar_ac_input_mtimes_1_11 : unsigned( 11 downto 0 ) := "000100011000";
constant ac_scalar_ac_input_mtimes_1_12 : unsigned( 11 downto 0 ) := "000010101000";
constant ac_scalar_ac_input_mtimes_1_13 : unsigned( 11 downto 0 ) := "000001010011";
constant ac_scalar_ac_input_mtimes_1_14 : unsigned( 11 downto 0 ) := "000000100011";
constant ac_scalar_ac_input_mtimes_1_15 : unsigned( 11 downto 0 ) := "000000010001";
constant ac_scalar_ac_input_mtimes_1_2 : unsigned( 11 downto 0 ) := "000001010011";
constant ac_scalar_ac_input_mtimes_1_3 : unsigned( 11 downto 0 ) := "000010101000";
constant ac_scalar_ac_input_mtimes_1_4 : unsigned( 11 downto 0 ) := "000100011000";
constant ac_scalar_ac_input_mtimes_1_5 : unsigned( 11 downto 0 ) := "000110010000";
constant ac_scalar_ac_input_mtimes_1_6 : unsigned( 11 downto 0 ) := "000111110101";
constant ac_scalar_ac_input_mtimes_1_7 : unsigned( 11 downto 0 ) := "001000101111";
constant ac_scalar_ac_input_mtimes_1_8 : unsigned( 11 downto 0 ) := "001000101111";
constant ac_scalar_ac_input_mtimes_1_9 : unsigned( 11 downto 0 ) := "000111110101";
signal ac_scalar_tap_delay_0 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_1 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_10 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_11 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_12 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_13 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_14 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_15 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_2 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_3 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_4 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_5 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_6 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_7 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_8 : signed( 11 downto 0 );
signal ac_scalar_tap_delay_9 : signed( 11 downto 0 );
signal ac_tmp_0 : signed( 24 downto 0 );
signal mtimes_001_accum_regmerge_1 : signed( 28 downto 0 );
signal proceed_var : boolean;
signal ac_shared_adder_1_result : signed( 28 downto 0 );
signal ac_shared_multiply_0_result : signed( 24 downto 0 );
type STATE_VAR_DEF_fir_process_state is
(
sm0_15,
sm0_14,
sm0_13,
sm0_12,
sm0_11,
sm0_10,
sm0_9,
sm0_8,
sm0_7,
sm0_6,
sm0_5,
sm0_4,
sm0_3,
sm0_2,
sm0_1,
sm0_0
);
signal fir_process_state : STATE_VAR_DEF_fir_process_state;
begin
proceed_var <= ((ac_InputAvail = '1') or ac_is_busy);
ac_shared_multiply_0_process_combinational_1:
process ( fir_process_state, ac_scalar_tap_delay_0, ac_scalar_tap_delay_1, ac_scalar_tap_delay_2, ac_scalar_tap_delay_3, ac_scalar_tap_delay_4, ac_scalar_tap_delay_5, ac_scalar_tap_delay_6, ac_scalar_tap_delay_7, ac_scalar_tap_delay_8, ac_scalar_tap_delay_9, ac_scalar_tap_delay_10, ac_scalar_tap_delay_11, ac_scalar_tap_delay_12, ac_scalar_tap_delay_13, ac_scalar_tap_delay_14, ac_scalar_tap_delay_15 ) is
variable ac_shared_multiply_0_lhs : signed( 11 downto 0 );
variable ac_shared_multiply_0_rhs : unsigned( 11 downto 0 );
variable ac_tmp_52 : unsigned( 12 downto 0 );
begin
case fir_process_state is
when sm0_15 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_0;
when sm0_14 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_1;
when sm0_13 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_2;
when sm0_12 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_3;
when sm0_11 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_4;
when sm0_10 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_5;
when sm0_9 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_6;
when sm0_8 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_7;
when sm0_7 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_8;
when sm0_6 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_9;
when sm0_5 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_10;
when sm0_4 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_11;
when sm0_3 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_12;
when sm0_2 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_13;
when sm0_1 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_14;
when sm0_0 =>
ac_shared_multiply_0_lhs := ac_scalar_tap_delay_15;
when others =>
ac_shared_multiply_0_lhs := "000000000000";
end case; --fir_process_state
case fir_process_state is
when sm0_15 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_0;
when sm0_14 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_1;
when sm0_13 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_2;
when sm0_12 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_3;
when sm0_11 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_4;
when sm0_10 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_5;
when sm0_9 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_6;
when sm0_8 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_7;
when sm0_7 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_8;
when sm0_6 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_9;
when sm0_5 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_10;
when sm0_4 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_11;
when sm0_3 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_12;
when sm0_2 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_13;
when sm0_1 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_14;
when sm0_0 =>
ac_shared_multiply_0_rhs := ac_scalar_ac_input_mtimes_1_15;
when others =>
ac_shared_multiply_0_rhs := "000000000000";
end case; --fir_process_state
ac_tmp_52 := ('0' & ac_shared_multiply_0_rhs);
ac_shared_multiply_0_result <= (ac_shared_multiply_0_lhs * signed(ac_tmp_52));
end process ac_shared_multiply_0_process_combinational_1;
ac_shared_adder_1_process_combinational_0:
process ( ac_shared_multiply_0_result, ac_tmp_0, fir_process_state, mtimes_001_accum_regmerge_1 ) is
variable ac_shared_adder_1_lhs : signed( 28 downto 0 );
variable ac_shared_adder_1_rhs : signed( 28 downto 0 );
variable ac_tmp_1 : signed( 24 downto 0 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -