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

Subversion Repositories sdhc-sc-core

[/] [sdhc-sc-core/] [trunk/] [grpSd/] [unitSdClkDomain/] [src/] [SdClkDomain-Rtl-ea.vhdl] - Blame information for rev 185

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 177 rkastl
-- SDHC-SC-Core
2
-- Secure Digital High Capacity Self Configuring Core
3
-- 
4
-- (C) Copyright 2010, Rainer Kastl
5
-- All rights reserved.
6
-- 
7
-- 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
-- 
18
-- 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
-- 
29
-- File        : SdClkDomain-Rtl-ea.vhdl
30
-- Owner       : Rainer Kastl
31
-- Description : Top level of Sd clock domain
32
-- Links       : 
33
-- 
34
 
35
library ieee;
36
use ieee.std_logic_1164.all;
37
use ieee.numeric_std.all;
38
use work.Global.all;
39
use work.Wishbone.all;
40
use work.Sd.all;
41
use work.SdWb.all;
42
 
43
entity SdClkDomain is
44
        generic (
45
                gClkFrequency  : natural := 100E6;
46
                gHighSpeedMode : boolean := true
47
        );
48
        port (
49
                iSdClk       : in std_ulogic;
50
                iSdRstSync   : in std_ulogic;
51
                ioCmd        : inout std_logic;
52
                oSclk        : out std_ulogic;
53
                ioData       : inout std_logic_vector(3 downto 0);
54
                oLedBank     : out aLedBank;
55
                oSdCtrl      : out aSdControllerToSdWbSlave;
56
                iSdCtrl      : in aSdWbSlaveToSdController;
57
                iSdWriteFifo : in aiReadFifo;
58
                oSdWriteFifo : out aoReadFifo;
59
                iSdReadFifo  : in aiWriteFifo;
60
                oSdReadFifo  : out aoWriteFifo
61
        );
62
 
63
end entity SdClkDomain;
64
 
65
architecture Rtl of SdClkDomain is
66
 
67
        signal SdCmdToController       : aSdCmdToController;
68
        signal SdCmdFromController     : aSdCmdFromController;
69
        signal SdDataToController      : aSdDataToController;
70
        signal SdDataFromController    : aSdDataFromController;
71
        signal SdDataFromRam           : aSdDataFromRam;
72
        signal SdDataToRam             : aSdDataToRam;
73
        signal SdControllerToDataRam   : aSdControllerToRam;
74
        signal SdControllerFromDataRam : aSdControllerFromRam;
75
        signal SdStrobe                : std_ulogic;
76
        signal SdInStrobe              : std_ulogic;
77
        signal HighSpeed               : std_ulogic;
78
        signal DisableSdClk            : std_ulogic;
79
        signal iCmd                    : aiSdCmd;
80
        signal oCmd                    : aoSdCmd;
81
        signal iData                   : aiSdData;
82
        signal oData                   : aoSdData;
83
 
84
begin
85
 
86
        -- units
87
        SdController_inst: entity work.SdController(Rtl)
88
        generic map (
89
                gClkFrequency  => gClkFrequency,
90
                gHighSpeedMode => gHighSpeedMode
91
        )
92
        port map (
93
                iClk         => iSdClk,
94
                iRstSync     => iSdRstSync,
95
                oHighSpeed   => HighSpeed,
96
                iSdCmd       => SdCmdToController,
97
                oSdCmd       => SdCmdFromController,
98
                iSdData      => SdDataToController,
99
                oSdData          => SdDataFromController,
100
                oSdWbSlave   => oSdCtrl,
101
                iSdWbSlave   => iSdCtrl,
102
                oLedBank     => oLedBank
103
        );
104
 
105
        SdCmd_inst: entity work.SdCmd(Rtl)
106
        port map (
107
                iClk            => iSdClk,
108
                iRstSync        => iSdRstSync,
109
                iStrobe         => SdStrobe,
110
                iFromController => SdCmdFromController,
111
                oToController   => SdCmdToController,
112
                iCmd            => iCmd,
113
                oCmd            => oCmd
114
        );
115
 
116
        SdData_inst: entity work.SdData
117
        port map (
118
                iClk                  => iSdClk,
119
                iRstSync                          => iSdRstSync,
120
                iStrobe               => SdStrobe,
121
                iSdDataFromController => SdDataFromController,
122
                oSdDataToController   => SdDataToController,
123
                iData                 => iData,
124
                oData                 => oData,
125
                oReadWriteFifo        => oSdWriteFifo,
126
                iReadWriteFifo        => iSdWriteFifo,
127
                oWriteReadFifo        => oSdReadFifo,
128
                iWriteReadFifo        => iSdReadFifo,
129
                oDisableSdClk         => DisableSdClk
130
        );
131
 
132
 
133
        SdClockMaster_inst: entity work.SdClockMaster
134
        generic map (
135
                gClkFrequency => gClkFrequency
136
        )
137
        port map (
138
                iClk       => iSdClk,
139
                iRstSync   => iSdRstSync,
140
                iHighSpeed => HighSpeed,
141
                iDisable   => DisableSdClk,
142
                oSdStrobe  => SdStrobe,
143
                oSdInStrobe => SdInStrobe,
144
                oSdCardClk => oSClk
145
        );
146
 
147
        SdCardSynchronizer_inst : entity work.SdCardSynchronizer
148
        port map (
149
                iClk       => iSdClk,
150
                iRstSync   => iSdRstSync,
151
                iStrobe    => SdInStrobe,
152
                iCmd       => ioCmd,
153
                iData      => ioData,
154
                oCmdSync   => iCmd.Cmd,
155
                oDataSync  => iData.Data
156
        );
157
 
158
        -- generate tristate logic
159
        ioCmd <= oCmd.Cmd when oCmd.En = cActivated else 'Z';
160
        Gen_data : for i in 0 to 3 generate
161
                ioData(i) <= oData.Data(i) when oData.En(i) = cActivated else 'Z';
162
        end generate;
163
 
164
end architecture Rtl;
165
 

powered by: WebSVN 2.1.0

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