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

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

?? tb.vhd

?? ddr verilog代碼,實現DDR內存控制
?? VHD
字號:
----------------------------------------------------------------------------
--
-- 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/01/08 12:56:12 $
--
-- LANGUAGE        VHDL 93
--
-- LIBRARY         ieee, work
--
-- ABSTRACT        DDR-SDRAM Controller Testbench
--                 This simple testbench shows, how to write and read a data block
--                 to the DDR SDRAM device using the controller core
--                 Automatic error check is included
--                 MAX_WORDS controls the number of write and read operations
--                 (each of 4 bytes), resulting in e.g. 8 kbytes, if MAX_WORDS=2048
--
----------------------------------------------------------------------------
--
-- 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.                              
----------------------------------------------------------------------------


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 tb is
   procedure gen_clock(signal ckr : out std_logic; constant period : positive)
   is
   begin
      loop
         ckr <= '1', '0' after period/2 * ps;
         wait for period * ps;
      end loop;
   end;
   
end;

architecture struct of tb is

   -- Number of user data words for simulation
   constant MAX_WORDS    : integer := 2048;

   signal rst_n          : std_logic;  
   signal clk            : std_logic;  
   signal clk_fb         : std_logic;
   signal sys_rst_qn     : std_logic;
   signal sys_clk_out    : std_logic;
   
   signal cmd            : std_logic_vector(U_CMD_WIDTH-1 downto 0);
   signal cmd_vld        : std_logic;
   signal addr           : std_logic_vector(U_ADDR_WIDTH-1 downto 0);
   signal busy_q         : std_logic;
   signal data_in        : std_logic_vector(U_DATA_WIDTH-1 downto 0);
   signal data_req_q     : std_logic;
   signal data_out_q     : std_logic_vector(U_DATA_WIDTH-1 downto 0);
   signal data_vld_q     : std_logic;
   signal dcm_error_q    : std_logic;

   signal sdr_clk        :  std_logic;  
   signal sdr_clk_n      :  std_logic;  
   signal cke_q          :  std_logic;  
   signal cs_qn          :  std_logic;  
   signal ras_qn         :  std_logic;  
   signal cas_qn         :  std_logic;  
   signal we_qn          :  std_logic;  
   signal dm_q           :  std_logic_vector(DDR_DM_WIDTH-1 downto 0);  
   signal dqs_q          :  std_logic_vector(DDR_DQS_WIDTH-1 downto 0);  
   signal ba_q           :  std_logic_vector(DDR_BANK_WIDTH-1 downto 0);  
   signal a_q            :  std_logic_vector(DDR_ADDR_WIDTH -1 downto 0);  
   signal data           :  std_logic_vector(DDR_DATA_WIDTH -1 downto 0);  
   signal user_addr      : std_logic_vector(U_ADDR_WIDTH-1 downto 0);
       
   signal refresh        : boolean:= true;
   
    
begin 
   gen_clock(clk, DDR_CLK_PERIOD);

   -- Board Conection DDR SDRAM Clock -> DCM feedback
   clk_fb   <= sdr_clk after 1 ns;
   
   -- DDR SDRAM Controller Core
   i_ddr_sdr : entity work.ddr_sdr
      port map (
         -- Clocks and Reset
         rst_n                 => rst_n,
         clk                   => clk,

         sys_rst_qn            => sys_rst_qn,
         sys_clk_out           => sys_clk_out,
         clk_fb                => clk_fb,
      
         -- User Interface
         cmd                   => cmd,
         cmd_vld               => cmd_vld,
         addr                  => addr,
         busy_q                => busy_q,
      
         -- Input Data
         data_in               => data_in,
         data_req_q            => data_req_q,
         data_out_q            => data_out_q,
         data_vld_q            => data_vld_q,

         -- DDR SDRAM Signals
         sdr_clk               => sdr_clk,
         sdr_clk_n             => sdr_clk_n,
         cke_q                 => cke_q,
         cs_qn                 => cs_qn,
         ras_qn                => ras_qn,
         cas_qn                => cas_qn,
         we_qn                 => we_qn,
         dm_q                  => dm_q,
         dqs_q                 => dqs_q,
         ba_q                  => ba_q,
         a_q                   => a_q,
         data                  => data,
                             
         -- Status
         dcm_error_q           => dcm_error_q
     );
   
   -- MICRON DDR SDRAM Simulation Model
   i_mt46v16m16 : entity work.mt46v16m16 
      port map (
         dq    => data,
         dqs   => dqs_q,
         addr  => a_q,
         ba    => ba_q,
         clk   => sdr_clk,
         clk_n => sdr_clk_n,
         cke   => cke_q,
         cs_n  => cs_qn,
         ras_n => ras_qn,
         cas_n => cas_qn,
         we_n  => we_qn,
         dm    => dm_q
         );
         
   -- RESET
   rst_n <= '0', '1' after 100 ns;

   refresh <= true when falling_edge(ras_qn) and falling_edge(cas_qn) and we_qn='1' else false;
   
   process
      variable num_words : integer := 0;
   begin
      
      -- Write MAX_WORDS to DDR SDRAM Controller
      num_words := 0;
      cmd       <= WR_CMD;
      cmd_vld   <= '1';
      user_addr <= (others=>'0');
      
      while num_words < MAX_WORDS loop
         wait until rising_edge(sys_clk_out);
         
         if busy_q='0' then 
            user_addr <= user_addr +2;
            num_words := num_words+1;
         end if;
      end loop;
      cmd_vld <= '0';
      

      -- Wait some clocks before reading back from DDR SDRAM
      for i in 0 to 20 loop      
         wait until rising_edge(sys_clk_out);
      end loop;
      
      
      -- Read MAX_WORDS from DDR SDRAM Controller
      num_words := 0;
      cmd       <= RD_CMD;
      cmd_vld   <= '1';
      user_addr <= (others=>'0');
      
      while num_words < MAX_WORDS loop
         wait until rising_edge(sys_clk_out);
         
         if busy_q='0' then 
            user_addr <= user_addr +2;
            num_words := num_words+1;
         end if;
      end loop;
      cmd_vld <= '0';
      
      
      wait for 2000 ns;
      
      report "Simulation finished" severity failure;
   end process;
   
   -- User Adress Mapping
   addr <= user_addr(23 downto 9) & "0000" & user_addr(8 downto 0);
   
   
   -- Data Generator ------------------------------------------
   -- generates 32 bit Data continouosly,
   -- consisting of 16 bits LO- and Hi- words,
   -- using the following scheme: x"00010000", x"00030002", ...
   ------------------------------------------------------------
   process(sys_clk_out)
      variable wr_data : std_logic_vector(U_DATA_WIDTH/2-1 downto 0) := (others=>'0');
   begin
      if rising_edge(sys_clk_out) then
         data_in <= (others=>'0');
         
         if data_req_q = '1' then
            data_in(U_DATA_WIDTH/2-1 downto 0)            <= wr_data;
            data_in(U_DATA_WIDTH-1 downto U_DATA_WIDTH/2) <= wr_data +1;

            wr_data := wr_data +2;
            
         end if;
      
      end if;
   end process;

   -- Data Compare --------------------------------------------
   -- read data is compared to written data
   ------------------------------------------------------------
   process(sys_clk_out)
      variable rd_data : std_logic_vector(U_DATA_WIDTH/2-1 downto 0) := (others=>'0');
   begin
   
      if falling_edge(sys_clk_out) then 
         if data_vld_q = '1' then

            assert rd_data = data_out_q(U_DATA_WIDTH/2-1 downto 0)
               report "Fehler beim Lesen der Daten, Lo-Word"
                  severity error;

            assert rd_data+1 = data_out_q(U_DATA_WIDTH-1 downto U_DATA_WIDTH/2)
               report "Fehler beim Lesen der Daten, Hi-Word"
                  severity error;
            rd_data := rd_data +2;
         end if;
      end if;
   end process;

end architecture struct;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区公司| 国产精品成人网| 91原创在线视频| 美国av一区二区| 亚洲最大色网站| 国产欧美视频一区二区| 717成人午夜免费福利电影| 成人黄色电影在线| 美洲天堂一区二卡三卡四卡视频| 亚洲色图制服丝袜| 国产日韩影视精品| 精品sm捆绑视频| 欧美乱妇23p| 欧美性一级生活| 99视频在线精品| 国产成人综合在线播放| 蜜臀av一区二区在线免费观看 | 亚洲欧美一区二区三区孕妇| 欧美精品一区二区三区在线播放| 欧美中文字幕一区二区三区亚洲| 波多野结衣一区二区三区 | 九九在线精品视频| 日韩精品色哟哟| 午夜日韩在线电影| 亚洲午夜国产一区99re久久| 国产精品久久久久久久久图文区 | 中文字幕亚洲成人| 中文字幕欧美日本乱码一线二线| 欧美va在线播放| 日韩视频123| 日韩一区二区三| 欧美精品精品一区| 欧美日韩国产一区| 欧美日韩一区二区在线观看| 色综合网色综合| 色94色欧美sute亚洲线路一ni | 国产日韩av一区| 久久精品亚洲乱码伦伦中文| 久久九九全国免费| 国产拍揄自揄精品视频麻豆| 国产亚洲精品免费| 国产精品网站在线| 亚洲欧美日韩电影| 一区2区3区在线看| 亚洲国产成人av网| 日韩精品成人一区二区在线| 蜜臀国产一区二区三区在线播放 | 亚洲国产wwwccc36天堂| 亚洲成人动漫在线观看| 日韩高清欧美激情| 欧美视频在线一区二区三区| 欧美在线999| 欧美精品乱码久久久久久| 欧美一区欧美二区| 欧美精品一区二区三区一线天视频| 精品成人一区二区三区四区| 日本一区二区高清| 亚洲精品久久嫩草网站秘色| 亚洲一区在线观看免费| 国产亚洲va综合人人澡精品 | 国产欧美日韩卡一| 久久久久久久综合| 国产精品白丝在线| 日韩理论电影院| 午夜成人免费视频| 国产在线国偷精品产拍免费yy| 粗大黑人巨茎大战欧美成人| 色美美综合视频| 制服丝袜激情欧洲亚洲| 久久一夜天堂av一区二区三区 | 国产精品第13页| 亚洲国产婷婷综合在线精品| 美女免费视频一区| 国产91清纯白嫩初高中在线观看 | 亚洲激情校园春色| 日本视频在线一区| 成人午夜电影久久影院| 欧美中文字幕久久| 亚洲精品一区二区三区香蕉 | 亚洲精品大片www| 蜜臀av性久久久久蜜臀av麻豆| 国产成人精品影视| 在线观看区一区二| 久久久久久久综合色一本| 亚洲欧美日本韩国| 狠狠色丁香久久婷婷综| 在线亚洲精品福利网址导航| 久久久久久久网| 午夜精品爽啪视频| av在线不卡电影| 日韩精品一区二区三区视频 | 在线观看精品一区| 久久久精品日韩欧美| 亚洲一二三区视频在线观看| 国产呦萝稀缺另类资源| 欧美亚洲国产一区二区三区| 中文字幕免费不卡在线| 日本成人超碰在线观看| 欧美最新大片在线看| 国产日产欧美一区| 日本午夜精品视频在线观看| 91蜜桃免费观看视频| 2021久久国产精品不只是精品| 亚洲午夜久久久久中文字幕久| 成人免费看黄yyy456| 精品国产乱码91久久久久久网站| 亚洲一区二区三区四区在线免费观看| 国产成人免费视频网站高清观看视频| 7777精品伊人久久久大香线蕉经典版下载 | 久久久精品tv| 美国一区二区三区在线播放| 欧美日韩国产天堂| 亚洲免费av高清| av电影在线不卡| 国产亚洲精品中文字幕| 精品一区二区三区免费毛片爱| 欧美狂野另类xxxxoooo| 亚洲黄色性网站| 99国产精品久久久久| 亚洲国产精品二十页| 国产主播一区二区| 精品播放一区二区| 九色综合狠狠综合久久| 日韩免费一区二区| 毛片av一区二区| 日韩一区和二区| 日本大胆欧美人术艺术动态 | 精品粉嫩aⅴ一区二区三区四区| 天堂资源在线中文精品| 欧美三区在线视频| 亚洲综合在线电影| 在线观看亚洲成人| 亚洲国产裸拍裸体视频在线观看乱了 | 一级精品视频在线观看宜春院| 99热在这里有精品免费| 亚洲精品写真福利| 在线观看不卡视频| 午夜视频久久久久久| 69av一区二区三区| 日韩成人一级片| 91精品欧美久久久久久动漫| 日韩高清在线一区| 日韩欧美在线影院| 国产一区二区0| 中文字幕精品综合| 色香色香欲天天天影视综合网| 亚洲免费在线电影| 欧美二区在线观看| 久久99最新地址| 国产精品美日韩| 欧美午夜一区二区| 日本不卡一区二区三区 | 精品国产1区二区| 丁香六月综合激情| 亚洲欧美激情插| 6080午夜不卡| 激情六月婷婷综合| 中文字幕乱码一区二区免费| 91视频观看视频| 青青青伊人色综合久久| 久久精品男人天堂av| 99精品久久只有精品| 亚洲一区二区三区免费视频| 日韩午夜在线播放| 波多野洁衣一区| 亚洲成av人片在线观看无码| 精品国产乱码久久久久久夜甘婷婷| 国产成人自拍网| 一区二区国产盗摄色噜噜| 日韩精品一区二区三区中文精品| 成人免费视频一区| 亚洲风情在线资源站| 久久久久久久综合狠狠综合| 欧洲亚洲精品在线| 国产一区二区三区观看| 亚洲综合一区二区| 国产亚洲女人久久久久毛片| 欧美色图一区二区三区| 国产综合久久久久影院| 亚洲国产精品一区二区www| 久久久精品tv| 欧美日韩色一区| 粉嫩av一区二区三区| 天天综合色天天| 亚洲欧美日韩国产一区二区三区 | 亚洲另类在线一区| 精品国产精品一区二区夜夜嗨| 91香蕉视频mp4| 国产一区二区美女| 视频一区视频二区中文| 国产精品―色哟哟| 日韩一级视频免费观看在线| 色噜噜狠狠色综合中国| 国产福利一区二区三区视频在线| 五月激情六月综合| 1区2区3区欧美| 久久精品日产第一区二区三区高清版| 欧美人xxxx| 在线精品视频免费观看| 成人午夜精品在线|