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

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

?? memory.vhd

?? 美國計算機界泰斗級作者Yale N. Patt的LC3 CPU VHDL源碼,配合《計算機系統概論》一書學習效果更佳!
?? VHD
字號:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;

entity MEMORY is

  generic (
    DATA_BITS   : integer := 16;
    MEMORY_SIZE : integer := 32);

  port (
    Clock  : in std_logic;
    Reset  : in std_logic;
    MDR    : in std_logic_vector((DATA_BITS - 1) downto 0);
    MAR    : in std_logic_vector((DATA_BITS - 1) downto 0);
    R_W    : in std_logic;
    MEM_EN : in std_logic;

    mem : out std_logic_vector((DATA_BITS - 1) downto 0);
    R   : out std_logic);

end MEMORY;

architecture behavior of MEMORY is
  constant const_ADD  : std_logic_vector(3 downto 0) := "0001";  -- 10# 1#
  constant const_AND  : std_logic_vector(3 downto 0) := "0101";  -- 10# 5#
  constant const_BR   : std_logic_vector(3 downto 0) := "0000";  -- 10# 0#
  constant const_LEA  : std_logic_vector(3 downto 0) := "1110";  -- 10#14#
  constant const_JMP  : std_logic_vector(3 downto 0) := "1100";  -- 10#12#
  constant const_LDR  : std_logic_vector(3 downto 0) := "0110";  -- 10# 6#
  constant const_TRAP : std_logic_vector(3 downto 0) := "1111";  -- 10#15#

  constant R0 : std_logic_vector(2 downto 0) := "000";
  constant R1 : std_logic_vector(2 downto 0) := "001";
  constant R2 : std_logic_vector(2 downto 0) := "010";
  constant R3 : std_logic_vector(2 downto 0) := "011";
  constant R4 : std_logic_vector(2 downto 0) := "100";
  constant R5 : std_logic_vector(2 downto 0) := "101";
  constant R6 : std_logic_vector(2 downto 0) := "110";
  constant R7 : std_logic_vector(2 downto 0) := "111";
  
  subtype word is std_logic_vector((DATA_BITS - 1) downto 0);
  type    Words is array (natural range <>) of word;
  signal  SRAM      : Words(0 to MEMORY_SIZE - 1);
  signal  next_SRAM : Words(0 to MEMORY_SIZE - 1);
  signal  next_R    : std_logic;
  signal  next_mem  : std_logic_vector((DATA_BITS - 1) downto 0);

begin  -- behavior

  latch_outputs : process (Clock, Reset)
  begin
    if Reset = '1' then                 -- asynchronous reset (active high)
      R   <= '0';
      mem <= (others => '0');
      
      for i in 0 to MEMORY_SIZE - 1 loop
        SRAM(i) <= (others => '0');
      end loop;
      -- SRAM(0) <= const_ADD & R0 & R1 & '0' & "00" & R0;
      -- SRAM(1) <= const_BR & "111" & "111"&"111"&"110";
      
      -- SRAM(0) <= const_ADD & R4 & R4 & '1' & "11111";
      -- SRAM(1) <= const_BR & "111" & "111"&"111"&"110";

      -- SRAM(0) <= const_LEA & R7 & "101"&"111"&"111";-- -129 + (PC=1)= -128
      -- SRAM(1) <= const_LEA & R7 & "111"&"111"&"110";-- -2 + (PC=2)= 0
      -- SRAM(2) <= const_LEA & R7 & "001"&"111"&"101";-- 125 + (PC=3)= 128
      -- SRAM(3) <= const_BR & "111" & "111"&"111"&"100";--BRto(PC=4)+(-4)-->PC=0

      --I tried R0 here to see if it affected BEN at the wrong
      --times. It *does* affect BEN, but not when we're in state 0,
      --which is the only time a state transition appears to be
      --affected based on the BEN value.
      -- SRAM(0) <= const_LEA & R0 & "101"&"111"&"111";-- -129 + (PC=1)= -128
      -- SRAM(1) <= const_LEA & R0 & "111"&"111"&"110";-- -2 + (PC=2)= 0
      -- SRAM(2) <= const_LEA & R0 & "001"&"111"&"101";-- 125 + (PC=3)= 128
      -- SRAM(3) <= const_BR & "111" & "111"&"111"&"100";--BRto(PC=4)+(-4)-->PC=0

      -- R0 <= 10#1# + 10#0#; R0 <= 1
      -- PC <= 1
      -- SRAM(0) <= const_ADD & R0 & R1 & '0' & "00" & R0;
      -- SRAM(1) <= const_JMP & "000" & R0 & "000000";

      -- R1 <= R1 + 10#2#: 1,; 3; 5; 7; ...
      -- PC <= 0: 0; 1; 2; 0; 1; 2; ...
      -- SRAM(0) <= const_ADD & R1 & R1 & '0' & "00" & R2;
      -- SRAM(1) <= const_JMP & "000" & R0 & "000000";

      -- SRAM(0) <= const_LDR & R0 & R7 & "111101";
      --SRAM(1), "0000"&"0000"&"0000"&"0000", is
      --interpreted as a no-op BRanch instruction;
      --The same goes for SRAM(2) and SRAM(3).
      -- SRAM(4) <= const_BR & "111" & "111"&"111"&"011";

      --TRAP test 1
      SRAM(0)  <= const_ADD & R0 & R1 & '0' & "00" & R0;  --R0 grows by 1 each time
      SRAM(1)  <= const_TRAP & "0000" & "0001"&"0111";
      --R7 should now contain 10#2#, the value of the incremented PC
      --PC is then loaded with 10#23#
      SRAM(2)  <= const_BR & "111" & "111"&"111"&"101";  --BRto(PC=3)+(-3)-->PC=0
      SRAM(23) <= "0000"&"000"&"000"&"011"&"101";  --TRAP routine starts at SRAM(29)
      SRAM(29) <= const_ADD & R0 & R5 & '0' & "00" & R0;  --R0 grows by 5 each time
      SRAM(30) <= const_BR & "111" & "111"&"100"&"001";  --to(PC=31)+(-31)  -->PC=0
      --PC goes from 0 through 31 now
      --It no longer 'core dumps' by going to 32.
      --REMEMBER to do this: REAL TRAP routines must end by loading contents of R7 into PC.
      
    elsif Clock'event and Clock = '1' then  -- rising clock edge
      R    <= next_R;
      mem  <= next_mem;
      SRAM <= next_SRAM;
    end if;
  end process latch_outputs;


  build_nexts : process (MAR, MDR, MEM_EN, R_W, SRAM)
  begin
    next_R    <= '0';
    next_SRAM <= SRAM;
    next_mem  <= (others => '0');       -- PYGMY

    if MEM_EN = '1' then
      next_R <= '1';

      if R_W = '1' then
        next_SRAM(conv_integer(MAR)) <= MDR;

      else                              -- R_W = '0'
        next_mem <= SRAM(conv_integer(MAR));
      end if;
    end if;

  end process build_nexts;

end behavior;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久久久久久久 | 成人精品国产一区二区4080| 亚洲高清在线视频| 一区二区三区美女视频| 亚洲欧美日韩国产手机在线| 久久九九影视网| 欧美国产在线观看| 国产精品丝袜一区| 亚洲精品免费看| 亚洲国产精品尤物yw在线观看| 色综合天天综合网天天看片| 色呦呦网站一区| 欧美日本视频在线| 欧美日韩在线播放三区| 91精品国产综合久久久久久漫画 | 一区二区成人在线观看| 亚洲精品老司机| 亚洲va国产天堂va久久en| 免费观看一级欧美片| 精品一区二区三区免费视频| 国产福利精品一区二区| 91亚洲精品一区二区乱码| 欧美日韩国产综合久久| 精品剧情在线观看| 亚洲视频在线观看一区| 亚洲黄色在线视频| 青青草国产成人av片免费| 国产一区二区三区免费在线观看 | 欧美亚洲综合另类| 日韩欧美高清dvd碟片| 国产精品少妇自拍| 视频一区二区欧美| 国产成人精品三级| 欧美四级电影网| 久久九九国产精品| 婷婷六月综合亚洲| av成人老司机| 精品国产伦一区二区三区观看体验| 91香蕉视频黄| 精品国产免费人成在线观看| 中文字幕视频一区| 美女网站一区二区| 日本韩国精品在线| 久久久久久久免费视频了| 一区二区三区成人| 成人福利在线看| 欧美电视剧在线观看完整版| 亚洲美女屁股眼交| 粉嫩久久99精品久久久久久夜| 国产乱子伦视频一区二区三区| 日韩国产一区二| 97se狠狠狠综合亚洲狠狠| 日韩美女视频在线| 亚洲一区二区在线视频| 成人涩涩免费视频| 精品福利一二区| 日本色综合中文字幕| 欧洲视频一区二区| 亚洲色图一区二区三区| 国产精品一区二区果冻传媒| 日韩精品一区二区三区中文不卡| www国产精品av| 美女性感视频久久| 欧美一区2区视频在线观看| 亚洲人成精品久久久久| 国产成人午夜电影网| 精品少妇一区二区三区视频免付费| 日韩精品综合一本久道在线视频| 日韩一区二区在线看| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲人成在线播放网站岛国| 高清shemale亚洲人妖| 久久蜜桃av一区精品变态类天堂| 国产午夜精品久久| 国产精品18久久久久| 久久你懂得1024| 韩国精品免费视频| 久久精品欧美一区二区三区不卡 | 欧美视频精品在线观看| 亚洲欧美激情小说另类| av网站免费线看精品| 中文字幕亚洲欧美在线不卡| 色综合天天视频在线观看 | 国产精品一二三区在线| 久久在线观看免费| 成人激情午夜影院| 亚洲欧美日韩综合aⅴ视频| 成人久久久精品乱码一区二区三区| 欧美视频第二页| 日本色综合中文字幕| 久久综合资源网| 不卡av在线网| 亚洲a一区二区| 国产精品不卡在线| 欧美性大战久久久| 精品亚洲aⅴ乱码一区二区三区| 97久久超碰国产精品电影| 亚洲图片激情小说| 欧美另类z0zxhd电影| 黄色小说综合网站| 亚洲欧洲av一区二区三区久久| 久久99国产精品免费网站| 久久久精品免费观看| 色av综合在线| 狠狠色狠狠色综合| 亚洲少妇屁股交4| 欧美一区二区大片| 97久久精品人人做人人爽| 亚洲午夜在线观看视频在线| 精品久久久久一区| 日本久久电影网| 久久超碰97人人做人人爱| 亚洲区小说区图片区qvod| 91精品国产品国语在线不卡| 成人综合在线视频| 日韩av高清在线观看| 136国产福利精品导航| 欧美不卡激情三级在线观看| 91麻豆国产福利在线观看| 美女视频网站黄色亚洲| 一区二区视频在线| 久久综合av免费| 欧美一区中文字幕| 91激情五月电影| 丰满亚洲少妇av| 蓝色福利精品导航| 一区二区三区中文字幕在线观看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 蜜臀av在线播放一区二区三区| 欧亚洲嫩模精品一区三区| 国产精品一区免费在线观看| 亚洲妇女屁股眼交7| 国产精品久久久久久亚洲伦| 日韩精品影音先锋| 91精品国产综合久久久蜜臀粉嫩 | 欧美一级二级在线观看| eeuss鲁一区二区三区| 国产主播一区二区| 天天影视色香欲综合网老头| 亚洲激情成人在线| 日韩一区在线看| 欧美激情一区二区三区四区| 日韩一区二区在线观看视频播放| 日本不卡高清视频| 夜夜操天天操亚洲| 一区二区三区中文在线观看| 欧美激情综合网| 日本一二三四高清不卡| 久久综合五月天婷婷伊人| 日韩一级成人av| 欧美精品丝袜中出| 欧美日韩国产一级片| 欧洲亚洲精品在线| 欧美日产在线观看| 91精品国产综合久久福利| 911国产精品| 欧美成人a∨高清免费观看| 欧美一区二区国产| 精品88久久久久88久久久| 精品免费国产一区二区三区四区| 国产91在线看| 不卡的av网站| 色狠狠色狠狠综合| 欧美三级电影精品| 91精品啪在线观看国产60岁| 精品视频免费看| 欧美日韩电影在线| 日韩欧美123| 久久九九99视频| 亚洲视频免费看| 五月天丁香久久| 国产老肥熟一区二区三区| 国产精品一级在线| 91国产精品成人| 5月丁香婷婷综合| 国产视频视频一区| 综合激情成人伊人| 午夜国产精品一区| 国产成人午夜视频| 欧美性大战久久久久久久| 欧美刺激午夜性久久久久久久| 91福利视频网站| 日韩午夜av电影| 18成人在线观看| 午夜精品福利久久久| 国产91露脸合集magnet| 欧美日韩视频一区二区| 久久精品一区蜜桃臀影院| 亚洲一区二区三区激情| 国产在线精品一区二区不卡了 | 久久美女高清视频| 依依成人综合视频| 黄网站免费久久| 欧美亚州韩日在线看免费版国语版 | 中文字幕一区二区三区四区| 日韩专区中文字幕一区二区| 激情五月播播久久久精品| 日本乱人伦aⅴ精品| 久久美女高清视频| 日韩电影网1区2区|