git-svn-id: http://moon:8086/svn/vhdl/trunk@1414 cc03376c-175c-47c8-b038-4cd826a8556b
1183 lines
39 KiB
VHDL
1183 lines
39 KiB
VHDL
-------------------------------------------------------------------------
|
|
-- Project: JCPU, a portable 8-bit RISC CPU written in VHDL
|
|
-- This file: loadable ROM
|
|
|
|
-- 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 UNISIM;
|
|
use UNISIM.VComponents.all;
|
|
|
|
library work;
|
|
use work.cpu_pkg.all;
|
|
|
|
ENTITY irom IS
|
|
Port (
|
|
clk : in STD_LOGIC;
|
|
ce : in STD_LOGIC;
|
|
addr : in inst_addr_t;
|
|
dout : out inst_t
|
|
);
|
|
|
|
END irom;
|
|
|
|
ARCHITECTURE loadable OF irom IS
|
|
|
|
-- JASM_ROM_INSERT_HERE
|
|
|
|
-- Assembled from counter.jsm
|
|
type imem_rom_t is array (0 to 1023) of inst_t;
|
|
signal imem_rom : imem_rom_t :=
|
|
(
|
|
"110000" & X"3FF", -- 0x000: JMP 0x3FF
|
|
"111100" & X"000", -- 0x001: PUSH R00
|
|
"111100" & X"001", -- 0x002: PUSH R01
|
|
"111100" & X"002", -- 0x003: PUSH R02
|
|
"111100" & X"003", -- 0x004: PUSH R03
|
|
"111100" & X"004", -- 0x005: PUSH R04
|
|
"111100" & X"005", -- 0x006: PUSH R05
|
|
"111100" & X"006", -- 0x007: PUSH R06
|
|
"111100" & X"007", -- 0x008: PUSH R07
|
|
"111100" & X"008", -- 0x009: PUSH R08
|
|
"111100" & X"009", -- 0x00A: PUSH R09
|
|
"111100" & X"00A", -- 0x00B: PUSH R10
|
|
"111100" & X"00B", -- 0x00C: PUSH R11
|
|
"111100" & X"00C", -- 0x00D: PUSH R12
|
|
"111100" & X"00D", -- 0x00E: PUSH R13
|
|
"111100" & X"00E", -- 0x00F: PUSH R14
|
|
"111100" & X"00F", -- 0x010: PUSH R15
|
|
"101000" & X"060", -- 0x011: XIN R00, (0x06)
|
|
"011001" & X"100", -- 0x012: AND R00, 0x10
|
|
"110001" & X"020", -- 0x013: JZ 0x020
|
|
"101000" & X"020", -- 0x014: XIN R00, (0x02)
|
|
"001111" & X"0D0", -- 0x015: CMP R00, 0x0D
|
|
"111001" & X"01B", -- 0x016: JEQ 0x01B
|
|
"001010" & X"1E1", -- 0x017: MOVC R01, (0x1E)
|
|
"001011" & X"010", -- 0x018: MOVC (R00), R01
|
|
"001111" & X"1D1", -- 0x019: CMP R01, 0x1D
|
|
"110101" & X"01E", -- 0x01A: JLT 0x01E
|
|
"000011" & X"0E1", -- 0x01B: MOV R01, 0x0E
|
|
"010101" & X"011", -- 0x01C: DEC R01
|
|
"001101" & X"1F1", -- 0x01D: MOVC (0x1F), R01
|
|
"010001" & X"011", -- 0x01E: INC R01
|
|
"001101" & X"1E1", -- 0x01F: MOVC (0x1E), R01
|
|
"111011" & X"098", -- 0x020: CALL 0x098
|
|
"111101" & X"00F", -- 0x021: POP R15
|
|
"111101" & X"00E", -- 0x022: POP R14
|
|
"111101" & X"00D", -- 0x023: POP R13
|
|
"111101" & X"00C", -- 0x024: POP R12
|
|
"111101" & X"00B", -- 0x025: POP R11
|
|
"111101" & X"00A", -- 0x026: POP R10
|
|
"111101" & X"009", -- 0x027: POP R09
|
|
"111101" & X"008", -- 0x028: POP R08
|
|
"111101" & X"007", -- 0x029: POP R07
|
|
"111101" & X"006", -- 0x02A: POP R06
|
|
"111101" & X"005", -- 0x02B: POP R05
|
|
"111101" & X"004", -- 0x02C: POP R04
|
|
"111101" & X"003", -- 0x02D: POP R03
|
|
"111101" & X"002", -- 0x02E: POP R02
|
|
"111101" & X"001", -- 0x02F: POP R01
|
|
"111101" & X"000", -- 0x030: POP R00
|
|
"111111" & X"000", -- 0x031: RETI
|
|
"111011" & X"092", -- 0x032: CALL 0x092
|
|
"111011" & X"0C8", -- 0x033: CALL 0x0C8
|
|
"000011" & X"000", -- 0x034: MOV R00, 0x00
|
|
"001101" & X"0C0", -- 0x035: MOVC (0x0C), R00
|
|
"100100" & X"010", -- 0x036: XOUT (0x01), R00
|
|
"001101" & X"1F0", -- 0x037: MOVC (0x1F), R00
|
|
"101000" & X"001", -- 0x038: XIN R01, (0x00)
|
|
"011011" & X"801", -- 0x039: OR R01, 0x80
|
|
"001101" & X"0D1", -- 0x03A: MOVC (0x0D), R01
|
|
"000011" & X"0E0", -- 0x03B: MOV R00, 0x0E
|
|
"001101" & X"1E0", -- 0x03C: MOVC (0x1E), R00
|
|
"000011" & X"040", -- 0x03D: MOV R00, 0x04
|
|
"100101" & X"020", -- 0x03E: XOUT (R00), 0x02
|
|
"100101" & X"030", -- 0x03F: XOUT (R00), 0x03
|
|
"000011" & X"640", -- 0x040: MOV R00, 0x64
|
|
"001101" & X"0C0", -- 0x041: MOVC (0x0C), R00
|
|
"000011" & X"030", -- 0x042: MOV R00, 0x03
|
|
"100110" & X"030", -- 0x043: COUT (0x03), R00
|
|
"000011" & X"010", -- 0x044: MOV R00, 0x01
|
|
"111011" & X"0E5", -- 0x045: CALL 0x0E5
|
|
"000011" & X"001", -- 0x046: MOV R01, 0x00
|
|
"111011" & X"0EA", -- 0x047: CALL 0x0EA
|
|
"101001" & X"000", -- 0x048: CIN R00, (0x00)
|
|
"010001" & X"300", -- 0x049: ADD R00, 0x30
|
|
"111011" & X"0FC", -- 0x04A: CALL 0x0FC
|
|
"000011" & X"000", -- 0x04B: MOV R00, 0x00
|
|
"100110" & X"010", -- 0x04C: COUT (0x01), R00
|
|
"000011" & X"001", -- 0x04D: MOV R01, 0x00
|
|
"001101" & X"201", -- 0x04E: MOVC (0x20), R01
|
|
"000011" & X"010", -- 0x04F: MOV R00, 0x01
|
|
"100110" & X"010", -- 0x050: COUT (0x01), R00
|
|
"000011" & X"AA1", -- 0x051: MOV R01, 0xAA
|
|
"001101" & X"201", -- 0x052: MOVC (0x20), R01
|
|
"000011" & X"000", -- 0x053: MOV R00, 0x00
|
|
"100110" & X"010", -- 0x054: COUT (0x01), R00
|
|
"001010" & X"200", -- 0x055: MOVC R00, (0x20)
|
|
"001111" & X"AA0", -- 0x056: CMP R00, 0xAA
|
|
"111001" & X"05D", -- 0x057: JEQ 0x05D
|
|
"000011" & X"010", -- 0x058: MOV R00, 0x01
|
|
"100110" & X"010", -- 0x059: COUT (0x01), R00
|
|
"001010" & X"200", -- 0x05A: MOVC R00, (0x20)
|
|
"001111" & X"AA0", -- 0x05B: CMP R00, 0xAA
|
|
"111001" & X"05E", -- 0x05C: JEQ 0x05E
|
|
"110000" & X"05D", -- 0x05D: JMP 0x05D
|
|
"000011" & X"000", -- 0x05E: MOV R00, 0x00
|
|
"100110" & X"010", -- 0x05F: COUT (0x01), R00
|
|
"000001" & X"000", -- 0x060: HALT
|
|
"001010" & X"0C0", -- 0x061: MOVC R00, (0x0C)
|
|
"010101" & X"010", -- 0x062: DEC R00
|
|
"001101" & X"0C0", -- 0x063: MOVC (0x0C), R00
|
|
"110010" & X"060", -- 0x064: JNZ 0x060
|
|
"000011" & X"647", -- 0x065: MOV R07, 0x64
|
|
"001010" & X"041", -- 0x066: MOVC R01, (0x04)
|
|
"001010" & X"052", -- 0x067: MOVC R02, (0x05)
|
|
"101010" & X"001", -- 0x068: SWAP R01
|
|
"011100" & X"021", -- 0x069: XOR R01, R02
|
|
"011001" & X"021", -- 0x06A: AND R01, 0x02
|
|
"110010" & X"06F", -- 0x06B: JNZ 0x06F
|
|
"010101" & X"017", -- 0x06C: DEC R07
|
|
"000011" & X"2D0", -- 0x06D: MOV R00, 0x2D
|
|
"110000" & X"071", -- 0x06E: JMP 0x071
|
|
"010001" & X"017", -- 0x06F: INC R07
|
|
"000011" & X"2B0", -- 0x070: MOV R00, 0x2B
|
|
"001101" & X"0C7", -- 0x071: MOVC (0x0C), R07
|
|
"111011" & X"0BA", -- 0x072: CALL 0x0BA
|
|
"001010" & X"0D0", -- 0x073: MOVC R00, (0x0D)
|
|
"100000" & X"000", -- 0x074: ROL R00
|
|
"001101" & X"0D0", -- 0x075: MOVC (0x0D), R00
|
|
"100100" & X"010", -- 0x076: XOUT (0x01), R00
|
|
"001010" & X"1F0", -- 0x077: MOVC R00, (0x1F)
|
|
"000011" & X"001", -- 0x078: MOV R01, 0x00
|
|
"001101" & X"1F1", -- 0x079: MOVC (0x1F), R01
|
|
"001111" & X"000", -- 0x07A: TST R00
|
|
"110001" & X"082", -- 0x07B: JZ 0x082
|
|
"000011" & X"0E1", -- 0x07C: MOV R01, 0x0E
|
|
"001001" & X"010", -- 0x07D: MOVC R00, (R01)
|
|
"111011" & X"0FC", -- 0x07E: CALL 0x0FC
|
|
"010001" & X"011", -- 0x07F: INC R01
|
|
"001111" & X"1D1", -- 0x080: CMP R01, 0x1D
|
|
"110111" & X"07D", -- 0x081: JLE 0x07D
|
|
"111011" & X"0A2", -- 0x082: CALL 0x0A2
|
|
"000011" & X"C00", -- 0x083: MOV R00, 0xC0
|
|
"111011" & X"0E5", -- 0x084: CALL 0x0E5
|
|
"000011" & X"0B1", -- 0x085: MOV R01, 0x0B
|
|
"001001" & X"010", -- 0x086: MOVC R00, (R01)
|
|
"111011" & X"0BA", -- 0x087: CALL 0x0BA
|
|
"111011" & X"0FC", -- 0x088: CALL 0x0FC
|
|
"001111" & X"041", -- 0x089: CMP R01, 0x04
|
|
"111001" & X"08D", -- 0x08A: JEQ 0x08D
|
|
"010101" & X"011", -- 0x08B: DEC R01
|
|
"110000" & X"086", -- 0x08C: JMP 0x086
|
|
"000011" & X"0D0", -- 0x08D: MOV R00, 0x0D
|
|
"111011" & X"0BA", -- 0x08E: CALL 0x0BA
|
|
"000011" & X"0A0", -- 0x08F: MOV R00, 0x0A
|
|
"111011" & X"0BA", -- 0x090: CALL 0x0BA
|
|
"110000" & X"060", -- 0x091: JMP 0x060
|
|
"000011" & X"000", -- 0x092: MOV R00, 0x00
|
|
"001101" & X"000", -- 0x093: MOVC (0x00), R00
|
|
"001101" & X"010", -- 0x094: MOVC (0x01), R00
|
|
"001101" & X"020", -- 0x095: MOVC (0x02), R00
|
|
"001101" & X"030", -- 0x096: MOVC (0x03), R00
|
|
"111110" & X"000", -- 0x097: RET
|
|
"000011" & X"000", -- 0x098: MOV R00, 0x00
|
|
"001001" & X"001", -- 0x099: MOVC R01, (R00)
|
|
"010001" & X"011", -- 0x09A: INC R01
|
|
"001011" & X"001", -- 0x09B: MOVC (R01), R00
|
|
"110100" & X"0A1", -- 0x09C: JNC 0x0A1
|
|
"001111" & X"030", -- 0x09D: CMP R00, 0x03
|
|
"111001" & X"0A1", -- 0x09E: JEQ 0x0A1
|
|
"010001" & X"010", -- 0x09F: INC R00
|
|
"110000" & X"099", -- 0x0A0: JMP 0x099
|
|
"111110" & X"000", -- 0x0A1: RET
|
|
"000011" & X"042", -- 0x0A2: MOV R02, 0x04
|
|
"000011" & X"000", -- 0x0A3: MOV R00, 0x00
|
|
"001001" & X"001", -- 0x0A4: MOVC R01, (R00)
|
|
"011001" & X"0F1", -- 0x0A5: AND R01, 0x0F
|
|
"001111" & X"0A1", -- 0x0A6: CMP R01, 0x0A
|
|
"110101" & X"0A9", -- 0x0A7: JLT 0x0A9
|
|
"010001" & X"071", -- 0x0A8: ADD R01, 0x07
|
|
"010001" & X"301", -- 0x0A9: ADD R01, 0x30
|
|
"001011" & X"021", -- 0x0AA: MOVC (R01), R02
|
|
"010001" & X"012", -- 0x0AB: INC R02
|
|
"001001" & X"001", -- 0x0AC: MOVC R01, (R00)
|
|
"101010" & X"001", -- 0x0AD: SWAP R01
|
|
"011001" & X"0F1", -- 0x0AE: AND R01, 0x0F
|
|
"001111" & X"0A1", -- 0x0AF: CMP R01, 0x0A
|
|
"110101" & X"0B2", -- 0x0B0: JLT 0x0B2
|
|
"010001" & X"071", -- 0x0B1: ADD R01, 0x07
|
|
"010001" & X"301", -- 0x0B2: ADD R01, 0x30
|
|
"001011" & X"021", -- 0x0B3: MOVC (R01), R02
|
|
"001111" & X"030", -- 0x0B4: CMP R00, 0x03
|
|
"111001" & X"0B9", -- 0x0B5: JEQ 0x0B9
|
|
"010001" & X"010", -- 0x0B6: INC R00
|
|
"010001" & X"012", -- 0x0B7: INC R02
|
|
"110000" & X"0A4", -- 0x0B8: JMP 0x0A4
|
|
"111110" & X"000", -- 0x0B9: RET
|
|
"111100" & X"001", -- 0x0BA: PUSH R01
|
|
"101000" & X"061", -- 0x0BB: XIN R01, (0x06)
|
|
"011001" & X"021", -- 0x0BC: AND R01, 0x02
|
|
"110010" & X"0BB", -- 0x0BD: JNZ 0x0BB
|
|
"100100" & X"020", -- 0x0BE: XOUT (0x02), R00
|
|
"111101" & X"001", -- 0x0BF: POP R01
|
|
"111110" & X"000", -- 0x0C0: RET
|
|
"111100" & X"001", -- 0x0C1: PUSH R01
|
|
"101000" & X"061", -- 0x0C2: XIN R01, (0x06)
|
|
"011001" & X"101", -- 0x0C3: AND R01, 0x10
|
|
"110010" & X"0C2", -- 0x0C4: JNZ 0x0C2
|
|
"101000" & X"020", -- 0x0C5: XIN R00, (0x02)
|
|
"111101" & X"001", -- 0x0C6: POP R01
|
|
"111110" & X"000", -- 0x0C7: RET
|
|
"000011" & X"002", -- 0x0C8: MOV R02, 0x00
|
|
"000011" & X"030", -- 0x0C9: MOV R00, 0x03
|
|
"111011" & X"114", -- 0x0CA: CALL 0x114
|
|
"111011" & X"147", -- 0x0CB: CALL 0x147
|
|
"000011" & X"002", -- 0x0CC: MOV R02, 0x00
|
|
"000011" & X"030", -- 0x0CD: MOV R00, 0x03
|
|
"111011" & X"114", -- 0x0CE: CALL 0x114
|
|
"111011" & X"147", -- 0x0CF: CALL 0x147
|
|
"000011" & X"002", -- 0x0D0: MOV R02, 0x00
|
|
"000011" & X"020", -- 0x0D1: MOV R00, 0x02
|
|
"111011" & X"114", -- 0x0D2: CALL 0x114
|
|
"111011" & X"14E", -- 0x0D3: CALL 0x14E
|
|
"000011" & X"280", -- 0x0D4: MOV R00, 0x28
|
|
"111011" & X"0E5", -- 0x0D5: CALL 0x0E5
|
|
"000011" & X"0C0", -- 0x0D6: MOV R00, 0x0C
|
|
"111011" & X"0E5", -- 0x0D7: CALL 0x0E5
|
|
"000011" & X"060", -- 0x0D8: MOV R00, 0x06
|
|
"111011" & X"0E5", -- 0x0D9: CALL 0x0E5
|
|
"000011" & X"010", -- 0x0DA: MOV R00, 0x01
|
|
"111011" & X"0E5", -- 0x0DB: CALL 0x0E5
|
|
"111110" & X"000", -- 0x0DC: RET
|
|
"111100" & X"000", -- 0x0DD: PUSH R00
|
|
"111011" & X"108", -- 0x0DE: CALL 0x108
|
|
"011001" & X"800", -- 0x0DF: AND R00, 0x80
|
|
"110001" & X"0E3", -- 0x0E0: JZ 0x0E3
|
|
"111011" & X"165", -- 0x0E1: CALL 0x165
|
|
"110000" & X"0DE", -- 0x0E2: JMP 0x0DE
|
|
"111101" & X"000", -- 0x0E3: POP R00
|
|
"111110" & X"000", -- 0x0E4: RET
|
|
"111100" & X"002", -- 0x0E5: PUSH R02
|
|
"000011" & X"002", -- 0x0E6: MOV R02, 0x00
|
|
"111011" & X"101", -- 0x0E7: CALL 0x101
|
|
"111101" & X"002", -- 0x0E8: POP R02
|
|
"111110" & X"000", -- 0x0E9: RET
|
|
"111100" & X"000", -- 0x0EA: PUSH R00
|
|
"000100" & X"010", -- 0x0EB: MOVX R00, (R01)
|
|
"010001" & X"011", -- 0x0EC: INC R01
|
|
"001111" & X"000", -- 0x0ED: TST R00
|
|
"110001" & X"0F1", -- 0x0EE: JZ 0x0F1
|
|
"111011" & X"0FC", -- 0x0EF: CALL 0x0FC
|
|
"110000" & X"0EB", -- 0x0F0: JMP 0x0EB
|
|
"111101" & X"000", -- 0x0F1: POP R00
|
|
"111110" & X"000", -- 0x0F2: RET
|
|
"111100" & X"000", -- 0x0F3: PUSH R00
|
|
"001001" & X"010", -- 0x0F4: MOVC R00, (R01)
|
|
"010001" & X"011", -- 0x0F5: INC R01
|
|
"001111" & X"000", -- 0x0F6: TST R00
|
|
"110001" & X"0FA", -- 0x0F7: JZ 0x0FA
|
|
"111011" & X"0FC", -- 0x0F8: CALL 0x0FC
|
|
"110000" & X"0F4", -- 0x0F9: JMP 0x0F4
|
|
"111101" & X"000", -- 0x0FA: POP R00
|
|
"111110" & X"000", -- 0x0FB: RET
|
|
"111100" & X"002", -- 0x0FC: PUSH R02
|
|
"000011" & X"402", -- 0x0FD: MOV R02, 0x40
|
|
"111011" & X"101", -- 0x0FE: CALL 0x101
|
|
"111101" & X"002", -- 0x0FF: POP R02
|
|
"111110" & X"000", -- 0x100: RET
|
|
"111011" & X"0DD", -- 0x101: CALL 0x0DD
|
|
"111100" & X"000", -- 0x102: PUSH R00
|
|
"101010" & X"000", -- 0x103: SWAP R00
|
|
"111011" & X"114", -- 0x104: CALL 0x114
|
|
"111101" & X"000", -- 0x105: POP R00
|
|
"111011" & X"114", -- 0x106: CALL 0x114
|
|
"111110" & X"000", -- 0x107: RET
|
|
"111100" & X"002", -- 0x108: PUSH R02
|
|
"000011" & X"002", -- 0x109: MOV R02, 0x00
|
|
"111011" & X"10D", -- 0x10A: CALL 0x10D
|
|
"111101" & X"002", -- 0x10B: POP R02
|
|
"111110" & X"000", -- 0x10C: RET
|
|
"111011" & X"127", -- 0x10D: CALL 0x127
|
|
"101010" & X"000", -- 0x10E: SWAP R00
|
|
"111100" & X"000", -- 0x10F: PUSH R00
|
|
"111011" & X"127", -- 0x110: CALL 0x127
|
|
"111101" & X"002", -- 0x111: POP R02
|
|
"011010" & X"020", -- 0x112: OR R00, R02
|
|
"111110" & X"000", -- 0x113: RET
|
|
"111100" & X"001", -- 0x114: PUSH R01
|
|
"011001" & X"0F0", -- 0x115: AND R00, 0x0F
|
|
"000010" & X"001", -- 0x116: MOV R01, R00
|
|
"011010" & X"021", -- 0x117: OR R01, R02
|
|
"100100" & X"031", -- 0x118: XOUT (0x03), R01
|
|
"111011" & X"165", -- 0x119: CALL 0x165
|
|
"000010" & X"001", -- 0x11A: MOV R01, R00
|
|
"011010" & X"021", -- 0x11B: OR R01, R02
|
|
"011011" & X"801", -- 0x11C: OR R01, 0x80
|
|
"100100" & X"031", -- 0x11D: XOUT (0x03), R01
|
|
"111011" & X"165", -- 0x11E: CALL 0x165
|
|
"000010" & X"001", -- 0x11F: MOV R01, R00
|
|
"011010" & X"021", -- 0x120: OR R01, R02
|
|
"100100" & X"031", -- 0x121: XOUT (0x03), R01
|
|
"111011" & X"165", -- 0x122: CALL 0x165
|
|
"011011" & X"201", -- 0x123: OR R01, 0x20
|
|
"100100" & X"031", -- 0x124: XOUT (0x03), R01
|
|
"111101" & X"001", -- 0x125: POP R01
|
|
"111110" & X"000", -- 0x126: RET
|
|
"111100" & X"001", -- 0x127: PUSH R01
|
|
"000011" & X"201", -- 0x128: MOV R01, 0x20
|
|
"011010" & X"021", -- 0x129: OR R01, R02
|
|
"100100" & X"031", -- 0x12A: XOUT (0x03), R01
|
|
"111011" & X"165", -- 0x12B: CALL 0x165
|
|
"000011" & X"201", -- 0x12C: MOV R01, 0x20
|
|
"011010" & X"021", -- 0x12D: OR R01, R02
|
|
"011011" & X"801", -- 0x12E: OR R01, 0x80
|
|
"100100" & X"031", -- 0x12F: XOUT (0x03), R01
|
|
"111011" & X"165", -- 0x130: CALL 0x165
|
|
"101000" & X"030", -- 0x131: XIN R00, (0x03)
|
|
"011001" & X"0F0", -- 0x132: AND R00, 0x0F
|
|
"000011" & X"201", -- 0x133: MOV R01, 0x20
|
|
"011010" & X"021", -- 0x134: OR R01, R02
|
|
"100100" & X"031", -- 0x135: XOUT (0x03), R01
|
|
"111011" & X"165", -- 0x136: CALL 0x165
|
|
"111101" & X"001", -- 0x137: POP R01
|
|
"111110" & X"000", -- 0x138: RET
|
|
"111100" & X"00F", -- 0x139: PUSH R15
|
|
"000011" & X"0AF", -- 0x13A: MOV R15, 0x0A
|
|
"111011" & X"140", -- 0x13B: CALL 0x140
|
|
"010101" & X"01F", -- 0x13C: DEC R15
|
|
"110010" & X"13B", -- 0x13D: JNZ 0x13B
|
|
"111101" & X"00F", -- 0x13E: POP R15
|
|
"111110" & X"000", -- 0x13F: RET
|
|
"111100" & X"00F", -- 0x140: PUSH R15
|
|
"000011" & X"0AF", -- 0x141: MOV R15, 0x0A
|
|
"111011" & X"147", -- 0x142: CALL 0x147
|
|
"010101" & X"01F", -- 0x143: DEC R15
|
|
"110010" & X"142", -- 0x144: JNZ 0x142
|
|
"111101" & X"00F", -- 0x145: POP R15
|
|
"111110" & X"000", -- 0x146: RET
|
|
"111100" & X"00F", -- 0x147: PUSH R15
|
|
"000011" & X"0AF", -- 0x148: MOV R15, 0x0A
|
|
"111011" & X"14E", -- 0x149: CALL 0x14E
|
|
"010101" & X"01F", -- 0x14A: DEC R15
|
|
"110010" & X"149", -- 0x14B: JNZ 0x149
|
|
"111101" & X"00F", -- 0x14C: POP R15
|
|
"111110" & X"000", -- 0x14D: RET
|
|
"111100" & X"00F", -- 0x14E: PUSH R15
|
|
"000011" & X"0AF", -- 0x14F: MOV R15, 0x0A
|
|
"111011" & X"155", -- 0x150: CALL 0x155
|
|
"010101" & X"01F", -- 0x151: DEC R15
|
|
"110010" & X"150", -- 0x152: JNZ 0x150
|
|
"111101" & X"00F", -- 0x153: POP R15
|
|
"111110" & X"000", -- 0x154: RET
|
|
"111100" & X"00F", -- 0x155: PUSH R15
|
|
"000011" & X"0AF", -- 0x156: MOV R15, 0x0A
|
|
"111011" & X"15C", -- 0x157: CALL 0x15C
|
|
"010101" & X"01F", -- 0x158: DEC R15
|
|
"110010" & X"157", -- 0x159: JNZ 0x157
|
|
"111101" & X"00F", -- 0x15A: POP R15
|
|
"111110" & X"000", -- 0x15B: RET
|
|
"111100" & X"00F", -- 0x15C: PUSH R15
|
|
"000011" & X"63F", -- 0x15D: MOV R15, 0x63
|
|
"000000" & X"000", -- 0x15E: NOP
|
|
"000000" & X"000", -- 0x15F: NOP
|
|
"000000" & X"000", -- 0x160: NOP
|
|
"010101" & X"01F", -- 0x161: DEC R15
|
|
"110010" & X"15E", -- 0x162: JNZ 0x15E
|
|
"111101" & X"00F", -- 0x163: POP R15
|
|
"111110" & X"000", -- 0x164: RET
|
|
"111100" & X"00F", -- 0x165: PUSH R15
|
|
"000011" & X"09F", -- 0x166: MOV R15, 0x09
|
|
"000000" & X"000", -- 0x167: NOP
|
|
"000000" & X"000", -- 0x168: NOP
|
|
"000000" & X"000", -- 0x169: NOP
|
|
"010101" & X"01F", -- 0x16A: DEC R15
|
|
"110010" & X"167", -- 0x16B: JNZ 0x167
|
|
"111101" & X"00F", -- 0x16C: POP R15
|
|
"111110" & X"000", -- 0x16D: RET
|
|
"000000" & X"000", -- 0x16E:
|
|
"000000" & X"000", -- 0x16F:
|
|
"000000" & X"000", -- 0x170:
|
|
"000000" & X"000", -- 0x171:
|
|
"000000" & X"000", -- 0x172:
|
|
"000000" & X"000", -- 0x173:
|
|
"000000" & X"000", -- 0x174:
|
|
"000000" & X"000", -- 0x175:
|
|
"000000" & X"000", -- 0x176:
|
|
"000000" & X"000", -- 0x177:
|
|
"000000" & X"000", -- 0x178:
|
|
"000000" & X"000", -- 0x179:
|
|
"000000" & X"000", -- 0x17A:
|
|
"000000" & X"000", -- 0x17B:
|
|
"000000" & X"000", -- 0x17C:
|
|
"000000" & X"000", -- 0x17D:
|
|
"000000" & X"000", -- 0x17E:
|
|
"000000" & X"000", -- 0x17F:
|
|
"000000" & X"000", -- 0x180:
|
|
"000000" & X"000", -- 0x181:
|
|
"000000" & X"000", -- 0x182:
|
|
"000000" & X"000", -- 0x183:
|
|
"000000" & X"000", -- 0x184:
|
|
"000000" & X"000", -- 0x185:
|
|
"000000" & X"000", -- 0x186:
|
|
"000000" & X"000", -- 0x187:
|
|
"000000" & X"000", -- 0x188:
|
|
"000000" & X"000", -- 0x189:
|
|
"000000" & X"000", -- 0x18A:
|
|
"000000" & X"000", -- 0x18B:
|
|
"000000" & X"000", -- 0x18C:
|
|
"000000" & X"000", -- 0x18D:
|
|
"000000" & X"000", -- 0x18E:
|
|
"000000" & X"000", -- 0x18F:
|
|
"000000" & X"000", -- 0x190:
|
|
"000000" & X"000", -- 0x191:
|
|
"000000" & X"000", -- 0x192:
|
|
"000000" & X"000", -- 0x193:
|
|
"000000" & X"000", -- 0x194:
|
|
"000000" & X"000", -- 0x195:
|
|
"000000" & X"000", -- 0x196:
|
|
"000000" & X"000", -- 0x197:
|
|
"000000" & X"000", -- 0x198:
|
|
"000000" & X"000", -- 0x199:
|
|
"000000" & X"000", -- 0x19A:
|
|
"000000" & X"000", -- 0x19B:
|
|
"000000" & X"000", -- 0x19C:
|
|
"000000" & X"000", -- 0x19D:
|
|
"000000" & X"000", -- 0x19E:
|
|
"000000" & X"000", -- 0x19F:
|
|
"000000" & X"000", -- 0x1A0:
|
|
"000000" & X"000", -- 0x1A1:
|
|
"000000" & X"000", -- 0x1A2:
|
|
"000000" & X"000", -- 0x1A3:
|
|
"000000" & X"000", -- 0x1A4:
|
|
"000000" & X"000", -- 0x1A5:
|
|
"000000" & X"000", -- 0x1A6:
|
|
"000000" & X"000", -- 0x1A7:
|
|
"000000" & X"000", -- 0x1A8:
|
|
"000000" & X"000", -- 0x1A9:
|
|
"000000" & X"000", -- 0x1AA:
|
|
"000000" & X"000", -- 0x1AB:
|
|
"000000" & X"000", -- 0x1AC:
|
|
"000000" & X"000", -- 0x1AD:
|
|
"000000" & X"000", -- 0x1AE:
|
|
"000000" & X"000", -- 0x1AF:
|
|
"000000" & X"000", -- 0x1B0:
|
|
"000000" & X"000", -- 0x1B1:
|
|
"000000" & X"000", -- 0x1B2:
|
|
"000000" & X"000", -- 0x1B3:
|
|
"000000" & X"000", -- 0x1B4:
|
|
"000000" & X"000", -- 0x1B5:
|
|
"000000" & X"000", -- 0x1B6:
|
|
"000000" & X"000", -- 0x1B7:
|
|
"000000" & X"000", -- 0x1B8:
|
|
"000000" & X"000", -- 0x1B9:
|
|
"000000" & X"000", -- 0x1BA:
|
|
"000000" & X"000", -- 0x1BB:
|
|
"000000" & X"000", -- 0x1BC:
|
|
"000000" & X"000", -- 0x1BD:
|
|
"000000" & X"000", -- 0x1BE:
|
|
"000000" & X"000", -- 0x1BF:
|
|
"000000" & X"000", -- 0x1C0:
|
|
"000000" & X"000", -- 0x1C1:
|
|
"000000" & X"000", -- 0x1C2:
|
|
"000000" & X"000", -- 0x1C3:
|
|
"000000" & X"000", -- 0x1C4:
|
|
"000000" & X"000", -- 0x1C5:
|
|
"000000" & X"000", -- 0x1C6:
|
|
"000000" & X"000", -- 0x1C7:
|
|
"000000" & X"000", -- 0x1C8:
|
|
"000000" & X"000", -- 0x1C9:
|
|
"000000" & X"000", -- 0x1CA:
|
|
"000000" & X"000", -- 0x1CB:
|
|
"000000" & X"000", -- 0x1CC:
|
|
"000000" & X"000", -- 0x1CD:
|
|
"000000" & X"000", -- 0x1CE:
|
|
"000000" & X"000", -- 0x1CF:
|
|
"000000" & X"000", -- 0x1D0:
|
|
"000000" & X"000", -- 0x1D1:
|
|
"000000" & X"000", -- 0x1D2:
|
|
"000000" & X"000", -- 0x1D3:
|
|
"000000" & X"000", -- 0x1D4:
|
|
"000000" & X"000", -- 0x1D5:
|
|
"000000" & X"000", -- 0x1D6:
|
|
"000000" & X"000", -- 0x1D7:
|
|
"000000" & X"000", -- 0x1D8:
|
|
"000000" & X"000", -- 0x1D9:
|
|
"000000" & X"000", -- 0x1DA:
|
|
"000000" & X"000", -- 0x1DB:
|
|
"000000" & X"000", -- 0x1DC:
|
|
"000000" & X"000", -- 0x1DD:
|
|
"000000" & X"000", -- 0x1DE:
|
|
"000000" & X"000", -- 0x1DF:
|
|
"000000" & X"000", -- 0x1E0:
|
|
"000000" & X"000", -- 0x1E1:
|
|
"000000" & X"000", -- 0x1E2:
|
|
"000000" & X"000", -- 0x1E3:
|
|
"000000" & X"000", -- 0x1E4:
|
|
"000000" & X"000", -- 0x1E5:
|
|
"000000" & X"000", -- 0x1E6:
|
|
"000000" & X"000", -- 0x1E7:
|
|
"000000" & X"000", -- 0x1E8:
|
|
"000000" & X"000", -- 0x1E9:
|
|
"000000" & X"000", -- 0x1EA:
|
|
"000000" & X"000", -- 0x1EB:
|
|
"000000" & X"000", -- 0x1EC:
|
|
"000000" & X"000", -- 0x1ED:
|
|
"000000" & X"000", -- 0x1EE:
|
|
"000000" & X"000", -- 0x1EF:
|
|
"000000" & X"000", -- 0x1F0:
|
|
"000000" & X"000", -- 0x1F1:
|
|
"000000" & X"000", -- 0x1F2:
|
|
"000000" & X"000", -- 0x1F3:
|
|
"000000" & X"000", -- 0x1F4:
|
|
"000000" & X"000", -- 0x1F5:
|
|
"000000" & X"000", -- 0x1F6:
|
|
"000000" & X"000", -- 0x1F7:
|
|
"000000" & X"000", -- 0x1F8:
|
|
"000000" & X"000", -- 0x1F9:
|
|
"000000" & X"000", -- 0x1FA:
|
|
"000000" & X"000", -- 0x1FB:
|
|
"000000" & X"000", -- 0x1FC:
|
|
"000000" & X"000", -- 0x1FD:
|
|
"000000" & X"000", -- 0x1FE:
|
|
"000000" & X"000", -- 0x1FF:
|
|
"000000" & X"000", -- 0x200:
|
|
"000000" & X"000", -- 0x201:
|
|
"000000" & X"000", -- 0x202:
|
|
"000000" & X"000", -- 0x203:
|
|
"000000" & X"000", -- 0x204:
|
|
"000000" & X"000", -- 0x205:
|
|
"000000" & X"000", -- 0x206:
|
|
"000000" & X"000", -- 0x207:
|
|
"000000" & X"000", -- 0x208:
|
|
"000000" & X"000", -- 0x209:
|
|
"000000" & X"000", -- 0x20A:
|
|
"000000" & X"000", -- 0x20B:
|
|
"000000" & X"000", -- 0x20C:
|
|
"000000" & X"000", -- 0x20D:
|
|
"000000" & X"000", -- 0x20E:
|
|
"000000" & X"000", -- 0x20F:
|
|
"000000" & X"000", -- 0x210:
|
|
"000000" & X"000", -- 0x211:
|
|
"000000" & X"000", -- 0x212:
|
|
"000000" & X"000", -- 0x213:
|
|
"000000" & X"000", -- 0x214:
|
|
"000000" & X"000", -- 0x215:
|
|
"000000" & X"000", -- 0x216:
|
|
"000000" & X"000", -- 0x217:
|
|
"000000" & X"000", -- 0x218:
|
|
"000000" & X"000", -- 0x219:
|
|
"000000" & X"000", -- 0x21A:
|
|
"000000" & X"000", -- 0x21B:
|
|
"000000" & X"000", -- 0x21C:
|
|
"000000" & X"000", -- 0x21D:
|
|
"000000" & X"000", -- 0x21E:
|
|
"000000" & X"000", -- 0x21F:
|
|
"000000" & X"000", -- 0x220:
|
|
"000000" & X"000", -- 0x221:
|
|
"000000" & X"000", -- 0x222:
|
|
"000000" & X"000", -- 0x223:
|
|
"000000" & X"000", -- 0x224:
|
|
"000000" & X"000", -- 0x225:
|
|
"000000" & X"000", -- 0x226:
|
|
"000000" & X"000", -- 0x227:
|
|
"000000" & X"000", -- 0x228:
|
|
"000000" & X"000", -- 0x229:
|
|
"000000" & X"000", -- 0x22A:
|
|
"000000" & X"000", -- 0x22B:
|
|
"000000" & X"000", -- 0x22C:
|
|
"000000" & X"000", -- 0x22D:
|
|
"000000" & X"000", -- 0x22E:
|
|
"000000" & X"000", -- 0x22F:
|
|
"000000" & X"000", -- 0x230:
|
|
"000000" & X"000", -- 0x231:
|
|
"000000" & X"000", -- 0x232:
|
|
"000000" & X"000", -- 0x233:
|
|
"000000" & X"000", -- 0x234:
|
|
"000000" & X"000", -- 0x235:
|
|
"000000" & X"000", -- 0x236:
|
|
"000000" & X"000", -- 0x237:
|
|
"000000" & X"000", -- 0x238:
|
|
"000000" & X"000", -- 0x239:
|
|
"000000" & X"000", -- 0x23A:
|
|
"000000" & X"000", -- 0x23B:
|
|
"000000" & X"000", -- 0x23C:
|
|
"000000" & X"000", -- 0x23D:
|
|
"000000" & X"000", -- 0x23E:
|
|
"000000" & X"000", -- 0x23F:
|
|
"000000" & X"000", -- 0x240:
|
|
"000000" & X"000", -- 0x241:
|
|
"000000" & X"000", -- 0x242:
|
|
"000000" & X"000", -- 0x243:
|
|
"000000" & X"000", -- 0x244:
|
|
"000000" & X"000", -- 0x245:
|
|
"000000" & X"000", -- 0x246:
|
|
"000000" & X"000", -- 0x247:
|
|
"000000" & X"000", -- 0x248:
|
|
"000000" & X"000", -- 0x249:
|
|
"000000" & X"000", -- 0x24A:
|
|
"000000" & X"000", -- 0x24B:
|
|
"000000" & X"000", -- 0x24C:
|
|
"000000" & X"000", -- 0x24D:
|
|
"000000" & X"000", -- 0x24E:
|
|
"000000" & X"000", -- 0x24F:
|
|
"000000" & X"000", -- 0x250:
|
|
"000000" & X"000", -- 0x251:
|
|
"000000" & X"000", -- 0x252:
|
|
"000000" & X"000", -- 0x253:
|
|
"000000" & X"000", -- 0x254:
|
|
"000000" & X"000", -- 0x255:
|
|
"000000" & X"000", -- 0x256:
|
|
"000000" & X"000", -- 0x257:
|
|
"000000" & X"000", -- 0x258:
|
|
"000000" & X"000", -- 0x259:
|
|
"000000" & X"000", -- 0x25A:
|
|
"000000" & X"000", -- 0x25B:
|
|
"000000" & X"000", -- 0x25C:
|
|
"000000" & X"000", -- 0x25D:
|
|
"000000" & X"000", -- 0x25E:
|
|
"000000" & X"000", -- 0x25F:
|
|
"000000" & X"000", -- 0x260:
|
|
"000000" & X"000", -- 0x261:
|
|
"000000" & X"000", -- 0x262:
|
|
"000000" & X"000", -- 0x263:
|
|
"000000" & X"000", -- 0x264:
|
|
"000000" & X"000", -- 0x265:
|
|
"000000" & X"000", -- 0x266:
|
|
"000000" & X"000", -- 0x267:
|
|
"000000" & X"000", -- 0x268:
|
|
"000000" & X"000", -- 0x269:
|
|
"000000" & X"000", -- 0x26A:
|
|
"000000" & X"000", -- 0x26B:
|
|
"000000" & X"000", -- 0x26C:
|
|
"000000" & X"000", -- 0x26D:
|
|
"000000" & X"000", -- 0x26E:
|
|
"000000" & X"000", -- 0x26F:
|
|
"000000" & X"000", -- 0x270:
|
|
"000000" & X"000", -- 0x271:
|
|
"000000" & X"000", -- 0x272:
|
|
"000000" & X"000", -- 0x273:
|
|
"000000" & X"000", -- 0x274:
|
|
"000000" & X"000", -- 0x275:
|
|
"000000" & X"000", -- 0x276:
|
|
"000000" & X"000", -- 0x277:
|
|
"000000" & X"000", -- 0x278:
|
|
"000000" & X"000", -- 0x279:
|
|
"000000" & X"000", -- 0x27A:
|
|
"000000" & X"000", -- 0x27B:
|
|
"000000" & X"000", -- 0x27C:
|
|
"000000" & X"000", -- 0x27D:
|
|
"000000" & X"000", -- 0x27E:
|
|
"000000" & X"000", -- 0x27F:
|
|
"000000" & X"000", -- 0x280:
|
|
"000000" & X"000", -- 0x281:
|
|
"000000" & X"000", -- 0x282:
|
|
"000000" & X"000", -- 0x283:
|
|
"000000" & X"000", -- 0x284:
|
|
"000000" & X"000", -- 0x285:
|
|
"000000" & X"000", -- 0x286:
|
|
"000000" & X"000", -- 0x287:
|
|
"000000" & X"000", -- 0x288:
|
|
"000000" & X"000", -- 0x289:
|
|
"000000" & X"000", -- 0x28A:
|
|
"000000" & X"000", -- 0x28B:
|
|
"000000" & X"000", -- 0x28C:
|
|
"000000" & X"000", -- 0x28D:
|
|
"000000" & X"000", -- 0x28E:
|
|
"000000" & X"000", -- 0x28F:
|
|
"000000" & X"000", -- 0x290:
|
|
"000000" & X"000", -- 0x291:
|
|
"000000" & X"000", -- 0x292:
|
|
"000000" & X"000", -- 0x293:
|
|
"000000" & X"000", -- 0x294:
|
|
"000000" & X"000", -- 0x295:
|
|
"000000" & X"000", -- 0x296:
|
|
"000000" & X"000", -- 0x297:
|
|
"000000" & X"000", -- 0x298:
|
|
"000000" & X"000", -- 0x299:
|
|
"000000" & X"000", -- 0x29A:
|
|
"000000" & X"000", -- 0x29B:
|
|
"000000" & X"000", -- 0x29C:
|
|
"000000" & X"000", -- 0x29D:
|
|
"000000" & X"000", -- 0x29E:
|
|
"000000" & X"000", -- 0x29F:
|
|
"000000" & X"000", -- 0x2A0:
|
|
"000000" & X"000", -- 0x2A1:
|
|
"000000" & X"000", -- 0x2A2:
|
|
"000000" & X"000", -- 0x2A3:
|
|
"000000" & X"000", -- 0x2A4:
|
|
"000000" & X"000", -- 0x2A5:
|
|
"000000" & X"000", -- 0x2A6:
|
|
"000000" & X"000", -- 0x2A7:
|
|
"000000" & X"000", -- 0x2A8:
|
|
"000000" & X"000", -- 0x2A9:
|
|
"000000" & X"000", -- 0x2AA:
|
|
"000000" & X"000", -- 0x2AB:
|
|
"000000" & X"000", -- 0x2AC:
|
|
"000000" & X"000", -- 0x2AD:
|
|
"000000" & X"000", -- 0x2AE:
|
|
"000000" & X"000", -- 0x2AF:
|
|
"000000" & X"000", -- 0x2B0:
|
|
"000000" & X"000", -- 0x2B1:
|
|
"000000" & X"000", -- 0x2B2:
|
|
"000000" & X"000", -- 0x2B3:
|
|
"000000" & X"000", -- 0x2B4:
|
|
"000000" & X"000", -- 0x2B5:
|
|
"000000" & X"000", -- 0x2B6:
|
|
"000000" & X"000", -- 0x2B7:
|
|
"000000" & X"000", -- 0x2B8:
|
|
"000000" & X"000", -- 0x2B9:
|
|
"000000" & X"000", -- 0x2BA:
|
|
"000000" & X"000", -- 0x2BB:
|
|
"000000" & X"000", -- 0x2BC:
|
|
"000000" & X"000", -- 0x2BD:
|
|
"000000" & X"000", -- 0x2BE:
|
|
"000000" & X"000", -- 0x2BF:
|
|
"000000" & X"000", -- 0x2C0:
|
|
"000000" & X"000", -- 0x2C1:
|
|
"000000" & X"000", -- 0x2C2:
|
|
"000000" & X"000", -- 0x2C3:
|
|
"000000" & X"000", -- 0x2C4:
|
|
"000000" & X"000", -- 0x2C5:
|
|
"000000" & X"000", -- 0x2C6:
|
|
"000000" & X"000", -- 0x2C7:
|
|
"000000" & X"000", -- 0x2C8:
|
|
"000000" & X"000", -- 0x2C9:
|
|
"000000" & X"000", -- 0x2CA:
|
|
"000000" & X"000", -- 0x2CB:
|
|
"000000" & X"000", -- 0x2CC:
|
|
"000000" & X"000", -- 0x2CD:
|
|
"000000" & X"000", -- 0x2CE:
|
|
"000000" & X"000", -- 0x2CF:
|
|
"000000" & X"000", -- 0x2D0:
|
|
"000000" & X"000", -- 0x2D1:
|
|
"000000" & X"000", -- 0x2D2:
|
|
"000000" & X"000", -- 0x2D3:
|
|
"000000" & X"000", -- 0x2D4:
|
|
"000000" & X"000", -- 0x2D5:
|
|
"000000" & X"000", -- 0x2D6:
|
|
"000000" & X"000", -- 0x2D7:
|
|
"000000" & X"000", -- 0x2D8:
|
|
"000000" & X"000", -- 0x2D9:
|
|
"000000" & X"000", -- 0x2DA:
|
|
"000000" & X"000", -- 0x2DB:
|
|
"000000" & X"000", -- 0x2DC:
|
|
"000000" & X"000", -- 0x2DD:
|
|
"000000" & X"000", -- 0x2DE:
|
|
"000000" & X"000", -- 0x2DF:
|
|
"000000" & X"000", -- 0x2E0:
|
|
"000000" & X"000", -- 0x2E1:
|
|
"000000" & X"000", -- 0x2E2:
|
|
"000000" & X"000", -- 0x2E3:
|
|
"000000" & X"000", -- 0x2E4:
|
|
"000000" & X"000", -- 0x2E5:
|
|
"000000" & X"000", -- 0x2E6:
|
|
"000000" & X"000", -- 0x2E7:
|
|
"000000" & X"000", -- 0x2E8:
|
|
"000000" & X"000", -- 0x2E9:
|
|
"000000" & X"000", -- 0x2EA:
|
|
"000000" & X"000", -- 0x2EB:
|
|
"000000" & X"000", -- 0x2EC:
|
|
"000000" & X"000", -- 0x2ED:
|
|
"000000" & X"000", -- 0x2EE:
|
|
"000000" & X"000", -- 0x2EF:
|
|
"000000" & X"000", -- 0x2F0:
|
|
"000000" & X"000", -- 0x2F1:
|
|
"000000" & X"000", -- 0x2F2:
|
|
"000000" & X"000", -- 0x2F3:
|
|
"000000" & X"000", -- 0x2F4:
|
|
"000000" & X"000", -- 0x2F5:
|
|
"000000" & X"000", -- 0x2F6:
|
|
"000000" & X"000", -- 0x2F7:
|
|
"000000" & X"000", -- 0x2F8:
|
|
"000000" & X"000", -- 0x2F9:
|
|
"000000" & X"000", -- 0x2FA:
|
|
"000000" & X"000", -- 0x2FB:
|
|
"000000" & X"000", -- 0x2FC:
|
|
"000000" & X"000", -- 0x2FD:
|
|
"000000" & X"000", -- 0x2FE:
|
|
"000000" & X"000", -- 0x2FF:
|
|
"000000" & X"000", -- 0x300:
|
|
"000000" & X"000", -- 0x301:
|
|
"000000" & X"000", -- 0x302:
|
|
"000000" & X"000", -- 0x303:
|
|
"000000" & X"000", -- 0x304:
|
|
"000000" & X"000", -- 0x305:
|
|
"000000" & X"000", -- 0x306:
|
|
"000000" & X"000", -- 0x307:
|
|
"000000" & X"000", -- 0x308:
|
|
"000000" & X"000", -- 0x309:
|
|
"000000" & X"000", -- 0x30A:
|
|
"000000" & X"000", -- 0x30B:
|
|
"000000" & X"000", -- 0x30C:
|
|
"000000" & X"000", -- 0x30D:
|
|
"000000" & X"000", -- 0x30E:
|
|
"000000" & X"000", -- 0x30F:
|
|
"000000" & X"000", -- 0x310:
|
|
"000000" & X"000", -- 0x311:
|
|
"000000" & X"000", -- 0x312:
|
|
"000000" & X"000", -- 0x313:
|
|
"000000" & X"000", -- 0x314:
|
|
"000000" & X"000", -- 0x315:
|
|
"000000" & X"000", -- 0x316:
|
|
"000000" & X"000", -- 0x317:
|
|
"000000" & X"000", -- 0x318:
|
|
"000000" & X"000", -- 0x319:
|
|
"000000" & X"000", -- 0x31A:
|
|
"000000" & X"000", -- 0x31B:
|
|
"000000" & X"000", -- 0x31C:
|
|
"000000" & X"000", -- 0x31D:
|
|
"000000" & X"000", -- 0x31E:
|
|
"000000" & X"000", -- 0x31F:
|
|
"000000" & X"000", -- 0x320:
|
|
"000000" & X"000", -- 0x321:
|
|
"000000" & X"000", -- 0x322:
|
|
"000000" & X"000", -- 0x323:
|
|
"000000" & X"000", -- 0x324:
|
|
"000000" & X"000", -- 0x325:
|
|
"000000" & X"000", -- 0x326:
|
|
"000000" & X"000", -- 0x327:
|
|
"000000" & X"000", -- 0x328:
|
|
"000000" & X"000", -- 0x329:
|
|
"000000" & X"000", -- 0x32A:
|
|
"000000" & X"000", -- 0x32B:
|
|
"000000" & X"000", -- 0x32C:
|
|
"000000" & X"000", -- 0x32D:
|
|
"000000" & X"000", -- 0x32E:
|
|
"000000" & X"000", -- 0x32F:
|
|
"000000" & X"000", -- 0x330:
|
|
"000000" & X"000", -- 0x331:
|
|
"000000" & X"000", -- 0x332:
|
|
"000000" & X"000", -- 0x333:
|
|
"000000" & X"000", -- 0x334:
|
|
"000000" & X"000", -- 0x335:
|
|
"000000" & X"000", -- 0x336:
|
|
"000000" & X"000", -- 0x337:
|
|
"000000" & X"000", -- 0x338:
|
|
"000000" & X"000", -- 0x339:
|
|
"000000" & X"000", -- 0x33A:
|
|
"000000" & X"000", -- 0x33B:
|
|
"000000" & X"000", -- 0x33C:
|
|
"000000" & X"000", -- 0x33D:
|
|
"000000" & X"000", -- 0x33E:
|
|
"000000" & X"000", -- 0x33F:
|
|
"000000" & X"000", -- 0x340:
|
|
"000000" & X"000", -- 0x341:
|
|
"000000" & X"000", -- 0x342:
|
|
"000000" & X"000", -- 0x343:
|
|
"000000" & X"000", -- 0x344:
|
|
"000000" & X"000", -- 0x345:
|
|
"000000" & X"000", -- 0x346:
|
|
"000000" & X"000", -- 0x347:
|
|
"000000" & X"000", -- 0x348:
|
|
"000000" & X"000", -- 0x349:
|
|
"000000" & X"000", -- 0x34A:
|
|
"000000" & X"000", -- 0x34B:
|
|
"000000" & X"000", -- 0x34C:
|
|
"000000" & X"000", -- 0x34D:
|
|
"000000" & X"000", -- 0x34E:
|
|
"000000" & X"000", -- 0x34F:
|
|
"000000" & X"000", -- 0x350:
|
|
"000000" & X"000", -- 0x351:
|
|
"000000" & X"000", -- 0x352:
|
|
"000000" & X"000", -- 0x353:
|
|
"000000" & X"000", -- 0x354:
|
|
"000000" & X"000", -- 0x355:
|
|
"000000" & X"000", -- 0x356:
|
|
"000000" & X"000", -- 0x357:
|
|
"000000" & X"000", -- 0x358:
|
|
"000000" & X"000", -- 0x359:
|
|
"000000" & X"000", -- 0x35A:
|
|
"000000" & X"000", -- 0x35B:
|
|
"000000" & X"000", -- 0x35C:
|
|
"000000" & X"000", -- 0x35D:
|
|
"000000" & X"000", -- 0x35E:
|
|
"000000" & X"000", -- 0x35F:
|
|
"000000" & X"000", -- 0x360:
|
|
"000000" & X"000", -- 0x361:
|
|
"000000" & X"000", -- 0x362:
|
|
"000000" & X"000", -- 0x363:
|
|
"000000" & X"000", -- 0x364:
|
|
"000000" & X"000", -- 0x365:
|
|
"000000" & X"000", -- 0x366:
|
|
"000000" & X"000", -- 0x367:
|
|
"000000" & X"000", -- 0x368:
|
|
"000000" & X"000", -- 0x369:
|
|
"000000" & X"000", -- 0x36A:
|
|
"000000" & X"000", -- 0x36B:
|
|
"000000" & X"000", -- 0x36C:
|
|
"000000" & X"000", -- 0x36D:
|
|
"000000" & X"000", -- 0x36E:
|
|
"000000" & X"000", -- 0x36F:
|
|
"000000" & X"000", -- 0x370:
|
|
"000000" & X"000", -- 0x371:
|
|
"000000" & X"000", -- 0x372:
|
|
"000000" & X"000", -- 0x373:
|
|
"000000" & X"000", -- 0x374:
|
|
"000000" & X"000", -- 0x375:
|
|
"000000" & X"000", -- 0x376:
|
|
"000000" & X"000", -- 0x377:
|
|
"000000" & X"000", -- 0x378:
|
|
"000000" & X"000", -- 0x379:
|
|
"000000" & X"000", -- 0x37A:
|
|
"000000" & X"000", -- 0x37B:
|
|
"000000" & X"000", -- 0x37C:
|
|
"000000" & X"000", -- 0x37D:
|
|
"000000" & X"000", -- 0x37E:
|
|
"000000" & X"000", -- 0x37F:
|
|
"000000" & X"000", -- 0x380:
|
|
"000000" & X"000", -- 0x381:
|
|
"000000" & X"000", -- 0x382:
|
|
"000000" & X"000", -- 0x383:
|
|
"000000" & X"000", -- 0x384:
|
|
"000000" & X"000", -- 0x385:
|
|
"000000" & X"000", -- 0x386:
|
|
"000000" & X"000", -- 0x387:
|
|
"000000" & X"000", -- 0x388:
|
|
"000000" & X"000", -- 0x389:
|
|
"000000" & X"000", -- 0x38A:
|
|
"000000" & X"000", -- 0x38B:
|
|
"000000" & X"000", -- 0x38C:
|
|
"000000" & X"000", -- 0x38D:
|
|
"000000" & X"000", -- 0x38E:
|
|
"000000" & X"000", -- 0x38F:
|
|
"000000" & X"000", -- 0x390:
|
|
"000000" & X"000", -- 0x391:
|
|
"000000" & X"000", -- 0x392:
|
|
"000000" & X"000", -- 0x393:
|
|
"000000" & X"000", -- 0x394:
|
|
"000000" & X"000", -- 0x395:
|
|
"000000" & X"000", -- 0x396:
|
|
"000000" & X"000", -- 0x397:
|
|
"000000" & X"000", -- 0x398:
|
|
"000000" & X"000", -- 0x399:
|
|
"000000" & X"000", -- 0x39A:
|
|
"000000" & X"000", -- 0x39B:
|
|
"000000" & X"000", -- 0x39C:
|
|
"000000" & X"000", -- 0x39D:
|
|
"000000" & X"000", -- 0x39E:
|
|
"000000" & X"000", -- 0x39F:
|
|
"000000" & X"000", -- 0x3A0:
|
|
"000000" & X"000", -- 0x3A1:
|
|
"000000" & X"000", -- 0x3A2:
|
|
"000000" & X"000", -- 0x3A3:
|
|
"000000" & X"000", -- 0x3A4:
|
|
"000000" & X"000", -- 0x3A5:
|
|
"000000" & X"000", -- 0x3A6:
|
|
"000000" & X"000", -- 0x3A7:
|
|
"000000" & X"000", -- 0x3A8:
|
|
"000000" & X"000", -- 0x3A9:
|
|
"000000" & X"000", -- 0x3AA:
|
|
"000000" & X"000", -- 0x3AB:
|
|
"000000" & X"000", -- 0x3AC:
|
|
"000000" & X"000", -- 0x3AD:
|
|
"000000" & X"000", -- 0x3AE:
|
|
"000000" & X"000", -- 0x3AF:
|
|
"000000" & X"000", -- 0x3B0:
|
|
"000000" & X"000", -- 0x3B1:
|
|
"000000" & X"000", -- 0x3B2:
|
|
"000000" & X"000", -- 0x3B3:
|
|
"000000" & X"000", -- 0x3B4:
|
|
"000000" & X"000", -- 0x3B5:
|
|
"000000" & X"000", -- 0x3B6:
|
|
"000000" & X"000", -- 0x3B7:
|
|
"000000" & X"000", -- 0x3B8:
|
|
"000000" & X"000", -- 0x3B9:
|
|
"000000" & X"000", -- 0x3BA:
|
|
"000000" & X"000", -- 0x3BB:
|
|
"000000" & X"000", -- 0x3BC:
|
|
"000000" & X"000", -- 0x3BD:
|
|
"000000" & X"000", -- 0x3BE:
|
|
"000000" & X"000", -- 0x3BF:
|
|
"000000" & X"000", -- 0x3C0:
|
|
"000000" & X"000", -- 0x3C1:
|
|
"000000" & X"000", -- 0x3C2:
|
|
"000000" & X"000", -- 0x3C3:
|
|
"000000" & X"000", -- 0x3C4:
|
|
"000000" & X"000", -- 0x3C5:
|
|
"000000" & X"000", -- 0x3C6:
|
|
"000000" & X"000", -- 0x3C7:
|
|
"000000" & X"000", -- 0x3C8:
|
|
"000000" & X"000", -- 0x3C9:
|
|
"000000" & X"000", -- 0x3CA:
|
|
"000000" & X"000", -- 0x3CB:
|
|
"000000" & X"000", -- 0x3CC:
|
|
"000000" & X"000", -- 0x3CD:
|
|
"000000" & X"000", -- 0x3CE:
|
|
"000000" & X"000", -- 0x3CF:
|
|
"000000" & X"000", -- 0x3D0:
|
|
"000000" & X"000", -- 0x3D1:
|
|
"000000" & X"000", -- 0x3D2:
|
|
"000000" & X"000", -- 0x3D3:
|
|
"000000" & X"000", -- 0x3D4:
|
|
"000000" & X"000", -- 0x3D5:
|
|
"000000" & X"000", -- 0x3D6:
|
|
"000000" & X"000", -- 0x3D7:
|
|
"000000" & X"000", -- 0x3D8:
|
|
"000000" & X"000", -- 0x3D9:
|
|
"000000" & X"000", -- 0x3DA:
|
|
"000000" & X"000", -- 0x3DB:
|
|
"000000" & X"000", -- 0x3DC:
|
|
"000000" & X"000", -- 0x3DD:
|
|
"000000" & X"000", -- 0x3DE:
|
|
"000000" & X"000", -- 0x3DF:
|
|
"000000" & X"000", -- 0x3E0:
|
|
"000000" & X"000", -- 0x3E1:
|
|
"000000" & X"000", -- 0x3E2:
|
|
"000000" & X"000", -- 0x3E3:
|
|
"000000" & X"000", -- 0x3E4:
|
|
"000000" & X"000", -- 0x3E5:
|
|
"000000" & X"000", -- 0x3E6:
|
|
"000000" & X"000", -- 0x3E7:
|
|
"000000" & X"000", -- 0x3E8:
|
|
"000000" & X"000", -- 0x3E9:
|
|
"000000" & X"000", -- 0x3EA:
|
|
"000000" & X"000", -- 0x3EB:
|
|
"000000" & X"000", -- 0x3EC:
|
|
"000000" & X"000", -- 0x3ED:
|
|
"000000" & X"000", -- 0x3EE:
|
|
"000000" & X"000", -- 0x3EF:
|
|
"000000" & X"000", -- 0x3F0:
|
|
"000000" & X"000", -- 0x3F1:
|
|
"000000" & X"000", -- 0x3F2:
|
|
"000000" & X"000", -- 0x3F3:
|
|
"000000" & X"000", -- 0x3F4:
|
|
"000000" & X"000", -- 0x3F5:
|
|
"000000" & X"000", -- 0x3F6:
|
|
"000000" & X"000", -- 0x3F7:
|
|
"000000" & X"000", -- 0x3F8:
|
|
"000000" & X"000", -- 0x3F9:
|
|
"000000" & X"000", -- 0x3FA:
|
|
"000000" & X"000", -- 0x3FB:
|
|
"000000" & X"000", -- 0x3FC:
|
|
"000000" & X"000", -- 0x3FD:
|
|
"000000" & X"000", -- 0x3FE:
|
|
"110000" & X"032" -- 0x3FF: JMP 0x032
|
|
);
|
|
|
|
signal jtag_ld_clk : STD_LOGIC;
|
|
signal jtag_ld_we : STD_LOGIC;
|
|
signal jtag_ld_addr : inst_addr_t;
|
|
signal jtag_ld_dout : inst_t;
|
|
signal jtag_ld_din : inst_t;
|
|
signal bs_rst, bs_sel, bs_shift, bs_tdi, bs_tdo : std_logic;
|
|
signal bs_capture, bs_clk0, bs_clk1, bs_update0, bs_update1 : std_logic;
|
|
signal user_regi, user_rego : unsigned (31 downto 0);
|
|
constant id : unsigned (31 downto 0) := X"BABE" & X"BEEF";
|
|
|
|
begin
|
|
|
|
--------------------------------------------------------------------------
|
|
-- Virtex-4: JTAG Loader
|
|
--------------------------------------------------------------------------
|
|
i00_BUFG : BUFG
|
|
port map
|
|
(
|
|
O => bs_clk1,
|
|
I => bs_clk0
|
|
);
|
|
|
|
i01_BUFG : BUFG
|
|
port map
|
|
(
|
|
O => bs_update1,
|
|
I => bs_update0
|
|
);
|
|
|
|
BSCAN_VIRTEX4_inst1 : BSCAN_VIRTEX4
|
|
generic map
|
|
(
|
|
JTAG_CHAIN => 1 -- Value to set BSCAN site of device. Possible values: (1,2,3 or 4)
|
|
)
|
|
port map
|
|
(
|
|
CAPTURE => bs_capture, -- CAPTURE output from TAP controller
|
|
DRCK => bs_clk0, -- Data register output for USER functions
|
|
RESET => bs_rst, -- Reset output from TAP controller
|
|
SEL => bs_sel, -- USER active output
|
|
SHIFT => bs_shift, -- SHIFT output from TAP controller
|
|
TDI => bs_tdi, -- TDI output from TAP controller
|
|
UPDATE => bs_update0, -- UPDATE output from TAP controller
|
|
TDO => bs_tdo -- Data input for USER function
|
|
);
|
|
|
|
jtag_ld_addr <= user_regi(user_regi'left downto user_regi'left-inst_addr_t'length+1);
|
|
jtag_ld_din <= user_regi(inst_t'length-1 downto 0);
|
|
jtag_ld_clk <= bs_update1;
|
|
jtag_ld_we <= bs_sel;
|
|
|
|
sipo:
|
|
process (bs_rst, bs_clk1, bs_tdi, bs_shift)
|
|
begin
|
|
if bs_rst = '1' then
|
|
user_regi <= (others => '0');
|
|
elsif rising_edge(bs_clk1) then
|
|
if bs_shift = '1' then
|
|
user_regi <= bs_tdi & user_regi(user_regi'left downto 1);
|
|
end if;
|
|
end if;
|
|
end process;
|
|
|
|
piso:
|
|
process (bs_rst, bs_clk1, bs_shift, user_rego)
|
|
begin
|
|
bs_tdo <= user_rego(0);
|
|
if bs_rst = '1' then
|
|
user_rego <= (others => '0');
|
|
elsif rising_edge(bs_clk1) then
|
|
if bs_shift = '1' then
|
|
user_rego <= user_rego(0) & user_rego(user_rego'left downto 1);
|
|
else
|
|
user_rego <= (user_rego'left downto inst_t'length => '0') & jtag_ld_dout;
|
|
-- user_rego <= id;
|
|
end if;
|
|
end if;
|
|
end process;
|
|
|
|
--------------------------------------------------------------------------
|
|
-- ROM Read/Write
|
|
--------------------------------------------------------------------------
|
|
PROM_READ:
|
|
process(clk, ce)
|
|
begin
|
|
if rising_edge(clk) and ce = '1' then
|
|
dout <= imem_rom(to_integer(addr));
|
|
end if;
|
|
end process;
|
|
|
|
PROM_WRITE:
|
|
process(jtag_ld_clk, jtag_ld_we)
|
|
begin
|
|
if rising_edge(jtag_ld_clk) then
|
|
if jtag_ld_we = '1' then
|
|
imem_rom(to_integer(jtag_ld_addr)) <= jtag_ld_din;
|
|
else
|
|
jtag_ld_dout <= imem_rom(to_integer(jtag_ld_addr));
|
|
end if;
|
|
end if;
|
|
end process;
|
|
|
|
--------------------------------------------------------------------------
|
|
end loadable;
|