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

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

?? ramlib_sim.vhd

?? 常見的輸入輸出及存儲器件(ram及fifo)vhdl實現
?? VHD
字號:
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--  The Free IP Project
--  VHDL Free-RAM Core
--  (c) 1999-2000, The Free IP Project and David Kessner
--
--
--  FREE IP GENERAL PUBLIC LICENSE
--  TERMS AND CONDITIONS FOR USE, COPYING, DISTRIBUTION, AND MODIFICATION
--
--  1.  You may copy and distribute verbatim copies of this core, as long
--      as this file, and the other associated files, remain intact and
--      unmodified.  Modifications are outlined below.  
--  2.  You may use this core in any way, be it academic, commercial, or
--      military.  Modified or not.  
--  3.  Distribution of this core must be free of charge.  Charging is
--      allowed only for value added services.  Value added services
--      would include copying fees, modifications, customizations, and
--      inclusion in other products.
--  4.  If a modified source code is distributed, the original unmodified
--      source code must also be included (or a link to the Free IP web
--      site).  In the modified source code there must be clear
--      identification of the modified version.
--  5.  Visit the Free IP web site for additional information.
--      http://www.free-ip.com
--
----------------------------------------------------------------------------
----------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;


package ram_lib is
  component ram_dp
    generic (addr_bits		:integer;
             data_bits		:integer;
             register_out_flag	:integer := 0;
             block_type		:integer := 0);
    port (reset		:in  std_logic;
          wr_clk	:in  std_logic;
    	  wr_en	    :in  std_logic;
          wr_addr	:in  std_logic_vector (addr_bits-1 downto 0);
          wr_data	:in  std_logic_vector(data_bits-1 downto 0);
	  rd_clk	:in  std_logic;
          rd_addr	:in  std_logic_vector (addr_bits-1 downto 0);
          rd_data	:out std_logic_vector(data_bits-1 downto 0)
         ); 
  end component;

  component ram_dp2
    generic (addr_bits		:integer;
             data_bits		:integer;
             block_type		:integer := 0);
    port (reset		:in  std_logic;
          p1_clk	:in  std_logic;
          p1_we		:in  std_logic;
          p1_addr	:in  std_logic_vector (addr_bits-1 downto 0);
          p1_din	:in  std_logic_vector (data_bits-1 downto 0);
          p1_dout	:out std_logic_vector (data_bits-1 downto 0);

          p2_clk	:in  std_logic;
          p2_we		:in  std_logic;
          p2_addr	:in  std_logic_vector (addr_bits-1 downto 0);
          p2_din	:in  std_logic_vector (data_bits-1 downto 0);
          p2_dout	:out std_logic_vector (data_bits-1 downto 0)          
         ); 
  end component;


  function slv_to_integer(x : std_logic_vector)
       return integer;
  function integer_to_slv(n, bits : integer)
      return std_logic_vector;  
end ram_lib;


----------------------------------------------------------------------------
----------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library work;
use work.ram_lib.all;

package body ram_lib is
  function slv_to_integer(x : std_logic_vector)
       return integer is
    variable n : integer := 0;
    variable failure : boolean := false;
  begin
    assert (x'high - x'low + 1) <= 31
        report "Range of sulv_to_integer argument exceeds integer range"
        severity error;
    for i in x'range loop
      n := n * 2;
      case x(i) is
        when '1' | 'H' => n := n + 1;
        when '0' | 'L' => null;
        when others =>
            -- failure := true;
            null;
      end case;
    end loop;

    assert not failure
      report "sulv_to_integer cannot convert indefinite std_ulogic_vector"
      severity error;
    if failure then
      return 0;
    else
      return n;
    end if;
  end slv_to_integer;

  function integer_to_slv(n, bits : integer)
      return std_logic_vector is
    variable x : std_logic_vector(bits-1 downto 0) := (others => '0');
    variable tempn : integer := n;
  begin
    for i in x'reverse_range loop
      if (tempn mod 2) = 1 then
        x(i) := '1';
      end if;
      tempn := tempn / 2;
    end loop;

    return x;
  end integer_to_slv;
end ram_lib;


----------------------------------------------------------------------------
----------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library work;
use work.ram_lib.all;

entity ram_dp is
    generic (addr_bits	:integer;
             data_bits		:integer;
             register_out_flag	:integer := 0;
             block_type		:integer := 0);
    port (reset		:in  std_logic;
          wr_clk	:in  std_logic;
    	  wr_en	    :in  std_logic;
          wr_addr	:in  std_logic_vector (addr_bits-1 downto 0);
          wr_data	:in  std_logic_vector(data_bits-1 downto 0);
	  rd_clk	:in  std_logic;
          rd_addr	:in  std_logic_vector (addr_bits-1 downto 0);
          rd_data	:out std_logic_vector(data_bits-1 downto 0)
         ); 

   subtype word is std_logic_vector (data_bits-1 downto 0);
   constant nwords : integer := 2 ** addr_bits;
   type ram_type is array (0 to nwords-1) of word;
end ram_dp;


architecture arch_ram_dp of ram_dp is
  shared variable ram :ram_type;
begin

  -- Handle the write port
  process (wr_clk)
    variable address :integer;
  begin
    if wr_clk'event and wr_clk='1' then
      if wr_en='1' then
        address := slv_to_integer (wr_addr);
        ram(address) := wr_data;
      end if;
    end if;
  end process;


  -- Handle the read ports
  READ_BUF: if register_out_flag=0 generate
  begin
    process (rd_addr, rd_clk, wr_clk)
    begin
      rd_data <= ram(slv_to_integer(rd_addr));
    end process;
  end generate READ_BUF;


  READ_REG: if register_out_flag/=0 generate
  begin
    process (reset, rd_clk)
    begin
      if reset='1' then
        rd_data <= (others=>'0');
      elsif rd_clk'event and rd_clk='1' then
        rd_data <= ram(slv_to_integer(rd_addr));
      end if;
    end process;
  end generate READ_REG;
      
end arch_ram_dp;


----------------------------------------------------------------------------
----------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library work;
use work.ram_lib.all;

entity ram_dp2 is
    generic (addr_bits		:integer;
             data_bits		:integer;
             block_type		:integer := 0);
    port (reset		:in  std_logic;
          p1_clk	:in  std_logic;
          p1_we		:in  std_logic;
          p1_addr	:in  std_logic_vector (addr_bits-1 downto 0);
          p1_din	:in  std_logic_vector (data_bits-1 downto 0);
          p1_dout	:out std_logic_vector (data_bits-1 downto 0);

          p2_clk	:in  std_logic;
          p2_we		:in  std_logic;
          p2_addr	:in  std_logic_vector (addr_bits-1 downto 0);
          p2_din	:in  std_logic_vector (data_bits-1 downto 0);
          p2_dout	:out std_logic_vector (data_bits-1 downto 0)          
         ); 

   subtype word is std_logic_vector (data_bits-1 downto 0);
   constant nwords : integer := 2 ** addr_bits;
   type ram_type is array (0 to nwords-1) of word;
end ram_dp2;


architecture arch_ram_dp2 of ram_dp2 is
  shared variable ram :ram_type;
begin

  -- Handle the write ports
  process (p1_clk)
    variable address :integer;
  begin
    if p1_clk'event and p1_clk='1' then
      if p1_we='1' then
        address := slv_to_integer (p1_addr);
        ram(address) := p1_din;
      end if;
    end if;
  end process;

  process (p2_clk)
    variable address :integer;
  begin
    if p2_clk'event and p2_clk='1' then
      if p2_we='1' then
        address := slv_to_integer (p2_addr);
        ram(address) := p2_din;
      end if;
    end if;
  end process;


  -- Handle the read ports
  process (reset, p1_clk)
  begin
    if reset='1' then
      p1_dout <= (others=>'0');
    elsif p1_clk'event and p1_clk='1' then
      p1_dout <= ram(slv_to_integer(p1_addr));
    end if;
  end process;
      
  process (reset, p2_clk)
  begin
    if reset='1' then
      p2_dout <= (others=>'0');
    elsif p2_clk'event and p2_clk='1' then
      p2_dout <= ram(slv_to_integer(p2_addr));
    end if;
  end process;
      
end arch_ram_dp2;


----------------------------------------------------------------------------
----------------------------------------------------------------------------


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利一区在线| 丰满亚洲少妇av| 国产精品久久免费看| 欧美少妇bbb| 国产成人av一区二区| 亚洲成人免费视频| 日本一区二区视频在线| 4438x成人网最大色成网站| 成人av在线一区二区三区| 天堂资源在线中文精品| 亚洲人123区| 国产欧美一区二区精品久导航 | 91福利视频久久久久| 裸体健美xxxx欧美裸体表演| 亚洲欧美日韩中文播放 | 综合色中文字幕| 日韩精品一区在线| 欧美日韩mp4| 一本高清dvd不卡在线观看| 国产麻豆精品久久一二三| 午夜精品影院在线观看| 自拍偷拍国产精品| 日本一二三不卡| 久久嫩草精品久久久精品| 91.xcao| 欧美三区在线观看| 91国产免费看| 91网站黄www| 99久久精品国产导航| 国产精品一区在线观看你懂的| 蜜臀av在线播放一区二区三区| 香蕉影视欧美成人| 亚洲影视在线播放| 一区二区三区在线看| 亚洲天堂免费在线观看视频| 欧美经典一区二区| 中文字幕不卡在线观看| 久久久五月婷婷| 久久精品人人做人人爽97| 久久久噜噜噜久久人人看| 久久久久久久av麻豆果冻| 久久这里只精品最新地址| 久久久久久综合| 国产精品午夜在线观看| 国产精品久久久久久久久免费丝袜| 久久久久久久久久电影| 国产偷国产偷精品高清尤物| 亚洲精品在线免费播放| 久久久久国产精品人| 国产欧美日韩中文久久| 国产欧美日韩不卡| 国产精品国产三级国产| 亚洲天堂av一区| 亚洲高清中文字幕| 美女在线视频一区| 激情文学综合丁香| 波多野结衣中文一区| 91色porny| 欧美日韩国产中文| 日韩一区二区精品在线观看| 日韩欧美一区二区三区在线| 精品福利av导航| 国产精品黄色在线观看| 亚洲精品国产无天堂网2021| 亚洲成人动漫一区| 国产一区二三区| 成人激情电影免费在线观看| 色先锋资源久久综合| 91精品国产福利| 欧美xxxx在线观看| 国产精品卡一卡二卡三| 亚洲激情图片小说视频| 婷婷综合另类小说色区| 国产一区二区毛片| 色欧美88888久久久久久影院| 欧美丝袜第三区| 精品国产sm最大网站| 亚洲日本在线观看| 男人的天堂久久精品| 国产乱码精品一区二区三区av| 97久久精品人人做人人爽| 欧美精品丝袜中出| 国产欧美日韩卡一| 日韩中文欧美在线| 成人一区二区三区视频在线观看| 在线观看成人小视频| 精品美女在线播放| 亚洲一区二区三区在线播放| 精品一区二区三区av| 一本色道久久综合亚洲aⅴ蜜桃| 91精品国产aⅴ一区二区| 国产精品情趣视频| 日韩av网站在线观看| 不卡的av网站| 精品国产乱码久久久久久牛牛| 国产精品久久久久久久久快鸭 | 国产精品国产三级国产aⅴ无密码| 天堂成人免费av电影一区| 不卡电影免费在线播放一区| 欧美精品 国产精品| 国产精品三级电影| 麻豆成人av在线| 欧美做爰猛烈大尺度电影无法无天| 精品久久久久香蕉网| 亚洲一区二区三区国产| 国产精品一区二区久激情瑜伽| 欧美女孩性生活视频| 中文字幕日本乱码精品影院| 狠狠色2019综合网| 欧美精品777| 亚洲成人免费电影| 在线观看国产精品网站| 国产精品成人网| 国产高清久久久久| 精品久久久久av影院| 舔着乳尖日韩一区| 91成人免费在线| 亚洲色图一区二区三区| 成人高清免费在线播放| 久久久久久亚洲综合影院红桃| 婷婷中文字幕综合| 欧美在线免费播放| 亚洲综合久久久| 91免费看`日韩一区二区| 国产免费久久精品| 国内精品视频666| 日韩欧美一卡二卡| 日韩高清一区二区| 欧美日韩中文另类| 亚洲成a人片在线观看中文| 91无套直看片红桃| 亚洲日本乱码在线观看| k8久久久一区二区三区| 国产欧美精品一区二区三区四区 | 亚洲色图制服丝袜| 92国产精品观看| 亚洲品质自拍视频| 一道本成人在线| 一区二区三区日韩欧美| 欧美亚洲精品一区| 午夜欧美大尺度福利影院在线看 | 国产精品女同互慰在线看| 国产精品亚洲一区二区三区妖精| 日韩精品一区二区三区视频播放 | 在线播放/欧美激情| 日韩电影在线一区二区三区| 欧美色涩在线第一页| 亚洲一区二区五区| 欧美日韩精品一二三区| 日本中文字幕一区| 欧美白人最猛性xxxxx69交| 国产乱人伦精品一区二区在线观看| 国产日韩欧美麻豆| 91免费国产在线| 性做久久久久久久免费看| 日韩一区二区三免费高清| 精品一区二区三区在线视频| 国产丝袜美腿一区二区三区| av在线免费不卡| 亚洲精品v日韩精品| 欧美日韩免费电影| 另类小说欧美激情| 日本一区免费视频| 在线影院国内精品| 日韩高清一区在线| 国产亚洲一区二区三区四区 | 午夜精品福利久久久| 日韩一区二区麻豆国产| 成人午夜又粗又硬又大| 一区二区三区精品视频在线| 欧美日韩精品二区第二页| 久久99久久精品| 一区在线中文字幕| 欧美一区二区视频观看视频| 国产成人免费视| 一区二区视频在线| 精品少妇一区二区| 91免费小视频| 蜜桃av一区二区三区| 国产精品妹子av| 91麻豆精品91久久久久同性| 国产suv精品一区二区三区| 亚洲一区二区三区四区中文字幕| 欧美mv日韩mv国产网站app| 91在线视频播放地址| 热久久久久久久| 自拍偷拍欧美精品| 亚洲精品在线电影| 欧美亚洲一区二区在线观看| 国产不卡免费视频| 人妖欧美一区二区| 亚洲免费资源在线播放| 精品国产一区二区三区忘忧草 | 亚洲精品成人在线| 久久综合九色综合97婷婷| 在线视频综合导航| 成人美女在线观看| 九九久久精品视频| 亚洲电影在线免费观看| 国产精品传媒入口麻豆|