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

Subversion Repositories lp_iir_filter

[/] [lp_iir_filter/] [trunk/] [SRC/] [DELAY.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 unicore
---------------------------------------------------------------------
2
----                                                             ----
3
----  IIR Filter IP core                                         ----
4
----                                                             ----
5
----  Authors: Anatoliy Sergienko, Volodya Lepeha                ----
6
----  Company: Unicore Systems http://unicore.co.ua              ----
7
----                                                             ----
8
----  Downloaded from: http://www.opencores.org                  ----
9
----                                                             ----
10
---------------------------------------------------------------------
11
----                                                             ----
12
---- Copyright (C) 2006-2010 Unicore Systems LTD                 ----
13
---- www.unicore.co.ua                                           ----
14
---- o.uzenkov@unicore.co.ua                                     ----
15
----                                                             ----
16
---- This source file may be used and distributed without        ----
17
---- restriction provided that this copyright statement is not   ----
18
---- removed from the file and that any derivative work contains ----
19
---- the original copyright notice and the associated disclaimer.----
20
----                                                             ----
21
---- THIS SOFTWARE IS PROVIDED "AS IS"                           ----
22
---- AND ANY EXPRESSED OR IMPLIED WARRANTIES,                    ----
23
---- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED                  ----
24
---- WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT              ----
25
---- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.        ----
26
---- IN NO EVENT SHALL THE UNICORE SYSTEMS OR ITS                ----
27
---- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,            ----
28
---- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL            ----
29
---- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT         ----
30
---- OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,               ----
31
---- DATA, OR PROFITS; OR BUSINESS INTERRUPTION)                 ----
32
---- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,              ----
33
---- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT              ----
34
---- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING                 ----
35
---- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,                 ----
36
---- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.          ----
37
----                                                             ----
38
---------------------------------------------------------------------
39
---------------------------------------------------------------------------------------------------
40
--
41
-- Description :  FIFO delay
42
---------------------------------------------------------------------------------------------------
43
 
44
 
45
library IEEE;
46
use IEEE.STD_LOGIC_1164.all;
47
use IEEE.STD_LOGIC_ARITH.all;
48
--pragma translate_off   
49
use IEEE.VITAL_Timing.all;
50
library UNISIM;
51
use UNISIM.VPKG.all;
52
--pragma translate_on  
53
 
54
entity DELAY is
55
        generic(nn:natural:=16;--data width
56
                l:natural:=8); --FIFO length
57
        port(
58
                CLK : in STD_LOGIC;
59
                RST : in STD_LOGIC;
60
                SE: in STD_LOGIC;                                                       --shift enable
61
                D : in STD_LOGIC_VECTOR(15 downto 0);    --Data in
62
                Q : out STD_LOGIC_VECTOR(15 downto 0)    --Data out
63
                );
64
end DELAY;
65
 
66
 
67
architecture SRL_E of DELAY is
68
 
69
        component srl16e
70
                port(
71
                        D : in std_ulogic;
72
                        CLK : in std_ulogic;
73
                        CE : in std_ulogic;
74
                        A0 : in std_ulogic;
75
                        A1 : in std_ulogic;
76
                        A2 : in std_ulogic;
77
                        A3 : in std_ulogic;
78
                        Q : out std_ulogic);
79
        end component;
80
        constant len:std_logic_vector:=CONV_STD_LOGIC_VECTOR(l-1,6);
81
        constant a0:std_ulogic:=len(0);
82
        constant a1:std_ulogic:=len(1);
83
        constant a2:std_ulogic:=len(2);
84
        constant a3:std_ulogic:=len(3);
85
        constant a4:std_ulogic:=len(4);
86
        constant a5:std_ulogic:=len(5);
87
        constant one:std_ulogic:='1';
88
        signal di1,di2,di3:std_logic_vector(nn-1 downto 0);
89
 
90
begin
91
 
92
        D16:if (a5 or a4)='0' generate
93
                DEL0:for i in 0 to 15 generate
94
                        U_SRL:srl16e port map( D=> D(i),CLK=>CLK,CE=>SE,
95
                                A0=>a0,A1=>a1,A2=>a2,A3=>a3,Q=>Q(i));
96
                end generate;
97
        end generate;
98
 
99
        D32:if a5='0' and a4='1' generate
100
                DEL1:for i in 0 to 15 generate
101
                        U_SRL0:srl16e port map( D=> D(i),CLK=>CLK,CE=>SE,
102
                             A0=>one,A1=>one,A2=>one,A3=>one,Q=>di1(i));
103
                        U_SRL1:srl16e port map( D=> di1(i),CLK=>CLK,CE=>SE,
104
                        A0=>a0,A1=>a1,A2=>a2,A3=>a3,Q=>Q(i));
105
                end generate;
106
        end generate;
107
        D48:if a5='1' and a4='0' generate
108
                DEL1:for i in 0 to 15 generate
109
                        U_SRL0:srl16e port map( D=> D(i),CLK=>CLK,CE=>SE,
110
                             A0=>one,A1=>one,A2=>one,A3=>one,Q=>di1(i));
111
                        U_SRL1:srl16e port map( D=> di1(i),CLK=>CLK,CE=>SE,
112
                             A0=>one,A1=>one,A2=>one,A3=>one,Q=>di2(i));
113
                        U_SRL2:srl16e port map( D=> di2(i),CLK=>CLK,CE=>SE,
114
                        A0=>a0,A1=>a1,A2=>a2,A3=>a3,Q=>Q(i));
115
                end generate;
116
        end generate;
117
        D64:if a5='1' and a4='1' generate
118
                DEL1:for i in 0 to 15 generate
119
                        U_SRL0:srl16e port map( D=> D(i),CLK=>CLK,CE=>SE,
120
                             A0=>one,A1=>one,A2=>one,A3=>one,Q=>di1(i));
121
                        U_SRL1:srl16e port map( D=> di1(i),CLK=>CLK,CE=>SE,
122
                             A0=>one,A1=>one,A2=>one,A3=>one,Q=>di2(i));
123
                        U_SRL2:srl16e port map( D=> di2(i),CLK=>CLK,CE=>SE,
124
                             A0=>one,A1=>one,A2=>one,A3=>one,Q=>di3(i));
125
                        U_SRL3:srl16e port map( D=> di3(i),CLK=>CLK,CE=>SE,
126
                        A0=>a0,A1=>a1,A2=>a2,A3=>a3,Q=>Q(i));
127
                end generate;
128
        end generate;
129
 
130
end SRL_E;

powered by: WebSVN 2.1.0

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