OpenCores
URL https://opencores.org/ocsvn/am9080_cpu_based_on_microcoded_am29xx_bit-slices/am9080_cpu_based_on_microcoded_am29xx_bit-slices/trunk

Subversion Repositories am9080_cpu_based_on_microcoded_am29xx_bit-slices

[/] [am9080_cpu_based_on_microcoded_am29xx_bit-slices/] [trunk/] [Am9080/] [rom32x8.vhd] - Rev 5

Compare with Previous | Blame | View Log

----------------------------------------------------------------------------------
-- Company: 
-- Engineer: 
-- 
-- Create Date: 09/24/2017 01:49:44 PM
-- Design Name: 
-- Module Name: rom32x8 - Behavioral
-- Project Name: 
-- Target Devices: 
-- Tool Versions: 
-- Description: 
-- 
-- Dependencies: 
-- 
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
-- 
----------------------------------------------------------------------------------
 
 
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
 
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
 
-- Uncomment the following library declaration if instantiating
-- any Xilinx leaf cells in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
 
entity rom32x8 is
    Port ( nCS : in STD_LOGIC;
           address : in STD_LOGIC_VECTOR (3 downto 0);
           data : out STD_LOGIC_VECTOR (4 downto 0));
end rom32x8;
 
architecture Behavioral of rom32x8 is
 
signal data_int: std_logic_vector(4 downto 0);
 
begin
 
sequence: process(address)
begin
    case address is
        when "0000" =>
            data_int <= "01000"; -- C
        when "0001" =>
            data_int <= "01001"; -- R
        when "0010" =>
            data_int <= "01011"; -- D
        when "0011" =>
            data_int <= "01001"; -- R
        when "0100" =>
            data_int <= "01000"; -- C
        when "0101" =>
            data_int <= "00101"; -- SBR
        when "0110" =>
            data_int <= "01001"; -- R
        when "0111" =>
            data_int <= "00010"; -- RTN
        when "1000" =>
            data_int <= "11010"; -- F
        when "1001" =>
            data_int <= "00101"; -- SBR
        when "1010" =>
            data_int <= "00000"; -- POP
        when "1011" =>
            data_int <= "00001"; -- PR
        when "1100" =>
            data_int <= "01001"; -- R
        when "1101" =>
            data_int <= "00100"; -- PUSH
        when "1110" =>
            data_int <= "01001"; -- R
        when "1111" =>
            data_int <= "11010"; -- F
        when others =>
            data_int <= "11111";
    end case;
end process;
 
data <= data_int when (nCS = '0') else "ZZZZZ";
 
end Behavioral;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.