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

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [lib/] [gaisler/] [ddr/] [ddrspa.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
------------------------------------------------------------------------------
2
--  This file is a part of the GRLIB VHDL IP LIBRARY
3
--  Copyright (C) 2003, Gaisler Research
4
--
5
--  This program is free software; you can redistribute it and/or modify
6
--  it under the terms of the GNU General Public License as published by
7
--  the Free Software Foundation; either version 2 of the License, or
8
--  (at your option) any later version.
9
--
10
--  This program is distributed in the hope that it will be useful,
11
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
--  GNU General Public License for more details.
14
--
15
--  You should have received a copy of the GNU General Public License
16
--  along with this program; if not, write to the Free Software
17
--  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
18
-----------------------------------------------------------------------------
19
-- Entity:      ddrspm
20
-- File:        ddrspm.vhd
21
-- Author:      Jiri Gaisler - Gaisler Research
22
-- Description: 16-, 32- or 64-bit DDR266 memory controller module.
23
------------------------------------------------------------------------------
24
 
25
library ieee;
26
use ieee.std_logic_1164.all;
27
library grlib;
28
use grlib.amba.all;
29
use grlib.stdlib.all;
30
library gaisler;
31
use grlib.devices.all;
32
use gaisler.memctrl.all;
33
library techmap;
34
use techmap.gencomp.all;
35
 
36
entity ddrspa is
37
  generic (
38
    fabtech : integer := virtex2;
39
    memtech : integer := 0;
40
    rskew   : integer := 0;
41
    hindex  : integer := 0;
42
    haddr   : integer := 0;
43
    hmask   : integer := 16#f00#;
44
    ioaddr  : integer := 16#000#;
45
    iomask  : integer := 16#fff#;
46
    MHz     : integer := 100;
47
    clkmul  : integer := 2;
48
    clkdiv  : integer := 2;
49
    col     : integer := 9;
50
    Mbyte   : integer := 16;
51
    rstdel  : integer := 200;
52
    pwron   : integer := 0;
53
    oepol   : integer := 0;
54
    ddrbits : integer := 16;
55
    ahbfreq : integer := 50;
56
    mobile  : integer := 0;
57
    confapi : integer := 0;
58
    conf0   : integer := 0;
59
    conf1   : integer := 0;
60
    regoutput : integer := 0
61
  );
62
  port (
63
    rst_ddr : in  std_ulogic;
64
    rst_ahb : in  std_ulogic;
65
    clk_ddr : in  std_ulogic;
66
    clk_ahb : in  std_ulogic;
67
    lock    : out std_ulogic;                   -- DCM locked
68
    clkddro : out std_ulogic;                   -- DCM locked
69
    clkddri : in  std_ulogic;
70
    ahbsi   : in  ahb_slv_in_type;
71
    ahbso   : out ahb_slv_out_type;
72
    ddr_clk     : out std_logic_vector(2 downto 0);
73
    ddr_clkb    : out std_logic_vector(2 downto 0);
74
    ddr_clk_fb_out  : out std_logic;
75
    ddr_clk_fb  : in std_logic;
76
    ddr_cke     : out std_logic_vector(1 downto 0);
77
    ddr_csb     : out std_logic_vector(1 downto 0);
78
    ddr_web     : out std_ulogic;                       -- ddr write enable
79
    ddr_rasb    : out std_ulogic;                       -- ddr ras
80
    ddr_casb    : out std_ulogic;                       -- ddr cas
81
    ddr_dm      : out std_logic_vector (ddrbits/8-1 downto 0);    -- ddr dm
82
    ddr_dqs     : inout std_logic_vector (ddrbits/8-1 downto 0);    -- ddr dqs
83
    ddr_ad      : out std_logic_vector (13 downto 0);   -- ddr address
84
    ddr_ba      : out std_logic_vector (1 downto 0);    -- ddr bank address
85
    ddr_dq      : inout  std_logic_vector (ddrbits-1 downto 0) -- ddr data
86
 
87
  );
88
end;
89
 
90
architecture rtl of ddrspa is
91
 
92
constant DDR_FREQ : integer := (clkmul * MHz) / clkdiv;
93
constant FAST_AHB : integer := AHBFREQ / DDR_FREQ;
94
signal sdi     : sdctrl_in_type;
95
signal sdo     : sdctrl_out_type;
96
signal clkread  : std_ulogic;
97
 
98
begin
99
 
100
  ddr_phy0 : ddr_phy generic map (tech => fabtech, MHz => MHz,
101
        dbits => ddrbits, rstdelay => rstdel, clk_mul => clkmul,
102
        clk_div => clkdiv, rskew => rskew, mobile => mobile)
103
  port map (
104
        rst_ddr, clk_ddr, clkddro, clkread, lock,
105
        ddr_clk, ddr_clkb, ddr_clk_fb_out, ddr_clk_fb,
106
        ddr_cke, ddr_csb, ddr_web, ddr_rasb, ddr_casb,
107
        ddr_dm, ddr_dqs, ddr_ad, ddr_ba, ddr_dq, sdi, sdo);
108
 
109
  ddr16 : if ddrbits = 16 generate
110
    ddrc : ddrsp16a generic map (memtech => memtech, hindex => hindex,
111
        haddr => haddr, hmask => hmask, ioaddr => ioaddr, iomask => iomask,
112
        pwron => pwron, MHz => DDR_FREQ, col => col, Mbyte => Mbyte,
113
        fast => FAST_AHB, mobile => mobile, confapi => confapi, conf0 => conf0,
114
  conf1 => conf1, regoutput => regoutput)
115
        port map (rst_ahb, clkddri, clk_ahb, clkread, ahbsi, ahbso, sdi, sdo);
116
  end generate;
117
 
118
  ddr32 : if ddrbits = 32 generate
119
    ddrc : ddrsp32a generic map (memtech => memtech, hindex => hindex,
120
        haddr => haddr, hmask => hmask, ioaddr => ioaddr, iomask => iomask,
121
        pwron => pwron, MHz => DDR_FREQ, col => col, Mbyte => Mbyte,
122
        fast => FAST_AHB/2, mobile => mobile, confapi => confapi, conf0 => conf0,
123
  conf1 => conf1, regoutput => regoutput)
124
        port map (rst_ahb, clkddri, clk_ahb, ahbsi, ahbso, sdi, sdo);
125
  end generate;
126
 
127
  ddr64 : if ddrbits = 64 generate
128
    ddrc : ddrsp64a generic map (memtech => memtech, hindex => hindex,
129
        haddr => haddr, hmask => hmask, ioaddr => ioaddr, iomask => iomask,
130
        pwron => pwron, MHz => DDR_FREQ, col => col, Mbyte => Mbyte,
131
        fast => FAST_AHB/4, mobile => mobile, confapi => confapi, conf0 => conf0,
132
  conf1 => conf1, regoutput => regoutput)
133
        port map (rst_ahb, clkddri, clk_ahb, ahbsi, ahbso, sdi, sdo);
134
  end generate;
135
 
136
end;
137
 

powered by: WebSVN 2.1.0

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