URL
https://opencores.org/ocsvn/lattice6502/lattice6502/trunk
Subversion Repositories lattice6502
[/] [lattice6502/] [ghdl/] [ghdl_rom.vhd] - Rev 2
Compare with Previous | Blame | View Log
------------------------------------------------------------------ -- 6502 ghdl ROM module. -- -- Copyright Ian Chapman October 28 2010 -- -- This file is part of the Lattice 6502 project -- It is used to compile with Linux ghdl not ispLeaver. -- The executable code is pasted into this module. -- -- To do -- Complete. -- -- ************************************************************* -- Distributed under the GNU Lesser General Public License. * -- This can be obtained from “www.gnu.org”. * -- ************************************************************* -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/> -- -- ghdl_rom.vhd -- ****************************************************************************** -- ROM memory is mapped to xFC00 * -- ****************************************************************************** -- ************************************************************************ -- ROM read only memory to test the 65C02 micro * -- IRQ, Reset and NMI at the top of memory * -- Test vectors mapped to my test set up * -- I pulled most it from tutorials, if you use it take care * -- I do not have the copyright and forgot where I got it. * -- I'm sure it's generic. * -- I only use it with ghdl and to make a working FPGA * -- I use the Lattice EBR Embedded Block RAM. If I ever get there. * -- ************************************************************************ library IEEE; --Use standard IEEE libs as recommended by Tristan. use IEEE.STD_LOGIC_1164.ALL; use IEEE.numeric_std.all; entity ghdl_rom is Port ( rom_dat : out unsigned(7 downto 0); clk, rst, wr : in std_logic; address : in unsigned(15 downto 0) ); end ghdl_rom; architecture RTL of ghdl_rom is type RomType is array (natural range <>) of unsigned(7 downto 0); signal add : unsigned(15 downto 0); signal ROM_hi : RomType(0 to 1023) := ( --FC00 -- The filename.bin is pasted here, all of it. X"E8", X"CA", X"E8", X"A2", X"55", X"6C", X"15", X"FC", X"CA", X"E8", X"CA", X"4C", X"00", X"FC", X"A0", X"AA", X"C8", X"88", X"4C", X"08", X"FC", X"0E", X"FC", X"EA", X"40", X"EA", X"40", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"EA", X"00", X"FC", X"17", X"FC", X"00", X"FC", X"19", X"FC" ) ; -- Ths stuff you past in ends here, make sure the close bracket and semi-colon are there. begin addressing:process(clk, address) begin if rst = '0' then add <= (others => '0'); elsif rising_edge(clk) then add <= address; end if; end process; read_rom:process(add, wr) begin if wr = '0' and add(15 downto 10) = "111111" then rom_dat <= unsigned(ROM_hi(to_integer(unsigned(add(9 downto 0))))) ; end if; end process; end RTL ;