Project

General

Profile

« Previous | Next » 

Revision 34

Added by markw over 11 years ago

Add an additional internal rom option - internal_rom=2, which for now just loops reading/writing 4 bytes. e.g. for testing new RAM setups

View differences:

common/a8core/internalromram.vhd
END internalromram;
architecture vhdl of internalromram is
component generic_ram_infer IS
generic
(
ADDRESS_WIDTH : natural := 9;
SPACE : natural := 512;
DATA_WIDTH : natural := 8
);
PORT
(
clock: IN std_logic;
data: IN std_logic_vector (data_width-1 DOWNTO 0);
address: IN std_logic_vector(address_width-1 downto 0);
we: IN std_logic;
q: OUT std_logic_vector (data_width-1 DOWNTO 0)
);
END component;
component os16 IS
PORT
(
address : IN STD_LOGIC_VECTOR (13 DOWNTO 0);
clock : IN STD_LOGIC := '1';
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END component;
component basic IS
PORT
(
address : IN STD_LOGIC_VECTOR (12 DOWNTO 0);
clock : IN STD_LOGIC := '1';
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END component;
signal rom_request_reg : std_logic;
signal ram_request_reg : std_logic;
......
end if;
end process;
gen_internal_os_loop : if internal_rom=2 generate
rom16a : entity work.os16_loop
PORT MAP(clock => clock,
address => rom_addr(13 downto 0),
q => ROM16_data
);
ROM_DATA <= ROM16_DATA;
rom_request_complete <= rom_request_reg;
end generate;
gen_internal_os : if internal_rom=1 generate
rom16a : os16
rom16a : entity work.os16
PORT MAP(clock => clock,
address => rom_addr(13 downto 0),
q => ROM16_data
);
basic1 : basic
basic1 : entity work.basic
PORT MAP(clock => clock,
address => rom_addr(12 downto 0),
q => BASIC_data
......
end generate;
gen_internal_ram: if internal_ram>0 generate
ramint1 : generic_ram_infer
ramint1 : entity work.generic_ram_infer
generic map
(
ADDRESS_WIDTH => 19,
common/a8core/os16_loop.vhdl
--
--ROMsUsingBlockRAMResources.
--VHDLcodeforaROMwithregisteredoutput(template2)
--
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity os16_loop is
port(
clock:in std_logic;
address:in std_logic_vector(13 downto 0);
q:out std_logic_vector(7 downto 0)
);
end os16_loop;
architecture syn of os16_loop is
type rom_type is array(0 to 16383) of std_logic_vector(7 downto 0);
signal ROM:rom_type:=
(
X"a9", --X"a2", -- LDX
X"12", --X"00",
X"8d", --X"e8",
X"01", --X"8a",
X"00", --X"8d",
X"a9", --X"10",
X"34", --X"00",
X"8d", --X"ad",
--
X"02", --X"10",
X"00", --X"00",
X"a9", --X"4c",
X"56", --X"02",
X"8d", --X"c0",
X"03", --X"40",
X"00", --X"8d",
X"a9", --X"0e",
--
X"67", --X"d4",
X"8d", --X"ad",
X"04", --X"13",
X"00", --X"d0",
X"ad", --X"8d",
X"01", --X"fa",
X"00", --X"03",
X"ad", --X"60",
--
X"02", --X"2c",
X"00", --X"0f",
X"ad", --X"d4",
X"03", --X"10",
X"00", --X"03",
X"ad", --X"6c",
X"04", --X"00",
X"00", --X"02",
X"4c", --X"d8",
X"00", --X"48",
X"c0", --X"8a",
X"48",
X"98",
X"48",
X"8d",
X"0f",
X"d4",
X"6c",
X"22",
X"02",
X"d8",
X"6c",
X"16",
X"02",
X"48",
X"ad",
X"0e",
X"d2",
X"29",
X"20",
X"d0",
X"0d",
X"a9",
X"df",
X"8d",
X"0e",
X"d2",
X"a5",
X"10",
X"8d",
X"0e",
X"d2",
X"6c",
X"0a",
X"02",
X"8a",
X"48",
X"ad",
X"ff",
X"d1",
X"2d",
X"49",
X"02",
X"f0",
X"03",
X"6c",
X"38",
X"02",
X"a2",
X"06",
X"bd",
X"cf",
X"c0",
X"e0",
X"05",
X"d0",
X"04",
X"25",
X"10",
X"f0",
X"05",
X"2c",
X"0e",
X"d2",
X"f0",
X"06",
X"ca",
X"10",
X"ed",
X"4c",
X"a0",
X"c0",
X"49",
X"ff",
X"8d",
X"0e",
X"d2",
X"a5",
X"10",
X"8d",
X"0e",
X"d2",
X"e0",
X"00",
X"d0",
X"05",
X"ad",
X"6d",
X"02",
X"d0",
X"23",
X"bd",
X"d7",
X"c0",
X"aa",
X"bd",
X"00",
X"02",
X"8d",
X"8c",
X"02",
X"bd",
X"01",
X"02",
X"8d",
X"8d",
X"02",
X"68",
X"aa",
X"6c",
X"8c",
X"02",
X"a9",
X"00",
X"85",
X"11",
X"8d",
X"ff",
X"02",
X"8d",
X"f0",
X"02",
X"85",
X"4d",
X"68",
X"40",
X"68",
X"aa",
X"2c",
X"02",
X"d3",
X"10",
X"06",
X"ad",
X"00",
X"d3",
X"6c",
X"02",
X"02",
X"2c",
X"03",
X"d3",
X"10",
X"06",
X"ad",
X"01",
X"d3",
X"6c",
X"04",
X"02",
X"68",
X"8d",
X"8c",
X"02",
X"68",
X"48",
X"29",
X"10",
X"f0",
X"07",
X"ad",
X"8c",
X"02",
X"48",
X"6c",
X"06",
X"02",
X"ad",
X"8c",
X"02",
X"48",
X"68",
X"40",
X"80",
X"40",
X"04",
X"02",
X"01",
X"08",
X"10",
X"20",
X"36",
X"08",
X"14",
X"12",
X"10",
X"0e",
X"0c",
X"0a",
X"4c",
X"df",
X"c0",
X"e6",
X"14",
X"d0",
X"08",
X"e6",
X"4d",
X"e6",
X"13",
X"d0",
X"02",
X"e6",
X"12",
X"a9",
X"fe",
X"a2",
X"00",
X"a4",
X"4d",
X"10",
X"06",
X"85",
X"4d",
X"a6",
X"13",
X"a9",
X"f6",
X"85",
X"4e",
X"86",
X"4f",
X"ad",
X"c5",
X"02",
X"45",
X"4f",
X"25",
X"4e",
X"8d",
X"17",
X"d0",
X"a2",
X"00",
X"20",
X"55",
X"c2",
X"d0",
X"03",
X"20",
X"4f",
X"c2",
X"a5",
X"42",
X"d0",
X"08",
X"ba",
X"bd",
X"04",
X"01",
X"29",
X"04",
X"f0",
X"03",
X"4c",
X"8a",
X"c2",
X"ad",
X"13",
X"d0",
X"cd",
X"fa",
X"03",
X"d0",
X"b4",
X"ad",
X"0d",
X"d4",
X"8d",
X"35",
X"02",
X"ad",
X"0c",
X"d4",
X"8d",
X"34",
X"02",
X"ad",
X"31",
X"02",
X"8d",
X"03",
X"d4",
X"ad",
X"30",
X"02",
X"8d",
X"02",
X"d4",
X"ad",
X"2f",
X"02",
X"8d",
X"00",
X"d4",
X"ad",
X"6f",
X"02",
X"8d",
X"1b",
X"d0",
X"ad",
X"6c",
X"02",
X"f0",
X"0e",
X"ce",
X"6c",
X"02",
X"a9",
X"08",
X"38",
X"ed",
X"6c",
X"02",
X"29",
X"07",
X"8d",
X"05",
X"d4",
X"a2",
X"08",
X"8e",
X"1f",
X"d0",
X"58",
X"bd",
X"c0",
X"02",
X"45",
X"4f",
X"25",
X"4e",
X"9d",
X"12",
X"d0",
X"ca",
X"10",
X"f2",
X"ad",
X"f4",
X"02",
X"8d",
X"09",
X"d4",
X"ad",
X"f3",
X"02",
X"8d",
X"01",
X"d4",
X"a2",
X"02",
X"20",
X"55",
X"c2",
X"d0",
X"03",
X"20",
X"52",
X"c2",
X"a2",
X"02",
X"e8",
X"e8",
X"bd",
X"18",
X"02",
X"1d",
X"19",
X"02",
X"f0",
X"06",
X"20",
X"55",
X"c2",
X"9d",
X"26",
X"02",
X"e0",
X"08",
X"d0",
X"ec",
X"ad",
X"0f",
X"d2",
X"29",
X"04",
X"f0",
X"08",
X"ad",
X"f1",
X"02",
X"f0",
X"03",
X"ce",
X"f1",
X"02",
X"ad",
X"2b",
X"02",
X"f0",
X"3e",
X"ad",
X"0f",
X"d2",
X"29",
X"04",
X"d0",
X"32",
X"ce",
X"2b",
X"02",
X"d0",
X"32",
X"ad",
X"6d",
X"02",
X"d0",
X"2d",
X"ad",
X"da",
X"02",
X"8d",
X"2b",
X"02",
X"ad",
X"09",
X"d2",
X"c9",
X"9f",
X"f0",
X"20",
X"c9",
X"83",
X"f0",
X"1c",
X"c9",
X"84",
X"f0",
X"18",
X"c9",
X"94",
X"f0",
X"14",
X"29",
X"3f",
X"c9",
X"11",
X"f0",
X"0e",
X"ad",
X"09",
X"d2",
X"8d",
X"fc",
X"02",
X"4c",
X"f3",
X"c1",
X"a9",
X"00",
X"8d",
X"2b",
X"02",
X"ad",
X"00",
X"d3",
X"4a",
X"4a",
X"4a",
X"4a",
X"8d",
X"79",
X"02",
X"8d",
X"7b",
X"02",
X"ad",
X"00",
X"d3",
X"29",
X"0f",
X"8d",
X"78",
X"02",
X"8d",
X"7a",
X"02",
X"ad",
X"10",
X"d0",
X"8d",
X"84",
X"02",
X"8d",
X"86",
X"02",
X"ad",
X"11",
X"d0",
X"8d",
X"85",
X"02",
X"8d",
X"87",
X"02",
X"a2",
X"03",
X"bd",
X"00",
X"d2",
X"9d",
X"70",
X"02",
X"9d",
X"74",
X"02",
X"ca",
X"10",
X"f4",
X"8d",
X"0b",
X"d2",
X"a2",
X"02",
X"a0",
X"01",
X"b9",
X"78",
X"02",
X"4a",
X"4a",
X"4a",
X"9d",
X"7d",
X"02",
X"9d",
X"81",
X"02",
X"a9",
X"00",
X"2a",
X"9d",
X"7c",
X"02",
X"9d",
X"80",
X"02",
X"ca",
X"ca",
X"88",
X"10",
X"e6",
X"6c",
X"24",
X"02",
X"6c",
X"26",
X"02",
X"6c",
X"28",
X"02",
X"bc",
X"18",
X"02",
X"d0",
X"08",
X"bc",
X"19",
X"02",
X"f0",
X"10",
X"de",
X"19",
X"02",
X"de",
X"18",
X"02",
X"d0",
X"08",
X"bc",
X"19",
X"02",
X"d0",
X"03",
X"a9",
X"00",
X"60",
X"a9",
X"ff",
X"60",
X"0a",
X"8d",
X"2d",
X"02",
X"8a",
X"a2",
X"05",
X"8d",
X"0a",
X"d4",
X"ca",
X"d0",
X"fd",
X"ae",
X"2d",
X"02",
X"9d",
X"17",
X"02",
X"98",
X"9d",
X"16",
X"02",
X"60",
X"68",
X"a8",
X"68",
X"aa",
X"68",
X"40",
X"78",
X"ad",
X"13",
X"d0",
X"cd",
X"fa",
X"03",
X"d0",
X"2f",
X"6a",
X"90",
X"05",
X"20",
X"c9",
X"c4",
X"d0",
X"27",
X"ad",
X"44",
X"02",
X"d0",
X"22",
X"a9",
X"ff",
X"d0",
X"20",
X"78",
X"a2",
X"8c",
X"88",
X"d0",
X"fd",
X"ca",
X"d0",
X"fa",
X"ad",
X"3d",
X"03",
X"c9",
X"5c",
X"d0",
X"0e",
X"ad",
X"3e",
X"03",
X"c9",
X"93",
X"d0",
X"07",
X"ad",
X"3f",
X"03",
X"c9",
X"25",
X"f0",
X"c8",
X"a9",
X"00",
X"85",
X"08",
X"78",
X"d8",
X"a2",
X"ff",
X"9a",
X"20",
X"71",
X"c4",
X"a9",
X"01",
X"85",
X"01",
X"a5",
X"08",
X"d0",
X"52",
X"a9",
X"00",
X"a0",
X"08",
X"85",
X"04",
X"85",
X"05",
X"a9",
X"ff",
X"91",
X"04",
X"d1",
X"04",
X"f0",
X"02",
X"46",
X"01",
X"a9",
X"00",
X"91",
X"04",
X"d1",
X"04",
X"f0",
X"02",
X"46",
X"01",
X"c8",
X"d0",
X"e9",
X"e6",
X"05",
X"a6",
X"05",
X"e4",
X"06",
X"d0",
X"e1",
X"a9",
X"23",
X"85",
X"0a",
X"a9",
X"f2",
X"85",
X"0b",
X"ad",
X"01",
X"d3",
X"29",
X"7f",
X"8d",
X"01",
X"d3",
X"20",
X"73",
X"ff",
X"b0",
X"05",
X"20",
X"92",
X"ff",
X"90",
X"02",
X"46",
X"01",
X"ad",
X"01",
X"d3",
X"09",
X"80",
X"8d",
X"01",
X"d3",
X"a9",
X"ff",
X"8d",
X"44",
X"02",
X"d0",
X"22",
X"a2",
X"00",
X"ad",
X"ec",
X"03",
X"f0",
X"07",
X"8e",
X"0e",
X"00",
X"8e",
X"0f",
X"00",
X"8a",
X"9d",
X"00",
X"02",
X"e0",
X"ed",
X"b0",
X"03",
X"9d",
X"00",
X"03",
X"ca",
X"d0",
X"f3",
X"a2",
X"10",
X"95",
X"00",
X"e8",
X"10",
X"fb",
X"a2",
X"00",
X"ad",
X"01",
X"d3",
X"29",
X"02",
X"f0",
X"01",
X"e8",
X"8e",
X"f8",
X"03",
X"a9",
X"5c",
X"8d",
X"3d",
X"03",
X"a9",
X"93",
X"8d",
X"3e",
X"03",
X"a9",
X"25",
X"8d",
X"3f",
X"03",
X"a9",
X"02",
X"85",
X"52",
X"a9",
X"27",
X"85",
X"53",
X"ad",
X"14",
X"d0",
X"29",
X"0e",
X"d0",
X"08",
X"a9",
X"05",
X"a2",
X"01",
X"a0",
X"28",
X"d0",
X"06",
X"a9",
X"06",
X"a2",
X"00",
X"a0",
X"30",
X"8d",
X"da",
X"02",
X"86",
X"62",
X"8c",
X"d9",
X"02",
X"a2",
X"25",
X"bd",
X"4b",
X"c4",
X"9d",
X"00",
X"02",
X"ca",
X"10",
X"f7",
X"a2",
X"0e",
X"bd",
X"2e",
X"c4",
X"9d",
X"1a",
X"03",
X"ca",
X"10",
X"f7",
X"20",
X"35",
X"c5",
X"58",
X"a5",
X"01",
X"d0",
X"15",
X"ad",
X"01",
X"d3",
X"29",
X"7f",
X"8d",
X"01",
X"d3",
X"a9",
X"02",
X"8d",
X"f3",
X"02",
X"a9",
X"e0",
X"8d",
X"f4",
X"02",
X"4c",
X"03",
X"50",
X"a2",
X"00",
X"86",
X"06",
X"ae",
X"e4",
X"02",
X"e0",
X"b0",
X"b0",
X"0d",
X"ae",
X"fc",
X"bf",
X"d0",
X"08",
X"e6",
X"06",
X"20",
X"c9",
X"c4",
X"20",
X"29",
X"c4",
X"a9",
X"03",
X"a2",
X"00",
X"9d",
X"42",
X"03",
X"a9",
X"48",
X"9d",
X"44",
X"03",
X"a9",
X"c4",
X"9d",
X"45",
X"03",
X"a9",
X"0c",
X"9d",
X"4a",
X"03",
X"20",
X"56",
X"e4",
X"10",
X"03",
X"4c",
X"aa",
X"c2",
X"e8",
X"d0",
X"fd",
X"c8",
X"10",
X"fa",
X"20",
X"6e",
X"c6",
X"a5",
X"06",
X"f0",
X"06",
X"ad",
X"fd",
X"bf",
X"6a",
X"90",
X"06",
X"20",
X"8b",
X"c5",
X"20",
X"39",
X"e7",
X"a9",
X"00",
X"8d",
X"44",
X"02",
X"a5",
X"06",
X"f0",
X"0a",
X"ad",
X"fd",
X"bf",
X"29",
X"04",
X"f0",
X"03",
X"6c",
X"fa",
X"bf",
X"6c",
X"0a",
X"00",
X"6c",
X"fe",
X"bf",
X"18",
X"60",
X"50",
X"30",
X"e4",
X"43",
X"40",
X"e4",
X"45",
X"00",
X"e4",
X"53",
X"10",
X"e4",
X"4b",
X"20",
X"e4",
X"42",
X"4f",
X"4f",
X"54",
X"20",
X"45",
X"52",
X"52",
X"4f",
X"52",
X"9b",
X"45",
X"3a",
X"9b",
X"ce",
X"c0",
X"cd",
X"c0",
X"cd",
X"c0",
X"cd",
X"c0",
X"19",
X"fc",
X"2c",
X"eb",
X"ad",
X"ea",
X"ec",
X"ea",
X"cd",
X"c0",
X"cd",
X"c0",
X"cd",
X"c0",
X"30",
X"c0",
X"00",
X"00",
X"00",
X"00",
X"00",
X"00",
X"00",
X"00",
X"00",
X"00",
X"e2",
X"c0",
X"8a",
X"c2",
X"ad",
X"13",
X"d0",
X"6a",
X"90",
X"0d",
X"ad",
X"fc",
X"bf",
X"d0",
X"08",
X"ad",
X"fd",
X"bf",
X"10",
X"03",
X"6c",
X"fe",
X"bf",
X"20",
X"da",
X"c4",
X"ad",
X"01",
X"d3",
X"09",
X"02",
X"8d",
X"01",
X"d3",
X"a5",
X"08",
X"f0",
X"07",
X"ad",
X"f8",
X"03",
X"d0",
X"11",
X"f0",
X"07",
X"ad",
X"1f",
X"d0",
X"29",
X"04",
X"f0",
X"08",
X"ad",
X"01",
X"d3",
X"29",
X"fd",
X"8d",
X"01",
X"d3",
X"a9",
X"00",
X"a8",
X"85",
X"05",
X"a9",
X"28",
X"85",
X"06",
X"b1",
X"05",
X"49",
X"ff",
X"91",
X"05",
X"d1",
X"05",
X"d0",
X"0c",
X"49",
X"ff",
X"91",
X"05",
X"d1",
X"05",
X"d0",
X"04",
X"e6",
X"06",
X"d0",
X"ea",
X"60",
X"a9",
X"00",
X"aa",
X"18",
X"7d",
X"f0",
X"bf",
X"e8",
X"d0",
X"fa",
X"cd",
X"eb",
X"03",
X"8d",
X"eb",
X"03",
X"60",
X"a9",
X"00",
X"aa",
X"8d",
X"03",
X"d3",
X"9d",
X"00",
X"d0",
X"9d",
X"00",
X"d4",
X"9d",
X"00",
X"d2",
X"e0",
X"01",
X"f0",
X"03",
X"9d",
X"00",
X"d3",
X"e8",
X"d0",
X"ed",
X"a9",
X"3c",
X"8d",
X"03",
X"d3",
X"a9",
X"ff",
X"8d",
X"01",
X"d3",
X"a9",
X"38",
X"8d",
X"02",
X"d3",
X"8d",
X"03",
X"d3",
X"a9",
X"00",
X"8d",
X"00",
X"d3",
X"a9",
X"ff",
X"8d",
X"01",
X"d3",
X"a9",
X"3c",
X"8d",
X"02",
X"d3",
X"8d",
X"03",
X"d3",
X"ad",
X"01",
X"d3",
X"ad",
X"00",
X"d3",
X"a9",
X"22",
X"8d",
X"0f",
X"d2",
X"a9",
X"a0",
X"8d",
X"05",
X"d2",
X"8d",
X"07",
X"d2",
X"a9",
X"28",
X"8d",
X"08",
X"d2",
X"a9",
X"ff",
X"8d",
X"0d",
X"d2",
X"60",
X"c6",
X"11",
X"a9",
X"92",
X"8d",
X"36",
X"02",
X"a9",
X"c0",
X"8d",
X"37",
X"02",
X"a5",
X"06",
X"8d",
X"e4",
X"02",
X"8d",
X"e6",
X"02",
X"a9",
X"00",
X"8d",
X"e5",
X"02",
X"a9",
X"00",
X"8d",
X"e7",
X"02",
X"a9",
X"07",
X"8d",
X"e8",
X"02",
X"20",
X"0c",
X"e4",
X"20",
X"1c",
X"e4",
X"20",
X"2c",
X"e4",
X"20",
X"3c",
X"e4",
X"20",
X"4c",
X"e4",
X"20",
X"6e",
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff