git-svn-id: http://moon:8086/svn/vhdl/trunk@1414 cc03376c-175c-47c8-b038-4cd826a8556b
406 lines
16 KiB
VHDL
406 lines
16 KiB
VHDL
-------------------------------------------------------------------------
|
|
-- Project: JCPU, a portable 8-bit RISC CPU written in VHDL
|
|
-- This file: The ROM file for use in your VHDL design
|
|
|
|
-- Copyright (C) 2007 J. Ahrensfeld
|
|
|
|
-- This library is free software; you can redistribute it and/or
|
|
-- modify it under the terms of the GNU Lesser General Public
|
|
-- License as published by the Free Software Foundation; either
|
|
-- version 2.1 of the License, or (at your option) any later version.
|
|
|
|
-- This library 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
|
|
-- Lesser General Public License for more details.
|
|
|
|
-- You should have received a copy of the GNU Lesser General Public
|
|
-- License along with this library; if not, write to the Free Software
|
|
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
-- For questions and ideas, please contact the author at jens@jayfield.org
|
|
|
|
-----------------------------------------------------------------------
|
|
|
|
LIBRARY ieee;
|
|
use IEEE.STD_LOGIC_1164.ALL;
|
|
USE ieee.numeric_std.ALL;
|
|
|
|
library work;
|
|
use work.cpu_pkg.all;
|
|
|
|
-- JASM_ROM_INSERT_HERE
|
|
ENTITY irom IS
|
|
Port (
|
|
clk : in STD_LOGIC;
|
|
ce : in STD_LOGIC;
|
|
addr : in inst_addr_t;
|
|
dout : out inst_t
|
|
);
|
|
END irom;
|
|
|
|
ARCHITECTURE sdr_test OF irom IS
|
|
|
|
type imem_rom_t is array (0 to 342) of inst_t;
|
|
|
|
-- Assembled from sdr_test.jsm
|
|
constant imem_rom : imem_rom_t :=
|
|
(
|
|
"110000" & X"002", -- 0x000: JMP 0x002
|
|
"111111" & X"000", -- 0x001: RETI
|
|
"111011" & X"0B1", -- 0x002: CALL 0x0B1
|
|
"000011" & X"000", -- 0x003: MOV R00, 0x00
|
|
"100100" & X"010", -- 0x004: XOUT (0x01), R00
|
|
"000011" & X"010", -- 0x005: MOV R00, 0x01
|
|
"111011" & X"0CE", -- 0x006: CALL 0x0CE
|
|
"101000" & X"070", -- 0x007: XIN R00, (0x07)
|
|
"100100" & X"010", -- 0x008: XOUT (0x01), R00
|
|
"011001" & X"800", -- 0x009: AND R00, 0x80
|
|
"110010" & X"007", -- 0x00A: JNZ 0x007
|
|
"000011" & X"001", -- 0x00B: MOV R01, 0x00
|
|
"111011" & X"0D3", -- 0x00C: CALL 0x0D3
|
|
"101000" & X"040", -- 0x00D: XIN R00, (0x04)
|
|
"011011" & X"100", -- 0x00E: OR R00, 0x10
|
|
"100100" & X"040", -- 0x00F: XOUT (0x04), R00
|
|
"111011" & X"129", -- 0x010: CALL 0x129
|
|
"011011" & X"200", -- 0x011: OR R00, 0x20
|
|
"100100" & X"040", -- 0x012: XOUT (0x04), R00
|
|
"111011" & X"129", -- 0x013: CALL 0x129
|
|
"011001" & X"EF0", -- 0x014: AND R00, 0xEF
|
|
"100100" & X"040", -- 0x015: XOUT (0x04), R00
|
|
"111011" & X"129", -- 0x016: CALL 0x129
|
|
"011001" & X"CF0", -- 0x017: AND R00, 0xCF
|
|
"100100" & X"040", -- 0x018: XOUT (0x04), R00
|
|
"110000" & X"01A", -- 0x019: JMP 0x01A
|
|
"000011" & X"010", -- 0x01A: MOV R00, 0x01
|
|
"111011" & X"0CE", -- 0x01B: CALL 0x0CE
|
|
"000011" & X"0B1", -- 0x01C: MOV R01, 0x0B
|
|
"111011" & X"0D3", -- 0x01D: CALL 0x0D3
|
|
"111011" & X"07F", -- 0x01E: CALL 0x07F
|
|
"000011" & X"800", -- 0x01F: MOV R00, 0x80
|
|
"000011" & X"08F", -- 0x020: MOV R15, 0x08
|
|
"000111" & X"000", -- 0x021: MOVX (R00), 0x00
|
|
"010001" & X"010", -- 0x022: INC R00
|
|
"010101" & X"01F", -- 0x023: DEC R15
|
|
"110010" & X"021", -- 0x024: JNZ 0x021
|
|
"101000" & X"0A0", -- 0x025: XIN R00, (0x0A)
|
|
"001111" & X"FF0", -- 0x026: CMP R00, 0xFF
|
|
"111001" & X"031", -- 0x027: JEQ 0x031
|
|
"101000" & X"070", -- 0x028: XIN R00, (0x07)
|
|
"100100" & X"010", -- 0x029: XOUT (0x01), R00
|
|
"011001" & X"020", -- 0x02A: AND R00, 0x02
|
|
"110010" & X"028", -- 0x02B: JNZ 0x028
|
|
"000011" & X"070", -- 0x02C: MOV R00, 0x07
|
|
"100101" & X"020", -- 0x02D: XOUT (R00), 0x02
|
|
"000011" & X"020", -- 0x02E: MOV R00, 0x02
|
|
"111011" & X"086", -- 0x02F: CALL 0x086
|
|
"110000" & X"025", -- 0x030: JMP 0x025
|
|
"111011" & X"096", -- 0x031: CALL 0x096
|
|
"111011" & X"122", -- 0x032: CALL 0x122
|
|
"000011" & X"010", -- 0x033: MOV R00, 0x01
|
|
"111011" & X"0CE", -- 0x034: CALL 0x0CE
|
|
"000011" & X"1A1", -- 0x035: MOV R01, 0x1A
|
|
"111011" & X"0D3", -- 0x036: CALL 0x0D3
|
|
"111011" & X"07F", -- 0x037: CALL 0x07F
|
|
"000011" & X"000", -- 0x038: MOV R00, 0x00
|
|
"001101" & X"000", -- 0x039: MOVC (0x00), R00
|
|
"101000" & X"0A0", -- 0x03A: XIN R00, (0x0A)
|
|
"001111" & X"FF0", -- 0x03B: CMP R00, 0xFF
|
|
"111001" & X"051", -- 0x03C: JEQ 0x051
|
|
"001010" & X"001", -- 0x03D: MOVC R01, (0x00)
|
|
"000011" & X"800", -- 0x03E: MOV R00, 0x80
|
|
"000011" & X"08F", -- 0x03F: MOV R15, 0x08
|
|
"000110" & X"001", -- 0x040: MOVX (R01), R00
|
|
"010001" & X"010", -- 0x041: INC R00
|
|
"010001" & X"011", -- 0x042: INC R01
|
|
"010101" & X"01F", -- 0x043: DEC R15
|
|
"110010" & X"040", -- 0x044: JNZ 0x040
|
|
"101000" & X"070", -- 0x045: XIN R00, (0x07)
|
|
"100100" & X"010", -- 0x046: XOUT (0x01), R00
|
|
"011001" & X"020", -- 0x047: AND R00, 0x02
|
|
"110010" & X"045", -- 0x048: JNZ 0x045
|
|
"000011" & X"070", -- 0x049: MOV R00, 0x07
|
|
"100101" & X"020", -- 0x04A: XOUT (R00), 0x02
|
|
"000011" & X"020", -- 0x04B: MOV R00, 0x02
|
|
"111011" & X"086", -- 0x04C: CALL 0x086
|
|
"001010" & X"000", -- 0x04D: MOVC R00, (0x00)
|
|
"010001" & X"010", -- 0x04E: INC R00
|
|
"001101" & X"000", -- 0x04F: MOVC (0x00), R00
|
|
"110000" & X"03A", -- 0x050: JMP 0x03A
|
|
"111011" & X"096", -- 0x051: CALL 0x096
|
|
"111011" & X"122", -- 0x052: CALL 0x122
|
|
"000011" & X"010", -- 0x053: MOV R00, 0x01
|
|
"111011" & X"0CE", -- 0x054: CALL 0x0CE
|
|
"000011" & X"281", -- 0x055: MOV R01, 0x28
|
|
"111011" & X"0D3", -- 0x056: CALL 0x0D3
|
|
"111011" & X"07F", -- 0x057: CALL 0x07F
|
|
"000011" & X"000", -- 0x058: MOV R00, 0x00
|
|
"001101" & X"000", -- 0x059: MOVC (0x00), R00
|
|
"101000" & X"0A0", -- 0x05A: XIN R00, (0x0A)
|
|
"001111" & X"FF0", -- 0x05B: CMP R00, 0xFF
|
|
"111001" & X"073", -- 0x05C: JEQ 0x073
|
|
"000011" & X"070", -- 0x05D: MOV R00, 0x07
|
|
"100101" & X"010", -- 0x05E: XOUT (R00), 0x01
|
|
"101000" & X"070", -- 0x05F: XIN R00, (0x07)
|
|
"100100" & X"010", -- 0x060: XOUT (0x01), R00
|
|
"011001" & X"010", -- 0x061: AND R00, 0x01
|
|
"110010" & X"05F", -- 0x062: JNZ 0x05F
|
|
"001010" & X"001", -- 0x063: MOVC R01, (0x00)
|
|
"000011" & X"800", -- 0x064: MOV R00, 0x80
|
|
"000011" & X"08F", -- 0x065: MOV R15, 0x08
|
|
"000100" & X"002", -- 0x066: MOVX R02, (R00)
|
|
"001110" & X"012", -- 0x067: CMP R02, R01
|
|
"111010" & X"078", -- 0x068: JNE 0x078
|
|
"010001" & X"010", -- 0x069: INC R00
|
|
"010001" & X"011", -- 0x06A: INC R01
|
|
"010101" & X"01F", -- 0x06B: DEC R15
|
|
"110010" & X"066", -- 0x06C: JNZ 0x066
|
|
"000011" & X"020", -- 0x06D: MOV R00, 0x02
|
|
"111011" & X"086", -- 0x06E: CALL 0x086
|
|
"001010" & X"000", -- 0x06F: MOVC R00, (0x00)
|
|
"010001" & X"010", -- 0x070: INC R00
|
|
"001101" & X"000", -- 0x071: MOVC (0x00), R00
|
|
"110000" & X"05A", -- 0x072: JMP 0x05A
|
|
"000011" & X"C00", -- 0x073: MOV R00, 0xC0
|
|
"111011" & X"0CE", -- 0x074: CALL 0x0CE
|
|
"000011" & X"361", -- 0x075: MOV R01, 0x36
|
|
"111011" & X"0D3", -- 0x076: CALL 0x0D3
|
|
"110000" & X"07D", -- 0x077: JMP 0x07D
|
|
"000011" & X"C00", -- 0x078: MOV R00, 0xC0
|
|
"111011" & X"0CE", -- 0x079: CALL 0x0CE
|
|
"000011" & X"401", -- 0x07A: MOV R01, 0x40
|
|
"111011" & X"0D3", -- 0x07B: CALL 0x0D3
|
|
"110000" & X"07D", -- 0x07C: JMP 0x07D
|
|
"111011" & X"122", -- 0x07D: CALL 0x122
|
|
"110000" & X"01A", -- 0x07E: JMP 0x01A
|
|
"111100" & X"000", -- 0x07F: PUSH R00
|
|
"000011" & X"000", -- 0x080: MOV R00, 0x00
|
|
"100100" & X"080", -- 0x081: XOUT (0x08), R00
|
|
"100100" & X"090", -- 0x082: XOUT (0x09), R00
|
|
"100100" & X"0A0", -- 0x083: XOUT (0x0A), R00
|
|
"111101" & X"000", -- 0x084: POP R00
|
|
"111110" & X"000", -- 0x085: RET
|
|
"111100" & X"001", -- 0x086: PUSH R01
|
|
"111100" & X"002", -- 0x087: PUSH R02
|
|
"111100" & X"003", -- 0x088: PUSH R03
|
|
"101000" & X"081", -- 0x089: XIN R01, (0x08)
|
|
"101000" & X"092", -- 0x08A: XIN R02, (0x09)
|
|
"101000" & X"0A3", -- 0x08B: XIN R03, (0x0A)
|
|
"010000" & X"001", -- 0x08C: ADD R01, R00
|
|
"010011" & X"002", -- 0x08D: ADDC R02, 0x00
|
|
"010011" & X"003", -- 0x08E: ADDC R03, 0x00
|
|
"100100" & X"081", -- 0x08F: XOUT (0x08), R01
|
|
"100100" & X"092", -- 0x090: XOUT (0x09), R02
|
|
"100100" & X"0A3", -- 0x091: XOUT (0x0A), R03
|
|
"111101" & X"003", -- 0x092: POP R03
|
|
"111101" & X"002", -- 0x093: POP R02
|
|
"111101" & X"001", -- 0x094: POP R01
|
|
"111110" & X"000", -- 0x095: RET
|
|
"000011" & X"C00", -- 0x096: MOV R00, 0xC0
|
|
"111011" & X"0CE", -- 0x097: CALL 0x0CE
|
|
"101000" & X"0A0", -- 0x098: XIN R00, (0x0A)
|
|
"111011" & X"09F", -- 0x099: CALL 0x09F
|
|
"101000" & X"090", -- 0x09A: XIN R00, (0x09)
|
|
"111011" & X"09F", -- 0x09B: CALL 0x09F
|
|
"101000" & X"080", -- 0x09C: XIN R00, (0x08)
|
|
"111011" & X"09F", -- 0x09D: CALL 0x09F
|
|
"111110" & X"000", -- 0x09E: RET
|
|
"111011" & X"0AA", -- 0x09F: CALL 0x0AA
|
|
"111011" & X"0E5", -- 0x0A0: CALL 0x0E5
|
|
"000010" & X"010", -- 0x0A1: MOV R00, R01
|
|
"111011" & X"0E5", -- 0x0A2: CALL 0x0E5
|
|
"111110" & X"000", -- 0x0A3: RET
|
|
"011001" & X"0F0", -- 0x0A4: AND R00, 0x0F
|
|
"001111" & X"0A0", -- 0x0A5: CMP R00, 0x0A
|
|
"110101" & X"0A8", -- 0x0A6: JLT 0x0A8
|
|
"010001" & X"070", -- 0x0A7: ADD R00, 0x07
|
|
"010001" & X"300", -- 0x0A8: ADD R00, 0x30
|
|
"111110" & X"000", -- 0x0A9: RET
|
|
"111100" & X"000", -- 0x0AA: PUSH R00
|
|
"111011" & X"0A4", -- 0x0AB: CALL 0x0A4
|
|
"000010" & X"001", -- 0x0AC: MOV R01, R00
|
|
"111101" & X"000", -- 0x0AD: POP R00
|
|
"101010" & X"000", -- 0x0AE: SWAP R00
|
|
"111011" & X"0A4", -- 0x0AF: CALL 0x0A4
|
|
"111110" & X"000", -- 0x0B0: RET
|
|
"000011" & X"002", -- 0x0B1: MOV R02, 0x00
|
|
"000011" & X"030", -- 0x0B2: MOV R00, 0x03
|
|
"111011" & X"0FD", -- 0x0B3: CALL 0x0FD
|
|
"111011" & X"130", -- 0x0B4: CALL 0x130
|
|
"000011" & X"002", -- 0x0B5: MOV R02, 0x00
|
|
"000011" & X"030", -- 0x0B6: MOV R00, 0x03
|
|
"111011" & X"0FD", -- 0x0B7: CALL 0x0FD
|
|
"111011" & X"130", -- 0x0B8: CALL 0x130
|
|
"000011" & X"002", -- 0x0B9: MOV R02, 0x00
|
|
"000011" & X"020", -- 0x0BA: MOV R00, 0x02
|
|
"111011" & X"0FD", -- 0x0BB: CALL 0x0FD
|
|
"111011" & X"137", -- 0x0BC: CALL 0x137
|
|
"000011" & X"280", -- 0x0BD: MOV R00, 0x28
|
|
"111011" & X"0CE", -- 0x0BE: CALL 0x0CE
|
|
"000011" & X"0C0", -- 0x0BF: MOV R00, 0x0C
|
|
"111011" & X"0CE", -- 0x0C0: CALL 0x0CE
|
|
"000011" & X"060", -- 0x0C1: MOV R00, 0x06
|
|
"111011" & X"0CE", -- 0x0C2: CALL 0x0CE
|
|
"000011" & X"010", -- 0x0C3: MOV R00, 0x01
|
|
"111011" & X"0CE", -- 0x0C4: CALL 0x0CE
|
|
"111110" & X"000", -- 0x0C5: RET
|
|
"111100" & X"000", -- 0x0C6: PUSH R00
|
|
"111011" & X"0F1", -- 0x0C7: CALL 0x0F1
|
|
"011001" & X"800", -- 0x0C8: AND R00, 0x80
|
|
"110001" & X"0CC", -- 0x0C9: JZ 0x0CC
|
|
"111011" & X"14E", -- 0x0CA: CALL 0x14E
|
|
"110000" & X"0C7", -- 0x0CB: JMP 0x0C7
|
|
"111101" & X"000", -- 0x0CC: POP R00
|
|
"111110" & X"000", -- 0x0CD: RET
|
|
"111100" & X"002", -- 0x0CE: PUSH R02
|
|
"000011" & X"002", -- 0x0CF: MOV R02, 0x00
|
|
"111011" & X"0EA", -- 0x0D0: CALL 0x0EA
|
|
"111101" & X"002", -- 0x0D1: POP R02
|
|
"111110" & X"000", -- 0x0D2: RET
|
|
"111100" & X"000", -- 0x0D3: PUSH R00
|
|
"000100" & X"010", -- 0x0D4: MOVX R00, (R01)
|
|
"010001" & X"011", -- 0x0D5: INC R01
|
|
"001111" & X"000", -- 0x0D6: TST R00
|
|
"110001" & X"0DA", -- 0x0D7: JZ 0x0DA
|
|
"111011" & X"0E5", -- 0x0D8: CALL 0x0E5
|
|
"110000" & X"0D4", -- 0x0D9: JMP 0x0D4
|
|
"111101" & X"000", -- 0x0DA: POP R00
|
|
"111110" & X"000", -- 0x0DB: RET
|
|
"111100" & X"000", -- 0x0DC: PUSH R00
|
|
"001001" & X"010", -- 0x0DD: MOVC R00, (R01)
|
|
"010001" & X"011", -- 0x0DE: INC R01
|
|
"001111" & X"000", -- 0x0DF: TST R00
|
|
"110001" & X"0E3", -- 0x0E0: JZ 0x0E3
|
|
"111011" & X"0E5", -- 0x0E1: CALL 0x0E5
|
|
"110000" & X"0DD", -- 0x0E2: JMP 0x0DD
|
|
"111101" & X"000", -- 0x0E3: POP R00
|
|
"111110" & X"000", -- 0x0E4: RET
|
|
"111100" & X"002", -- 0x0E5: PUSH R02
|
|
"000011" & X"402", -- 0x0E6: MOV R02, 0x40
|
|
"111011" & X"0EA", -- 0x0E7: CALL 0x0EA
|
|
"111101" & X"002", -- 0x0E8: POP R02
|
|
"111110" & X"000", -- 0x0E9: RET
|
|
"111011" & X"0C6", -- 0x0EA: CALL 0x0C6
|
|
"111100" & X"000", -- 0x0EB: PUSH R00
|
|
"101010" & X"000", -- 0x0EC: SWAP R00
|
|
"111011" & X"0FD", -- 0x0ED: CALL 0x0FD
|
|
"111101" & X"000", -- 0x0EE: POP R00
|
|
"111011" & X"0FD", -- 0x0EF: CALL 0x0FD
|
|
"111110" & X"000", -- 0x0F0: RET
|
|
"111100" & X"002", -- 0x0F1: PUSH R02
|
|
"000011" & X"002", -- 0x0F2: MOV R02, 0x00
|
|
"111011" & X"0F6", -- 0x0F3: CALL 0x0F6
|
|
"111101" & X"002", -- 0x0F4: POP R02
|
|
"111110" & X"000", -- 0x0F5: RET
|
|
"111011" & X"110", -- 0x0F6: CALL 0x110
|
|
"101010" & X"000", -- 0x0F7: SWAP R00
|
|
"111100" & X"000", -- 0x0F8: PUSH R00
|
|
"111011" & X"110", -- 0x0F9: CALL 0x110
|
|
"111101" & X"002", -- 0x0FA: POP R02
|
|
"011010" & X"020", -- 0x0FB: OR R00, R02
|
|
"111110" & X"000", -- 0x0FC: RET
|
|
"111100" & X"001", -- 0x0FD: PUSH R01
|
|
"011001" & X"0F0", -- 0x0FE: AND R00, 0x0F
|
|
"000010" & X"001", -- 0x0FF: MOV R01, R00
|
|
"011010" & X"021", -- 0x100: OR R01, R02
|
|
"100100" & X"031", -- 0x101: XOUT (0x03), R01
|
|
"111011" & X"14E", -- 0x102: CALL 0x14E
|
|
"000010" & X"001", -- 0x103: MOV R01, R00
|
|
"011010" & X"021", -- 0x104: OR R01, R02
|
|
"011011" & X"801", -- 0x105: OR R01, 0x80
|
|
"100100" & X"031", -- 0x106: XOUT (0x03), R01
|
|
"111011" & X"14E", -- 0x107: CALL 0x14E
|
|
"000010" & X"001", -- 0x108: MOV R01, R00
|
|
"011010" & X"021", -- 0x109: OR R01, R02
|
|
"100100" & X"031", -- 0x10A: XOUT (0x03), R01
|
|
"111011" & X"14E", -- 0x10B: CALL 0x14E
|
|
"011011" & X"201", -- 0x10C: OR R01, 0x20
|
|
"100100" & X"031", -- 0x10D: XOUT (0x03), R01
|
|
"111101" & X"001", -- 0x10E: POP R01
|
|
"111110" & X"000", -- 0x10F: RET
|
|
"111100" & X"001", -- 0x110: PUSH R01
|
|
"000011" & X"201", -- 0x111: MOV R01, 0x20
|
|
"011010" & X"021", -- 0x112: OR R01, R02
|
|
"100100" & X"031", -- 0x113: XOUT (0x03), R01
|
|
"111011" & X"14E", -- 0x114: CALL 0x14E
|
|
"000011" & X"201", -- 0x115: MOV R01, 0x20
|
|
"011010" & X"021", -- 0x116: OR R01, R02
|
|
"011011" & X"801", -- 0x117: OR R01, 0x80
|
|
"100100" & X"031", -- 0x118: XOUT (0x03), R01
|
|
"111011" & X"14E", -- 0x119: CALL 0x14E
|
|
"101000" & X"030", -- 0x11A: XIN R00, (0x03)
|
|
"011001" & X"0F0", -- 0x11B: AND R00, 0x0F
|
|
"000011" & X"201", -- 0x11C: MOV R01, 0x20
|
|
"011010" & X"021", -- 0x11D: OR R01, R02
|
|
"100100" & X"031", -- 0x11E: XOUT (0x03), R01
|
|
"111011" & X"14E", -- 0x11F: CALL 0x14E
|
|
"111101" & X"001", -- 0x120: POP R01
|
|
"111110" & X"000", -- 0x121: RET
|
|
"111100" & X"00F", -- 0x122: PUSH R15
|
|
"000011" & X"0AF", -- 0x123: MOV R15, 0x0A
|
|
"111011" & X"129", -- 0x124: CALL 0x129
|
|
"010101" & X"01F", -- 0x125: DEC R15
|
|
"110010" & X"124", -- 0x126: JNZ 0x124
|
|
"111101" & X"00F", -- 0x127: POP R15
|
|
"111110" & X"000", -- 0x128: RET
|
|
"111100" & X"00F", -- 0x129: PUSH R15
|
|
"000011" & X"0AF", -- 0x12A: MOV R15, 0x0A
|
|
"111011" & X"130", -- 0x12B: CALL 0x130
|
|
"010101" & X"01F", -- 0x12C: DEC R15
|
|
"110010" & X"12B", -- 0x12D: JNZ 0x12B
|
|
"111101" & X"00F", -- 0x12E: POP R15
|
|
"111110" & X"000", -- 0x12F: RET
|
|
"111100" & X"00F", -- 0x130: PUSH R15
|
|
"000011" & X"0AF", -- 0x131: MOV R15, 0x0A
|
|
"111011" & X"137", -- 0x132: CALL 0x137
|
|
"010101" & X"01F", -- 0x133: DEC R15
|
|
"110010" & X"132", -- 0x134: JNZ 0x132
|
|
"111101" & X"00F", -- 0x135: POP R15
|
|
"111110" & X"000", -- 0x136: RET
|
|
"111100" & X"00F", -- 0x137: PUSH R15
|
|
"000011" & X"0AF", -- 0x138: MOV R15, 0x0A
|
|
"111011" & X"13E", -- 0x139: CALL 0x13E
|
|
"010101" & X"01F", -- 0x13A: DEC R15
|
|
"110010" & X"139", -- 0x13B: JNZ 0x139
|
|
"111101" & X"00F", -- 0x13C: POP R15
|
|
"111110" & X"000", -- 0x13D: RET
|
|
"111100" & X"00F", -- 0x13E: PUSH R15
|
|
"000011" & X"0AF", -- 0x13F: MOV R15, 0x0A
|
|
"111011" & X"145", -- 0x140: CALL 0x145
|
|
"010101" & X"01F", -- 0x141: DEC R15
|
|
"110010" & X"140", -- 0x142: JNZ 0x140
|
|
"111101" & X"00F", -- 0x143: POP R15
|
|
"111110" & X"000", -- 0x144: RET
|
|
"111100" & X"00F", -- 0x145: PUSH R15
|
|
"000011" & X"63F", -- 0x146: MOV R15, 0x63
|
|
"000000" & X"000", -- 0x147: NOP
|
|
"000000" & X"000", -- 0x148: NOP
|
|
"000000" & X"000", -- 0x149: NOP
|
|
"010101" & X"01F", -- 0x14A: DEC R15
|
|
"110010" & X"147", -- 0x14B: JNZ 0x147
|
|
"111101" & X"00F", -- 0x14C: POP R15
|
|
"111110" & X"000", -- 0x14D: RET
|
|
"111100" & X"00F", -- 0x14E: PUSH R15
|
|
"000011" & X"09F", -- 0x14F: MOV R15, 0x09
|
|
"000000" & X"000", -- 0x150: NOP
|
|
"000000" & X"000", -- 0x151: NOP
|
|
"000000" & X"000", -- 0x152: NOP
|
|
"010101" & X"01F", -- 0x153: DEC R15
|
|
"110010" & X"150", -- 0x154: JNZ 0x150
|
|
"111101" & X"00F", -- 0x155: POP R15
|
|
"111110" & X"000" -- 0x156: RET
|
|
);
|
|
|
|
begin
|
|
|
|
PROM_READ:
|
|
process(clk, ce)
|
|
begin
|
|
if rising_edge(clk) and ce = '1' then
|
|
dout <= imem_rom(to_integer(addr));
|
|
end if;
|
|
end process;
|
|
|
|
end sdr_test;
|
|
|