OpenCores
URL https://opencores.org/ocsvn/sdhc-sc-core/sdhc-sc-core/trunk

Subversion Repositories sdhc-sc-core

[/] [sdhc-sc-core/] [trunk/] [grpStrobesClocks/] [unitEdgeDetector/] [src/] [EdgeDetector-Rtl-a.vhdl] - Blame information for rev 185

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 164 rkastl
-- SDHC-SC-Core
2
-- Secure Digital High Capacity Self Configuring Core
3
-- 
4 170 rkastl
-- (C) Copyright 2010, Rainer Kastl
5
-- All rights reserved.
6 164 rkastl
-- 
7 170 rkastl
-- Redistribution and use in source and binary forms, with or without
8
-- modification, are permitted provided that the following conditions are met:
9
--     * Redistributions of source code must retain the above copyright
10
--       notice, this list of conditions and the following disclaimer.
11
--     * Redistributions in binary form must reproduce the above copyright
12
--       notice, this list of conditions and the following disclaimer in the
13
--       documentation and/or other materials provided with the distribution.
14
--     * Neither the name of the <organization> nor the
15
--       names of its contributors may be used to endorse or promote products
16
--       derived from this software without specific prior written permission.
17 164 rkastl
-- 
18 170 rkastl
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS  "AS IS" AND
19
-- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
-- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
-- DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
22
-- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
-- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
-- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
-- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 164 rkastl
-- 
29
-- File        : EdgeDetector-Rtl-a.vhdl
30
-- Owner       : Rainer Kastl
31
-- Description : 
32
-- Links       : See EDS at FH Hagenberg
33
-- 
34 118 rkastl
 
35
library ieee;
36
use ieee.std_logic_1164.all;
37
use ieee.numeric_std.all;
38
 
39
use work.global.all;
40
 
41
 
42
architecture Rtl of EdgeDetector is
43 122 rkastl
        signal nQ, detection, Q : std_ulogic;
44 118 rkastl
begin  -- Rtl
45
 
46 122 rkastl
        FF1 : process (iClk, inResetAsync) is
47
        begin  -- process FF1
48
                if inResetAsync = cnActivated then
49
                        nQ <= cnInactivated;
50
                elsif iClk'event and iClk = cActivated then  -- rising clock edge
51
                        if (iRstSync = cActivated) then
52
                                nQ <= cnInactivated;
53
                        else
54
                                nQ <= not iLine;
55
                        end if;
56
                end if;
57
        end process FF1;
58 118 rkastl
 
59 122 rkastl
        Gen : if gOutputRegistered = true generate  -- only generate 2nd FF, if
60
                                                                                                -- condition is true
61
                FF2 : process (iClk, iClearEdgeDetected, inResetAsync) is
62
                begin  -- process FF2
63
                        if inResetAsync = cnActivated then
64
                                Q <= cInactivated;
65
                        elsif iClk'event and iClk = cActivated then  -- rising clock edge
66
                                if (iRstSync = cActivated) then
67
                                        Q <= cInactivated;
68
                                else
69
                                        if iClearEdgeDetected = cActivated then
70
                                                Q <= cInactivated;
71
                                        elsif detection = cActivated then
72
                                                Q <= cActivated;
73
                                        end if;
74
                                end if;
75
                        end if;
76
                end process FF2;
77 118 rkastl
 
78 122 rkastl
                oEdgeDetected <= Q;
79
        end generate;
80 118 rkastl
 
81 122 rkastl
        Gen2 : if gOutputRegistered = false generate
82
          -- else detection is Output
83
                oEdgeDetected <= detection;
84
        end generate;
85 118 rkastl
 
86 122 rkastl
        Detect : process (nQ, iLine) is
87
        begin
88
                case gEdgeDetection is
89
                        when cDetectRisingEdge  => detection <= (iLine and nQ);
90
                        when cDetectFallingEdge => detection <= (iLine nor nQ);
91
                        when cDetectAnyEdge     => detection <= (iLine and nQ) or (iLine nor nQ);
92
                        when others             => null;
93
                end case;
94
        end process Detect;
95 118 rkastl
end Rtl;

powered by: WebSVN 2.1.0

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