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

📄 ddr_controller2.vhd

📁 xilinx ddr3最新VHDL代码,通过调试
💻 VHD
📖 第 1 页 / 共 5 页
字号:
    IO_REG_I: io_registers2 
    generic map ( 
        C_DDR_AWIDTH            => C_DDR_AWIDTH,
        C_DDR_BANK_AWIDTH       => C_DDR_BANK_AWIDTH,  
        C_DDR_DWIDTH            => C_DDR_DWIDTH,       
        C_IPIF_DWIDTH           => C_IPIF_DWIDTH,
        C_FAMILY                => C_FAMILY,
        C_INCLUDE_ECC_SUPPORT   => C_INCLUDE_ECC_SUPPORT,
        NUM_ECC_BITS            => NUM_ECC_BITS,
        C_NUM_BANKS_MEM         => C_NUM_BANKS_MEM  
        )
    port map ( 
        Write_data          => write_data           ,
        Write_data_ecc      => write_data_ecc       ,
        Write_data_en       => write_data_en        , 
        Write_data_ecc_en   => write_data_ecc_en    , 
        Write_dqs_en        => write_dqs_en         ,
        Write_dqs_ecc_en    => write_dqs_ecc_en     ,
        Read_dqs_ce         => read_dqs_ce          ,
        Write_data_mask     => write_data_mask      , 
        Write_data_ecc_mask => write_data_ecc_mask  , 
        Read_data_en        => read_data_en         ,
        DQ_oe_cmb           => dq_oe_cmb            , 
        DQ_ECC_oe_cmb       => dq_ecc_oe_cmb        ,
        DQS_oe              => dqs_oe               , 
        DQS_ECC_oe          => dqs_ecc_oe           , 
        DQS_rst             => dqs_rst              ,
        DQS_ECC_rst         => dqs_ecc_rst          ,
        DQS_setrst          => dqs_setrst           ,
        DQS_ECC_setrst      => dqs_ecc_setrst       ,
        CSn                 => csn                  , 
        RASn                => rasn                 , 
        CASn                => casn                 , 
        WEn                 => wen                  , 
        BankAddr            => bankaddr             , 
        Addr                => addr                 ,
        DDR_ReadData        => ddr_readdata         ,    
        DDR_ReadData_ECC    => ddr_readdata_ecc     ,
        DDR_read_data_en    => ddr_read_data_en     ,
        DDR_DQ_i            => DDR_DQ_i             ,
        DDR_DQ_o            => DDR_DQ_o             , 
        DDR_DQ_t            => DDR_DQ_t             , 
        DDR_DM              => DDR_DM               , 
        DDR_Read_DQS        => ddr_read_dqs         ,
        DDR_Read_DQS_ECC    => ddr_read_dqs_ecc     ,
        DDR_DQS_I           => DDR_DQS_i            ,
        DDR_DQS_o           => DDR_DQS_o            ,
        DDR_DQS_t           => DDR_DQS_t            ,        
        DDR_DM_ECC          => DDR_DM_ECC           ,
        DDR_DQ_ECC_o        => DDR_DQ_ECC_o         ,
        DDR_DQ_ECC_i        => DDR_DQ_ECC_i         ,
        DDR_DQ_ECC_t        => DDR_DQ_ECC_t         ,
        DDR_DQS_ECC_i       => DDR_DQS_ECC_i        ,
        DDR_DQS_ECC_o       => DDR_DQS_ECC_o        ,
        DDR_DQS_ECC_t       => DDR_DQS_ECC_t        ,        
        DDR_CSn             => DDR_CSn              , 
        DDR_RASn            => DDR_RASn             , 
        DDR_CASn            => DDR_CASn             , 
        DDR_WEn             => DDR_WEn              , 
        DDR_BankAddr        => DDR_BankAddr         , 
        DDR_Addr            => DDR_Addr             , 
        Clk                 => clk_i                , 
        Clk_n               => clk_n_i              , 
        Clk90               => clk90_i              , 
        Clk90_n             => clk90_n_i            , 
        Clk_ddr_rddata      => clk_ddr_rddata_i     ,
        Clk_ddr_rddata_n    => clk_ddr_rddata_n_i   ,
        Rst                 => rst              
        );

    IPIC_IF_I : entity ddr_v1_10_a.ipic_if(imp)
    generic map(
        C_NUM_BANKS_MEM     => C_NUM_BANKS_MEM,     -- integer
        C_DDR_AWIDTH        => C_DDR_AWIDTH,        -- integer
        C_DDR_DWIDTH        => C_DDR_DWIDTH,        -- integer
        C_DDR_COL_AWIDTH    => C_DDR_COL_AWIDTH,    -- integer
        C_DDR_BANK_AWIDTH   => C_DDR_BANK_AWIDTH,   -- integer
        C_IPIF_AWIDTH       => C_IPIF_AWIDTH,       -- integer
        C_IPIF_DWIDTH       => C_IPIF_DWIDTH,       -- integer
        C_INCLUDE_BURSTS    => C_INCLUDE_BURSTS,    -- integer
        C_INCLUDE_ECC_SUPPORT => C_INCLUDE_ECC_SUPPORT,
        NUM_ECC_BITS        => NUM_ECC_BITS
        )
    port map (
        Bus2IP_CS           => Bus2IP_CS   ,        -- in
        Bus2IP_Addr         => Bus2IP_Addr ,        -- in  (0:C_IPIF_AWIDTH-1)
        Bus2IP_Burst        => Bus2IP_Burst,        -- in
        Bus2IP_IBurst       => Bus2IP_IBurst,       -- in
        Bus2IP_Data         => Bus2IP_Data ,        -- in  (0:C_IPIF_DWIDTH-1)
        ECC_chk_bits_wr_in  => ECC_chk_bits_wr,     -- in  (0:NUM_ECC_BITS*2-1)
        Bus2IP_BE           => Bus2IP_BE   ,        -- in  (0:C_IPIF_DWIDTH/8-1)
        Bus2IP_RdReq        => Bus2IP_RdReq,        -- in
        Bus2IP_WrReq        => Bus2IP_WrReq,        -- in
        IP2Bus_ErrAck       => IP2Bus_ErrAck,       -- out
        IP2Bus_Retry        => IP2Bus_Retry,        -- out
        IP2Bus_Busy         => IP2Bus_Busy,         -- out
        IP2Bus_WrAddrAck    => IP2Bus_WrAddrAck,    -- out
        IP2Bus_RdAddrAck    => IP2Bus_RdAddrAck,    -- out
        IP2Bus_WrAck        => IP2Bus_WrAck,        -- out
        IP2Bus_RdAck        => IP2Bus_RdAck,        -- out
        IP2Bus_ToutSup      => IP2Bus_ToutSup,      -- out
        IP2Bus_data         => IP2Bus_data,         -- out (0:C_IPIF_DWIDTH-1)
        ECC_chk_bits_rd_out => ECC_chk_bits_rd,     -- out (0:NUM_ECC_BITS*2-1)
        Wr_AddrAck          => wr_addrack,          -- in
        Rd_AddrAck          => rd_addrack,          -- in
        WrAck               => wrack,               -- in
        RdAck               => rdack,               -- in
        ToutSup             => toutsup,             -- in
        Read_data           => read_data,           -- in  (0:C_IPIF_DWIDTH-1)
        ECC_chk_bits_rd_in  => ecc_rddata,          -- in  (0:NUM_ECC_BITS*2-1)
        Retry               => retry,               -- in
        Init_done           => init_done,           -- in
        Comb_Bus2IP_CS      => comb_Bus2IP_CS,      -- out
        IPIC_wrdata         => ipic_wrdata,         -- out (0:C_IPIF_DWIDTH-1)
        ECC_chk_bits_wr_out => ecc_wrdata,          -- out (0:NUM_ECC_BITS*2-1)
        IPIC_be             => ipic_be,             -- out (0:C_IPIF_DWIDTH/8-1)
        Burst               => burst,               -- out
        Reset_pendrdreq     => reset_pendrdreq,     -- in
        Reset_pendwrreq     => reset_pendwrreq,     -- in
        Row_addr            => row_addr,            -- out (0:C_DDR_AWIDTH-1)
        Col_addr            => col_addr,            -- out (0:C_DDR_AWIDTH-1)
        Bank_addr           => bank_addr,           -- out (0:C_DDR_BANK_AWIDTH-1)
        Pend_rdreq          => pend_rdreq,          -- out
        Pend_wrreq          => pend_wrreq,          -- out
        Same_row            => same_row,            -- out
        Same_bank           => same_bank,           -- out
        Clk                 => clk_i,               -- in
        Rst                 => rst                  -- in
        );

    RDDATA_PATH_I: read_data_path2
    generic map ( 
        C_IPIF_DWIDTH       => C_IPIF_DWIDTH,
        C_DDR_DWIDTH        => C_DDR_DWIDTH,
        C_FAMILY            => C_FAMILY,
        C_INCLUDE_ECC_SUPPORT => C_INCLUDE_ECC_SUPPORT,
        NUM_ECC_BITS        => NUM_ECC_BITS
        )
    port map (
        ddr_test_cntl       => ddr_test_cntl,
        ddr_rd_bus          => ddr_rd_bus           ,
        DDR_ReadData        => ddr_readdata         ,
        DDR_ReadData_ECC    => ddr_readdata_ecc     ,
        DDR_ReadDQS         => ddr_read_dqs         ,
        DDR_ReadDQS_ECC     => ddr_read_dqs_ecc     ,
        DDR_read_data_en    => ddr_read_data_en     ,
        Read_data_en        => read_data_en         ,
        RdAck_rst           => rdack_rst            ,
        Read_data           => read_data            ,
        ECC_chk_bits_rd     => ecc_rddata           ,
        RdAck               => rdack                ,
        Clk                 => clk_i                ,
        Clk_ddr_rddata      => clk_ddr_rddata_i     ,
        Rst                 => Rst
        );

end generate W_ECC;


-------------------------------------------------------------------
-- No ECC logic to be instantiated/supported
-- when C_INCLUDE_ECC_SUPPORT = 0.
-------------------------------------------------------------------
WO_ECC: if C_INCLUDE_ECC_SUPPORT = 0 generate

constant ZERO_ECC_BITS      : std_logic_vector(0 to NUM_ECC_BITS*2-1)    := (others => '0');
constant ZERO_DQ_ECC_BITS   : std_logic_vector(0 to NUM_ECC_BITS-1)      := (others => '0');
constant ZERO_ECC_MASK      : std_logic_vector(0 to C_IPIF_DWIDTH/32-1)  := (others => '1');

begin
    
    COMMAND_STATEMACHINE_I : entity ddr_v1_10_a.command_statemachine(imp)
    generic map (
        C_DDR_AWIDTH            => C_DDR_AWIDTH,                    -- integer
        C_DDR_DWIDTH            => C_DDR_DWIDTH,                    -- integer
        C_DDR_COL_AWIDTH        => C_DDR_COL_AWIDTH,                -- integer
        C_DDR_BANK_AWIDTH       => C_DDR_BANK_AWIDTH,               -- integer
        C_REG_DIMM              => C_REG_DIMM,                      -- integer
        C_MRDCNT                => MRDCNT,         
        C_RFCCNT                => RFCCNT,         
        C_RCDCNT                => RCDCNT,         
        C_RPCNT                 => RPCNT,          
        C_GP_CNTR_WIDTH         => GPCNT_WIDTH,                     -- integer
        C_OPB_BUS               => C_OPB_BUS,                       -- integer
        C_PLB_BUS               => C_PLB_BUS,                       -- integer
        C_INCLUDE_BURSTS        => C_INCLUDE_BURSTS,                -- integer
        C_INCLUDE_ECC_SUPPORT   => C_INCLUDE_ECC_SUPPORT,           -- integer
        C_NUM_BANKS_MEM         => C_NUM_BANKS_MEM                  -- integer
        )
    port map (
        Comb_Bus2IP_CS  => comb_Bus2IP_CS,    -- in
        Bus2IP_CS       => Bus2IP_CS,         -- in
        Row_addr        => row_addr,          -- in  (0:C_DDR_AWIDTH-1)
        Col_addr        => col_addr,          -- in  (0:C_DDR_AWIDTH-1)
        Bank_addr       => bank_addr,         -- in  (0:C_DDR_BANK_AWIDTH-1)
        Bus2IP_RdReq    => Bus2IP_RdReq,      -- in
        Bus2IP_WrReq    => Bus2IP_WrReq,      -- in 
        Pend_rdreq      => pend_rdreq,        -- in
        Pend_wrreq      => pend_wrreq,        -- in
        Same_row        => same_row,          -- in
        Same_bank       => same_bank,         -- in
        Read_dqs_ce     => read_dqs_ce,       -- out
        Retry           => retry,             -- out
        Rd_AddrAck      => rd_addrack,        -- out
        Wr_AddrAck      => wr_addrack,        -- out
        Reset_pendrdreq => reset_pendrdreq,   -- out
        Reset_pendwrreq => reset_pendwrreq,   -- out
        ToutSup         => toutsup,           -- out
        Refresh         => refresh,           -- in
        Precharge       => precharge,         -- in
        Load_mr         => load_mr,           -- in
        Register_data   => register_data,     -- in  (0:C_DDR_AWIDTH-1)
        Register_sel    => register_sel,      -- in  (0:C_DDR_BANK_AWIDTH-1)
        Init_done       => init_done,         -- in
        Cmd_done        => cmd_done,          -- out
        Read_data_done  =>  read_data_done,   -- in 
        Read_data_done_rst  =>  read_data_done_rst, -- out    
        Pend_write      => pend_write,        -- out
        Pend_read       => pend_read,         -- out
        Read_pause      => read_pause,        -- out
        Trefi_end       => trefi_pwrup_end,   -- in
        Trc_end         => trc_end,           -- in
        Trrd_end        => trrd_end,          -- in
        Tras_end        => tras_end,          -- in
        Twr_end         => twr_end,           -- in
        GPcnt_end       => gpcnt_end,         -- in
        Tcmd_end        => tcmd_end,          -- in
        Twr_rst         => twr_rst,           -- out
        Tcmd_load       => tcmd_load,         -- out
        Tcmd_cnt_en     => tcmd_cnt_en,       -- out
        Trefi_load      => trefi_load,        -- out
        Trc_load        => trc_load,          -- out
        Trrd_load       => trrd_load,         -- out
        Tras_load       => tras_load,         -- out
        GPcnt_load      => gpcnt_load,        -- out
        GPcnt_en        => gpcnt_en,          -- out
        GPcnt_data      => gpcnt_data,        -- out (0:C_GP_CNTR_WIDTH-1)
        DDR_CSn         => csn,               -- out (0:C_NUM_BANKS_MEM-1)
        DDR_RASn        => rasn,              -- out
        DDR_CASn        => casn,              -- out
        DDR_WEn         => wen,               -- out
        DDR_Addr        => addr,              -- out (0:C_DDR_AWIDTH-1)
        DDR_BankAddr    => bankaddr,          -- out (0:C_DDR_BANK_AWIDTH-1)
        DQ_oe_cmb       => dq_oe_cmb,         -- out
        DQS_oe          => dqs_oe,            -- out
        DQS_rst         => dqs_rst,           -- out
        DQS_setrst      => dqs_setrst,        -- out
        DQ_ECC_oe_cmb   => open,              -- out
        DQS_ECC_oe      => open,              -- out
        DQS_ECC_rst     => open

⌨️ 快捷键说明

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