⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generic_ddr_sdram.vhd

📁 nois 2cpu 硬件实现编程
💻 VHD
字号:
---------------------------------------------------------------------------------- This confidential and proprietary software may be used only as authorized by-- a licensing agreement from Altera Corporation.---- (C) COPYRIGHT 2004 ALTERA CORPORATION-- ALL RIGHTS RESERVED---- The entire notice above must be reproduced on all authorized copies and any-- such reproduction must be pursuant to a licensing agreement from Altera.---- Title        : DDR SDRAM Generic Model Wrapper-- Project      : DDR SDRAM Controller---- File         : generic_ddr_sdram.vhd---- Abstract:-- This is a wrapper that allows different memory simulation models to be instantiated-- dependent on the generics that are set. It should be edited to include your chosen-- DDR memory model.----------------------------------------------------------------------------------LIBRARY IEEE;    USE IEEE.STD_LOGIC_1164.ALL;    USE IEEE.STD_LOGIC_UNSIGNED.ALL;    USE IEEE.STD_LOGIC_ARITH.ALL;LIBRARY auk_ddr_user_lib;use auk_ddr_user_lib.all;ENTITY generic_ddr_sdram is    generic (        ROWBITS : INTEGER := 12;        DATABITS : INTEGER :=  8;        COLBITS : INTEGER := 10;        BANKBITS : INTEGER := 2;        DENALI : BOOLEAN := FALSE;        GENERIC_MODEL : BOOLEAN := TRUE;        DISABLE_TIMING_CHECK : BOOLEAN := TRUE;        memory_spec: string := "";        init_file:   string := ""    );    PORT (        dq    : inout std_logic_vector (DATABITS - 1 downto 0);        dqs   : inout std_logic;        addr  : in    std_logic_vector (ROWBITS - 1 downto 0);        ba    : in    std_logic_vector (BANKBITS-1 downto 0);        clk   : in    std_logic;        clk_n : in    std_logic;        cke   : in    std_logic;        cs_n  : in    std_logic;        ras_n : in    std_logic;        cas_n : in    std_logic;        we_n  : in    std_logic;        dm    : in    std_logic    );end generic_ddr_sdram;architecture rtl of generic_ddr_sdram iscomponent generic_ddr_sdram_denaligeneric (    BANKBITS    : integer := 2;    ROWBITS     : integer := 12;    DATABITS    : integer := 8;    memory_spec: string := "";    init_file:   string := "");port (    clk   : in    STD_LOGIC;    clk_n : in    STD_LOGIC;    cke   : in    STD_LOGIC;    cs_n  : in    STD_LOGIC;    ras_n : in    STD_LOGIC;    cas_n : in    STD_LOGIC;    we_n  : in    STD_LOGIC;    dm    : in    STD_LOGIC;    ba    : in    STD_LOGIC_VECTOR(BANKBITS-1 downto 0);    addr  : in    STD_LOGIC_VECTOR(ROWBITS-1 downto 0);    dq    : inout STD_LOGIC_VECTOR(DATABITS-1 downto 0);    dqs   : inout STD_LOGIC);end component;component generic_ddr_sdram_rtlgeneric (    BANKBITS    : integer := 2;    ROWBITS     : integer := 12;    COLBITS     : integer := 10;    DATABITS    : integer := 8;    DISABLE_TIMING_CHECK : boolean := TRUE;    memory_spec: string := "";    init_file:   string := "");port (    clk   : in    STD_LOGIC;    clk_n : in    STD_LOGIC;    cke   : in    STD_LOGIC;    cs_n  : in    STD_LOGIC;    ras_n : in    STD_LOGIC;    cas_n : in    STD_LOGIC;    we_n  : in    STD_LOGIC;    dm    : in    STD_LOGIC;    ba    : in    STD_LOGIC_VECTOR(BANKBITS-1 downto 0);    addr  : in    STD_LOGIC_VECTOR(ROWBITS-1 downto 0);    dq    : inout STD_LOGIC_VECTOR(DATABITS-1 downto 0);    dqs   : inout STD_LOGIC);end component;-- MT46V16M8 (4 Mb x 8 x 4 Banks) Micron 128 Mb SDRAM DDR (Double Data Rate)COMPONENT mt46v16m8    PORT (        Dq    : INOUT STD_LOGIC_VECTOR (DATABITS - 1 DOWNTO 0);        Dqs   : INOUT STD_LOGIC;        Addr  : IN    STD_LOGIC_VECTOR (ROWBITS - 1 DOWNTO 0);        Ba    : IN    STD_LOGIC_VECTOR (1 DOWNTO 0);        Clk   : IN    STD_LOGIC;        Clk_n : IN    STD_LOGIC;        Cke   : IN    STD_LOGIC;        Cs_n  : IN    STD_LOGIC;        Cas_n : IN    STD_LOGIC;        Ras_n : IN    STD_LOGIC;        We_n  : IN    STD_LOGIC;        Dm    : IN    STD_LOGIC    );END COMPONENT;-- MT46V32M8 (8 Mb x 8 x 4 Banks) Micron 256 Mb SDRAM DDR (Double Data Rate)COMPONENT mt46v32m8    PORT (        Dq    : INOUT STD_LOGIC_VECTOR (DATABITS - 1 DOWNTO 0);        Dqs   : INOUT STD_LOGIC;        Addr  : IN    STD_LOGIC_VECTOR (ROWBITS - 1 DOWNTO 0);        Ba    : IN    STD_LOGIC_VECTOR (1 DOWNTO 0);        Clk   : IN    STD_LOGIC;        Clk_n : IN    STD_LOGIC;        Cke   : IN    STD_LOGIC;        Cs_n  : IN    STD_LOGIC;        Cas_n : IN    STD_LOGIC;        Ras_n : IN    STD_LOGIC;        We_n  : IN    STD_LOGIC;        Dm    : IN    STD_LOGIC    );END COMPONENT;-- (16 Mb x 8 x 4 Banks) Micron 512 Mb SDRAM DDR (Double Data Rate)COMPONENT mt46v64m8    PORT (        Dq    : INOUT STD_LOGIC_VECTOR (DATABITS - 1 DOWNTO 0);        Dqs   : INOUT STD_LOGIC;        Addr  : IN    STD_LOGIC_VECTOR (ROWBITS - 1 DOWNTO 0);        Ba    : IN    STD_LOGIC_VECTOR (1 DOWNTO 0);        Clk   : IN    STD_LOGIC;        Clk_n : IN    STD_LOGIC;        Cke   : IN    STD_LOGIC;        Cs_n  : IN    STD_LOGIC;        Cas_n : IN    STD_LOGIC;        Ras_n : IN    STD_LOGIC;        We_n  : IN    STD_LOGIC;        Dm    : IN    STD_LOGIC    );END COMPONENT;begin    -- Instantiate example Micron memory models    -- Download these models from www.micron.com, and place in the quartus project 'testbench' subdirectory    gen_not_generic_model : if not GENERIC_MODEL generate        gen_8bit : if DATABITS = 8 generate            gen_8bit_12rowbits : if ROWBITS = 12 generate                gen_8bit_row12_col10 : if COLBITS = 10 generate                    mem : mt46v16m8  -- (4 Mb x 8 x 4 Banks) Micron 128 Mb SDRAM DDR (Double Data Rate)                        port map (                            clk    => clk,                            clk_n  => clk_n,                            cke    => cke,                            cs_n   => cs_n,                            ras_n  => ras_n,                            cas_n  => cas_n,                            we_n   => we_n,                            dm     => dm,                            ba     => ba,                            addr   => addr,                            dq     => dq,                            dqs    => dqs                        );                end generate;            end generate;            gen_8bit_13rowbits : if ROWBITS = 13 generate                gen_8bit_row13_col10 : if COLBITS = 10 generate                    mem : mt46v32m8  -- (8 Mb x 8 x 4 Banks) Micron 256 Mb SDRAM DDR (Double Data Rate)                        port map (                            clk    => clk,                            clk_n  => clk_n,                            cke    => cke,                            cs_n   => cs_n,                            ras_n  => ras_n,                            cas_n  => cas_n,                            we_n   => we_n,                            dm     => dm,                            ba     => ba,                            addr   => addr,                            dq     => dq,                            dqs    => dqs                        );                end generate;                gen_8bit_row13_col11 : if COLBITS = 11 generate                    mem : mt46v64m8 -- (16 Mb x 8 x 4 Banks) Micron 512 Mb SDRAM DDR (Double Data Rate)                        port map (                            clk    => clk,                            clk_n  => clk_n,                            cke    => cke,                            cs_n   => cs_n,                            ras_n  => ras_n,                            cas_n  => cas_n,                            we_n   => we_n,                            dm     => dm,                            ba     => ba,                            addr   => addr,                            dq     => dq,                            dqs    => dqs                        );                end generate;            end generate;        end generate;    end generate;    gen_generic_model : if GENERIC_MODEL generate        gen_denali_model : if DENALI generate            mem : generic_ddr_sdram_denali                generic map(                    BANKBITS    => BANKBITS,                    ROWBITS     => ROWBITS,                    DATABITS    => DATABITS,                    memory_spec => memory_spec,                    init_file   => init_file                )                port map (                    clk    => clk,                    clk_n  => clk_n,                    cke    => cke,                    cs_n   => cs_n,                    ras_n  => ras_n,                    cas_n  => cas_n,                    we_n   => we_n,                    dm     => dm,                    ba     => ba,                    addr   => addr,                    dq     => dq,                    dqs    => dqs                );        end generate;        gen_rtl_model : if not DENALI generate            mem : generic_ddr_sdram_rtl                generic map(                    BANKBITS    => BANKBITS,                    ROWBITS     => ROWBITS,                    COLBITS     => COLBITS,                    DATABITS    => DATABITS,                    DISABLE_TIMING_CHECK => DISABLE_TIMING_CHECK,                    memory_spec => memory_spec,                    init_file   => init_file                )                port map (                    clk    => clk,                    clk_n  => clk_n,                    cke    => cke,                    cs_n   => cs_n,                    ras_n  => ras_n,                    cas_n  => cas_n,                    we_n   => we_n,                    dm     => dm,                    ba     => ba,                    addr   => addr,                    dq     => dq,                    dqs    => dqs                );        end generate;    end generate;END rtl;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -