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

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

?? tmp_regs_fsm.vhd

?? 一個8051的VHDL代碼
?? VHD
字號:
--------------------------------------------------
-- Model        :   8051 Behavioral Model,
--                  VHDL Entity mc8051.tmp_regs.interface
--
-- Author       :   Michael Mayer (mrmayer@computer.org),
--                  Dr. Hardy J. Pottinger,
--                  Department of Electrical Engineering
--                  University of Missouri - Rolla
--
-- Created at   :   09/21/98 13:57:58
--
LIBRARY ieee ;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
LIBRARY mc8051 ;
USE mc8051.cpu_pack.all;
USE mc8051.synth_pack.all;

ENTITY tmp_regs IS
   PORT( 
      acc : IN     std_logic_vector( 7 DOWNTO 0 )  ;
      acknow : IN     std_logic ;
      alu_result : IN     std_logic_vector( 7 DOWNTO 0 )  ;
      cpu_rst : IN     std_logic ;
      data_dest : IN     std_logic_vector( 2 DOWNTO 0 )  ;
      data_t1 : IN     std_logic_vector( 2 DOWNTO 0 )  ;
      data_t2 : IN     std_logic_vector( 2 DOWNTO 0 )  ;
      dest_cmd : IN     std_logic_vector( 3 DOWNTO 0 )  ;
      int_clk : IN     std_logic ;
      new_ir : IN     std_logic ;
      rs : IN     std_logic_vector( 1 DOWNTO 0 )  ;
      t1_cmd : IN     std_logic_vector( 3 DOWNTO 0 )  ;
      t2_cmd : IN     std_logic_vector( 3 DOWNTO 0 )  ;
      two_dests : IN     std_logic ;
      addr_gb : OUT    std_logic_vector( 7 DOWNTO 0 )  ;
      alu_second_result : OUT    std_logic ;
      bit_loc : OUT    std_logic_vector( 2 DOWNTO 0 )  ;
      cpu_done : OUT    std_logic ;
      dec_rd_sp : OUT    std_logic ;
      inc_wr_sp : OUT    std_logic ;
      indirect_sel : OUT    std_logic ;
      rd_gb : OUT    std_logic ;
      rd_pmem1 : OUT    std_logic ;
      rd_pmem2 : OUT    std_logic ;
      tmp1 : OUT    std_logic_vector( 7 DOWNTO 0 )  ;
      tmp1_done : OUT    std_logic ;
      tmp2 : OUT    std_logic_vector( 7 DOWNTO 0 )  ;
      wr_acc : OUT    std_logic ;
      wr_gb : OUT    std_logic ;
      wr_out : OUT    std_logic ;
      data_gb : INOUT  std_logic_vector( 7 DOWNTO 0 ) 
   );

-- Declarations

END tmp_regs ;
--
-- VHDL Architecture mc8051.tmp_regs.fsm
--
-- Created:
--          by - mrmayer.UNKNOWN (eceultra11.ece.umr.edu)
--          at - 13:57:58 09/21/98
--
-- Generated by Mentor Graphics' Renoir(TM) 3.4 (Build 18)
--
--
-- what will happen if I move this line in
LIBRARY ieee ;
USE ieee.std_logic_1164.all;
LIBRARY mc8051 ;
USE mc8051.cpu_pack.all;

ARCHITECTURE fsm OF tmp_regs IS

   -- Architecture Declarations
   SIGNAL data_tmp : std_logic_vector(2 DOWNTO 0) ;
   SIGNAL t_cmd : std_logic_vector(3 DOWNTO 0) ;
   SIGNAL t1_active : std_logic ;
   SIGNAL t2_active : std_logic ;
   SIGNAL data_reg : std_logic_vector(7 DOWNTO 0) ;
   SIGNAL indir_2nd : std_logic ;
   SIGNAL second_result : std_logic ;

   TYPE state_type IS (
      decode_state,
      short,
      strobe_gb,
      read_gb,
      alu_wait,
      read2_gb,
      strobe2_gb,
      put_addr_dst,
      output_data,
      instr_done,
      write_to_gb,
      strobe_gb1,
      read_gb1
   );

   -- State vector declaration
   ATTRIBUTE state_vector : string;
   ATTRIBUTE state_vector OF fsm : architecture IS "current_state" ;


   -- Declare current and next state signals
   SIGNAL current_state, next_state : state_type ;

   -- Declare any pre-registered internal signals
   SIGNAL bit_loc_int : std_logic_vector(2 DOWNTO 0) ;

BEGIN

   ----------------------------------------------------------------------------
   clocked : PROCESS (
      int_clk,
      cpu_rst
   )
   ----------------------------------------------------------------------------
   BEGIN
      IF (cpu_rst = '1') THEN
         current_state <= decode_state;
         -- Reset Values
         bit_loc <= "000";
         data_reg <= "00000000";
         data_tmp <= "000";
         indir_2nd <= '0';
         second_result <= '0';
         t1_active <= '0';
         t2_active <= '1';
         t_cmd <= "0000";
      ELSIF (int_clk'EVENT AND int_clk = '1') THEN
         current_state <= next_state;
         -- Registered output assignments
         bit_loc <= bit_loc_int;

         -- Default Assignment To Internals
         data_reg <= data_reg;
         indir_2nd <= indir_2nd;
         second_result <= second_result;
         t1_active <= t1_active;
         t2_active <= t2_active;

         -- State Actions for internal signals only
         CASE current_state IS
         WHEN short =>
            CASE t_cmd IS
   WHEN use_acc =>
      data_reg <= acc;
   WHEN OTHERS =>
       data_reg <= "00000000";
END CASE;
         WHEN read_gb =>
            data_reg <= data_gb;
         WHEN read2_gb =>
            data_reg <= data_gb;
         WHEN read_gb1 =>
            data_reg <= data_gb;
         WHEN OTHERS =>
            NULL;
         END CASE;

         -- Transition Actions for internal signals only
         CASE current_state IS
         WHEN alu_wait =>
            IF (t2_active = '1') THEN
               t2_active <= '0';
               t1_active <= '1';
            ELSIF (dest_cmd = nothing) THEN
               t1_active <= '0';
            ELSE
               t1_active <= '0';
               second_result <= '0';
            END IF;
         WHEN put_addr_dst =>
            IF (dest_cmd = indirect_T) THEN
               indir_2nd <= '1';
            END IF;
         WHEN output_data =>
            indir_2nd <= '0';
         WHEN instr_done =>
            IF (new_ir = '1') THEN
               t2_active <= '1';
            END IF;
         WHEN write_to_gb =>
            IF (two_dests='1' AND second_result = '0') THEN
               second_result <= '1';
            END IF;
         WHEN OTHERS =>
            NULL;
         END CASE;

      END IF;

   END PROCESS clocked;

   ----------------------------------------------------------------------------
   nextstate : PROCESS (
      current_state,
      data_tmp,
      t_cmd,
      t1_active,
      t2_active,
      data_reg,
      indir_2nd,
      second_result,
      data_gb,
      acc,
      rs,
      acknow,
      alu_result,
      two_dests,
      dest_cmd,
      data_dest,
      t2_cmd,
      data_t2,
      data_t1,
      new_ir,
      t1_cmd
   )
   ----------------------------------------------------------------------------
   BEGIN
      CASE current_state IS
      WHEN decode_state =>
         IF (t_cmd = use_acc OR t_cmd = zeros OR t_cmd = nothing

) THEN
            next_state <= short;
         ELSE
            next_state <= strobe_gb;
         END IF;
      WHEN short =>
            next_state <= alu_wait;
      WHEN strobe_gb =>
         IF (acknow = '1') THEN
            next_state <= read_gb;
         ELSE
            next_state <= strobe_gb;
         END IF;
      WHEN read_gb =>
         IF (t_cmd = bit_addr OR
 (t_cmd(3) = '1' AND t_cmd(2) = '1')) THEN
            next_state <= strobe2_gb;
         ELSE
            next_state <= alu_wait;
         END IF;
      WHEN alu_wait =>
         IF (t2_active = '1') THEN
            next_state <= decode_state;
         ELSIF (dest_cmd = nothing) THEN
            next_state <= instr_done;
         ELSE
            next_state <= output_data;
         END IF;
      WHEN read2_gb =>
            next_state <= alu_wait;
      WHEN strobe2_gb =>
         IF (acknow = '1') THEN
            next_state <= read2_gb;
         ELSE
            next_state <= strobe2_gb;
         END IF;
      WHEN put_addr_dst =>
         IF (dest_cmd = same_as_t1 OR dest_cmd = direct_T OR
dest_cmd = use_reg OR indir_2nd = '1') THEN
            next_state <= write_to_gb;
         ELSIF (dest_cmd = indirect_T) THEN
            next_state <= strobe_gb1;
         ELSE
            next_state <= put_addr_dst;
         END IF;
      WHEN output_data =>
         IF (dest_cmd = use_acc OR dest_cmd = wr_at_sp) THEN
            next_state <= write_to_gb;
         ELSIF (dest_cmd = direct_T) THEN
            next_state <= strobe_gb1;
         ELSE
            next_state <= put_addr_dst;
         END IF;
      WHEN instr_done =>
         IF (new_ir = '1') THEN
            next_state <= decode_state;
         ELSE
            next_state <= instr_done;
         END IF;
      WHEN write_to_gb =>
         IF (two_dests='1' AND second_result = '0') THEN
            next_state <= output_data;
         ELSE
            next_state <= instr_done;
         END IF;
      WHEN strobe_gb1 =>
         IF (acknow = '1') THEN
            next_state <= read_gb1;
         ELSE
            next_state <= strobe_gb1;
         END IF;
      WHEN read_gb1 =>
            next_state <= put_addr_dst;
      END CASE;

   END PROCESS nextstate;

   ----------------------------------------------------------------------------
   output : PROCESS (
      current_state,
      data_tmp,
      t_cmd,
      t1_active,
      t2_active,
      data_reg,
      indir_2nd,
      second_result,
      data_gb,
      acc,
      rs,
      acknow,
      alu_result,
      two_dests,
      dest_cmd,
      data_dest,
      t2_cmd,
      data_t2,
      data_t1,
      new_ir,
      t1_cmd
   )
   ----------------------------------------------------------------------------
   BEGIN
      -- Default Assignment
      addr_gb <= "ZZZZZZZZ";
      cpu_done <= '0';
      dec_rd_sp <= 'Z';
      inc_wr_sp <= 'Z';
      indirect_sel <= 'Z';
      rd_gb <= 'Z';
      rd_pmem1 <= 'Z';
      rd_pmem2 <= 'Z';
      tmp1_done <= '0';
      wr_acc <= 'Z';
      wr_gb <= 'Z';
      wr_out <= '0';

      -- State Actions
      CASE current_state IS
      WHEN strobe_gb =>
         CASE t_cmd IS
   WHEN immed | direct_T | bit_addr =>
      rd_pmem1 <= data_tmp(0);
      rd_pmem2 <= NOT data_tmp(0);
   WHEN rd_at_sp =>
      dec_rd_sp <= '1';
   WHEN OTHERS =>
      addr_gb <= "000" & rs & data_tmp;
      rd_gb <= '1';
END CASE;
      WHEN alu_wait =>
         wr_out <= '1';
      WHEN strobe2_gb =>
         IF t_cmd(3) = '1' AND t_cmd(2) = '1' THEN
    addr_gb <= data_reg;
ELSIF data_reg(7) = '0' THEN
    addr_gb <= "0010" & data_reg(6 DOWNTO 3);
    bit_loc_int <= data_reg(2 DOWNTO 0);
ELSE
    addr_gb <= data_reg(7 DOWNTO 3) & "000";
    bit_loc_int <= data_reg(2 DOWNTO 0);
END IF;
         rd_gb <= '1';
      WHEN put_addr_dst =>
         IF indir_2nd = '1' THEN
   addr_gb <= data_reg;
ELSE 
   CASE dest_cmd IS
   WHEN same_as_t1 | direct_T => 
       addr_gb <= data_reg;
   WHEN OTHERS    => 
       addr_gb <= "000"&rs&data_dest;
   END CASE;
END IF;
      WHEN output_data =>
         data_gb <= alu_result;
      WHEN instr_done =>
         cpu_done <= '1';
      WHEN write_to_gb =>
         CASE dest_cmd IS
   WHEN use_acc => wr_acc <= '1';
   WHEN wr_at_sp => inc_wr_sp <= '1';
   WHEN OTHERS => wr_gb <= '1';
END CASE;
      WHEN strobe_gb1 =>
         IF dest_cmd = indirect_T THEN
  rd_gb <= '1';
ELSE
  rd_pmem1 <= data_tmp(0);
  rd_pmem2 <= NOT data_tmp(0);
END IF;
      WHEN OTHERS =>
         NULL;
      END CASE;

   END PROCESS output;

   -- Concurrent Statements
data_tmp <= data_t2 WHEN t2_active = '1' ELSE
            data_t1 WHEN t1_active = '1' ELSE
            data_dest;
t_cmd    <= t2_cmd WHEN t2_active = '1' ELSE
            t1_cmd WHEN t1_active = '1' ELSE
            dest_cmd;
alu_second_result <= second_result;

END fsm;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线视频日韩| 美女久久久精品| 欧美一区永久视频免费观看| 91玉足脚交白嫩脚丫在线播放| 久久超碰97人人做人人爱| 免费不卡在线视频| 精品无人码麻豆乱码1区2区| 免费成人在线视频观看| 精东粉嫩av免费一区二区三区| 六月丁香婷婷久久| 国内精品久久久久影院一蜜桃| 久久电影网站中文字幕| 国产精品 日产精品 欧美精品| 国产一区二区剧情av在线| 丁香婷婷深情五月亚洲| caoporn国产精品| 91成人在线精品| 欧美日韩国产乱码电影| 精品粉嫩超白一线天av| 中文字幕精品在线不卡| 亚洲色图视频网| 午夜不卡av免费| 精品综合免费视频观看| 成人小视频在线| 在线观看欧美精品| 欧美一区二区在线视频| 国产亚洲欧美色| 一区二区欧美视频| 久久99精品久久久久久久久久久久 | 99久久久久免费精品国产 | 亚洲一二三级电影| 久久精品av麻豆的观看方式| 成人黄色电影在线 | 精品免费一区二区三区| 中文字幕一区二区三中文字幕| 亚洲一区二区三区小说| 精品一区二区三区蜜桃| 91片在线免费观看| 精品国产乱码久久久久久牛牛| 一区在线播放视频| 日本不卡一二三| 色综合久久综合中文综合网| 欧美成人猛片aaaaaaa| 亚洲视频在线观看三级| 激情五月激情综合网| 色天天综合色天天久久| 国产喷白浆一区二区三区| 午夜欧美视频在线观看| 色综合欧美在线| 国产日韩欧美在线一区| 蜜桃免费网站一区二区三区| 色婷婷精品大在线视频| 久久精品视频免费| 九九久久精品视频| 91精品国产色综合久久| 亚洲精品免费看| 成人免费看视频| 日韩视频永久免费| 亚洲福中文字幕伊人影院| 91日韩精品一区| 国产精品久久三区| 国产精品996| 久久综合999| 精品一区精品二区高清| 91精品中文字幕一区二区三区| 亚洲一区二区视频| 欧美中文字幕一区二区三区亚洲| 国产精品第一页第二页第三页| 国产一区美女在线| 国产午夜精品福利| 国产一区91精品张津瑜| 精品国产a毛片| 久久99精品网久久| 久久蜜桃av一区精品变态类天堂 | 精品国产伦一区二区三区观看体验 | 91亚洲精品久久久蜜桃| 日日夜夜免费精品| 色系网站成人免费| 一区二区日韩电影| 欧美日韩性生活| 七七婷婷婷婷精品国产| 欧美一级欧美三级| 精品无人码麻豆乱码1区2区| 精品久久99ma| 国产成人综合在线观看| 国产偷v国产偷v亚洲高清| 大尺度一区二区| 中文在线免费一区三区高中清不卡| 国产福利一区二区| 中文一区在线播放| 在线免费亚洲电影| 免费欧美在线视频| 国产亚洲欧美在线| 在线观看一区不卡| 蜜桃传媒麻豆第一区在线观看| 正在播放亚洲一区| 激情深爱一区二区| 亚洲天堂av老司机| 91免费视频网址| 亚洲丶国产丶欧美一区二区三区| 欧美巨大另类极品videosbest| 麻豆成人免费电影| 中文字幕成人网| 91一区二区在线| 喷水一区二区三区| 国产精品美女久久久久久2018| 97se亚洲国产综合自在线不卡| 午夜精品国产更新| 欧美国产一区在线| 欧美午夜宅男影院| 久久不见久久见中文字幕免费| 中文字幕va一区二区三区| 欧美三级视频在线播放| 国产精品99久| 天堂av在线一区| 国产精品不卡一区| 欧美成人aa大片| 94-欧美-setu| 久久99热国产| 亚洲一区二三区| 中文字幕精品三区| 欧美一区二区视频网站| 91视频一区二区| 国产黄色成人av| 美国av一区二区| 亚洲福利一二三区| 亚洲人一二三区| 国产精品网曝门| xnxx国产精品| 欧美理论片在线| 91黄色小视频| 不卡影院免费观看| 国产精品中文欧美| 美腿丝袜亚洲一区| 天堂一区二区在线| 亚洲人成精品久久久久久| 国产偷国产偷精品高清尤物| 日韩精品在线一区二区| 9191精品国产综合久久久久久| 色素色在线综合| 91视频一区二区| 99精品热视频| 成人avav影音| www.在线成人| a亚洲天堂av| 成人高清免费在线播放| 国产成人精品亚洲午夜麻豆| 黑人精品欧美一区二区蜜桃| 蜜芽一区二区三区| 久久精品国产亚洲5555| 美女一区二区久久| 蜜臀av性久久久久蜜臀aⅴ| 日韩不卡在线观看日韩不卡视频| 亚洲成人一区在线| 日韩黄色片在线观看| 日本不卡一二三| 精品一区二区三区在线视频| 精品一区二区三区免费观看| 国产在线精品一区二区夜色| 久久99这里只有精品| 国产一区二区女| 不卡的av网站| 色综合激情五月| 欧美羞羞免费网站| 欧美一级片在线看| 久久久夜色精品亚洲| 国产精品午夜春色av| 一区二区三区不卡视频| 日韩精品一二区| 国内精品久久久久影院薰衣草 | 色综合激情五月| 欧美日韩精品一区二区三区四区 | 亚洲精品视频一区二区| 亚洲一区二区美女| 日韩和欧美一区二区三区| 国产一区二区看久久| 97精品国产露脸对白| 欧美日韩国产天堂| 日韩一二三区不卡| 国产精品久久久久久久岛一牛影视| 中文字幕一区在线观看| 亚洲成人资源在线| 春色校园综合激情亚洲| 91年精品国产| 精品国产乱码久久久久久影片| 欧美韩国日本不卡| 亚洲第一精品在线| 国产黄色成人av| 欧美专区日韩专区| 久久青草国产手机看片福利盒子| 自拍视频在线观看一区二区| 日精品一区二区| 成人美女视频在线看| 欧美一级片免费看| 日韩毛片精品高清免费| 美脚の诱脚舐め脚责91| 91久久精品一区二区二区| 精品少妇一区二区三区免费观看| 亚洲精品日日夜夜| 国产乱子伦一区二区三区国色天香|