⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpu86.vhd

📁 Run Pac-man Game Based on 8086/8088 FPGA IP Core
💻 VHD
📖 第 1 页 / 共 5 页
字号:
               next_state <= Serror;
            ELSE
               muxabus <="00";
               next_state <= Sack;
            END IF;
         WHEN Sflush1 => 
            flush_ack<='1';
            IF (flush_req='0') THEN 
               muxabus<="01";
               next_state <= Sflush2;
            ELSE
               next_state <= Sflush1;
            END IF;
         WHEN Sfull => 
            latcho <= regnbok and opc_req;
            IF (write_req='1') THEN 
               muxabus <="01";
               latchrw <= '1' ;
               next_state <= Swrite;
            ELSIF (read_req='1') THEN 
               muxabus <="01";
               latchrw <= '1' ;
               next_state <= Sread;
            ELSIF (flush_req = '1') THEN 
               next_state <= Sflush1;
            ELSIF (irq='1' AND opc_req='1') THEN 
               next_state <= Sint;
            ELSIF (reg4free = '1' AND 
                   flush_coming='0' AND
                   irq='0') THEN 
               latchrw <= '1' ;
               next_state <= Srdopc;
            ELSIF (regnbok = '0' and 
                   reg4free = '0') THEN 
               next_state <= Serror;
            ELSE
               next_state <= Sfull;
            END IF;
         WHEN Sint => 
            latcho <= opc_req;
            if irq_type="00" then inta1<='1';
            end if;
            next_state <= Sintws;
         WHEN Sintws => 
            if irq_type="00" then inta1<='1';
            end if;
            irq_clr <= '1';
            next_state <= Sfull;
         WHEN Sflush2 => 
            latchabus<='1';
            addrplus4<='0'; 
            latchrw <= '1' ;
            muxabus <="01";
            next_state <= Srdopc;
         WHEN OTHERS =>
            next_state <= Sreset;
      END CASE;
   END PROCESS nextstate_proc;
 
   -- Concurrent Statements
   -- Clocked output assignments
   biu_error <= biu_error_cld;
   rwmem3_s <= '1' when (w_biufsm_s='1' and oddflag_s='0') else '0';
END fsm;

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
entity a_table is
  port ( addr  : in std_logic_vector(15 downto 0);
         dout  : out std_logic_vector(2 downto 0));
end a_table;

architecture rtl of a_table is
begin
  process(addr)
  begin 
    case addr is 
       when "1110101100000000" => dout <= "001"; 
       when "1110100100000000" => dout <= "010"; 
       when "1111111111100000" => dout <= "000"; 
       when "1111111100100110" => dout <= "100"; 
       when "1111111100100000" => dout <= "000"; 
       when "1111111101100000" => dout <= "011"; 
       when "1111111110100000" => dout <= "100"; 
       when "1110101000000000" => dout <= "010"; 
       when "1111111100101110" => dout <= "100"; 
       when "1111111100101000" => dout <= "000"; 
       when "1111111101101000" => dout <= "011"; 
       when "1111111110101000" => dout <= "100"; 
       when "1110100000000000" => dout <= "010"; 
       when "1111111111010000" => dout <= "000"; 
       when "1111111100010110" => dout <= "100"; 
       when "1111111100010000" => dout <= "000"; 
       when "1111111101010000" => dout <= "011"; 
       when "1111111110010000" => dout <= "100"; 
       when "1001101000000000" => dout <= "010"; 
       when "1111111100011110" => dout <= "100"; 
       when "1111111100011000" => dout <= "000"; 
       when "1111111101011000" => dout <= "011"; 
       when "1111111110011000" => dout <= "100"; 
       when "1100001100000000" => dout <= "000"; 
       when "1100001000000000" => dout <= "000"; 
       when "1100101100000000" => dout <= "000"; 
       when "1100101000000000" => dout <= "000"; 
       when "0111010000000000" => dout <= "001"; 
       when "0111110000000000" => dout <= "001"; 
       when "0111111000000000" => dout <= "001"; 
       when "0111001000000000" => dout <= "001"; 
       when "0111011000000000" => dout <= "001"; 
       when "0111101000000000" => dout <= "001"; 
       when "0111000000000000" => dout <= "001"; 
       when "0111100000000000" => dout <= "001"; 
       when "0111010100000000" => dout <= "001"; 
       when "0111110100000000" => dout <= "001"; 
       when "0111111100000000" => dout <= "001"; 
       when "0111001100000000" => dout <= "001"; 
       when "0111011100000000" => dout <= "001"; 
       when "0111101100000000" => dout <= "001"; 
       when "0111000100000000" => dout <= "001"; 
       when "0111100100000000" => dout <= "001"; 
       when "1110001100000000" => dout <= "001"; 
       when "1110001000000000" => dout <= "001"; 
       when "1110000100000000" => dout <= "001"; 
       when "1110000000000000" => dout <= "001"; 
       when "1100110100000000" => dout <= "101"; 
       when "1100110000000000" => dout <= "110"; 
       when "1100111000000000" => dout <= "111"; 
       when "1100111100000000" => dout <= "000"; 
       when "1111100000000000" => dout <= "000"; 
       when "1111010100000000" => dout <= "000"; 
       when "1111100100000000" => dout <= "000"; 
       when "1111110000000000" => dout <= "000"; 
       when "1111110100000000" => dout <= "000"; 
       when "1111101000000000" => dout <= "000"; 
       when "1111101100000000" => dout <= "000"; 
       when "1111010000000000" => dout <= "000"; 
       when "1001101100000000" => dout <= "000"; 
       when "1111000000000000" => dout <= "000"; 
       when "1001000000000000" => dout <= "000"; 
       when "0010011000000000" => dout <= "000"; 
       when "0010111000000000" => dout <= "000"; 
       when "0011011000000000" => dout <= "000"; 
       when "0011111000000000" => dout <= "000"; 
       when "1000100011000000" => dout <= "000"; 
       when "1000100000000000" => dout <= "000"; 
       when "1000100001000000" => dout <= "011"; 
       when "1000100010000000" => dout <= "100"; 
       when "1000100000000110" => dout <= "100"; 
       when "1000100111000000" => dout <= "000"; 
       when "1000100100000000" => dout <= "000"; 
       when "1000100101000000" => dout <= "011"; 
       when "1000100110000000" => dout <= "100"; 
       when "1000100100000110" => dout <= "100"; 
       when "1000101011000000" => dout <= "000"; 
       when "1000101000000000" => dout <= "000"; 
       when "1000101001000000" => dout <= "011"; 
       when "1000101010000000" => dout <= "100"; 
       when "1000101000000110" => dout <= "100"; 
       when "1000101111000000" => dout <= "000"; 
       when "1000101100000000" => dout <= "000"; 
       when "1000101101000000" => dout <= "011"; 
       when "1000101110000000" => dout <= "100"; 
       when "1000101100000110" => dout <= "100"; 
       when "1100011000000000" => dout <= "000"; 
       when "1100011001000000" => dout <= "011"; 
       when "1100011010000000" => dout <= "100"; 
       when "1100011000000110" => dout <= "100"; 
       when "1100011100000000" => dout <= "000"; 
       when "1100011101000000" => dout <= "011"; 
       when "1100011110000000" => dout <= "100"; 
       when "1100011100000110" => dout <= "100"; 
       when "1011000000000000" => dout <= "000"; 
       when "1011000100000000" => dout <= "000"; 
       when "1011001000000000" => dout <= "000"; 
       when "1011001100000000" => dout <= "000"; 
       when "1011010000000000" => dout <= "000"; 
       when "1011010100000000" => dout <= "000"; 
       when "1011011000000000" => dout <= "000"; 
       when "1011011100000000" => dout <= "000"; 
       when "1011100000000000" => dout <= "000"; 
       when "1011100100000000" => dout <= "000"; 
       when "1011101000000000" => dout <= "000"; 
       when "1011101100000000" => dout <= "000"; 
       when "1011110000000000" => dout <= "000"; 
       when "1011110100000000" => dout <= "000"; 
       when "1011111000000000" => dout <= "000"; 
       when "1011111100000000" => dout <= "000"; 
       when "1010000000000000" => dout <= "010"; 
       when "1010000100000000" => dout <= "010"; 
       when "1010001000000000" => dout <= "010"; 
       when "1010001100000000" => dout <= "010"; 
       when "1000111011000000" => dout <= "000"; 
       when "1000111000000000" => dout <= "000"; 
       when "1000111001000000" => dout <= "011"; 
       when "1000111010000000" => dout <= "100"; 
       when "1000111000000110" => dout <= "100"; 
       when "1000110011000000" => dout <= "000"; 
       when "1000110000000000" => dout <= "000"; 
       when "1000110001000000" => dout <= "011"; 
       when "1000110010000000" => dout <= "100"; 
       when "1000110000000110" => dout <= "100"; 
       when "1111111100110000" => dout <= "000"; 
       when "1111111101110000" => dout <= "011"; 
       when "1111111110110000" => dout <= "100"; 
       when "1111111100110110" => dout <= "100"; 
       when "0101000000000000" => dout <= "000"; 
       when "0101000100000000" => dout <= "000"; 
       when "0101001000000000" => dout <= "000"; 
       when "0101001100000000" => dout <= "000"; 
       when "0101010000000000" => dout <= "000"; 
       when "0101010100000000" => dout <= "000"; 
       when "0101011000000000" => dout <= "000"; 
       when "0101011100000000" => dout <= "000"; 
       when "0000011000000000" => dout <= "000"; 
       when "0000111000000000" => dout <= "000"; 
       when "0001011000000000" => dout <= "000"; 
       when "0001111000000000" => dout <= "000"; 
       when "1000111100000000" => dout <= "000"; 
       when "1000111101000000" => dout <= "011"; 
       when "1000111110000000" => dout <= "100"; 
       when "1000111100000110" => dout <= "100"; 
       when "1000111111000000" => dout <= "000"; 
       when "0101100000000000" => dout <= "000"; 
       when "0101100100000000" => dout <= "000"; 
       when "0101101000000000" => dout <= "000"; 
       when "0101101100000000" => dout <= "000"; 
       when "0101110000000000" => dout <= "000"; 
       when "0101110100000000" => dout <= "000"; 
       when "0101111000000000" => dout <= "000"; 
       when "0101111100000000" => dout <= "000"; 
       when "0000011100000000" => dout <= "000"; 
       when "0001011100000000" => dout <= "000"; 
       when "0001111100000000" => dout <= "000"; 
       when "1000011011000000" => dout <= "000"; 
       when "1000011000000000" => dout <= "000"; 
       when "1000011001000000" => dout <= "011"; 
       when "1000011010000000" => dout <= "100"; 
       when "1000011000000110" => dout <= "100"; 
       when "1000011111000000" => dout <= "000"; 
       when "1000011100000000" => dout <= "000"; 
       when "1000011101000000" => dout <= "011"; 
       when "1000011110000000" => dout <= "100"; 
       when "1000011100000110" => dout <= "100"; 
       when "1001000100000000" => dout <= "000"; 
       when "1001001000000000" => dout <= "000"; 
       when "1001001100000000" => dout <= "000"; 
       when "1001010000000000" => dout <= "000"; 
       when "1001010100000000" => dout <= "000"; 
       when "1001011000000000" => dout <= "000"; 
       when "1001011100000000" => dout <= "000"; 
       when "1110010000000000" => dout <= "101"; 
       when "1110010100000000" => dout <= "101"; 
       when "1110110000000000" => dout <= "000"; 
       when "1110110100000000" => dout <= "000"; 
       when "1110011000000000" => dout <= "101"; 
       when "1110011100000000" => dout <= "101"; 
       when "1110111100000000" => dout <= "000"; 
       when "1110111000000000" => dout <= "000"; 
       when "1101011100000000" => dout <= "000"; 
       when "1001111100000000" => dout <= "000"; 
       when "1001111000000000" => dout <= "000"; 
       when "1001110000000000" => dout <= "000"; 
       when "1001110100000000" => dout <= "000"; 
       when "1000110100000110" => dout <= "100"; 
       when "1000110111000000" => dout <= "000"; 
       when "1000110100000000" => dout <= "000"; 
       when "1000110101000000" => dout <= "011"; 
       when "1000110110000000" => dout <= "100"; 
       when "1100010100000110" => dout <= "100"; 
       when "1100010100000000" => dout <= "000"; 
       when "1100010101000000" => dout <= "011"; 
       when "1100010110000000" => dout <= "100"; 
       when "1100010000000110" => dout <= "100"; 
       when "1100010000000000" => dout <= "000"; 
       when "1100010001000000" => dout <= "011"; 
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -