Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.90 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.numeric_std.all;
  4.  
  5. entity Rejestry is
  6. port
  7. (
  8.             clk : in std_logic;
  9.             DI : in signed (15 downto 0);
  10.             BA : in signed (15 downto 0);
  11.             Sbb : in signed (3 downto 0);
  12.             Sbc : in signed (3 downto 0);
  13.             Sba : in signed (3 downto 0);
  14.             Sid : in signed (2 downto 0);
  15.             Sa : in signed (1 downto 0);
  16.             BB : out signed (15 downto 0);
  17.             BC : out signed (15 downto 0);
  18.             ADR : out signed (31 downto 0);
  19.             IRout : out signed (15 downto 0)
  20. );
  21. end entity;
  22.  
  23. architecture rtl of Rejestry is
  24. begin
  25. process (clk, Sbb, Sbc, Sba, Sid, Sa, DI)
  26.             variable IR, TMP, A, B, C, D, ES,DS,CS: signed (15 downto 0);
  27.             variable AD, PC, SP, ATMP : signed (31 downto 0);
  28.             begin
  29.             if (clk'event and clk='1') then
  30.             case Sid is
  31.                 when "001" => PC := PC + 1;
  32.                 when "010" => SP := SP + 1;
  33.                 when "011" => AD := AD + 1;
  34.                 when "101" => SP := SP + 1;
  35.                 when "110" => AD := AD + 1;
  36.                 when others => null;
  37.             end case;
  38.             case Sba is
  39.                 when "0000" => IR := BA;
  40.                 when "0001" => TMP := BA;
  41.                 when "0010" => A := BA;
  42.                 when "0011" => B := BA;
  43.                 when "0100" => C := BA;
  44.                 when "0101" => D := BA;
  45.                 when "0110" => ES := BA;
  46.                 when "0111" => DS := BA;
  47.                 when "1000" => CS := BA;
  48.                 when "1001" => AD := BA;
  49.                 when "1010" => PC := BA;
  50.                 when "1011" => SP := BA;          
  51.                 when "1100" => ATMP := BA;
  52.                 when others => null;
  53.             end case;
  54.             end if;
  55.             case Sbb is
  56.                 when "0000" => BB <= DI;
  57.                 when "0001" => BB <= TMP;
  58.                 when "0010" => BB <= A;
  59.                 when "0011" => BB <= B;
  60.                 when "0100" => BB <= C;
  61.                 when "0101" => BB <= D;  
  62.                 when others => null;
  63.             end case;
  64.             case Sbc is
  65.                 when "0000" => BC <= DI;
  66.                 when "0001" => BC <= TMP;
  67.                 when "0010" => BC <= A;
  68.                 when "0011" => BC <= B;
  69.                 when "0100" => BC <= C;
  70.                 when "0101" => BC <= D;
  71.                 when others => null;
  72.             end case;
  73.             case Sa is
  74.                 when "000" => ADR <= AD;
  75.                 when "001" => ADR <= PC;
  76.                 when "010" => ADR <= SP;
  77.                 when "011" => ADR <= ATMP;
  78.                 when "100" => ADR <= ES;
  79.                 when "101" => ADR <= DS;      
  80.                 when "110" => ADR <= CS;
  81.             end case;
  82.             IRout <= IR;
  83. end process;
  84. end rtl;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement