亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ddr_sdr.vhd

?? ddr verilog代碼,實現DDR內存控制
?? VHD
?? 第 1 頁 / 共 3 頁
字號:
----------------------------------------------------------------------------
--
-- PROJECT         DDR-SDRAM Controller Core
--
-- AUTHOR          Markus Lemke
--                 markus@opencores.org
--                 www.array-electronics.de
--
-- SIMULATOR       Model Technology ModelSim 5.4
-- COMPILER        Exemplar Leonardo Spectrum 2001.1d
--
-- DATE            $Date: 2003/03/19 06:45:13 $
--
-- LANGUAGE        VHDL 93
--
-- LIBRARY         ieee, work, unisim
--
-- ABSTRACT        DDR-SDRAM Controller
--                 Top design file,
--                 see readme.txt for more information
--
----------------------------------------------------------------------------
--
-- Copyright (C) 2002 Markus Lemke, www.array-electronics.de
--  
-- Everyone is permitted to copy and distribute  and  modify 
-- this  document  under  the  terms of the OpenIPCore Hardware
-- General  Public License "OHGPL" which can  be  read  in  the
-- file LICENSE.
--  
-- The  License  grants  you  the right to copy, modify  and
-- redistribute this file,  but only under  certain  conditions 
-- described in the License.  Among other things,  the  License
-- requires that  this  copyright  notice  and  the  associated
-- disclaimer  be preserved on  all copies.  Every copy of this
-- file must include a copy of the License, normally in a plain
-- ASCII text file named LICENSE.
--  
-- 
-- DISCLAIMER
-- 
-- THIS SOFTWARE  IS  PROVIDED  ``AS IS''  AND  WITHOUT ANY  
-- EXPRESS  OR  IMPLIED  WARRANTIES, INCLUDING, BUT NOT LIMITED 
-- TO, THE  IMPLIED  WARRANTIES OF  MERCHANTABILITY AND FITNESS
-- FOR A  PARTICULAR  PURPOSE.  IN NO EVENT SHALL THE AUTHOR OR 
-- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-- SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL  DAMAGES  (INCLUDING,
-- BUT NOT  LIMITED TO,  PROCUREMENT  OF  SUBSTITUTE  GOODS  OR 
-- SERVICES;  LOSS  OF  USE,  DATA,  OR  PROFITS;  OR  BUSINESS 
-- INTERRUPTION) HOWEVER CAUSED  AND ON ANY THEORY O LIABILITY,
-- WHETHER  IN CONTRACT, STRICT  LIABILITY, OR  TORT (INCLUDING 
-- NEGLIGENCE OR OTHERWISE)  ARISING IN ANY WAY OUT OF THE  USE 
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
-- DAMAGE.                              
----------------------------------------------------------------------------



------------------------------------------------------------------------------------------------------------
-- DDR-SDRAM Controller Core
------------------------------------------------------------------------------------------------------------
library ieee, work;
use ieee.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
use work.ddr_sdr_conf_pkg.all;

entity ddr_sdr is
   port (
      -- Clocks and Reset
      rst_n                 : in std_logic ;  -- external async reset, low active
      clk                   : in std_logic;   -- system clock (e.g. 100MHz), from fpga pad

      sys_rst_qn            : out std_logic;  -- sync reset low active, released after dcms locked
      sys_clk_out           : out std_logic;  -- system clock, dcm output
      clk_fb                : in std_logic;   -- feedback clock
      
      -- User Interface
      cmd                   : in std_logic_vector(U_CMD_WIDTH -1 downto 0);   -- command: read, write, nop
      cmd_vld               : in std_logic;                                   -- '1' when command valid
      addr                  : in std_logic_vector(U_ADDR_WIDTH-1 downto 0);   -- (ROW & BANK & COL)
      busy_q                : out std_logic;                   -- busy flag, when active commands are ignored
      
      -- Input Data
      data_in               : in std_logic_vector(U_DATA_WIDTH-1 downto 0);
      data_req_q            : out std_logic;  -- '1' two clocks before data is clocked in
      data_out_q            : out std_logic_vector(U_DATA_WIDTH -1 downto 0); -- read data
      data_vld_q            : out std_logic;  -- data_out_q is valid when '1'

      -- DDR SDRAM Signals
      sdr_clk               : out std_logic;    -- ddr_sdram_clock
      sdr_clk_n             : out std_logic;    -- /ddr_sdram_clock
      cke_q                 : out std_logic;    -- clock enable
      cs_qn                 : out std_logic;    -- /chip select
      ras_qn                : out std_logic;    -- /ras
      cas_qn                : out std_logic;    -- /cas
      we_qn                 : out std_logic;    -- /write enable
      dm_q                  : out std_logic_vector(DDR_DM_WIDTH-1 downto 0);     -- data mask bits, set to "00"
      dqs_q                 : out std_logic_vector(DDR_DQS_WIDTH-1 downto 0);    -- data strobe, only for write
      ba_q                  : out std_logic_vector(DDR_BANK_WIDTH-1 downto 0);   -- bank select
      a_q                   : out std_logic_vector(DDR_ADDR_WIDTH-1 downto 0);   -- address bus 
      data                  : inout std_logic_vector(DDR_DATA_WIDTH-1 downto 0); -- bidir data bus
                          
      -- Status
      dcm_error_q           : out std_logic -- indicates DCM Errors
   );

   attribute buffer_sig : string;
   attribute buffer_sig of clk    : signal is "IBUFG";
   attribute buffer_sig of clk_fb : signal is "IBUFG";
end;

-- pragma translate_off
library unisim;
-- pragma translate_on

architecture behave of ddr_sdr is

  -- User Interface
   component user_if is
      port (
         rst_int_n             : in std_logic; -- async reset, lo-active
         sys_clk               : in std_logic;
      
         -- user interface
         cmd                   : in std_logic_vector(U_CMD_WIDTH -1 downto 0); -- command: read, write, nop
         cmd_vld               : in std_logic;
         addr                  : in std_logic_vector(U_ADDR_WIDTH-1 downto 0); -- ROW, BANK, COLUMN
         busy_q                : out std_logic; -- busy flag, when active commands are ignored
      
         -- Datenaustausch mit Controller
         init_finished         : in boolean;
         new_cmd_q             : out boolean;
         new_cmd_ack           : in boolean;
         do_prech_q            : out boolean; -- precharge followed by activate
         do_wait_q             : out boolean; -- additional delay requested
      
         cmd_q                 : buffer std_logic_vector(U_CMD_WIDTH -1 downto 0);
         addr_q                : out std_logic_vector(U_ADDR_WIDTH -1 downto 0)
      );
   end component;
   
   -- Global Buffer BUFG
   component bufg
      port ( i : in std_ulogic;
             o : out std_ulogic );
   end component;
   -- pragma translate_off
   for all: bufg use entity unisim.bufg;
   -- pragma translate_on
   
   signal ld_init_cnt_q : boolean;
   signal init_cnt0_q   : boolean;
   signal init_cnt1_q   : boolean;
   signal locked        : std_logic_vector(1 downto 0);
   signal data_lo1_q    : std_logic_vector(DDR_DATA_WIDTH-1 downto 0);
   signal data_lo2_q    : std_logic_vector(DDR_DATA_WIDTH-1 downto 0);
   signal data_hi_q     : std_logic_vector(DDR_DATA_WIDTH-1 downto 0);
   signal sys_clk       : std_logic;
   signal rst_int_n     : std_logic;
   signal wr_ena_q      : std_logic;
   signal wr_ena2_q     : std_logic;
   signal wr_ena3_q     : std_logic;
   signal wr_ena3_qn    : std_logic;
   signal dcm_rst_q     : std_logic;
   signal srst_sys_q    : std_logic;

   type RD_ENA_DEL_TYPE is array(4 downto 0) of boolean;
   signal rd_ena_del_q  : RD_ENA_DEL_TYPE;
   
   type MUX_TYPE is (NORMAL, DELAYED);
   signal mux_q : MUX_TYPE;
   

begin 
   -----------------------------------------------------------------------
   -- Generate synchronous reset for DDR-SDRAM-Controller and DCM's
   --
   init: block
      signal rst_in : std_logic;
      signal srst_clk_q, srst_q : std_logic;
      signal sys_reset_q, sys_reset_1_q : std_logic;
      signal dcm1_locked_q, dcm2_locked_q : std_logic_vector(2 downto 0);
      signal cnt_q : unsigned(4 downto 0);
      type STATE_TYPE is (s0, s1, s2, s3, s4);
      signal state_q : STATE_TYPE;
   begin
      rst_in <= not rst_n;

      -- make synchronous reset 'srst_q' from asynchronous external 'rst_n'
      -- 'srst_q' is synchronous to clock 'clk'
      reset1: entity work.reset
         port map (
            clk    => clk,
            rst_in => rst_in,
            srst_q => srst_clk_q );

      -- make synchronous reset signal 'srst_sys_q' which is synchronous to
      -- clock 'sys_clk'
      reset2: entity work.reset
         port map (
            clk    => sys_clk,
            rst_in => sys_reset_1_q,
            srst_q => srst_q );

      srst_sys_q <= srst_q;

      process(clk)
      begin
         if rising_edge(clk) then
            case state_q is
               when s0 =>
                  state_q <= s1;
                  sys_reset_q <= '1'; -- after 1 ns;
                  dcm_rst_q <= '0';
                  cnt_q <= "11111";
                  
               when s1 =>
                  cnt_q <= cnt_q - 1;
                  if cnt_q = 0 then
                     dcm_rst_q <= '1';
                     state_q <= s2;
                  end if;

               when s2 =>
                  cnt_q <= cnt_q - 1;
                  if cnt_q = 0 then
                     dcm_rst_q <= '0';
                     state_q <= s3;
                  end if;

               when s3 =>
                  if dcm1_locked_q(2)='1' and dcm2_locked_q(2)='1' then
                     state_q <= s4;
                     dcm_error_q <= '0';
                  end if;
            
               when s4 =>
                  sys_reset_q <= '0' after 1 ns;   -- release system reset
                  if dcm1_locked_q(2)='0' or dcm2_locked_q(2)='0' then
                     dcm_error_q <= '1';
                  end if;
                  
            end case;
            sys_reset_1_q <= sys_reset_q;

            -- synchronize 'dcm1_locked'
            dcm1_locked_q <= dcm1_locked_q(1 downto 0) & locked(0);
            dcm2_locked_q <= dcm2_locked_q(1 downto 0) & locked(1);
            
            if srst_clk_q='1' then
               state_q <= s0;
            end if;
         end if;
      end process;
   end block;
   -------------------------------------------------------------------   

   -------------------------------------------------------------------------------------------------------
   -- DDR-SDRAM Control 
   -------------------------------------------------------------------------------------------------------
   ctrl: block 
      type STATE_TYPE is (IDLE, WAIT_200US, INIT1_PRECHARGE, INIT2_PRECHARGE,
                          INIT_REFRESH, INIT_EXT_MODE, INIT1_MODE, WAIT_DLL, WR_PRECH, RD_PRECH,
                          INIT2_MODE, ST_WAIT_CMD, ST_RFSH_0, ST_RFSH_1, ST_RFSH_2, ST_RFSH_3, ST_RFSH_4,
                          ST_READ1, ST_WRITE1, ST_WR_ACTIVATE, ST_WAIT_WR, ST_RD_ACTIVATE, ST_WAIT_RD);
                          
      signal state_q : STATE_TYPE;

      signal sdr_if_q  : PART_IF_TYPE;
      signal sdr_if2_q : PART_IF_TYPE;
      signal ld_ct_cnt_q : boolean;
      signal ct0_q : boolean;
      signal second_refresh_q : boolean;
      signal ct_cnt_q : integer range 0 to 9;
      signal ld_dll_cnt_q : boolean;
      signal dll_cnt0_q : boolean;
      type TRISTATE_TYPE is array (0 to DDR_DATA_WIDTH-1) of boolean;
      signal tristate_q : TRISTATE_TYPE;
      signal dqsz_q    : std_logic_vector(DDR_DQS_WIDTH-1 downto 0);
      signal dqs       : std_logic_vector(DDR_DQS_WIDTH-1 downto 0);
      signal a_int_q   : std_logic_vector(DDR_ADDR_WIDTH-1 downto 0);  
      signal a_int2_q  : std_logic_vector(DDR_ADDR_WIDTH-1 downto 0);  
      signal cs_int_qn : std_logic;
      signal ba_int_q  : std_logic_vector(DDR_BANK_WIDTH-1 downto 0);
      signal ba_int2_q : std_logic_vector(DDR_BANK_WIDTH-1 downto 0);
      
      signal bus_switch_q : std_logic_vector(2 downto 0); -- delay for switching the data bus
      signal z_q : std_logic; -- Tristate signal, derived from bus_switch_q

      signal clk_int, sys_clk270, fpga_clk, fpga_clk270 : std_logic;

      signal rst : std_logic;

      signal cke_int_q  : std_logic;
      signal cke_int2_q : std_logic;

      signal d2sdr    : std_logic_vector(DDR_DATA_WIDTH-1 downto 0);
      signal ddr_data : std_logic_vector(U_DATA_WIDTH-1 downto 0);
      signal rd_ena_q : boolean;
      
      signal rst_qn   : std_logic;

      attribute preserve_signal : boolean;
      attribute preserve_signal of dqsz_q : signal is true;
      attribute preserve_signal of tristate_q : signal is true;
      attribute preserve_signal of z_q : signal is true;
      attribute preserve_signal of rst_qn : signal is true;
      
      signal init_finished_q : boolean;
      signal new_cmd_ack_q   : boolean;
      signal do_prech_q      : boolean;
      signal cmd_ui_q        : std_logic_vector(U_CMD_WIDTH-1 downto 0);
      signal addr_ui_q       : std_logic_vector(U_ADDR_WIDTH-1 downto 0);
      signal new_cmd_q       : boolean;
      
      -- Data Output
      type SHIFT_TYPE is array (1 downto 0) of std_logic_vector(U_DATA_WIDTH-1 downto 0);
      signal shift_q : SHIFT_TYPE;
      
      signal row_adr_q    : std_logic_vector(DDR_ADDR_WIDTH-1 downto 0);
      signal col_adr_q    : std_logic_vector(DDR_ADDR_WIDTH-1 downto 0);
      signal do_wait_q    : boolean;
      signal del_cnt_q    : integer range 0 to 7;
      signal del0_q       : boolean;
      signal ld_del_cnt_q : boolean;
      signal w_srg_q      : std_logic_vector(5 downto 0);
      signal tras_cnt_q   : integer range 0 to TRAS-1;
      
      signal clk133   : std_logic;
      signal clk133_o : std_logic;
      

      -------------------------------------------------------------------------------------------------
      -- phase shift definition
      -- clkin_clkfb_skew = phase_shift/256 x period_clkin
      -------------------------------------------------------------------------------------------------
      function func_phase_shift return integer
      is

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃久久久久久| 99国产一区二区三精品乱码| 国产精品原创巨作av| caoporm超碰国产精品| 色哟哟国产精品| 91国产成人在线| 欧美成人精品二区三区99精品| 日韩欧美一区二区免费| 亚洲美腿欧美偷拍| 久久精品理论片| 色婷婷av久久久久久久| 精品国产凹凸成av人导航| 亚洲乱码日产精品bd| 亚洲国产另类av| 成人免费视频caoporn| 欧美一区二区福利在线| 亚洲精品欧美二区三区中文字幕| 亚洲精品一区在线观看| 国产午夜精品一区二区| 亚洲成a人片在线观看中文| 国产美女一区二区三区| 欧美性淫爽ww久久久久无| 精品成人私密视频| 亚洲国产精品t66y| 久久99精品网久久| 欧美日高清视频| 亚洲激情图片一区| 不卡一区二区在线| 中文字幕乱码久久午夜不卡| 日本一不卡视频| 色综合久久久久综合体桃花网| 精品国产免费久久| 石原莉奈一区二区三区在线观看| 成人av电影免费在线播放| www欧美成人18+| 久久av资源网| 91精品国产福利在线观看| 亚洲激情av在线| av成人免费在线观看| 日本一区二区三区免费乱视频| 精品一区二区在线观看| 精品欧美久久久| 久久97超碰国产精品超碰| 在线看国产一区二区| 亚洲女与黑人做爰| 在线观看91视频| 日韩免费一区二区| 亚洲最新视频在线播放| 成人免费看黄yyy456| 国产欧美日韩亚州综合 | thepron国产精品| 欧美sm美女调教| 亚洲免费视频成人| 在线精品国精品国产尤物884a| 欧美一区二区三区免费| 久久国产综合精品| 国产欧美日韩久久| 国产麻豆91精品| 欧美视频中文一区二区三区在线观看| 亚洲综合久久久| 欧美一级理论片| 一区二区三区在线视频免费观看| 91在线porny国产在线看| 伊人性伊人情综合网| 97se亚洲国产综合自在线| 欧美国产在线观看| 丁香一区二区三区| 亚洲欧美在线高清| 国产v日产∨综合v精品视频| 国产精品久久久久久妇女6080| www.亚洲人| 亚洲一二三四在线观看| 91麻豆精品国产无毒不卡在线观看| 日韩精品福利网| 久久亚洲精华国产精华液| 不卡av电影在线播放| 一区二区三区日韩| 精品乱人伦小说| 成人高清伦理免费影院在线观看| 国产色婷婷亚洲99精品小说| 寂寞少妇一区二区三区| 国产欧美一区二区三区在线老狼| www.久久精品| 日韩电影免费在线看| 欧美激情在线一区二区三区| 在线精品国精品国产尤物884a| 韩国毛片一区二区三区| 17c精品麻豆一区二区免费| 在线综合+亚洲+欧美中文字幕| 蜜桃视频一区二区| 亚洲激情自拍偷拍| 91精品视频网| 欧美婷婷六月丁香综合色| 国产美女主播视频一区| 午夜久久电影网| 亚洲国产成人在线| 欧美tickle裸体挠脚心vk| 色综合久久综合网| 国产激情一区二区三区桃花岛亚洲| 中文字幕色av一区二区三区| 久久久精品黄色| 日韩欧美黄色影院| 欧美日韩视频专区在线播放| 成人永久aaa| 国内一区二区在线| 五月天亚洲精品| 依依成人精品视频| 亚洲欧美一区二区视频| 日韩视频不卡中文| 91猫先生在线| 国产精品自在在线| 欧美aaa在线| 亚洲大片一区二区三区| 久久久精品免费免费| 欧美一区二区视频在线观看2022| 91成人免费在线| 99国产精品视频免费观看| 丁香桃色午夜亚洲一区二区三区| 日韩av电影免费观看高清完整版| 亚洲精品日日夜夜| 亚洲女爱视频在线| 欧美v国产在线一区二区三区| 2023国产精华国产精品| 国产日产亚洲精品系列| 欧美亚洲高清一区二区三区不卡| 97精品电影院| 国产黄色91视频| 国产精品1区2区3区在线观看| 国产美女久久久久| 色婷婷综合久久久中文一区二区 | 中文字幕精品综合| 欧美国产日韩在线观看| 国产欧美一区二区精品仙草咪| 亚洲精品一区二区在线观看| 精品国产乱码久久久久久免费| 日韩欧美国产电影| 国产精品的网站| **性色生活片久久毛片| 亚洲乱码中文字幕| 一区二区三区国产| 天堂午夜影视日韩欧美一区二区| 亚洲精品免费看| 亚洲电影视频在线| 日韩国产欧美在线播放| 午夜精品久久久久久久99水蜜桃| 亚洲成av人影院| 久久国产精品一区二区| 99re视频这里只有精品| 欧美午夜视频网站| 欧美一区二区三区四区久久| 日韩欧美成人午夜| 日韩一区二区三区av| 欧美经典一区二区三区| 国产精品久久久久精k8 | 一区二区在线观看视频| 图片区日韩欧美亚洲| 日韩成人精品在线观看| 99久久精品99国产精品| 欧美日韩国产123区| 日韩免费一区二区三区在线播放| 欧美经典一区二区| 亚洲国产成人精品视频| 久久99九九99精品| 97精品久久久久中文字幕| 日韩欧美国产综合| 亚洲视频一区在线| 日韩福利视频网| 成人免费福利片| 91精品黄色片免费大全| 久久精品免费在线观看| 欧美国产激情一区二区三区蜜月| 国产精品美女久久福利网站| 亚洲成人第一页| 精品一区二区三区在线播放 | 丝袜亚洲另类欧美综合| 日本不卡免费在线视频| 精品一区精品二区高清| 国产乱码精品一区二区三区av | 在线观看网站黄不卡| 欧美日本高清视频在线观看| 精品福利一二区| 日本美女一区二区三区| 97精品久久久午夜一区二区三区| 日韩免费高清av| 一区二区三区四区国产精品| 国产乱色国产精品免费视频| 欧美男生操女生| 亚洲乱码精品一二三四区日韩在线| 三级不卡在线观看| 91久久精品一区二区三区| 欧美一区二区在线视频| 一区二区三区产品免费精品久久75| 国产九色精品成人porny| 91精品麻豆日日躁夜夜躁| 一区二区三区成人| 欧美这里有精品| 亚洲精品免费播放| 成人黄色小视频| 国产日韩欧美高清在线| 国产在线精品一区在线观看麻豆|