Subversion Repositories fpz8
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 1 to Rev 2
- ↔ Reverse comparison
Rev 1 → Rev 2
/* |
WARNING: Do NOT edit the input and output ports in this file in a text |
editor if you plan to continue editing the block that represents it in |
the Block Editor! File corruption is VERY likely to occur. |
*/ |
/* |
Copyright (C) 1991-2010 Altera Corporation |
Your use of Altera Corporation's design tools, logic functions |
and other software and tools, and its AMPP partner logic |
functions, and any output files from any of the foregoing |
(including device programming or simulation files), and any |
associated documentation or information are expressly subject |
to the terms and conditions of the Altera Program License |
Subscription Agreement, Altera MegaCore Function License |
Agreement, or other applicable license agreement, including, |
without limitation, that your use is for the sole purpose of |
programming logic devices manufactured by Altera and sold by |
Altera or its authorized distributors. Please refer to the |
applicable agreement for further details. |
*/ |
(header "graphic" (version "1.3")) |
(pin |
(input) |
(rect 64 96 232 112) |
(text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) |
(text "CLOCK" (rect 9 0 46 12)(font "Arial" )) |
(pt 168 8) |
(drawing |
(line (pt 92 12)(pt 117 12)(line_width 1)) |
(line (pt 92 4)(pt 117 4)(line_width 1)) |
(line (pt 121 8)(pt 168 8)(line_width 1)) |
(line (pt 92 12)(pt 92 4)(line_width 1)) |
(line (pt 117 4)(pt 121 8)(line_width 1)) |
(line (pt 117 12)(pt 121 8)(line_width 1)) |
) |
(text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) |
(annotation_block (location)(rect 16 112 64 128)) |
) |
(pin |
(input) |
(rect 64 112 232 128) |
(text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) |
(text "RESET" (rect 9 0 44 12)(font "Arial" )) |
(pt 168 8) |
(drawing |
(line (pt 92 12)(pt 117 12)(line_width 1)) |
(line (pt 92 4)(pt 117 4)(line_width 1)) |
(line (pt 121 8)(pt 168 8)(line_width 1)) |
(line (pt 92 12)(pt 92 4)(line_width 1)) |
(line (pt 117 4)(pt 121 8)(line_width 1)) |
(line (pt 117 12)(pt 121 8)(line_width 1)) |
) |
(text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) |
(annotation_block (location)(rect 16 128 64 144)) |
) |
(pin |
(input) |
(rect 64 160 232 176) |
(text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) |
(text "DBG_RX" (rect 5 0 48 12)(font "Arial" )) |
(pt 168 8) |
(drawing |
(line (pt 92 12)(pt 117 12)(line_width 1)) |
(line (pt 92 4)(pt 117 4)(line_width 1)) |
(line (pt 121 8)(pt 168 8)(line_width 1)) |
(line (pt 92 12)(pt 92 4)(line_width 1)) |
(line (pt 117 4)(pt 121 8)(line_width 1)) |
(line (pt 117 12)(pt 121 8)(line_width 1)) |
) |
(text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) |
(annotation_block (location)(rect 16 176 64 192)) |
) |
(pin |
(output) |
(rect 40 400 216 416) |
(text "OUTPUT" (rect 137 0 175 10)(font "Arial" (font_size 6))) |
(text "PAOUT[7..0]" (rect 5 0 67 12)(font "Arial" )) |
(pt 176 8) |
(drawing |
(line (pt 176 8)(pt 124 8)(line_width 1)) |
(line (pt 124 4)(pt 98 4)(line_width 1)) |
(line (pt 124 12)(pt 98 12)(line_width 1)) |
(line (pt 124 12)(pt 124 4)(line_width 1)) |
(line (pt 98 4)(pt 94 8)(line_width 1)) |
(line (pt 94 8)(pt 98 12)(line_width 1)) |
(line (pt 98 12)(pt 94 8)(line_width 1)) |
) |
(flipy) |
(annotation_block (location)(rect 216 416 264 528)) |
) |
(pin |
(output) |
(rect 56 176 232 192) |
(text "OUTPUT" (rect 137 6 175 16)(font "Arial" (font_size 6))) |
(text "DBG_TX" (rect 5 4 46 16)(font "Arial" )) |
(pt 176 8) |
(drawing |
(line (pt 176 8)(pt 124 8)(line_width 1)) |
(line (pt 124 12)(pt 98 12)(line_width 1)) |
(line (pt 124 4)(pt 98 4)(line_width 1)) |
(line (pt 124 4)(pt 124 12)(line_width 1)) |
(line (pt 98 12)(pt 94 8)(line_width 1)) |
(line (pt 94 8)(pt 98 4)(line_width 1)) |
(line (pt 98 4)(pt 94 8)(line_width 1)) |
) |
(rotate180) |
(annotation_block (location)(rect 232 192 280 208)) |
) |
(symbol |
(rect 968 88 1032 136) |
(text "AND2" (rect 39 38 63 48)(font "Arial" (font_size 6))) |
(text "inst8" (rect 38 -1 61 11)(font "Arial" )) |
(port |
(pt 64 32) |
(input) |
(text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) |
(text "IN1" (rect 45 29 62 41)(font "Courier New" (bold))(invisible)) |
(line (pt 64 32)(pt 50 32)(line_width 1)) |
) |
(port |
(pt 64 16) |
(input) |
(text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) |
(text "IN2" (rect 45 13 62 25)(font "Courier New" (bold))(invisible)) |
(line (pt 64 16)(pt 50 16)(line_width 1)) |
) |
(port |
(pt 0 24) |
(output) |
(text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) |
(text "OUT" (rect -1 21 16 33)(font "Courier New" (bold))(invisible)) |
(line (pt 22 24)(pt 0 24)(line_width 1)) |
) |
(drawing |
(line (pt 50 36)(pt 34 36)(line_width 1)) |
(line (pt 50 11)(pt 33 11)(line_width 1)) |
(line (pt 50 36)(pt 50 11)(line_width 1)) |
(arc (pt 33 11)(pt 34 36)(rect 21 11 46 36)(line_width 1)) |
) |
(rotate180) |
) |
(symbol |
(rect 280 40 448 440) |
(text "fpz8_cpu_v1" (rect 5 0 68 12)(font "Arial" )) |
(text "inst" (rect 0 384 17 396)(font "Arial" )) |
(port |
(pt 168 64) |
(input) |
(text "IDB[7..0]" (rect 0 0 44 12)(font "Arial" )) |
(text "IDB[7..0]" (rect 100 56 144 68)(font "Arial" )) |
(line (pt 152 64)(pt 168 64)(line_width 3)) |
) |
(port |
(pt 168 144) |
(input) |
(text "MIDB[7..0]" (rect 0 0 53 12)(font "Arial" )) |
(text "MIDB[7..0]" (rect 96 136 149 148)(font "Arial" )) |
(line (pt 152 144)(pt 168 144)(line_width 3)) |
) |
(port |
(pt 168 176) |
(input) |
(text "RIDB[7..0]" (rect 0 0 53 12)(font "Arial" )) |
(text "RIDB[7..0]" (rect 96 168 149 180)(font "Arial" )) |
(line (pt 152 176)(pt 168 176)(line_width 3)) |
) |
(port |
(pt 168 368) |
(input) |
(text "INT0" (rect 0 0 23 12)(font "Arial" )) |
(text "INT0" (rect 121 360 144 372)(font "Arial" )) |
(line (pt 152 368)(pt 168 368)(line_width 1)) |
) |
(port |
(pt 168 352) |
(input) |
(text "INT1" (rect 0 0 23 12)(font "Arial" )) |
(text "INT1" (rect 121 344 144 356)(font "Arial" )) |
(line (pt 152 352)(pt 168 352)(line_width 1)) |
) |
(port |
(pt 168 336) |
(input) |
(text "INT2" (rect 0 0 23 12)(font "Arial" )) |
(text "INT2" (rect 121 328 144 340)(font "Arial" )) |
(line (pt 152 336)(pt 168 336)(line_width 1)) |
) |
(port |
(pt 168 320) |
(input) |
(text "INT3" (rect 0 0 23 12)(font "Arial" )) |
(text "INT3" (rect 121 312 144 324)(font "Arial" )) |
(line (pt 152 320)(pt 168 320)(line_width 1)) |
) |
(port |
(pt 168 304) |
(input) |
(text "INT4" (rect 0 0 23 12)(font "Arial" )) |
(text "INT4" (rect 121 296 144 308)(font "Arial" )) |
(line (pt 152 304)(pt 168 304)(line_width 1)) |
) |
(port |
(pt 168 288) |
(input) |
(text "INT5" (rect 0 0 23 12)(font "Arial" )) |
(text "INT5" (rect 121 280 144 292)(font "Arial" )) |
(line (pt 152 288)(pt 168 288)(line_width 1)) |
) |
(port |
(pt 168 272) |
(input) |
(text "INT6" (rect 0 0 23 12)(font "Arial" )) |
(text "INT6" (rect 121 264 144 276)(font "Arial" )) |
(line (pt 152 272)(pt 168 272)(line_width 1)) |
) |
(port |
(pt 0 128) |
(input) |
(text "DBG_RX" (rect 0 0 43 12)(font "Arial" )) |
(text "DBG_RX" (rect 21 123 64 135)(font "Arial" )) |
(line (pt 0 128)(pt 16 128)(line_width 1)) |
) |
(port |
(pt 0 352) |
(input) |
(text "PAIN[7..0]" (rect 0 0 51 12)(font "Arial" )) |
(text "PAIN[7..0]" (rect 21 347 72 359)(font "Arial" )) |
(line (pt 0 352)(pt 16 352)(line_width 3)) |
) |
(port |
(pt 0 64) |
(input) |
(text "CLK" (rect 0 0 21 12)(font "Arial" )) |
(text "CLK" (rect 21 59 42 71)(font "Arial" )) |
(line (pt 0 64)(pt 16 64)(line_width 1)) |
) |
(port |
(pt 0 80) |
(input) |
(text "RESET" (rect 0 0 35 12)(font "Arial" )) |
(text "RESET" (rect 21 75 56 87)(font "Arial" )) |
(line (pt 0 80)(pt 16 80)(line_width 1)) |
) |
(port |
(pt 168 32) |
(output) |
(text "IAB[15..0]" (rect 0 0 49 12)(font "Arial" )) |
(text "IAB[15..0]" (rect 98 27 147 39)(font "Arial" )) |
(line (pt 168 32)(pt 152 32)(line_width 3)) |
) |
(port |
(pt 168 48) |
(output) |
(text "PWDB[7..0]" (rect 0 0 59 12)(font "Arial" )) |
(text "PWDB[7..0]" (rect 83 40 142 52)(font "Arial" )) |
(line (pt 168 48)(pt 152 48)(line_width 3)) |
) |
(port |
(pt 168 112) |
(output) |
(text "MAB[11..0]" (rect 0 0 54 12)(font "Arial" )) |
(text "MAB[11..0]" (rect 96 104 150 116)(font "Arial" )) |
(line (pt 168 112)(pt 152 112)(line_width 3)) |
) |
(port |
(pt 168 128) |
(output) |
(text "MODB[7..0]" (rect 0 0 57 12)(font "Arial" )) |
(text "MODB[7..0]" (rect 96 120 153 132)(font "Arial" )) |
(line (pt 168 128)(pt 152 128)(line_width 3)) |
) |
(port |
(pt 168 160) |
(output) |
(text "RODB[7..0]" (rect 0 0 57 12)(font "Arial" )) |
(text "RODB[7..0]" (rect 96 152 153 164)(font "Arial" )) |
(line (pt 168 160)(pt 152 160)(line_width 3)) |
) |
(port |
(pt 168 80) |
(output) |
(text "PGM_WR" (rect 0 0 48 12)(font "Arial" )) |
(text "PGM_WR" (rect 94 72 142 84)(font "Arial" )) |
(line (pt 168 80)(pt 152 80)(line_width 1)) |
) |
(port |
(pt 168 208) |
(output) |
(text "WR" (rect 0 0 18 12)(font "Arial" )) |
(text "WR" (rect 124 200 142 212)(font "Arial" )) |
(line (pt 168 208)(pt 152 208)(line_width 1)) |
) |
(port |
(pt 168 240) |
(output) |
(text "REG_SEL" (rect 0 0 49 12)(font "Arial" )) |
(text "REG_SEL" (rect 93 232 142 244)(font "Arial" )) |
(line (pt 168 240)(pt 152 240)(line_width 1)) |
) |
(port |
(pt 168 224) |
(output) |
(text "MEM_SEL" (rect 0 0 49 12)(font "Arial" )) |
(text "MEM_SEL" (rect 93 216 142 228)(font "Arial" )) |
(line (pt 168 224)(pt 152 224)(line_width 1)) |
) |
(port |
(pt 0 144) |
(output) |
(text "DBG_TX" (rect 0 0 41 12)(font "Arial" )) |
(text "DBG_TX" (rect 24 136 65 148)(font "Arial" )) |
(line (pt 16 144)(pt 0 144)(line_width 1)) |
) |
(port |
(pt 0 368) |
(output) |
(text "PAOUT[7..0]" (rect 0 0 62 12)(font "Arial" )) |
(text "PAOUT[7..0]" (rect 24 360 86 372)(font "Arial" )) |
(line (pt 16 368)(pt 0 368)(line_width 3)) |
) |
(port |
(pt 0 48) |
(output) |
(text "CLK_OUT" (rect 0 0 49 12)(font "Arial" )) |
(text "CLK_OUT" (rect 24 40 73 52)(font "Arial" )) |
(line (pt 16 48)(pt 0 48)(line_width 1)) |
) |
(port |
(pt 0 32) |
(output) |
(text "CLK_OUTN" (rect 0 0 57 12)(font "Arial" )) |
(text "CLK_OUTN" (rect 24 24 81 36)(font "Arial" )) |
(line (pt 16 32)(pt 0 32)(line_width 1)) |
) |
(port |
(pt 0 96) |
(output) |
(text "STOP" (rect 0 0 28 12)(font "Arial" )) |
(text "STOP" (rect 24 88 52 100)(font "Arial" )) |
(line (pt 16 96)(pt 0 96)(line_width 1)) |
) |
(drawing |
(rectangle (rect 16 16 152 384)(line_width 1)) |
) |
) |
(symbol |
(rect 1000 -24 1256 88) |
(text "altsyncram1" (rect 93 1 176 17)(font "Arial" (font_size 10))) |
(text "File_Registers" (rect 8 96 78 108)(font "Arial" )) |
(port |
(pt 0 32) |
(input) |
(text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) |
(text "data[7..0]" (rect 4 19 57 33)(font "Arial" (font_size 8))) |
(line (pt 0 32)(pt 112 32)(line_width 3)) |
) |
(port |
(pt 0 48) |
(input) |
(text "address[10..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) |
(text "address[10..0]" (rect 4 35 86 49)(font "Arial" (font_size 8))) |
(line (pt 0 48)(pt 112 48)(line_width 3)) |
) |
(port |
(pt 0 64) |
(input) |
(text "wren" (rect 0 0 30 14)(font "Arial" (font_size 8))) |
(text "wren" (rect 4 51 34 65)(font "Arial" (font_size 8))) |
(line (pt 0 64)(pt 112 64)(line_width 1)) |
) |
(port |
(pt 0 88) |
(input) |
(text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) |
(text "clock" (rect 4 75 33 89)(font "Arial" (font_size 8))) |
(line (pt 0 88)(pt 104 88)(line_width 1)) |
) |
(port |
(pt 256 32) |
(output) |
(text "q[7..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) |
(text "q[7..0]" (rect 223 19 258 33)(font "Arial" (font_size 8))) |
(line (pt 256 32)(pt 168 32)(line_width 3)) |
) |
(drawing |
(text "2048 Word(s)" (rect 136 24 148 90)(font "Arial" )(vertical)) |
(text "RAM" (rect 149 42 161 65)(font "Arial" )(vertical)) |
(text "Block Type: AUTO" (rect 41 92 133 104)(font "Arial" )) |
(line (pt 128 24)(pt 168 24)(line_width 1)) |
(line (pt 168 24)(pt 168 80)(line_width 1)) |
(line (pt 168 80)(pt 128 80)(line_width 1)) |
(line (pt 128 80)(pt 128 24)(line_width 1)) |
(line (pt 112 27)(pt 120 27)(line_width 1)) |
(line (pt 120 27)(pt 120 39)(line_width 1)) |
(line (pt 120 39)(pt 112 39)(line_width 1)) |
(line (pt 112 39)(pt 112 27)(line_width 1)) |
(line (pt 112 34)(pt 114 36)(line_width 1)) |
(line (pt 114 36)(pt 112 38)(line_width 1)) |
(line (pt 104 36)(pt 112 36)(line_width 1)) |
(line (pt 120 32)(pt 128 32)(line_width 3)) |
(line (pt 112 43)(pt 120 43)(line_width 1)) |
(line (pt 120 43)(pt 120 55)(line_width 1)) |
(line (pt 120 55)(pt 112 55)(line_width 1)) |
(line (pt 112 55)(pt 112 43)(line_width 1)) |
(line (pt 112 50)(pt 114 52)(line_width 1)) |
(line (pt 114 52)(pt 112 54)(line_width 1)) |
(line (pt 104 52)(pt 112 52)(line_width 1)) |
(line (pt 120 48)(pt 128 48)(line_width 3)) |
(line (pt 112 59)(pt 120 59)(line_width 1)) |
(line (pt 120 59)(pt 120 71)(line_width 1)) |
(line (pt 120 71)(pt 112 71)(line_width 1)) |
(line (pt 112 71)(pt 112 59)(line_width 1)) |
(line (pt 112 66)(pt 114 68)(line_width 1)) |
(line (pt 114 68)(pt 112 70)(line_width 1)) |
(line (pt 104 68)(pt 112 68)(line_width 1)) |
(line (pt 120 64)(pt 128 64)(line_width 1)) |
(line (pt 104 36)(pt 104 89)(line_width 1)) |
) |
) |
(symbol |
(rect 608 -24 864 88) |
(text "altsyncram2" (rect 168 0 251 16)(font "Arial" (font_size 10))) |
(text "Program_Memory" (rect 8 100 95 112)(font "Arial" )) |
(port |
(pt 0 80) |
(input) |
(text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) |
(text "data[7..0]" (rect 4 79 57 93)(font "Arial" (font_size 8))) |
(line (pt 0 80)(pt 112 80)(line_width 3)) |
) |
(port |
(pt 0 64) |
(input) |
(text "address[13..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) |
(text "address[13..0]" (rect 4 63 86 77)(font "Arial" (font_size 8))) |
(line (pt 0 64)(pt 112 64)(line_width 3)) |
) |
(port |
(pt 0 48) |
(input) |
(text "wren" (rect 0 0 30 14)(font "Arial" (font_size 8))) |
(text "wren" (rect 4 47 34 61)(font "Arial" (font_size 8))) |
(line (pt 0 48)(pt 112 48)(line_width 1)) |
) |
(port |
(pt 0 24) |
(input) |
(text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) |
(text "clock" (rect 4 23 33 37)(font "Arial" (font_size 8))) |
(line (pt 0 24)(pt 104 24)(line_width 1)) |
) |
(port |
(pt 256 80) |
(output) |
(text "q[7..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) |
(text "q[7..0]" (rect 223 79 258 93)(font "Arial" (font_size 8))) |
(line (pt 256 80)(pt 168 80)(line_width 3)) |
) |
(drawing |
(text "16384 Word(s)" (rect 136 20 148 91)(font "Arial" )(vertical)) |
(text "RAM" (rect 149 47 161 70)(font "Arial" )(vertical)) |
(text "Block Type: AUTO" (rect 41 8 133 20)(font "Arial" )) |
(line (pt 128 88)(pt 168 88)(line_width 1)) |
(line (pt 168 88)(pt 168 32)(line_width 1)) |
(line (pt 168 32)(pt 128 32)(line_width 1)) |
(line (pt 128 32)(pt 128 88)(line_width 1)) |
(line (pt 112 85)(pt 120 85)(line_width 1)) |
(line (pt 120 85)(pt 120 73)(line_width 1)) |
(line (pt 120 73)(pt 112 73)(line_width 1)) |
(line (pt 112 73)(pt 112 85)(line_width 1)) |
(line (pt 112 78)(pt 114 76)(line_width 1)) |
(line (pt 114 76)(pt 112 74)(line_width 1)) |
(line (pt 104 76)(pt 112 76)(line_width 1)) |
(line (pt 120 80)(pt 128 80)(line_width 3)) |
(line (pt 112 69)(pt 120 69)(line_width 1)) |
(line (pt 120 69)(pt 120 57)(line_width 1)) |
(line (pt 120 57)(pt 112 57)(line_width 1)) |
(line (pt 112 57)(pt 112 69)(line_width 1)) |
(line (pt 112 62)(pt 114 60)(line_width 1)) |
(line (pt 114 60)(pt 112 58)(line_width 1)) |
(line (pt 104 60)(pt 112 60)(line_width 1)) |
(line (pt 120 64)(pt 128 64)(line_width 3)) |
(line (pt 112 53)(pt 120 53)(line_width 1)) |
(line (pt 120 53)(pt 120 41)(line_width 1)) |
(line (pt 120 41)(pt 112 41)(line_width 1)) |
(line (pt 112 41)(pt 112 53)(line_width 1)) |
(line (pt 112 46)(pt 114 44)(line_width 1)) |
(line (pt 114 44)(pt 112 42)(line_width 1)) |
(line (pt 104 44)(pt 112 44)(line_width 1)) |
(line (pt 120 48)(pt 128 48)(line_width 1)) |
(line (pt 104 76)(pt 104 23)(line_width 1)) |
) |
(flipx) |
) |
(connector |
(pt 880 56) |
(pt 864 56) |
(bus) |
) |
(connector |
(pt 584 -40) |
(pt 888 -40) |
) |
(connector |
(pt 584 -40) |
(pt 584 0) |
) |
(connector |
(pt 968 112) |
(pt 928 112) |
) |
(connector |
(pt 888 -40) |
(pt 888 64) |
) |
(connector |
(pt 928 112) |
(pt 928 40) |
) |
(connector |
(pt 1328 8) |
(pt 1256 8) |
(bus) |
) |
(connector |
(pt 904 8) |
(pt 904 168) |
(bus) |
) |
(connector |
(pt 904 8) |
(pt 1000 8) |
(bus) |
) |
(connector |
(text "MAB[10..0]" (rect 936 8 990 20)(font "Arial" )) |
(pt 920 24) |
(pt 1000 24) |
(bus) |
) |
(connector |
(pt 928 40) |
(pt 1000 40) |
) |
(connector |
(pt 888 64) |
(pt 1000 64) |
) |
(connector |
(pt 232 120) |
(pt 280 120) |
) |
(connector |
(pt 256 0) |
(pt 584 0) |
) |
(connector |
(pt 584 0) |
(pt 608 0) |
) |
(connector |
(pt 448 104) |
(pt 880 104) |
(bus) |
) |
(connector |
(pt 880 104) |
(pt 880 56) |
(bus) |
) |
(connector |
(pt 448 88) |
(pt 592 88) |
(bus) |
) |
(connector |
(pt 592 88) |
(pt 592 56) |
(bus) |
) |
(connector |
(pt 592 56) |
(pt 608 56) |
(bus) |
) |
(connector |
(pt 504 40) |
(pt 504 72) |
(bus) |
) |
(connector |
(pt 448 120) |
(pt 568 120) |
) |
(connector |
(pt 568 120) |
(pt 568 24) |
) |
(connector |
(pt 568 24) |
(pt 608 24) |
) |
(connector |
(text "IAB[13..0]" (rect 514 24 563 36)(font "Arial" )) |
(pt 608 40) |
(pt 504 40) |
(bus) |
) |
(connector |
(pt 1032 120) |
(pt 1048 120) |
) |
(connector |
(pt 448 248) |
(pt 1048 248) |
) |
(connector |
(pt 1328 8) |
(pt 1328 184) |
(bus) |
) |
(connector |
(pt 920 24) |
(pt 920 152) |
(bus) |
) |
(connector |
(pt 448 168) |
(pt 904 168) |
(bus) |
) |
(connector |
(pt 448 184) |
(pt 1328 184) |
(bus) |
) |
(connector |
(pt 1032 104) |
(pt 1064 104) |
) |
(connector |
(pt 448 264) |
(pt 1064 264) |
) |
(connector |
(pt 216 408) |
(pt 280 408) |
(bus) |
) |
(connector |
(pt 232 168) |
(pt 280 168) |
) |
(connector |
(pt 232 184) |
(pt 280 184) |
) |
(connector |
(pt 232 104) |
(pt 280 104) |
) |
(connector |
(pt 280 72) |
(pt 256 72) |
) |
(connector |
(pt 256 72) |
(pt 256 0) |
) |
(connector |
(pt 1048 120) |
(pt 1048 248) |
) |
(connector |
(pt 1064 104) |
(pt 1064 264) |
) |
(connector |
(text "MAB[11..0]" (rect 458 136 512 148)(font "Arial" )) |
(pt 448 152) |
(pt 920 152) |
(bus) |
) |
(connector |
(text "IAB[15..0]" (rect 458 56 507 68)(font "Arial" )) |
(pt 504 72) |
(pt 448 72) |
(bus) |
) |
(junction (pt 584 0)) |
-- Copyright (C) 1991-2010 Altera Corporation |
-- Your use of Altera Corporation's design tools, logic functions |
-- and other software and tools, and its AMPP partner logic |
-- functions, and any output files from any of the foregoing |
-- (including device programming or simulation files), and any |
-- associated documentation or information are expressly subject |
-- to the terms and conditions of the Altera Program License |
-- Subscription Agreement, Altera MegaCore Function License |
-- Agreement, or other applicable license agreement, including, |
-- without limitation, that your use is for the sole purpose of |
-- programming logic devices manufactured by Altera and sold by |
-- Altera or its authorized distributors. Please refer to the |
-- applicable agreement for further details. |
|
-- Quartus II generated Memory Initialization File (.mif) |
|
WIDTH=8; |
DEPTH=16384; |
|
ADDRESS_RADIX=HEX; |
DATA_RADIX=HEX; |
|
CONTENT BEGIN |
[0000..0001] : FF; |
0002 : 00; |
0003 : 39; |
[0004..0037] : FF; |
0038 : AF; |
0039 : 01; |
003A : 00; |
003B : E9; |
003C : 00; |
003D : 0F; |
003E : FF; |
003F : E9; |
0040 : 01; |
0041 : 0F; |
0042 : FE; |
0043 : 0C; |
0044 : 21; |
0045 : 2C; |
0046 : 05; |
0047 : 8B; |
0048 : 03; |
0049 : B1; |
004A : E0; |
004B : 0E; |
004C : 2A; |
004D : FB; |
004E : 2C; |
004F : 00; |
0050 : 3C; |
0051 : 00; |
0052 : 0C; |
0053 : 00; |
0054 : 1C; |
0055 : 01; |
0056 : B0; |
0057 : E4; |
0058 : 8B; |
0059 : 05; |
005A : 96; |
005B : E4; |
005C : E2; |
005D : A0; |
005E : E2; |
005F : 80; |
0060 : E0; |
0061 : EB; |
0062 : F7; |
0063 : 0C; |
0064 : 01; |
0065 : 1C; |
0066 : 26; |
0067 : 3C; |
0068 : 15; |
0069 : 4C; |
006A : 25; |
006B : 8B; |
006C : 02; |
006D : C3; |
006E : 40; |
006F : 3A; |
0070 : FC; |
0071 : 0C; |
0072 : 00; |
0073 : 1C; |
0074 : 00; |
0075 : 2C; |
0076 : 00; |
0077 : 3C; |
0078 : 00; |
0079 : 4C; |
007A : 00; |
007B : 5C; |
007C : 01; |
007D : 8B; |
007E : 09; |
007F : C2; |
0080 : 62; |
0081 : 96; |
0082 : E6; |
0083 : E0; |
0084 : A0; |
0085 : E0; |
0086 : A0; |
0087 : E2; |
0088 : 80; |
0089 : E4; |
008A : EB; |
008B : F3; |
008C : D6; |
008D : 00; |
008E : 38; |
008F : B2; |
0090 : FF; |
0091 : B2; |
0092 : EE; |
0093 : D6; |
0094 : 00; |
0095 : B1; |
0096 : D6; |
0097 : 00; |
0098 : 38; |
0099 : 8B; |
009A : FE; |
009B : 8B; |
[009C..009D] : 0C; |
009E : C8; |
009F : 8B; |
00A0 : 02; |
00A1 : 30; |
00A2 : E0; |
00A3 : 42; |
00A4 : 00; |
00A5 : EB; |
00A6 : FA; |
00A7 : 80; |
00A8 : E8; |
00A9 : E4; |
00AA : E8; |
00AB : E0; |
00AC : 42; |
00AD : 09; |
00AE : EB; |
00AF : ED; |
00B0 : AF; |
00B1 : E6; |
00B2 : 20; |
00B3 : 01; |
00B4 : 8B; |
00B5 : 15; |
00B6 : E8; |
00B7 : 02; |
00B8 : 0F; |
00B9 : D3; |
00BA : 8C; |
00BB : 01; |
00BC : 9C; |
00BD : F4; |
00BE : D6; |
00BF : 00; |
00C0 : 9B; |
00C1 : E4; |
00C2 : 20; |
00C3 : E0; |
00C4 : 1C; |
00C5 : 02; |
00C6 : F4; |
00C7 : E0; |
00C8 : E4; |
00C9 : E1; |
00CA : 20; |
00CB : A6; |
00CC : 20; |
00CD : 80; |
00CE : 7B; |
[00CF..00D0] : E6; |
00D1 : 20; |
00D2 : 01; |
00D3 : 8B; |
00D4 : 15; |
00D5 : E8; |
00D6 : 02; |
00D7 : 0F; |
00D8 : D3; |
00D9 : B0; |
00DA : E8; |
00DB : 9C; |
00DC : C8; |
00DD : D6; |
00DE : 00; |
00DF : 9B; |
00E0 : E4; |
00E1 : 20; |
00E2 : E0; |
00E3 : 1C; |
00E4 : 02; |
00E5 : F4; |
00E6 : E0; |
00E7 : E4; |
00E8 : E1; |
00E9 : 20; |
00EA : A6; |
00EB : 20; |
00EC : 80; |
00ED : 7B; |
00EE : E6; |
00EF : B0; |
00F0 : 20; |
00F1 : 0C; |
00F2 : 25; |
00F3 : 04; |
00F4 : 20; |
00F5 : E0; |
00F6 : 95; |
00F7 : 0F; |
00F8 : D3; |
[00F9..00FA] : 20; |
00FB : 8C; |
00FC : 01; |
00FD : 9C; |
00FE : F4; |
00FF : D6; |
0100 : 00; |
0101 : 9B; |
0102 : E4; |
0103 : 20; |
0104 : E0; |
0105 : 06; |
0106 : E0; |
0107 : 25; |
0108 : A7; |
0109 : E0; |
010A : 00; |
010B : EB; |
010C : E4; |
010D : E9; |
010E : FF; |
010F : 0F; |
0110 : D3; |
0111 : 8C; |
0112 : 03; |
0113 : 9C; |
0114 : E8; |
0115 : D6; |
0116 : 00; |
0117 : 9B; |
0118 : E9; |
0119 : 00; |
011A : 0F; |
011B : D3; |
011C : 8C; |
011D : 0B; |
011E : 9C; |
011F : B8; |
0120 : D6; |
0121 : 00; |
0122 : 9B; |
0123 : 8B; |
0124 : 8C; |
0125 : AF; |
0126 : 01; |
0127 : 03; |
0128 : 07; |
0129 : 0F; |
012A : 1F; |
012B : 3F; |
012C : 7F; |
012D : FF; |
012E : 7F; |
012F : 3F; |
0130 : 1F; |
0131 : 0F; |
0132 : 07; |
0133 : 03; |
[0134..0136] : 01; |
0137 : 7F; |
0138 : 01; |
0139 : 00; |
[013A..020F] : FF; |
[0210..3FFF] : 00; |
END; |
Assembler report for FPz8 |
Thu Nov 10 23:29:59 2016 |
Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition |
|
|
--------------------- |
; Table of Contents ; |
--------------------- |
1. Legal Notice |
2. Assembler Summary |
3. Assembler Settings |
4. Assembler Generated Files |
5. Assembler Device Options: E:/VHDL/FPZ8/FPz8.sof |
6. Assembler Device Options: E:/VHDL/FPZ8/FPz8.pof |
7. Assembler Messages |
|
|
|
---------------- |
; Legal Notice ; |
---------------- |
Copyright (C) 1991-2010 Altera Corporation |
Your use of Altera Corporation's design tools, logic functions |
and other software and tools, and its AMPP partner logic |
functions, and any output files from any of the foregoing |
(including device programming or simulation files), and any |
associated documentation or information are expressly subject |
to the terms and conditions of the Altera Program License |
Subscription Agreement, Altera MegaCore Function License |
Agreement, or other applicable license agreement, including, |
without limitation, that your use is for the sole purpose of |
programming logic devices manufactured by Altera and sold by |
Altera or its authorized distributors. Please refer to the |
applicable agreement for further details. |
|
|
|
+---------------------------------------------------------------+ |
; Assembler Summary ; |
+-----------------------+---------------------------------------+ |
; Assembler Status ; Successful - Thu Nov 10 23:29:59 2016 ; |
; Revision Name ; FPz8 ; |
; Top-level Entity Name ; CPU ; |
; Family ; Cyclone II ; |
; Device ; EP2C8T144C6 ; |
+-----------------------+---------------------------------------+ |
|
|
+--------------------------------------------------------------------------------------------------------+ |
; Assembler Settings ; |
+-----------------------------------------------------------------------------+----------+---------------+ |
; Option ; Setting ; Default Value ; |
+-----------------------------------------------------------------------------+----------+---------------+ |
; Use smart compilation ; On ; Off ; |
; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; |
; Enable compact report table ; Off ; Off ; |
; Generate compressed bitstreams ; On ; On ; |
; Compression mode ; Off ; Off ; |
; Clock source for configuration device ; Internal ; Internal ; |
; Clock frequency of the configuration device ; 10 MHZ ; 10 MHz ; |
; Divide clock frequency by ; 1 ; 1 ; |
; Auto user code ; Off ; Off ; |
; Use configuration device ; On ; On ; |
; Configuration device ; Auto ; Auto ; |
; Configuration device auto user code ; Off ; Off ; |
; Generate Tabular Text File (.ttf) For Target Device ; Off ; Off ; |
; Generate Raw Binary File (.rbf) For Target Device ; Off ; Off ; |
; Generate Hexadecimal (Intel-Format) Output File (.hexout) for Target Device ; Off ; Off ; |
; Hexadecimal Output File start address ; 0 ; 0 ; |
; Hexadecimal Output File count direction ; Up ; Up ; |
; Release clears before tri-states ; Off ; Off ; |
; Auto-restart configuration after error ; On ; On ; |
; Maintain Compatibility with All Cyclone II M4K Versions ; On ; On ; |
; Generate Serial Vector Format File (.svf) for Target Device ; Off ; Off ; |
; Generate a JEDEC STAPL Format File (.jam) for Target Device ; Off ; Off ; |
; Generate a compressed Jam STAPL Byte Code 2.0 File (.jbc) for Target Device ; Off ; Off ; |
; Generate a compressed Jam STAPL Byte Code 2.0 File (.jbc) for Target Device ; On ; On ; |
+-----------------------------------------------------------------------------+----------+---------------+ |
|
|
+---------------------------+ |
; Assembler Generated Files ; |
+---------------------------+ |
; File Name ; |
+---------------------------+ |
; E:/VHDL/FPZ8/FPz8.sof ; |
; E:/VHDL/FPZ8/FPz8.pof ; |
+---------------------------+ |
|
|
+-------------------------------------------------+ |
; Assembler Device Options: E:/VHDL/FPZ8/FPz8.sof ; |
+----------------+--------------------------------+ |
; Option ; Setting ; |
+----------------+--------------------------------+ |
; Device ; EP2C8T144C6 ; |
; JTAG usercode ; 0xFFFFFFFF ; |
; Checksum ; 0x004994AA ; |
+----------------+--------------------------------+ |
|
|
+-------------------------------------------------+ |
; Assembler Device Options: E:/VHDL/FPZ8/FPz8.pof ; |
+--------------------+----------------------------+ |
; Option ; Setting ; |
+--------------------+----------------------------+ |
; Device ; EPCS4 ; |
; JTAG usercode ; 0x00000000 ; |
; Checksum ; 0x069D3EDA ; |
; Compression Ratio ; 2 ; |
+--------------------+----------------------------+ |
|
|
+--------------------+ |
; Assembler Messages ; |
+--------------------+ |
Info: ******************************************************************* |
Info: Running Quartus II Assembler |
Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition |
Info: Processing started: Thu Nov 10 23:29:57 2016 |
Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off FPz8 -c FPz8 |
Info: Writing out detailed assembly data for power analysis |
Info: Assembler is generating device programming files |
Info: Quartus II Assembler was successful. 0 errors, 0 warnings |
Info: Peak virtual memory: 196 megabytes |
Info: Processing ended: Thu Nov 10 23:29:59 2016 |
Info: Elapsed time: 00:00:02 |
Info: Total CPU time (on all processors): 00:00:01 |
|
|
Thu Nov 10 23:30:05 2016 |
Fitter report for FPz8 |
Thu Nov 10 23:29:55 2016 |
Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition |
|
|
--------------------- |
; Table of Contents ; |
--------------------- |
1. Legal Notice |
2. Fitter Summary |
3. Fitter Settings |
4. Parallel Compilation |
5. Pin-Out File |
6. Fitter Resource Usage Summary |
7. Input Pins |
8. Output Pins |
9. I/O Bank Usage |
10. All Package Pins |
11. Output Pin Default Load For Reported TCO |
12. Fitter Resource Utilization by Entity |
13. Delay Chain Summary |
14. Pad To Core Delay Chain Fanout |
15. Control Signals |
16. Global & Other Fast Signals |
17. Non-Global High Fan-Out Signals |
18. Fitter RAM Summary |
19. Fitter DSP Block Usage Summary |
20. DSP Block Details |
21. Interconnect Usage Summary |
22. LAB Logic Elements |
23. LAB-wide Signals |
24. LAB Signals Sourced |
25. LAB Signals Sourced Out |
26. LAB Distinct Inputs |
27. Fitter Device Options |
28. Operating Settings and Conditions |
29. Estimated Delay Added for Hold Timing |
30. Fitter Messages |
|
|
|
---------------- |
; Legal Notice ; |
---------------- |
Copyright (C) 1991-2010 Altera Corporation |
Your use of Altera Corporation's design tools, logic functions |
and other software and tools, and its AMPP partner logic |
functions, and any output files from any of the foregoing |
(including device programming or simulation files), and any |
associated documentation or information are expressly subject |
to the terms and conditions of the Altera Program License |
Subscription Agreement, Altera MegaCore Function License |
Agreement, or other applicable license agreement, including, |
without limitation, that your use is for the sole purpose of |
programming logic devices manufactured by Altera and sold by |
Altera or its authorized distributors. Please refer to the |
applicable agreement for further details. |
|
|
|
+-----------------------------------------------------------------------------------+ |
; Fitter Summary ; |
+------------------------------------+----------------------------------------------+ |
; Fitter Status ; Successful - Thu Nov 10 23:29:55 2016 ; |
; Quartus II Version ; 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition ; |
; Revision Name ; FPz8 ; |
; Top-level Entity Name ; CPU ; |
; Family ; Cyclone II ; |
; Device ; EP2C8T144C6 ; |
; Timing Models ; Final ; |
; Total logic elements ; 4,910 / 8,256 ( 59 % ) ; |
; Total combinational functions ; 4,872 / 8,256 ( 59 % ) ; |
; Dedicated logic registers ; 495 / 8,256 ( 6 % ) ; |
; Total registers ; 495 ; |
; Total pins ; 12 / 85 ( 14 % ) ; |
; Total virtual pins ; 0 ; |
; Total memory bits ; 147,456 / 165,888 ( 89 % ) ; |
; Embedded Multiplier 9-bit elements ; 1 / 36 ( 3 % ) ; |
; Total PLLs ; 0 / 2 ( 0 % ) ; |
+------------------------------------+----------------------------------------------+ |
|
|
+----------------------------------------------------------------------------------------------------------------------------------------------+ |
; Fitter Settings ; |
+----------------------------------------------------------------------------+--------------------------------+--------------------------------+ |
; Option ; Setting ; Default Value ; |
+----------------------------------------------------------------------------+--------------------------------+--------------------------------+ |
; Device ; AUTO ; ; |
; Use smart compilation ; On ; Off ; |
; Fit Attempts to Skip ; 0 ; 0.0 ; |
; Fitter Effort ; Standard Fit ; Auto Fit ; |
; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; |
; Enable compact report table ; Off ; Off ; |
; Use TimeQuest Timing Analyzer ; Off ; Off ; |
; Router Timing Optimization Level ; Normal ; Normal ; |
; Placement Effort Multiplier ; 1.0 ; 1.0 ; |
; Router Effort Multiplier ; 1.0 ; 1.0 ; |
; Always Enable Input Buffers ; Off ; Off ; |
; Optimize Hold Timing ; IO Paths and Minimum TPD Paths ; IO Paths and Minimum TPD Paths ; |
; Optimize Multi-Corner Timing ; Off ; Off ; |
; PowerPlay Power Optimization ; Normal compilation ; Normal compilation ; |
; Optimize Timing ; Normal compilation ; Normal compilation ; |
; Optimize Timing for ECOs ; Off ; Off ; |
; Regenerate full fit report during ECO compiles ; Off ; Off ; |
; Optimize IOC Register Placement for Timing ; On ; On ; |
; Limit to One Fitting Attempt ; Off ; Off ; |
; Final Placement Optimizations ; Automatically ; Automatically ; |
; Fitter Aggressive Routability Optimizations ; Automatically ; Automatically ; |
; Fitter Initial Placement Seed ; 1 ; 1 ; |
; PCI I/O ; Off ; Off ; |
; Weak Pull-Up Resistor ; Off ; Off ; |
; Enable Bus-Hold Circuitry ; Off ; Off ; |
; Auto Global Memory Control Signals ; Off ; Off ; |
; Auto Packed Registers ; Auto ; Auto ; |
; Auto Delay Chains ; On ; On ; |
; Auto Merge PLLs ; On ; On ; |
; Ignore PLL Mode When Merging PLLs ; Off ; Off ; |
; Perform Physical Synthesis for Combinational Logic for Fitting ; Off ; Off ; |
; Perform Physical Synthesis for Combinational Logic for Performance ; Off ; Off ; |
; Perform Register Duplication for Performance ; Off ; Off ; |
; Perform Logic to Memory Mapping for Fitting ; Off ; Off ; |
; Perform Register Retiming for Performance ; Off ; Off ; |
; Perform Asynchronous Signal Pipelining ; Off ; Off ; |
; Physical Synthesis Effort Level ; Normal ; Normal ; |
; Auto Global Clock ; On ; On ; |
; Auto Global Register Control Signals ; On ; On ; |
; Stop After Congestion Map Generation ; Off ; Off ; |
; Save Intermediate Fitting Results ; Off ; Off ; |
; Force Fitter to Avoid Periphery Placement Warnings ; Off ; Off ; |
; Use Best Effort Settings for Compilation ; Off ; Off ; |
+----------------------------------------------------------------------------+--------------------------------+--------------------------------+ |
|
|
Parallel compilation was disabled, but you have multiple processors available. Enable parallel compilation to reduce compilation time. |
+-------------------------------------+ |
; Parallel Compilation ; |
+----------------------------+--------+ |
; Processors ; Number ; |
+----------------------------+--------+ |
; Number detected on machine ; 4 ; |
; Maximum allowed ; 1 ; |
+----------------------------+--------+ |
|
|
+--------------+ |
; Pin-Out File ; |
+--------------+ |
The pin-out file can be found in E:/VHDL/FPZ8/FPz8.pin. |
|
|
+---------------------------------------------------------------------------+ |
; Fitter Resource Usage Summary ; |
+---------------------------------------------+-----------------------------+ |
; Resource ; Usage ; |
+---------------------------------------------+-----------------------------+ |
; Total logic elements ; 4,910 / 8,256 ( 59 % ) ; |
; -- Combinational with no register ; 4415 ; |
; -- Register only ; 38 ; |
; -- Combinational with a register ; 457 ; |
; ; ; |
; Logic element usage by number of LUT inputs ; ; |
; -- 4 input functions ; 3102 ; |
; -- 3 input functions ; 1176 ; |
; -- <=2 input functions ; 594 ; |
; -- Register only ; 38 ; |
; ; ; |
; Logic elements by mode ; ; |
; -- normal mode ; 4438 ; |
; -- arithmetic mode ; 434 ; |
; ; ; |
; Total registers* ; 495 / 8,487 ( 6 % ) ; |
; -- Dedicated logic registers ; 495 / 8,256 ( 6 % ) ; |
; -- I/O registers ; 0 / 231 ( 0 % ) ; |
; ; ; |
; Total LABs: partially or completely used ; 341 / 516 ( 66 % ) ; |
; User inserted logic elements ; 0 ; |
; Virtual pins ; 0 ; |
; I/O pins ; 12 / 85 ( 14 % ) ; |
; -- Clock pins ; 1 / 4 ( 25 % ) ; |
; Global signals ; 2 ; |
; M4Ks ; 36 / 36 ( 100 % ) ; |
; Total block memory bits ; 147,456 / 165,888 ( 89 % ) ; |
; Total block memory implementation bits ; 165,888 / 165,888 ( 100 % ) ; |
; Embedded Multiplier 9-bit elements ; 1 / 36 ( 3 % ) ; |
; PLLs ; 0 / 2 ( 0 % ) ; |
; Global clocks ; 2 / 8 ( 25 % ) ; |
; JTAGs ; 0 / 1 ( 0 % ) ; |
; ASMI blocks ; 0 / 1 ( 0 % ) ; |
; CRC blocks ; 0 / 1 ( 0 % ) ; |
; Average interconnect usage (total/H/V) ; 25% / 24% / 26% ; |
; Peak interconnect usage (total/H/V) ; 37% / 35% / 39% ; |
; Maximum fan-out node ; CLOCK~clkctrl ; |
; Maximum fan-out ; 531 ; |
; Highest non-global fan-out signal ; fpz8_cpu_v1:inst|Mux34~24 ; |
; Highest non-global fan-out ; 209 ; |
; Total fan-out ; 19569 ; |
; Average fan-out ; 3.59 ; |
+---------------------------------------------+-----------------------------+ |
* Register count does not include registers inside RAM blocks or DSP blocks. |
|
|
|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Input Pins ; |
+--------+-------+----------+--------------+--------------+-------------+-----------------------+--------------------+--------+----------------+---------------+-----------------+----------+--------------+--------------+-------------+----------------------+ |
; Name ; Pin # ; I/O Bank ; X coordinate ; Y coordinate ; Cell number ; Combinational Fan-Out ; Registered Fan-Out ; Global ; Input Register ; Power Up High ; PCI I/O Enabled ; Bus Hold ; Weak Pull Up ; I/O Standard ; Termination ; Location assigned by ; |
+--------+-------+----------+--------------+--------------+-------------+-----------------------+--------------------+--------+----------------+---------------+-----------------+----------+--------------+--------------+-------------+----------------------+ |
; CLOCK ; 17 ; 1 ; 0 ; 9 ; 0 ; 1 ; 0 ; yes ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Off ; Fitter ; |
; DBG_RX ; 134 ; 2 ; 9 ; 19 ; 2 ; 1 ; 0 ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Off ; Fitter ; |
; RESET ; 18 ; 1 ; 0 ; 9 ; 1 ; 2 ; 0 ; yes ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Off ; Fitter ; |
+--------+-------+----------+--------------+--------------+-------------+-----------------------+--------------------+--------+----------------+---------------+-----------------+----------+--------------+--------------+-------------+----------------------+ |
|
|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Output Pins ; |
+----------+-------+----------+--------------+--------------+-------------+-----------------+------------------------+---------------+-----------------+------------+---------------+----------+--------------+--------------+------------------+-------------+----------------------+------+----------------------+---------------------+ |
; Name ; Pin # ; I/O Bank ; X coordinate ; Y coordinate ; Cell number ; Output Register ; Output Enable Register ; Power Up High ; PCI I/O Enabled ; Open Drain ; TRI Primitive ; Bus Hold ; Weak Pull Up ; I/O Standard ; Current Strength ; Termination ; Location assigned by ; Load ; Output Enable Source ; Output Enable Group ; |
+----------+-------+----------+--------------+--------------+-------------+-----------------+------------------------+---------------+-----------------+------------+---------------+----------+--------------+--------------+------------------+-------------+----------------------+------+----------------------+---------------------+ |
; DBG_TX ; 137 ; 2 ; 3 ; 19 ; 2 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
; PAOUT[0] ; 133 ; 2 ; 9 ; 19 ; 1 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
; PAOUT[1] ; 52 ; 4 ; 12 ; 0 ; 1 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
; PAOUT[2] ; 55 ; 4 ; 16 ; 0 ; 2 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
; PAOUT[3] ; 132 ; 2 ; 9 ; 19 ; 0 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
; PAOUT[4] ; 57 ; 4 ; 16 ; 0 ; 1 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
; PAOUT[5] ; 51 ; 4 ; 9 ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
; PAOUT[6] ; 53 ; 4 ; 14 ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
; PAOUT[7] ; 129 ; 2 ; 14 ; 19 ; 1 ; no ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 24mA ; Off ; Fitter ; 0 pF ; - ; - ; |
+----------+-------+----------+--------------+--------------+-------------+-----------------+------------------------+---------------+-----------------+------------+---------------+----------+--------------+--------------+------------------+-------------+----------------------+------+----------------------+---------------------+ |
|
|
+-----------------------------------------------------------+ |
; I/O Bank Usage ; |
+----------+-----------------+---------------+--------------+ |
; I/O Bank ; Usage ; VCCIO Voltage ; VREF Voltage ; |
+----------+-----------------+---------------+--------------+ |
; 1 ; 4 / 17 ( 24 % ) ; 3.3V ; -- ; |
; 2 ; 5 / 23 ( 22 % ) ; 3.3V ; -- ; |
; 3 ; 1 / 21 ( 5 % ) ; 3.3V ; -- ; |
; 4 ; 5 / 24 ( 21 % ) ; 3.3V ; -- ; |
+----------+-----------------+---------------+--------------+ |
|
|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; All Package Pins ; |
+----------+------------+----------+------------------------------------------+--------+--------------+---------+------------+-----------------+----------+--------------+ |
; Location ; Pad Number ; I/O Bank ; Pin Name/Usage ; Dir. ; I/O Standard ; Voltage ; I/O Type ; User Assignment ; Bus Hold ; Weak Pull Up ; |
+----------+------------+----------+------------------------------------------+--------+--------------+---------+------------+-----------------+----------+--------------+ |
; 1 ; 0 ; 1 ; ~ASDO~ / RESERVED_INPUT_WITH_WEAK_PULLUP ; input ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; On ; |
; 2 ; 1 ; 1 ; ~nCSO~ / RESERVED_INPUT_WITH_WEAK_PULLUP ; input ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; On ; |
; 3 ; 2 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 4 ; 3 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 5 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 6 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 7 ; 10 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 8 ; 18 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 9 ; 19 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 10 ; 20 ; 1 ; #TDO ; output ; ; ; -- ; ; -- ; -- ; |
; 11 ; 21 ; 1 ; #TMS ; input ; ; ; -- ; ; -- ; -- ; |
; 12 ; 22 ; 1 ; #TCK ; input ; ; ; -- ; ; -- ; -- ; |
; 13 ; 23 ; 1 ; #TDI ; input ; ; ; -- ; ; -- ; -- ; |
; 14 ; 24 ; 1 ; ^DATA0 ; input ; ; ; -- ; ; -- ; -- ; |
; 15 ; 25 ; 1 ; ^DCLK ; ; ; ; -- ; ; -- ; -- ; |
; 16 ; 26 ; 1 ; ^nCE ; ; ; ; -- ; ; -- ; -- ; |
; 17 ; 27 ; 1 ; CLOCK ; input ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; Off ; |
; 18 ; 28 ; 1 ; RESET ; input ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; Off ; |
; 19 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 20 ; 29 ; 1 ; ^nCONFIG ; ; ; ; -- ; ; -- ; -- ; |
; 21 ; 30 ; 1 ; GND+ ; ; ; ; Row I/O ; ; -- ; -- ; |
; 22 ; 31 ; 1 ; GND+ ; ; ; ; Row I/O ; ; -- ; -- ; |
; 23 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 24 ; 32 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 25 ; 33 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 26 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 27 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 28 ; 39 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 29 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 30 ; 51 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 31 ; 52 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 32 ; 53 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 33 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 34 ; ; ; GND_PLL1 ; gnd ; ; ; -- ; ; -- ; -- ; |
; 35 ; ; ; VCCD_PLL1 ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 36 ; ; ; GND_PLL1 ; gnd ; ; ; -- ; ; -- ; -- ; |
; 37 ; ; ; VCCA_PLL1 ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 38 ; ; ; GNDA_PLL1 ; gnd ; ; ; -- ; ; -- ; -- ; |
; 39 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 40 ; 54 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 41 ; 55 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 42 ; 56 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 43 ; 57 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 44 ; 58 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 45 ; 59 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 46 ; ; 4 ; VCCIO4 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 47 ; 60 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 48 ; 61 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 49 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 50 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 51 ; 69 ; 4 ; PAOUT[5] ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 52 ; 70 ; 4 ; PAOUT[1] ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 53 ; 74 ; 4 ; PAOUT[6] ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 54 ; ; 4 ; VCCIO4 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 55 ; 75 ; 4 ; PAOUT[2] ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 56 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 57 ; 76 ; 4 ; PAOUT[4] ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 58 ; 77 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 59 ; 78 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 60 ; 79 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 61 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 62 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 63 ; 89 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 64 ; 92 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 65 ; 93 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 66 ; ; 4 ; VCCIO4 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 67 ; 96 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 68 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 69 ; 97 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 70 ; 98 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 71 ; 99 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 72 ; 100 ; 4 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 73 ; 101 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 74 ; 102 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 75 ; 105 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 76 ; 106 ; 3 ; ~LVDS54p/nCEO~ ; output ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; Off ; |
; 77 ; ; 3 ; VCCIO3 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 78 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 79 ; 114 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 80 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 81 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 82 ; 121 ; 3 ; ^nSTATUS ; ; ; ; -- ; ; -- ; -- ; |
; 83 ; 122 ; 3 ; ^CONF_DONE ; ; ; ; -- ; ; -- ; -- ; |
; 84 ; 123 ; 3 ; ^MSEL1 ; ; ; ; -- ; ; -- ; -- ; |
; 85 ; 124 ; 3 ; ^MSEL0 ; ; ; ; -- ; ; -- ; -- ; |
; 86 ; 125 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 87 ; 126 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 88 ; 127 ; 3 ; GND+ ; ; ; ; Row I/O ; ; -- ; -- ; |
; 89 ; 128 ; 3 ; GND+ ; ; ; ; Row I/O ; ; -- ; -- ; |
; 90 ; 129 ; 3 ; GND+ ; ; ; ; Row I/O ; ; -- ; -- ; |
; 91 ; 130 ; 3 ; GND+ ; ; ; ; Row I/O ; ; -- ; -- ; |
; 92 ; 131 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 93 ; 132 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 94 ; 133 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 95 ; ; 3 ; VCCIO3 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 96 ; 134 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 97 ; 135 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 98 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 99 ; 143 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 100 ; 149 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 101 ; 150 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 102 ; ; 3 ; VCCIO3 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 103 ; 153 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 104 ; 154 ; 3 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; |
; 105 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 106 ; ; ; GND_PLL2 ; gnd ; ; ; -- ; ; -- ; -- ; |
; 107 ; ; ; VCCD_PLL2 ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 108 ; ; ; GND_PLL2 ; gnd ; ; ; -- ; ; -- ; -- ; |
; 109 ; ; ; VCCA_PLL2 ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 110 ; ; ; GNDA_PLL2 ; gnd ; ; ; -- ; ; -- ; -- ; |
; 111 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 112 ; 155 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 113 ; 156 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 114 ; 157 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 115 ; 158 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 116 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 117 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 118 ; 161 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 119 ; 162 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 120 ; 163 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 121 ; 164 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 122 ; 165 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 123 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 124 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 125 ; 173 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 126 ; 174 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 127 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 128 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 129 ; 180 ; 2 ; PAOUT[7] ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 130 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 131 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; |
; 132 ; 185 ; 2 ; PAOUT[3] ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 133 ; 186 ; 2 ; PAOUT[0] ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 134 ; 187 ; 2 ; DBG_RX ; input ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 135 ; 195 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 136 ; 196 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 137 ; 197 ; 2 ; DBG_TX ; output ; 3.3-V LVTTL ; ; Column I/O ; N ; no ; Off ; |
; 138 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; |
; 139 ; 198 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 140 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; |
; 141 ; 199 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 142 ; 200 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 143 ; 201 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
; 144 ; 202 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; |
+----------+------------+----------+------------------------------------------+--------+--------------+---------+------------+-----------------+----------+--------------+ |
Note: Pin directions (input, output or bidir) are based on device operating in user mode. |
|
|
+-------------------------------------------------------------------------------+ |
; Output Pin Default Load For Reported TCO ; |
+----------------------------------+-------+------------------------------------+ |
; I/O Standard ; Load ; Termination Resistance ; |
+----------------------------------+-------+------------------------------------+ |
; 3.3-V LVTTL ; 0 pF ; Not Available ; |
; 3.3-V LVCMOS ; 0 pF ; Not Available ; |
; 2.5 V ; 0 pF ; Not Available ; |
; 1.8 V ; 0 pF ; Not Available ; |
; 1.5 V ; 0 pF ; Not Available ; |
; 3.3-V PCI ; 10 pF ; 25 Ohm (Parallel) ; |
; 3.3-V PCI-X ; 10 pF ; 25 Ohm (Parallel) ; |
; SSTL-2 Class I ; 0 pF ; 50 Ohm (Parallel), 25 Ohm (Serial) ; |
; SSTL-2 Class II ; 0 pF ; 25 Ohm (Parallel), 25 Ohm (Serial) ; |
; SSTL-18 Class I ; 0 pF ; 50 Ohm (Parallel), 25 Ohm (Serial) ; |
; SSTL-18 Class II ; 0 pF ; 25 Ohm (Parallel), 25 Ohm (Serial) ; |
; 1.5-V HSTL Class I ; 0 pF ; 50 Ohm (Parallel) ; |
; 1.5-V HSTL Class II ; 0 pF ; 25 Ohm (Parallel) ; |
; 1.8-V HSTL Class I ; 0 pF ; 50 Ohm (Parallel) ; |
; 1.8-V HSTL Class II ; 0 pF ; 25 Ohm (Parallel) ; |
; Differential SSTL-2 ; 0 pF ; (See SSTL-2) ; |
; Differential 2.5-V SSTL Class II ; 0 pF ; (See SSTL-2 Class II) ; |
; Differential 1.8-V SSTL Class I ; 0 pF ; (See 1.8-V SSTL Class I) ; |
; Differential 1.8-V SSTL Class II ; 0 pF ; (See 1.8-V SSTL Class II) ; |
; Differential 1.5-V HSTL Class I ; 0 pF ; (See 1.5-V HSTL Class I) ; |
; Differential 1.5-V HSTL Class II ; 0 pF ; (See 1.5-V HSTL Class II) ; |
; Differential 1.8-V HSTL Class I ; 0 pF ; (See 1.8-V HSTL Class I) ; |
; Differential 1.8-V HSTL Class II ; 0 pF ; (See 1.8-V HSTL Class II) ; |
; LVDS ; 0 pF ; 100 Ohm (Differential) ; |
; mini-LVDS ; 0 pF ; 100 Ohm (Differential) ; |
; RSDS ; 0 pF ; 100 Ohm (Differential) ; |
; Simple RSDS ; 0 pF ; Not Available ; |
; Differential LVPECL ; 0 pF ; 100 Ohm (Differential) ; |
+----------------------------------+-------+------------------------------------+ |
Note: User assignments will override these defaults. The user specified values are listed in the Output Pins and Bidir Pins tables. |
|
|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Fitter Resource Utilization by Entity ; |
+-------------------------------------------+-------------+---------------------------+---------------+-------------+------+--------------+---------+-----------+------+--------------+--------------+-------------------+------------------+----------------------------------------------------------------------------------------------------------+--------------+ |
; Compilation Hierarchy Node ; Logic Cells ; Dedicated Logic Registers ; I/O Registers ; Memory Bits ; M4Ks ; DSP Elements ; DSP 9x9 ; DSP 18x18 ; Pins ; Virtual Pins ; LUT-Only LCs ; Register-Only LCs ; LUT/Register LCs ; Full Hierarchy Name ; Library Name ; |
+-------------------------------------------+-------------+---------------------------+---------------+-------------+------+--------------+---------+-----------+------+--------------+--------------+-------------------+------------------+----------------------------------------------------------------------------------------------------------+--------------+ |
; |CPU ; 4910 (2) ; 495 (0) ; 0 (0) ; 147456 ; 36 ; 1 ; 1 ; 0 ; 12 ; 0 ; 4415 (2) ; 38 (0) ; 457 (0) ; |CPU ; work ; |
; |altsyncram1:inst7| ; 0 (0) ; 0 (0) ; 0 (0) ; 16384 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |CPU|altsyncram1:inst7 ; work ; |
; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 16384 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |CPU|altsyncram1:inst7|altsyncram:altsyncram_component ; work ; |
; |altsyncram_bua1:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 16384 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |CPU|altsyncram1:inst7|altsyncram:altsyncram_component|altsyncram_bua1:auto_generated ; work ; |
; |altsyncram2:inst1| ; 24 (0) ; 2 (0) ; 0 (0) ; 131072 ; 32 ; 0 ; 0 ; 0 ; 0 ; 0 ; 22 (0) ; 0 (0) ; 2 (0) ; |CPU|altsyncram2:inst1 ; work ; |
; |altsyncram:altsyncram_component| ; 24 (0) ; 2 (0) ; 0 (0) ; 131072 ; 32 ; 0 ; 0 ; 0 ; 0 ; 0 ; 22 (0) ; 0 (0) ; 2 (0) ; |CPU|altsyncram2:inst1|altsyncram:altsyncram_component ; work ; |
; |altsyncram_lge1:auto_generated| ; 24 (2) ; 2 (2) ; 0 (0) ; 131072 ; 32 ; 0 ; 0 ; 0 ; 0 ; 0 ; 22 (0) ; 0 (0) ; 2 (0) ; |CPU|altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated ; work ; |
; |decode_4oa:decode3| ; 8 (8) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 8 (8) ; 0 (0) ; 0 (0) ; |CPU|altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3 ; work ; |
; |mux_kib:mux2| ; 16 (16) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 14 (14) ; 0 (0) ; 2 (2) ; |CPU|altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|mux_kib:mux2 ; work ; |
; |fpz8_cpu_v1:inst| ; 4884 (4884) ; 493 (493) ; 0 (0) ; 0 ; 0 ; 1 ; 1 ; 0 ; 0 ; 0 ; 4391 (4391) ; 38 (38) ; 455 (455) ; |CPU|fpz8_cpu_v1:inst ; work ; |
; |lpm_mult:Mult0| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 1 ; 1 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |CPU|fpz8_cpu_v1:inst|lpm_mult:Mult0 ; work ; |
; |mult_o5t:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 1 ; 1 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |CPU|fpz8_cpu_v1:inst|lpm_mult:Mult0|mult_o5t:auto_generated ; work ; |
+-------------------------------------------+-------------+---------------------------+---------------+-------------+------+--------------+---------+-----------+------+--------------+--------------+-------------------+------------------+----------------------------------------------------------------------------------------------------------+--------------+ |
Note: For table entries with two numbers listed, the numbers in parentheses indicate the number of resources of the given type used by the specific entity alone. The numbers listed outside of parentheses indicate the total resources of the given type used by the specific entity and all of its sub-entities in the hierarchy. |
|
|
+-----------------------------------------------------------------------------------+ |
; Delay Chain Summary ; |
+----------+----------+---------------+---------------+-----------------------+-----+ |
; Name ; Pin Type ; Pad to Core 0 ; Pad to Core 1 ; Pad to Input Register ; TCO ; |
+----------+----------+---------------+---------------+-----------------------+-----+ |
; CLOCK ; Input ; (0) 299 ps ; (0) 299 ps ; -- ; -- ; |
; RESET ; Input ; (0) 299 ps ; (0) 299 ps ; -- ; -- ; |
; DBG_RX ; Input ; (6) 4114 ps ; (6) 4114 ps ; -- ; -- ; |
; DBG_TX ; Output ; -- ; -- ; -- ; -- ; |
; PAOUT[7] ; Output ; -- ; -- ; -- ; -- ; |
; PAOUT[6] ; Output ; -- ; -- ; -- ; -- ; |
; PAOUT[5] ; Output ; -- ; -- ; -- ; -- ; |
; PAOUT[4] ; Output ; -- ; -- ; -- ; -- ; |
; PAOUT[3] ; Output ; -- ; -- ; -- ; -- ; |
; PAOUT[2] ; Output ; -- ; -- ; -- ; -- ; |
; PAOUT[1] ; Output ; -- ; -- ; -- ; -- ; |
; PAOUT[0] ; Output ; -- ; -- ; -- ; -- ; |
+----------+----------+---------------+---------------+-----------------------+-----+ |
|
|
+-----------------------------------------------------------------+ |
; Pad To Core Delay Chain Fanout ; |
+-----------------------------------+-------------------+---------+ |
; Source Pin / Fanout ; Pad To Core Index ; Setting ; |
+-----------------------------------+-------------------+---------+ |
; CLOCK ; ; ; |
; RESET ; ; ; |
; DBG_RX ; ; ; |
; - fpz8_cpu_v1:inst|RXSYNC2~0 ; 0 ; 6 ; |
+-----------------------------------+-------------------+---------+ |
|
|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Control Signals ; |
+----------------------------------------------------------------------------------------------------------------------+--------------------+---------+--------------+--------+----------------------+------------------+---------------------------+ |
; Name ; Location ; Fan-Out ; Usage ; Global ; Global Resource Used ; Global Line Name ; Enable Signal Source Name ; |
+----------------------------------------------------------------------------------------------------------------------+--------------------+---------+--------------+--------+----------------------+------------------+---------------------------+ |
; CLOCK ; PIN_17 ; 531 ; Clock ; yes ; Global Clock ; GCLK2 ; -- ; |
; RESET ; PIN_18 ; 185 ; Async. clear ; yes ; Global Clock ; GCLK1 ; -- ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3|w_anode221w[2] ; LCCOMB_X12_Y12_N22 ; 8 ; Write enable ; no ; -- ; -- ; -- ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3|w_anode221w[2]~0 ; LCCOMB_X12_Y12_N4 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3|w_anode234w[2] ; LCCOMB_X12_Y12_N20 ; 8 ; Write enable ; no ; -- ; -- ; -- ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3|w_anode234w[2]~0 ; LCCOMB_X12_Y12_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3|w_anode242w[2] ; LCCOMB_X12_Y12_N30 ; 8 ; Write enable ; no ; -- ; -- ; -- ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3|w_anode242w[2]~0 ; LCCOMB_X12_Y12_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3|w_anode250w[2] ; LCCOMB_X12_Y12_N14 ; 8 ; Write enable ; no ; -- ; -- ; -- ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3|w_anode250w[2]~0 ; LCCOMB_X12_Y12_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|ALU_FLAGS.C~6 ; LCCOMB_X6_Y9_N22 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|CPU_FLAGS.F1~8 ; LCCOMB_X12_Y6_N18 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|CPU_FLAGS.H~1 ; LCCOMB_X8_Y7_N26 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|CPU_STATE~385 ; LCCOMB_X29_Y5_N22 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|DBG_UART~51 ; LCCOMB_X5_Y14_N6 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|DBG_UART~65 ; LCCOMB_X5_Y14_N14 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Equal0~0 ; LCCOMB_X14_Y16_N24 ; 120 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|FCTL[0]~10 ; LCCOMB_X14_Y6_N20 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|IAB[0]~35 ; LCCOMB_X14_Y16_N2 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|IAB[13]~32 ; LCCOMB_X10_Y13_N8 ; 6 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|IRQ0ENH[4]~2 ; LCCOMB_X12_Y3_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|IRQ0ENL[4]~2 ; LCCOMB_X12_Y3_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|MAB[11]~250 ; LCCOMB_X19_Y8_N4 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|MAB[3]~460 ; LCCOMB_X22_Y6_N4 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|MAB[7]~383 ; LCCOMB_X23_Y7_N18 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|MODB[0]~0 ; LCCOMB_X7_Y9_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|PAOUT[7]~15 ; LCCOMB_X13_Y5_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|RP[0]~45 ; LCCOMB_X12_Y3_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|RXSYNC1 ; LCFF_X7_Y16_N23 ; 18 ; Sync. clear ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|SP[0]~76 ; LCCOMB_X16_Y4_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|SP[8]~78 ; LCCOMB_X16_Y4_N6 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector121~0 ; LCCOMB_X10_Y10_N2 ; 138 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector131~0 ; LCCOMB_X13_Y10_N0 ; 32 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector153~0 ; LCCOMB_X10_Y7_N2 ; 25 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector164~0 ; LCCOMB_X14_Y9_N16 ; 24 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector189~7 ; LCCOMB_X26_Y16_N24 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector200~7 ; LCCOMB_X26_Y16_N6 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector211~10 ; LCCOMB_X26_Y16_N14 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector213~6 ; LCCOMB_X26_Y16_N28 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector221~9 ; LCCOMB_X26_Y16_N8 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector234~9 ; LCCOMB_X26_Y16_N18 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector241~4 ; LCCOMB_X24_Y16_N0 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|Selector249~4 ; LCCOMB_X24_Y16_N14 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_CMD.DBG_WAIT_CMD~0 ; LCCOMB_X10_Y13_N24 ; 208 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.BITTIMERX[7]~1 ; LCCOMB_X6_Y14_N4 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.RXSHIFTREG[8]~0 ; LCCOMB_X6_Y15_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.RX_STATE.DBGST_RECEIVING ; LCFF_X4_Y14_N13 ; 18 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[0]~2 ; LCCOMB_X9_Y13_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[6]~1 ; LCCOMB_X8_Y14_N28 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[8]~2 ; LCCOMB_X8_Y13_N28 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.TXCNT[0]~0 ; LCCOMB_X6_Y14_N28 ; 12 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.TX_DATA[1]~4 ; LCCOMB_X9_Y15_N2 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR16[15]~8 ; LCCOMB_X16_Y15_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR16[7]~11 ; LCCOMB_X17_Y12_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR16[7]~3 ; LCCOMB_X10_Y10_N0 ; 159 ; Sync. clear ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR[11]~65 ; LCCOMB_X21_Y11_N20 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR[3]~4 ; LCCOMB_X18_Y10_N30 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR[7]~1 ; LCCOMB_X15_Y9_N10 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:RESULT[3]~3 ; LCCOMB_X18_Y12_N10 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; |
; fpz8_cpu_v1:inst|\main:RESULT[7]~5 ; LCCOMB_X6_Y9_N6 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; |
; inst8 ; LCCOMB_X10_Y9_N22 ; 4 ; Write enable ; no ; -- ; -- ; -- ; |
+----------------------------------------------------------------------------------------------------------------------+--------------------+---------+--------------+--------+----------------------+------------------+---------------------------+ |
|
|
+--------------------------------------------------------------------------------------------------+ |
; Global & Other Fast Signals ; |
+-------+----------+---------+----------------------+------------------+---------------------------+ |
; Name ; Location ; Fan-Out ; Global Resource Used ; Global Line Name ; Enable Signal Source Name ; |
+-------+----------+---------+----------------------+------------------+---------------------------+ |
; CLOCK ; PIN_17 ; 531 ; Global Clock ; GCLK2 ; -- ; |
; RESET ; PIN_18 ; 185 ; Global Clock ; GCLK1 ; -- ; |
+-------+----------+---------+----------------------+------------------+---------------------------+ |
|
|
+-----------------------------------------------------------------+ |
; Non-Global High Fan-Out Signals ; |
+-------------------------------------------------------+---------+ |
; Name ; Fan-Out ; |
+-------------------------------------------------------+---------+ |
; fpz8_cpu_v1:inst|Mux34~24 ; 209 ; |
; fpz8_cpu_v1:inst|\main:DBG_CMD.DBG_WAIT_CMD~0 ; 208 ; |
; fpz8_cpu_v1:inst|Mux36~6 ; 189 ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR16[7]~3 ; 159 ; |
; fpz8_cpu_v1:inst|Mux37~6 ; 150 ; |
; fpz8_cpu_v1:inst|Mux31~6 ; 149 ; |
; fpz8_cpu_v1:inst|Selector121~0 ; 138 ; |
; fpz8_cpu_v1:inst|Mux30~18 ; 125 ; |
; fpz8_cpu_v1:inst|Mux35~6 ; 123 ; |
; fpz8_cpu_v1:inst|Mux32~6 ; 122 ; |
; fpz8_cpu_v1:inst|IQUEUE~0 ; 121 ; |
; fpz8_cpu_v1:inst|Equal0~0 ; 120 ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.RX_STATE.DBGST_NOSYNC ; 120 ; |
; fpz8_cpu_v1:inst|LessThan3~0 ; 115 ; |
; fpz8_cpu_v1:inst|LessThan2~0 ; 100 ; |
; fpz8_cpu_v1:inst|Mux33~14 ; 100 ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[0]~0 ; 78 ; |
; fpz8_cpu_v1:inst|main~23 ; 74 ; |
; fpz8_cpu_v1:inst|\main:TEMP_OP[0] ; 73 ; |
; fpz8_cpu_v1:inst|Selector150~5 ; 71 ; |
; fpz8_cpu_v1:inst|MAB~69 ; 69 ; |
; fpz8_cpu_v1:inst|\main:TEMP_OP[3] ; 68 ; |
; fpz8_cpu_v1:inst|Selector353~11 ; 65 ; |
; fpz8_cpu_v1:inst|CPU_STATE~132 ; 59 ; |
; fpz8_cpu_v1:inst|IQUEUE~2 ; 53 ; |
; fpz8_cpu_v1:inst|DATAREAD~6 ; 50 ; |
; fpz8_cpu_v1:inst|Equal13~2 ; 49 ; |
; fpz8_cpu_v1:inst|\main:TEMP_OP[1] ; 47 ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[1]~0 ; 47 ; |
; fpz8_cpu_v1:inst|Mux45~1 ; 46 ; |
; fpz8_cpu_v1:inst|\main:TEMP_OP[2] ; 46 ; |
; fpz8_cpu_v1:inst|DATAREAD~43 ; 45 ; |
; fpz8_cpu_v1:inst|DATAREAD~37 ; 45 ; |
; fpz8_cpu_v1:inst|IQUEUE~3 ; 45 ; |
; fpz8_cpu_v1:inst|DATAREAD~49 ; 44 ; |
; fpz8_cpu_v1:inst|Mux38~1 ; 44 ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[4]~0 ; 43 ; |
; fpz8_cpu_v1:inst|Mux485~5 ; 42 ; |
; fpz8_cpu_v1:inst|DATAREAD~55 ; 42 ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[2]~0 ; 41 ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[3]~0 ; 41 ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR[6]~0 ; 40 ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR[4]~0 ; 39 ; |
; fpz8_cpu_v1:inst|\main:DEST_ADDR[5]~0 ; 39 ; |
; fpz8_cpu_v1:inst|Selector148~0 ; 39 ; |
; fpz8_cpu_v1:inst|\main:IQUEUE.FETCH_STATE ; 38 ; |
; fpz8_cpu_v1:inst|\main:WORD_DATA ; 37 ; |
; fpz8_cpu_v1:inst|Selector143~0 ; 37 ; |
; fpz8_cpu_v1:inst|Selector13~3 ; 36 ; |
; fpz8_cpu_v1:inst|Selector150~6 ; 36 ; |
+-------------------------------------------------------+---------+ |
|
|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Fitter RAM Summary ; |
+---------------------------------------------------------------------------------------------+------+-------------+--------------+--------------+--------------+--------------+--------------+------------------------+-------------------------+------------------------+-------------------------+--------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------+------+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Name ; Type ; Mode ; Clock Mode ; Port A Depth ; Port A Width ; Port B Depth ; Port B Width ; Port A Input Registers ; Port A Output Registers ; Port B Input Registers ; Port B Output Registers ; Size ; Implementation Port A Depth ; Implementation Port A Width ; Implementation Port B Depth ; Implementation Port B Width ; Implementation Bits ; M4Ks ; MIF ; Location ; |
+---------------------------------------------------------------------------------------------+------+-------------+--------------+--------------+--------------+--------------+--------------+------------------------+-------------------------+------------------------+-------------------------+--------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------+------+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; altsyncram1:inst7|altsyncram:altsyncram_component|altsyncram_bua1:auto_generated|ALTSYNCRAM ; AUTO ; Single Port ; Single Clock ; 2048 ; 8 ; -- ; -- ; yes ; no ; -- ; -- ; 16384 ; 2048 ; 8 ; -- ; -- ; 16384 ; 4 ; None ; M4K_X11_Y3, M4K_X11_Y2, M4K_X11_Y1, M4K_X11_Y4 ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|ALTSYNCRAM ; AUTO ; Single Port ; Single Clock ; 16384 ; 8 ; -- ; -- ; yes ; no ; -- ; -- ; 131072 ; 16384 ; 8 ; -- ; -- ; 131072 ; 32 ; ../../vhdl/fpz8/FPZ8_test.mif ; M4K_X27_Y7, M4K_X27_Y3, M4K_X11_Y14, M4K_X11_Y5, M4K_X27_Y1, M4K_X27_Y9, M4K_X27_Y11, M4K_X27_Y13, M4K_X27_Y17, M4K_X27_Y16, M4K_X27_Y12, M4K_X27_Y4, M4K_X11_Y9, M4K_X11_Y13, M4K_X11_Y11, M4K_X11_Y10, M4K_X11_Y16, M4K_X27_Y15, M4K_X11_Y15, M4K_X11_Y18, M4K_X27_Y5, M4K_X27_Y8, M4K_X27_Y10, M4K_X27_Y6, M4K_X11_Y17, M4K_X27_Y2, M4K_X27_Y14, M4K_X27_Y18, M4K_X11_Y7, M4K_X11_Y8, M4K_X11_Y12, M4K_X11_Y6 ; |
+---------------------------------------------------------------------------------------------+------+-------------+--------------+--------------+--------------+--------------+--------------+------------------------+-------------------------+------------------------+-------------------------+--------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------+------+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
Note: Fitter may spread logical memories into multiple blocks to improve timing. The actual required RAM blocks can be found in the Fitter Resource Usage section. |
|
|
+-----------------------------------------------------------------------------------------------+ |
; Fitter DSP Block Usage Summary ; |
+---------------------------------------+-------------+---------------------+-------------------+ |
; Statistic ; Number Used ; Available per Block ; Maximum Available ; |
+---------------------------------------+-------------+---------------------+-------------------+ |
; Simple Multipliers (9-bit) ; 1 ; 2 ; 36 ; |
; Simple Multipliers (18-bit) ; 0 ; 1 ; 18 ; |
; Embedded Multiplier Blocks ; 1 ; -- ; 18 ; |
; Embedded Multiplier 9-bit elements ; 1 ; 2 ; 36 ; |
; Signed Embedded Multipliers ; 0 ; -- ; -- ; |
; Unsigned Embedded Multipliers ; 1 ; -- ; -- ; |
; Mixed Sign Embedded Multipliers ; 0 ; -- ; -- ; |
; Variable Sign Embedded Multipliers ; 0 ; -- ; -- ; |
; Dedicated Input Shift Register Chains ; 0 ; -- ; -- ; |
+---------------------------------------+-------------+---------------------+-------------------+ |
|
|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; DSP Block Details ; |
+----------------------------------------------------------------------+---------------------------+--------------------+---------------------+--------------------------------+-----------------------+-----------------------+-------------------+-----------------+ |
; Name ; Mode ; Location ; Sign Representation ; Has Input Shift Register Chain ; Data A Input Register ; Data B Input Register ; Pipeline Register ; Output Register ; |
+----------------------------------------------------------------------+---------------------------+--------------------+---------------------+--------------------------------+-----------------------+-----------------------+-------------------+-----------------+ |
; fpz8_cpu_v1:inst|lpm_mult:Mult0|mult_o5t:auto_generated|mac_out2 ; Simple Multiplier (9-bit) ; DSPOUT_X20_Y12_N2 ; ; No ; ; ; ; no ; |
; fpz8_cpu_v1:inst|lpm_mult:Mult0|mult_o5t:auto_generated|mac_mult1 ; ; DSPMULT_X20_Y12_N0 ; Variable ; ; no ; no ; no ; ; |
+----------------------------------------------------------------------+---------------------------+--------------------+---------------------+--------------------------------+-----------------------+-----------------------+-------------------+-----------------+ |
|
|
+------------------------------------------------------+ |
; Interconnect Usage Summary ; |
+----------------------------+-------------------------+ |
; Interconnect Resource Type ; Usage ; |
+----------------------------+-------------------------+ |
; Block interconnects ; 8,759 / 26,052 ( 34 % ) ; |
; C16 interconnects ; 77 / 1,156 ( 7 % ) ; |
; C4 interconnects ; 4,673 / 17,952 ( 26 % ) ; |
; Direct links ; 952 / 26,052 ( 4 % ) ; |
; Global clocks ; 2 / 8 ( 25 % ) ; |
; Local interconnects ; 2,682 / 8,256 ( 32 % ) ; |
; R24 interconnects ; 132 / 1,020 ( 13 % ) ; |
; R4 interconnects ; 5,359 / 22,440 ( 24 % ) ; |
+----------------------------+-------------------------+ |
|
|
+-----------------------------------------------------------------------------+ |
; LAB Logic Elements ; |
+---------------------------------------------+-------------------------------+ |
; Number of Logic Elements (Average = 14.40) ; Number of LABs (Total = 341) ; |
+---------------------------------------------+-------------------------------+ |
; 1 ; 6 ; |
; 2 ; 1 ; |
; 3 ; 3 ; |
; 4 ; 3 ; |
; 5 ; 2 ; |
; 6 ; 0 ; |
; 7 ; 2 ; |
; 8 ; 6 ; |
; 9 ; 1 ; |
; 10 ; 7 ; |
; 11 ; 10 ; |
; 12 ; 11 ; |
; 13 ; 15 ; |
; 14 ; 30 ; |
; 15 ; 31 ; |
; 16 ; 213 ; |
+---------------------------------------------+-------------------------------+ |
|
|
+--------------------------------------------------------------------+ |
; LAB-wide Signals ; |
+------------------------------------+-------------------------------+ |
; LAB-wide Signals (Average = 1.23) ; Number of LABs (Total = 341) ; |
+------------------------------------+-------------------------------+ |
; 1 Async. clear ; 77 ; |
; 1 Clock ; 160 ; |
; 1 Clock enable ; 118 ; |
; 1 Sync. load ; 38 ; |
; 2 Clock enables ; 27 ; |
+------------------------------------+-------------------------------+ |
|
|
+------------------------------------------------------------------------------+ |
; LAB Signals Sourced ; |
+----------------------------------------------+-------------------------------+ |
; Number of Signals Sourced (Average = 15.83) ; Number of LABs (Total = 341) ; |
+----------------------------------------------+-------------------------------+ |
; 0 ; 0 ; |
; 1 ; 6 ; |
; 2 ; 1 ; |
; 3 ; 3 ; |
; 4 ; 1 ; |
; 5 ; 0 ; |
; 6 ; 2 ; |
; 7 ; 3 ; |
; 8 ; 2 ; |
; 9 ; 3 ; |
; 10 ; 5 ; |
; 11 ; 4 ; |
; 12 ; 9 ; |
; 13 ; 11 ; |
; 14 ; 19 ; |
; 15 ; 21 ; |
; 16 ; 140 ; |
; 17 ; 36 ; |
; 18 ; 19 ; |
; 19 ; 19 ; |
; 20 ; 14 ; |
; 21 ; 6 ; |
; 22 ; 4 ; |
; 23 ; 3 ; |
; 24 ; 5 ; |
; 25 ; 0 ; |
; 26 ; 0 ; |
; 27 ; 4 ; |
; 28 ; 0 ; |
; 29 ; 0 ; |
; 30 ; 1 ; |
+----------------------------------------------+-------------------------------+ |
|
|
+---------------------------------------------------------------------------------+ |
; LAB Signals Sourced Out ; |
+-------------------------------------------------+-------------------------------+ |
; Number of Signals Sourced Out (Average = 8.86) ; Number of LABs (Total = 341) ; |
+-------------------------------------------------+-------------------------------+ |
; 0 ; 0 ; |
; 1 ; 10 ; |
; 2 ; 6 ; |
; 3 ; 15 ; |
; 4 ; 14 ; |
; 5 ; 21 ; |
; 6 ; 28 ; |
; 7 ; 31 ; |
; 8 ; 44 ; |
; 9 ; 40 ; |
; 10 ; 21 ; |
; 11 ; 17 ; |
; 12 ; 23 ; |
; 13 ; 21 ; |
; 14 ; 18 ; |
; 15 ; 13 ; |
; 16 ; 19 ; |
+-------------------------------------------------+-------------------------------+ |
|
|
+------------------------------------------------------------------------------+ |
; LAB Distinct Inputs ; |
+----------------------------------------------+-------------------------------+ |
; Number of Distinct Inputs (Average = 23.24) ; Number of LABs (Total = 341) ; |
+----------------------------------------------+-------------------------------+ |
; 0 ; 0 ; |
; 1 ; 0 ; |
; 2 ; 1 ; |
; 3 ; 0 ; |
; 4 ; 6 ; |
; 5 ; 2 ; |
; 6 ; 1 ; |
; 7 ; 0 ; |
; 8 ; 1 ; |
; 9 ; 3 ; |
; 10 ; 1 ; |
; 11 ; 5 ; |
; 12 ; 8 ; |
; 13 ; 4 ; |
; 14 ; 6 ; |
; 15 ; 8 ; |
; 16 ; 7 ; |
; 17 ; 17 ; |
; 18 ; 9 ; |
; 19 ; 13 ; |
; 20 ; 11 ; |
; 21 ; 12 ; |
; 22 ; 14 ; |
; 23 ; 9 ; |
; 24 ; 28 ; |
; 25 ; 22 ; |
; 26 ; 24 ; |
; 27 ; 27 ; |
; 28 ; 19 ; |
; 29 ; 20 ; |
; 30 ; 23 ; |
; 31 ; 23 ; |
; 32 ; 17 ; |
+----------------------------------------------+-------------------------------+ |
|
|
+-------------------------------------------------------------------------+ |
; Fitter Device Options ; |
+----------------------------------------------+--------------------------+ |
; Option ; Setting ; |
+----------------------------------------------+--------------------------+ |
; Enable user-supplied start-up clock (CLKUSR) ; Off ; |
; Enable device-wide reset (DEV_CLRn) ; Off ; |
; Enable device-wide output enable (DEV_OE) ; Off ; |
; Enable INIT_DONE output ; Off ; |
; Configuration scheme ; Active Serial ; |
; Error detection CRC ; Off ; |
; nCEO ; As output driving ground ; |
; ASDO,nCSO ; As input tri-stated ; |
; Reserve all unused pins ; As output driving ground ; |
; Base pin-out file on sameframe device ; Off ; |
+----------------------------------------------+--------------------------+ |
|
|
+------------------------------------+ |
; Operating Settings and Conditions ; |
+---------------------------+--------+ |
; Setting ; Value ; |
+---------------------------+--------+ |
; Nominal Core Voltage ; 1.20 V ; |
|
|
+---------------------------+--------+ |
|
|
+------------------------------------------------------------+ |
; Estimated Delay Added for Hold Timing ; |
+-----------------+----------------------+-------------------+ |
; Source Clock(s) ; Destination Clock(s) ; Delay Added in ns ; |
+-----------------+----------------------+-------------------+ |
|
|
+-----------------+ |
; Fitter Messages ; |
+-----------------+ |
Info: ******************************************************************* |
Info: Running Quartus II Fitter |
Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition |
Info: Processing started: Thu Nov 10 23:29:22 2016 |
Info: Command: quartus_fit --read_settings_files=off --write_settings_files=off FPz8 -c FPz8 |
Info: Automatically selected device EP2C8T144C6 for design FPz8 |
Info: Fitting design with smaller device may be possible, but smaller device must be specified |
Info: Fitter is performing a Standard Fit compilation using maximum Fitter effort to optimize design performance |
Warning: Feature LogicLock is only available with a valid subscription license. Please purchase a software subscription to gain full access to this feature. |
Info: Device migration not selected. If you intend to use device migration later, you may need to change the pin assignments as they may be incompatible with other devices |
Info: Device EP2C5T144C6 is compatible |
Info: Fitter converted 3 user pins into dedicated programming pins |
Info: Pin ~ASDO~ is reserved at location 1 |
Info: Pin ~nCSO~ is reserved at location 2 |
Info: Pin ~LVDS54p/nCEO~ is reserved at location 76 |
Info: Design uses memory blocks. Violating setup or hold times of memory block address registers for either read or write operations could cause memory contents to be corrupted. Make sure that all memory block address registers meet the setup and hold time requirements. |
Critical Warning: No exact pin location assignment(s) for 12 pins of 12 total pins |
Info: Pin DBG_TX not assigned to an exact location on the device |
Info: Pin PAOUT[7] not assigned to an exact location on the device |
Info: Pin PAOUT[6] not assigned to an exact location on the device |
Info: Pin PAOUT[5] not assigned to an exact location on the device |
Info: Pin PAOUT[4] not assigned to an exact location on the device |
Info: Pin PAOUT[3] not assigned to an exact location on the device |
Info: Pin PAOUT[2] not assigned to an exact location on the device |
Info: Pin PAOUT[1] not assigned to an exact location on the device |
Info: Pin PAOUT[0] not assigned to an exact location on the device |
Info: Pin CLOCK not assigned to an exact location on the device |
Info: Pin RESET not assigned to an exact location on the device |
Info: Pin DBG_RX not assigned to an exact location on the device |
Info: Timing-driven compilation is using the Classic Timing Analyzer |
Info: Timing requirements not specified -- optimizing circuit to achieve the following default global requirements |
Info: Assuming a global fmax requirement of 1000 MHz |
Info: Not setting a global tsu requirement |
Info: Not setting a global tco requirement |
Info: Not setting a global tpd requirement |
Info: Automatically promoted node CLOCK (placed in PIN 17 (CLK0, LVDSCLK0p, Input)) |
Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G2 |
Info: Automatically promoted node RESET (placed in PIN 18 (CLK1, LVDSCLK0n, Input)) |
Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G1 |
Info: Following destination nodes may be non-global or may not use global or regional clocks |
Info: Destination node fpz8_cpu_v1:inst|\main:DBG_CMD.DBG_WAIT_CMD~0 |
Info: Starting register packing |
Extra Info: Performing register packing on registers with non-logic cell location assignments |
Extra Info: Completed register packing on registers with non-logic cell location assignments |
Extra Info: Started Fast Input/Output/OE register processing |
Extra Info: Finished Fast Input/Output/OE register processing |
Extra Info: Moving registers into I/O cells, Multiplier Blocks, and RAM blocks to improve timing and density |
Extra Info: Finished moving registers into I/O cells, Multiplier Blocks, and RAM blocks |
Info: Finished register packing |
Extra Info: No registers were packed into other blocks |
Info: Statistics of I/O pins that need to be placed that use the same VCCIO and VREF, before I/O pin placement |
Info: Number of I/O pins in group: 10 (unused VREF, 3.3V VCCIO, 1 input, 9 output, 0 bidirectional) |
Info: I/O standards used: 3.3-V LVTTL. |
Info: I/O bank details before I/O pin placement |
Info: Statistics of I/O banks |
Info: I/O bank number 1 does not use VREF pins and has undetermined VCCIO pins. 4 total pin(s) used -- 13 pins available |
Info: I/O bank number 2 does not use VREF pins and has undetermined VCCIO pins. 0 total pin(s) used -- 23 pins available |
Info: I/O bank number 3 does not use VREF pins and has undetermined VCCIO pins. 1 total pin(s) used -- 20 pins available |
Info: I/O bank number 4 does not use VREF pins and has undetermined VCCIO pins. 0 total pin(s) used -- 24 pins available |
Info: Fitter preparation operations ending: elapsed time is 00:00:01 |
Info: Fitter placement preparation operations beginning |
Info: Fitter placement preparation operations ending: elapsed time is 00:00:03 |
Info: Fitter placement operations beginning |
Info: Fitter placement was successful |
Info: Fitter placement operations ending: elapsed time is 00:00:12 |
Info: Estimated most critical path is register to register delay of 28.406 ns |
Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LAB_X14_Y14; Fanout = 2; REG Node = 'fpz8_cpu_v1:inst|\main:DBG_UART.BAUDPRE[1]' |
Info: 2: + IC(0.203 ns) + CELL(0.420 ns) = 0.623 ns; Loc. = LAB_X14_Y14; Fanout = 4; COMB Node = 'fpz8_cpu_v1:inst|Equal2~0' |
Info: 3: + IC(1.635 ns) + CELL(0.414 ns) = 2.672 ns; Loc. = LAB_X5_Y15; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add5~1' |
Info: 4: + IC(0.000 ns) + CELL(0.071 ns) = 2.743 ns; Loc. = LAB_X5_Y15; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add5~3' |
Info: 5: + IC(0.000 ns) + CELL(0.071 ns) = 2.814 ns; Loc. = LAB_X5_Y15; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add5~5' |
Info: 6: + IC(0.000 ns) + CELL(0.071 ns) = 2.885 ns; Loc. = LAB_X5_Y15; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add5~7' |
Info: 7: + IC(0.000 ns) + CELL(0.071 ns) = 2.956 ns; Loc. = LAB_X5_Y15; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add5~9' |
Info: 8: + IC(0.000 ns) + CELL(0.410 ns) = 3.366 ns; Loc. = LAB_X5_Y15; Fanout = 6; COMB Node = 'fpz8_cpu_v1:inst|Add5~10' |
Info: 9: + IC(0.625 ns) + CELL(0.415 ns) = 4.406 ns; Loc. = LAB_X5_Y16; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Equal5~4' |
Info: 10: + IC(0.317 ns) + CELL(0.437 ns) = 5.160 ns; Loc. = LAB_X4_Y16; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|Equal5~6' |
Info: 11: + IC(0.605 ns) + CELL(0.150 ns) = 5.915 ns; Loc. = LAB_X3_Y16; Fanout = 17; COMB Node = 'fpz8_cpu_v1:inst|Equal5~7' |
Info: 12: + IC(0.415 ns) + CELL(0.150 ns) = 6.480 ns; Loc. = LAB_X3_Y16; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|Selector189~4' |
Info: 13: + IC(1.112 ns) + CELL(0.150 ns) = 7.742 ns; Loc. = LAB_X9_Y16; Fanout = 12; COMB Node = 'fpz8_cpu_v1:inst|Selector189~5' |
Info: 14: + IC(1.353 ns) + CELL(0.438 ns) = 9.533 ns; Loc. = LAB_X24_Y16; Fanout = 10; COMB Node = 'fpz8_cpu_v1:inst|Mux34~11' |
Info: 15: + IC(0.290 ns) + CELL(0.275 ns) = 10.098 ns; Loc. = LAB_X24_Y16; Fanout = 8; COMB Node = 'fpz8_cpu_v1:inst|Mux34~12' |
Info: 16: + IC(1.042 ns) + CELL(0.275 ns) = 11.415 ns; Loc. = LAB_X28_Y13; Fanout = 149; COMB Node = 'fpz8_cpu_v1:inst|Mux31~6' |
Info: 17: + IC(0.127 ns) + CELL(0.437 ns) = 11.979 ns; Loc. = LAB_X28_Y13; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|Mux485~3' |
Info: 18: + IC(0.290 ns) + CELL(0.275 ns) = 12.544 ns; Loc. = LAB_X28_Y13; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|Mux485~4' |
Info: 19: + IC(0.415 ns) + CELL(0.150 ns) = 13.109 ns; Loc. = LAB_X28_Y13; Fanout = 42; COMB Node = 'fpz8_cpu_v1:inst|Mux485~5' |
Info: 20: + IC(0.624 ns) + CELL(0.393 ns) = 14.126 ns; Loc. = LAB_X29_Y12; Fanout = 13; COMB Node = 'fpz8_cpu_v1:inst|IQUEUE~15' |
Info: 21: + IC(0.607 ns) + CELL(0.438 ns) = 15.171 ns; Loc. = LAB_X29_Y13; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|Mux801~0' |
Info: 22: + IC(0.290 ns) + CELL(0.271 ns) = 15.732 ns; Loc. = LAB_X29_Y13; Fanout = 7; COMB Node = 'fpz8_cpu_v1:inst|Mux801~1' |
Info: 23: + IC(0.618 ns) + CELL(0.438 ns) = 16.788 ns; Loc. = LAB_X29_Y15; Fanout = 4; COMB Node = 'fpz8_cpu_v1:inst|Equal76~1' |
Info: 24: + IC(0.911 ns) + CELL(0.150 ns) = 17.849 ns; Loc. = LAB_X29_Y12; Fanout = 10; COMB Node = 'fpz8_cpu_v1:inst|Equal75~0' |
Info: 25: + IC(0.607 ns) + CELL(0.438 ns) = 18.894 ns; Loc. = LAB_X30_Y11; Fanout = 5; COMB Node = 'fpz8_cpu_v1:inst|NUM_BYTES~24' |
Info: 26: + IC(0.415 ns) + CELL(0.150 ns) = 19.459 ns; Loc. = LAB_X30_Y11; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|NUM_BYTES~27' |
Info: 27: + IC(0.607 ns) + CELL(0.438 ns) = 20.504 ns; Loc. = LAB_X29_Y10; Fanout = 3; COMB Node = 'fpz8_cpu_v1:inst|NUM_BYTES~31' |
Info: 28: + IC(0.605 ns) + CELL(0.150 ns) = 21.259 ns; Loc. = LAB_X30_Y10; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|NUM_BYTES~59' |
Info: 29: + IC(0.895 ns) + CELL(0.149 ns) = 22.303 ns; Loc. = LAB_X29_Y11; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|NUM_BYTES~114' |
Info: 30: + IC(0.145 ns) + CELL(0.420 ns) = 22.868 ns; Loc. = LAB_X29_Y11; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|NUM_BYTES~63' |
Info: 31: + IC(0.145 ns) + CELL(0.419 ns) = 23.432 ns; Loc. = LAB_X29_Y11; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|NUM_BYTES~91' |
Info: 32: + IC(0.127 ns) + CELL(0.438 ns) = 23.997 ns; Loc. = LAB_X29_Y11; Fanout = 7; COMB Node = 'fpz8_cpu_v1:inst|NUM_BYTES~92' |
Info: 33: + IC(1.676 ns) + CELL(0.414 ns) = 26.087 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~1' |
Info: 34: + IC(0.000 ns) + CELL(0.071 ns) = 26.158 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~3' |
Info: 35: + IC(0.000 ns) + CELL(0.071 ns) = 26.229 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~5' |
Info: 36: + IC(0.000 ns) + CELL(0.071 ns) = 26.300 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~7' |
Info: 37: + IC(0.000 ns) + CELL(0.071 ns) = 26.371 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~9' |
Info: 38: + IC(0.000 ns) + CELL(0.071 ns) = 26.442 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~11' |
Info: 39: + IC(0.000 ns) + CELL(0.071 ns) = 26.513 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~13' |
Info: 40: + IC(0.000 ns) + CELL(0.071 ns) = 26.584 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~15' |
Info: 41: + IC(0.000 ns) + CELL(0.071 ns) = 26.655 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~17' |
Info: 42: + IC(0.000 ns) + CELL(0.071 ns) = 26.726 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~19' |
Info: 43: + IC(0.000 ns) + CELL(0.071 ns) = 26.797 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~21' |
Info: 44: + IC(0.000 ns) + CELL(0.071 ns) = 26.868 ns; Loc. = LAB_X15_Y14; Fanout = 2; COMB Node = 'fpz8_cpu_v1:inst|Add33~23' |
Info: 45: + IC(0.000 ns) + CELL(0.410 ns) = 27.278 ns; Loc. = LAB_X15_Y14; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|Add33~24' |
Info: 46: + IC(0.625 ns) + CELL(0.419 ns) = 28.322 ns; Loc. = LAB_X16_Y13; Fanout = 1; COMB Node = 'fpz8_cpu_v1:inst|Selector443~4' |
Info: 47: + IC(0.000 ns) + CELL(0.084 ns) = 28.406 ns; Loc. = LAB_X16_Y13; Fanout = 3; REG Node = 'fpz8_cpu_v1:inst|\main:PC[12]' |
Info: Total cell delay = 11.080 ns ( 39.01 % ) |
Info: Total interconnect delay = 17.326 ns ( 60.99 % ) |
Info: Fitter routing operations beginning |
Info: Average interconnect usage is 22% of the available device resources |
Info: Peak interconnect usage is 32% of the available device resources in the region that extends from location X11_Y0 to location X22_Y9 |
Info: Fitter routing operations ending: elapsed time is 00:00:10 |
Info: Started post-fitting delay annotation |
Warning: Found 9 output pins without output pin load capacitance assignment |
Info: Pin "DBG_TX" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Pin "PAOUT[7]" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Pin "PAOUT[6]" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Pin "PAOUT[5]" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Pin "PAOUT[4]" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Pin "PAOUT[3]" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Pin "PAOUT[2]" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Pin "PAOUT[1]" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Pin "PAOUT[0]" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis |
Info: Delay annotation completed successfully |
Info: Design uses memory blocks. Violating setup or hold times of memory block address registers for either read or write operations could cause memory contents to be corrupted. Make sure that all memory block address registers meet the setup and hold time requirements. |
Warning: The Reserve All Unused Pins setting has not been specified, and will default to 'As output driving ground'. |
Info: Quartus II Fitter was successful. 0 errors, 4 warnings |
Info: Peak virtual memory: 265 megabytes |
Info: Processing ended: Thu Nov 10 23:29:56 2016 |
Info: Elapsed time: 00:00:34 |
Info: Total CPU time (on all processors): 00:00:32 |
|
|
Fitter Status : Successful - Thu Nov 10 23:29:55 2016 |
Quartus II Version : 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition |
Revision Name : FPz8 |
Top-level Entity Name : CPU |
Family : Cyclone II |
Device : EP2C8T144C6 |
Timing Models : Final |
Total logic elements : 4,910 / 8,256 ( 59 % ) |
Total combinational functions : 4,872 / 8,256 ( 59 % ) |
Dedicated logic registers : 495 / 8,256 ( 6 % ) |
Total registers : 495 |
Total pins : 12 / 85 ( 14 % ) |
Total virtual pins : 0 |
Total memory bits : 147,456 / 165,888 ( 89 % ) |
Embedded Multiplier 9-bit elements : 1 / 36 ( 3 % ) |
Total PLLs : 0 / 2 ( 0 % ) |
Flow report for FPz8 |
Thu Nov 10 23:30:03 2016 |
Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition |
|
|
--------------------- |
; Table of Contents ; |
--------------------- |
1. Legal Notice |
2. Flow Summary |
3. Flow Settings |
4. Flow Non-Default Global Settings |
5. Flow Elapsed Time |
6. Flow OS Summary |
7. Flow Log |
|
|
|
---------------- |
; Legal Notice ; |
---------------- |
Copyright (C) 1991-2010 Altera Corporation |
Your use of Altera Corporation's design tools, logic functions |
and other software and tools, and its AMPP partner logic |
functions, and any output files from any of the foregoing |
(including device programming or simulation files), and any |
associated documentation or information are expressly subject |
to the terms and conditions of the Altera Program License |
Subscription Agreement, Altera MegaCore Function License |
Agreement, or other applicable license agreement, including, |
without limitation, that your use is for the sole purpose of |
programming logic devices manufactured by Altera and sold by |
Altera or its authorized distributors. Please refer to the |
applicable agreement for further details. |
|
|
|
+-----------------------------------------------------------------------------------+ |
; Flow Summary ; |
+------------------------------------+----------------------------------------------+ |
; Flow Status ; Successful - Thu Nov 10 23:30:03 2016 ; |
; Quartus II Version ; 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition ; |
; Revision Name ; FPz8 ; |
; Top-level Entity Name ; CPU ; |
; Family ; Cyclone II ; |
; Met timing requirements ; Yes ; |
; Total logic elements ; 4,910 / 8,256 ( 59 % ) ; |
; Total combinational functions ; 4,872 / 8,256 ( 59 % ) ; |
; Dedicated logic registers ; 495 / 8,256 ( 6 % ) ; |
; Total registers ; 495 ; |
; Total pins ; 12 / 85 ( 14 % ) ; |
; Total virtual pins ; 0 ; |
; Total memory bits ; 147,456 / 165,888 ( 89 % ) ; |
; Embedded Multiplier 9-bit elements ; 1 / 36 ( 3 % ) ; |
; Total PLLs ; 0 / 2 ( 0 % ) ; |
; Device ; EP2C8T144C6 ; |
; Timing Models ; Final ; |
+------------------------------------+----------------------------------------------+ |
|
|
+-----------------------------------------+ |
; Flow Settings ; |
+-------------------+---------------------+ |
; Option ; Setting ; |
+-------------------+---------------------+ |
; Start date & time ; 11/10/2016 23:27:00 ; |
; Main task ; Compilation ; |
; Revision Name ; FPz8 ; |
+-------------------+---------------------+ |
|
|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Flow Non-Default Global Settings ; |
+------------------------------------+------------------------------------------------------------------+------------------------------+-------------+----------------+ |
; Assignment Name ; Value ; Default Value ; Entity Name ; Section Id ; |
+------------------------------------+------------------------------------------------------------------+------------------------------+-------------+----------------+ |
; ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION ; On ; Off ; -- ; -- ; |
; COMPILER_SIGNATURE_ID ; 8796753254599.147882762002528 ; -- ; -- ; -- ; |
; FITTER_EFFORT ; Standard Fit ; Auto Fit ; -- ; -- ; |
; INCREMENTAL_COMPILATION ; Off ; FULL_INCREMENTAL_COMPILATION ; -- ; -- ; |
; IP_TOOL_NAME ; ALTSYNCRAM ; -- ; -- ; -- ; |
; IP_TOOL_NAME ; ALTSYNCRAM ; -- ; -- ; -- ; |
; IP_TOOL_NAME ; ALTSYNCRAM ; -- ; -- ; -- ; |
; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; |
; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; |
; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; |
; MISC_FILE ; E:/VHDL/AHMES_IO2/AHMES.dpf ; -- ; -- ; -- ; |
; MISC_FILE ; altsyncram0.bsf ; -- ; -- ; -- ; |
; MISC_FILE ; altsyncram0.cmp ; -- ; -- ; -- ; |
; MISC_FILE ; altsyncram1.bsf ; -- ; -- ; -- ; |
; MISC_FILE ; altsyncram1.cmp ; -- ; -- ; -- ; |
; MISC_FILE ; altsyncram2.bsf ; -- ; -- ; -- ; |
; MISC_FILE ; altsyncram2.cmp ; -- ; -- ; -- ; |
; PARTITION_NETLIST_TYPE ; SOURCE ; -- ; CPU ; Top ; |
|
; SMART_RECOMPILE ; On ; Off ; -- ; -- ; |
; TOP_LEVEL_ENTITY ; CPU ; FPz8 ; -- ; -- ; |
|
; USE_GENERATED_PHYSICAL_CONSTRAINTS ; Off ; -- ; -- ; eda_blast_fpga ; |
+------------------------------------+------------------------------------------------------------------+------------------------------+-------------+----------------+ |
|
|
+-----------------------------------------------------------------------------------------------------------------------------+ |
; Flow Elapsed Time ; |
+-------------------------+--------------+-------------------------+---------------------+------------------------------------+ |
; Module Name ; Elapsed Time ; Average Processors Used ; Peak Virtual Memory ; Total CPU Time (on all processors) ; |
+-------------------------+--------------+-------------------------+---------------------+------------------------------------+ |
; Analysis & Synthesis ; 00:02:22 ; 1.0 ; 269 MB ; 00:02:19 ; |
; Fitter ; 00:00:33 ; 1.0 ; 238 MB ; 00:00:32 ; |
; Assembler ; 00:00:02 ; 1.0 ; 196 MB ; 00:00:02 ; |
; Classic Timing Analyzer ; 00:00:03 ; 1.0 ; 193 MB ; 00:00:03 ; |
; Total ; 00:03:00 ; -- ; -- ; 00:02:56 ; |
+-------------------------+--------------+-------------------------+---------------------+------------------------------------+ |
|
|
+------------------------------------------------------------------------------------------+ |
; Flow OS Summary ; |
+-------------------------+------------------+---------------+------------+----------------+ |
; Module Name ; Machine Hostname ; OS Name ; OS Version ; Processor type ; |
+-------------------------+------------------+---------------+------------+----------------+ |
; Analysis & Synthesis ; Fabio-PC ; Windows Vista ; 6.1 ; i686 ; |
; Fitter ; Fabio-PC ; Windows Vista ; 6.1 ; i686 ; |
; Assembler ; Fabio-PC ; Windows Vista ; 6.1 ; i686 ; |
; Classic Timing Analyzer ; Fabio-PC ; Windows Vista ; 6.1 ; i686 ; |
+-------------------------+------------------+---------------+------------+----------------+ |
|
|
------------ |
; Flow Log ; |
------------ |
quartus_map --read_settings_files=on --write_settings_files=off FPz8 -c FPz8 |
quartus_fit --read_settings_files=off --write_settings_files=off FPz8 -c FPz8 |
quartus_asm --read_settings_files=off --write_settings_files=off FPz8 -c FPz8 |
quartus_tan --read_settings_files=off --write_settings_files=off FPz8 -c FPz8 --timing_analysis_only |
|
|
|
Analysis & Synthesis report for FPz8 |
Thu Nov 10 23:29:21 2016 |
Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition |
|
|
--------------------- |
; Table of Contents ; |
--------------------- |
1. Legal Notice |
2. Analysis & Synthesis Summary |
3. Analysis & Synthesis Settings |
4. Parallel Compilation |
5. Analysis & Synthesis Source Files Read |
6. Analysis & Synthesis Resource Usage Summary |
7. Analysis & Synthesis Resource Utilization by Entity |
8. Analysis & Synthesis RAM Summary |
9. Analysis & Synthesis DSP Block Usage Summary |
10. State Machine - |CPU|fpz8_cpu_v1:inst|\main:DBG_CMD |
11. State Machine - |CPU|fpz8_cpu_v1:inst|\main:CPU_STATE |
12. State Machine - |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.TX_STATE |
13. State Machine - |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.RX_STATE |
14. Registers Protected by Synthesis |
15. Registers Removed During Synthesis |
16. General Register Statistics |
17. Inverted Register Statistics |
18. Multiplexer Restructuring Statistics (Restructuring Performed) |
19. Source assignments for fpz8_cpu_v1:inst |
20. Source assignments for altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated |
21. Source assignments for altsyncram1:inst7|altsyncram:altsyncram_component|altsyncram_bua1:auto_generated |
22. Parameter Settings for User Entity Instance: altsyncram2:inst1|altsyncram:altsyncram_component |
23. Parameter Settings for User Entity Instance: altsyncram1:inst7|altsyncram:altsyncram_component |
24. Parameter Settings for Inferred Entity Instance: fpz8_cpu_v1:inst|lpm_mult:Mult0 |
25. altsyncram Parameter Settings by Entity Instance |
26. lpm_mult Parameter Settings by Entity Instance |
27. Analysis & Synthesis Messages |
|
|
|
---------------- |
; Legal Notice ; |
---------------- |
Copyright (C) 1991-2010 Altera Corporation |
Your use of Altera Corporation's design tools, logic functions |
and other software and tools, and its AMPP partner logic |
functions, and any output files from any of the foregoing |
(including device programming or simulation files), and any |
associated documentation or information are expressly subject |
to the terms and conditions of the Altera Program License |
Subscription Agreement, Altera MegaCore Function License |
Agreement, or other applicable license agreement, including, |
without limitation, that your use is for the sole purpose of |
programming logic devices manufactured by Altera and sold by |
Altera or its authorized distributors. Please refer to the |
applicable agreement for further details. |
|
|
|
+-----------------------------------------------------------------------------------+ |
; Analysis & Synthesis Summary ; |
+------------------------------------+----------------------------------------------+ |
; Analysis & Synthesis Status ; Successful - Thu Nov 10 23:29:21 2016 ; |
; Quartus II Version ; 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition ; |
; Revision Name ; FPz8 ; |
; Top-level Entity Name ; CPU ; |
; Family ; Cyclone II ; |
; Total logic elements ; 4,905 ; |
; Total combinational functions ; 4,872 ; |
; Dedicated logic registers ; 495 ; |
; Total registers ; 495 ; |
; Total pins ; 12 ; |
; Total virtual pins ; 0 ; |
; Total memory bits ; 147,456 ; |
; Embedded Multiplier 9-bit elements ; 1 ; |
; Total PLLs ; 0 ; |
+------------------------------------+----------------------------------------------+ |
|
|
+----------------------------------------------------------------------------------------------------------------------+ |
; Analysis & Synthesis Settings ; |
+----------------------------------------------------------------------------+--------------------+--------------------+ |
; Option ; Setting ; Default Value ; |
+----------------------------------------------------------------------------+--------------------+--------------------+ |
; Top-level entity name ; CPU ; FPz8 ; |
; Family name ; Cyclone II ; Stratix ; |
; Use smart compilation ; On ; Off ; |
; Use Generated Physical Constraints File ; Off ; ; |
; Allow Any RAM Size For Recognition ; On ; Off ; |
; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; |
; Enable compact report table ; Off ; Off ; |
; Restructure Multiplexers ; Auto ; Auto ; |
; Create Debugging Nodes for IP Cores ; Off ; Off ; |
; Preserve fewer node names ; On ; On ; |
; Disable OpenCore Plus hardware evaluation ; Off ; Off ; |
; Verilog Version ; Verilog_2001 ; Verilog_2001 ; |
; VHDL Version ; VHDL_1993 ; VHDL_1993 ; |
; State Machine Processing ; Auto ; Auto ; |
; Safe State Machine ; Off ; Off ; |
; Extract Verilog State Machines ; On ; On ; |
; Extract VHDL State Machines ; On ; On ; |
; Ignore Verilog initial constructs ; Off ; Off ; |
; Iteration limit for constant Verilog loops ; 5000 ; 5000 ; |
; Iteration limit for non-constant Verilog loops ; 250 ; 250 ; |
; Add Pass-Through Logic to Inferred RAMs ; On ; On ; |
; Parallel Synthesis ; Off ; Off ; |
; DSP Block Balancing ; Auto ; Auto ; |
; NOT Gate Push-Back ; On ; On ; |
; Power-Up Don't Care ; On ; On ; |
; Remove Redundant Logic Cells ; Off ; Off ; |
; Remove Duplicate Registers ; On ; On ; |
; Ignore CARRY Buffers ; Off ; Off ; |
; Ignore CASCADE Buffers ; Off ; Off ; |
; Ignore GLOBAL Buffers ; Off ; Off ; |
; Ignore ROW GLOBAL Buffers ; Off ; Off ; |
; Ignore LCELL Buffers ; Off ; Off ; |
; Ignore SOFT Buffers ; On ; On ; |
; Limit AHDL Integers to 32 Bits ; Off ; Off ; |
; Optimization Technique ; Balanced ; Balanced ; |
; Carry Chain Length ; 70 ; 70 ; |
; Auto Carry Chains ; On ; On ; |
; Auto Open-Drain Pins ; On ; On ; |
; Perform WYSIWYG Primitive Resynthesis ; Off ; Off ; |
; Auto ROM Replacement ; On ; On ; |
; Auto RAM Replacement ; On ; On ; |
; Auto Shift Register Replacement ; Auto ; Auto ; |
; Auto Clock Enable Replacement ; On ; On ; |
; Strict RAM Replacement ; Off ; Off ; |
; Allow Synchronous Control Signals ; On ; On ; |
; Force Use of Synchronous Clear Signals ; Off ; Off ; |
; Auto RAM to Logic Cell Conversion ; Off ; Off ; |
; Auto Resource Sharing ; Off ; Off ; |
; Allow Any ROM Size For Recognition ; Off ; Off ; |
; Allow Any Shift Register Size For Recognition ; Off ; Off ; |
; Use LogicLock Constraints during Resource Balancing ; On ; On ; |
; Ignore translate_off and synthesis_off directives ; Off ; Off ; |
; Timing-Driven Synthesis ; Off ; Off ; |
; Show Parameter Settings Tables in Synthesis Report ; On ; On ; |
; Ignore Maximum Fan-Out Assignments ; Off ; Off ; |
; Synchronization Register Chain Length ; 2 ; 2 ; |
; PowerPlay Power Optimization ; Normal compilation ; Normal compilation ; |
; HDL message level ; Level2 ; Level2 ; |
; Suppress Register Optimization Related Messages ; Off ; Off ; |
; Number of Removed Registers Reported in Synthesis Report ; 5000 ; 5000 ; |
; Number of Inverted Registers Reported in Synthesis Report ; 100 ; 100 ; |
; Clock MUX Protection ; On ; On ; |
; Auto Gated Clock Conversion ; Off ; Off ; |
; Block Design Naming ; Auto ; Auto ; |
; SDC constraint protection ; Off ; Off ; |
; Synthesis Effort ; Auto ; Auto ; |
; Shift Register Replacement - Allow Asynchronous Clear Signal ; On ; On ; |
; Analysis & Synthesis Message Level ; Medium ; Medium ; |
; Disable Register Merging Across Hierarchies ; Auto ; Auto ; |
; Resource Aware Inference For Block RAM ; On ; On ; |
+----------------------------------------------------------------------------+--------------------+--------------------+ |
|
|
Parallel compilation was disabled, but you have multiple processors available. Enable parallel compilation to reduce compilation time. |
+-------------------------------------+ |
; Parallel Compilation ; |
+----------------------------+--------+ |
; Processors ; Number ; |
+----------------------------+--------+ |
; Number detected on machine ; 4 ; |
; Maximum allowed ; 1 ; |
+----------------------------+--------+ |
|
|
+----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Analysis & Synthesis Source Files Read ; |
+----------------------------------+-----------------+------------------------------------+----------------------------------------------------------------+ |
; File Name with User-Entered Path ; Used in Netlist ; File Type ; File Name with Absolute Path ; |
+----------------------------------+-----------------+------------------------------------+----------------------------------------------------------------+ |
; CPU.bdf ; yes ; User Block Diagram/Schematic File ; E:/VHDL/FPZ8/CPU.bdf ; |
; fpz8_cpu_v1.vhd ; yes ; User VHDL File ; E:/VHDL/FPZ8/fpz8_cpu_v1.vhd ; |
; FPZ8_test.mif ; yes ; User Memory Initialization File ; E:/VHDL/FPZ8/FPZ8_test.mif ; |
; altsyncram1.vhd ; yes ; User Wizard-Generated File ; E:/VHDL/FPZ8/altsyncram1.vhd ; |
; altsyncram2.vhd ; yes ; User Wizard-Generated File ; E:/VHDL/FPZ8/altsyncram2.vhd ; |
; altsyncram.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/altsyncram.tdf ; |
; db/altsyncram_lge1.tdf ; yes ; Auto-Generated Megafunction ; E:/VHDL/FPZ8/db/altsyncram_lge1.tdf ; |
; db/decode_4oa.tdf ; yes ; Auto-Generated Megafunction ; E:/VHDL/FPZ8/db/decode_4oa.tdf ; |
; db/mux_kib.tdf ; yes ; Auto-Generated Megafunction ; E:/VHDL/FPZ8/db/mux_kib.tdf ; |
; db/altsyncram_bua1.tdf ; yes ; Auto-Generated Megafunction ; E:/VHDL/FPZ8/db/altsyncram_bua1.tdf ; |
; lpm_mult.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_mult.tdf ; |
; db/mult_o5t.tdf ; yes ; Auto-Generated Megafunction ; E:/VHDL/FPZ8/db/mult_o5t.tdf ; |
+----------------------------------+-----------------+------------------------------------+----------------------------------------------------------------+ |
|
|
+------------------------------------------------------+ |
; Analysis & Synthesis Resource Usage Summary ; |
+---------------------------------------------+--------+ |
; Resource ; Usage ; |
+---------------------------------------------+--------+ |
; Estimated Total logic elements ; 4,905 ; |
; ; ; |
; Total combinational functions ; 4872 ; |
; Logic element usage by number of LUT inputs ; ; |
; -- 4 input functions ; 3102 ; |
; -- 3 input functions ; 1176 ; |
; -- <=2 input functions ; 594 ; |
; ; ; |
; Logic elements by mode ; ; |
; -- normal mode ; 4438 ; |
; -- arithmetic mode ; 434 ; |
; ; ; |
; Total registers ; 495 ; |
; -- Dedicated logic registers ; 495 ; |
; -- I/O registers ; 0 ; |
; ; ; |
; I/O pins ; 12 ; |
; Total memory bits ; 147456 ; |
; Embedded Multiplier 9-bit elements ; 1 ; |
; Maximum fan-out node ; CLOCK ; |
; Maximum fan-out ; 535 ; |
; Total fan-out ; 19587 ; |
; Average fan-out ; 3.61 ; |
+---------------------------------------------+--------+ |
|
|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Analysis & Synthesis Resource Utilization by Entity ; |
+-------------------------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+----------------------------------------------------------------------------------------------------------+--------------+ |
; Compilation Hierarchy Node ; LC Combinationals ; LC Registers ; Memory Bits ; DSP Elements ; DSP 9x9 ; DSP 18x18 ; Pins ; Virtual Pins ; Full Hierarchy Name ; Library Name ; |
+-------------------------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+----------------------------------------------------------------------------------------------------------+--------------+ |
; |CPU ; 4872 (2) ; 495 (0) ; 147456 ; 1 ; 1 ; 0 ; 12 ; 0 ; |CPU ; work ; |
; |altsyncram1:inst7| ; 0 (0) ; 0 (0) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |CPU|altsyncram1:inst7 ; work ; |
; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |CPU|altsyncram1:inst7|altsyncram:altsyncram_component ; work ; |
; |altsyncram_bua1:auto_generated| ; 0 (0) ; 0 (0) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |CPU|altsyncram1:inst7|altsyncram:altsyncram_component|altsyncram_bua1:auto_generated ; work ; |
; |altsyncram2:inst1| ; 24 (0) ; 2 (0) ; 131072 ; 0 ; 0 ; 0 ; 0 ; 0 ; |CPU|altsyncram2:inst1 ; work ; |
; |altsyncram:altsyncram_component| ; 24 (0) ; 2 (0) ; 131072 ; 0 ; 0 ; 0 ; 0 ; 0 ; |CPU|altsyncram2:inst1|altsyncram:altsyncram_component ; work ; |
; |altsyncram_lge1:auto_generated| ; 24 (0) ; 2 (2) ; 131072 ; 0 ; 0 ; 0 ; 0 ; 0 ; |CPU|altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated ; work ; |
; |decode_4oa:decode3| ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |CPU|altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3 ; work ; |
; |mux_kib:mux2| ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |CPU|altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|mux_kib:mux2 ; work ; |
; |fpz8_cpu_v1:inst| ; 4846 (4846) ; 493 (493) ; 0 ; 1 ; 1 ; 0 ; 0 ; 0 ; |CPU|fpz8_cpu_v1:inst ; work ; |
; |lpm_mult:Mult0| ; 0 (0) ; 0 (0) ; 0 ; 1 ; 1 ; 0 ; 0 ; 0 ; |CPU|fpz8_cpu_v1:inst|lpm_mult:Mult0 ; work ; |
; |mult_o5t:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 1 ; 1 ; 0 ; 0 ; 0 ; |CPU|fpz8_cpu_v1:inst|lpm_mult:Mult0|mult_o5t:auto_generated ; work ; |
+-------------------------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+----------------------------------------------------------------------------------------------------------+--------------+ |
Note: For table entries with two numbers listed, the numbers in parentheses indicate the number of resources of the given type used by the specific entity alone. The numbers listed outside of parentheses indicate the total resources of the given type used by the specific entity and all of its sub-entities in the hierarchy. |
|
|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Analysis & Synthesis RAM Summary ; |
+---------------------------------------------------------------------------------------------+------+-------------+--------------+--------------+--------------+--------------+--------+-------------------------------+ |
; Name ; Type ; Mode ; Port A Depth ; Port A Width ; Port B Depth ; Port B Width ; Size ; MIF ; |
+---------------------------------------------------------------------------------------------+------+-------------+--------------+--------------+--------------+--------------+--------+-------------------------------+ |
; altsyncram1:inst7|altsyncram:altsyncram_component|altsyncram_bua1:auto_generated|ALTSYNCRAM ; AUTO ; Single Port ; 2048 ; 8 ; -- ; -- ; 16384 ; None ; |
; altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|ALTSYNCRAM ; AUTO ; Single Port ; 16384 ; 8 ; -- ; -- ; 131072 ; ../../vhdl/fpz8/FPZ8_test.mif ; |
+---------------------------------------------------------------------------------------------+------+-------------+--------------+--------------+--------------+--------------+--------+-------------------------------+ |
|
|
+-----------------------------------------------------+ |
; Analysis & Synthesis DSP Block Usage Summary ; |
+---------------------------------------+-------------+ |
; Statistic ; Number Used ; |
+---------------------------------------+-------------+ |
; Simple Multipliers (9-bit) ; 1 ; |
; Simple Multipliers (18-bit) ; 0 ; |
; Embedded Multiplier Blocks ; -- ; |
; Embedded Multiplier 9-bit elements ; 1 ; |
; Signed Embedded Multipliers ; 0 ; |
; Unsigned Embedded Multipliers ; 1 ; |
; Mixed Sign Embedded Multipliers ; 0 ; |
; Variable Sign Embedded Multipliers ; 0 ; |
; Dedicated Input Shift Register Chains ; 0 ; |
+---------------------------------------+-------------+ |
Note: number of Embedded Multiplier Blocks used is only available after a successful fit. |
|
|
Encoding Type: One-Hot |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; State Machine - |CPU|fpz8_cpu_v1:inst|\main:DBG_CMD ; |
+---------------------------------+-------------------------+-------------------------+------------------------+-------------------------+------------------------+----------------------------+----------------------------+----------------------------+----------------------------+----------------------------+---------------------------+--------------------------------+---------------------------------+------------------------+------------------------+------------------------+------------------------+-----------------------+----------------------------+-----------------------------+----------------------------+---------------------------+-----------------------------+----------------------------+-----------------------------+------------------------------+-------------------------------+-----------------------------+----------------------------+----------------------------+ |
; Name ; \main:DBG_CMD.DBG_EXEC3 ; \main:DBG_CMD.DBG_EXEC2 ; \main:DBG_CMD.DBG_EXEC ; \main:DBG_CMD.DBG_STUFF ; \main:DBG_CMD.DBG_STEP ; \main:DBG_CMD.DBG_PROGMEM6 ; \main:DBG_CMD.DBG_PROGMEM5 ; \main:DBG_CMD.DBG_PROGMEM4 ; \main:DBG_CMD.DBG_PROGMEM3 ; \main:DBG_CMD.DBG_PROGMEM2 ; \main:DBG_CMD.DBG_PROGMEM ; \main:DBG_CMD.DBG_READ_PROGMEM ; \main:DBG_CMD.DBG_WRITE_PROGMEM ; \main:DBG_CMD.DBG_REG5 ; \main:DBG_CMD.DBG_REG4 ; \main:DBG_CMD.DBG_REG3 ; \main:DBG_CMD.DBG_REG2 ; \main:DBG_CMD.DBG_REG ; \main:DBG_CMD.DBG_READ_REG ; \main:DBG_CMD.DBG_WRITE_REG ; \main:DBG_CMD.DBG_SEND_PC2 ; \main:DBG_CMD.DBG_SEND_PC ; \main:DBG_CMD.DBG_WRITE_PC2 ; \main:DBG_CMD.DBG_WRITE_PC ; \main:DBG_CMD.DBG_SEND_CTRL ; \main:DBG_CMD.DBG_WRITE_CTRL ; \main:DBG_CMD.DBG_SEND_STATUS ; \main:DBG_CMD.DBG_SEND_REV2 ; \main:DBG_CMD.DBG_SEND_REV ; \main:DBG_CMD.DBG_WAIT_CMD ; |
+---------------------------------+-------------------------+-------------------------+------------------------+-------------------------+------------------------+----------------------------+----------------------------+----------------------------+----------------------------+----------------------------+---------------------------+--------------------------------+---------------------------------+------------------------+------------------------+------------------------+------------------------+-----------------------+----------------------------+-----------------------------+----------------------------+---------------------------+-----------------------------+----------------------------+-----------------------------+------------------------------+-------------------------------+-----------------------------+----------------------------+----------------------------+ |
; \main:DBG_CMD.DBG_WAIT_CMD ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |
; \main:DBG_CMD.DBG_SEND_REV ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; |
; \main:DBG_CMD.DBG_SEND_REV2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_SEND_STATUS ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_WRITE_CTRL ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_SEND_CTRL ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_WRITE_PC ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_WRITE_PC2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_SEND_PC ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_SEND_PC2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_WRITE_REG ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_READ_REG ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_REG ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_REG2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_REG3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_REG4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_REG5 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_WRITE_PROGMEM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_READ_PROGMEM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_PROGMEM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_PROGMEM2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_PROGMEM3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_PROGMEM4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_PROGMEM5 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_PROGMEM6 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_STEP ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_STUFF ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_EXEC ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_EXEC2 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_CMD.DBG_EXEC3 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
+---------------------------------+-------------------------+-------------------------+------------------------+-------------------------+------------------------+----------------------------+----------------------------+----------------------------+----------------------------+----------------------------+---------------------------+--------------------------------+---------------------------------+------------------------+------------------------+------------------------+------------------------+-----------------------+----------------------------+-----------------------------+----------------------------+---------------------------+-----------------------------+----------------------------+-----------------------------+------------------------------+-------------------------------+-----------------------------+----------------------------+----------------------------+ |
|
|
Encoding Type: One-Hot |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; State Machine - |CPU|fpz8_cpu_v1:inst|\main:CPU_STATE ; |
+-------------------------------+-----------------------------+---------------------------+----------------------------+-----------------------------+---------------------------+---------------------------+------------------------------+------------------------------+-----------------------------+----------------------------+----------------------------+----------------------------+---------------------------+-------------------------------+------------------------------+---------------------------+--------------------------+------------------------------+-----------------------------+--------------------------+-------------------------+--------------------------+-------------------------+-----------------------------+----------------------------+-----------------------------+-----------------------------+-----------------------------+----------------------------+------------------------------+-----------------------------+--------------------------+-------------------------+--------------------------+--------------------------+-------------------------+-------------------------+---------------------------+--------------------------+--------------------------+---------------------------+---------------------------+--------------------------+---------------------------+---------------------------+--------------------------+---------------------------+--------------------------+----------------------------+-----------------------------+------------------------------+------------------------------+------------------------------+-----------------------------+---------------------------+-----------------------------+----------------------------+----------------------------+--------------------------+--------------------------+-------------------------+---------------------------+----------------------------+ |
; Name ; \main:CPU_STATE.CPU_ILLEGAL ; \main:CPU_STATE.CPU_RESET ; \main:CPU_STATE.CPU_HALTED ; \main:CPU_STATE.CPU_VECTOR2 ; \main:CPU_STATE.CPU_DECOD ; \main:CPU_STATE.CPU_STORE ; \main:CPU_STATE.CPU_UNSTACK3 ; \main:CPU_STATE.CPU_UNSTACK2 ; \main:CPU_STATE.CPU_UNSTACK ; \main:CPU_STATE.CPU_STACK3 ; \main:CPU_STATE.CPU_STACK2 ; \main:CPU_STATE.CPU_STACK1 ; \main:CPU_STATE.CPU_STACK ; \main:CPU_STATE.CPU_INDSTACK2 ; \main:CPU_STATE.CPU_INDSTACK ; \main:CPU_STATE.CPU_TRAP2 ; \main:CPU_STATE.CPU_TRAP ; \main:CPU_STATE.CPU_INDJUMP2 ; \main:CPU_STATE.CPU_INDJUMP ; \main:CPU_STATE.CPU_DJNZ ; \main:CPU_STATE.CPU_BTJ ; \main:CPU_STATE.CPU_IBTJ ; \main:CPU_STATE.CPU_BIT ; \main:CPU_STATE.CPU_LDMTOP2 ; \main:CPU_STATE.CPU_LDMTOP ; \main:CPU_STATE.CPU_LDPTOM4 ; \main:CPU_STATE.CPU_LDPTOM3 ; \main:CPU_STATE.CPU_LDPTOM2 ; \main:CPU_STATE.CPU_LDPTOM ; \main:CPU_STATE.CPU_LDPTOIM2 ; \main:CPU_STATE.CPU_LDPTOIM ; \main:CPU_STATE.CPU_LDW2 ; \main:CPU_STATE.CPU_LDW ; \main:CPU_STATE.CPU_DMAB ; \main:CPU_STATE.CPU_OMA2 ; \main:CPU_STATE.CPU_OMA ; \main:CPU_STATE.CPU_TMA ; \main:CPU_STATE.CPU_ISMD1 ; \main:CPU_STATE.CPU_IND2 ; \main:CPU_STATE.CPU_IND1 ; \main:CPU_STATE.CPU_XRRS3 ; \main:CPU_STATE.CPU_XRRS2 ; \main:CPU_STATE.CPU_XRRS ; \main:CPU_STATE.CPU_XRRD3 ; \main:CPU_STATE.CPU_XRRD2 ; \main:CPU_STATE.CPU_XRRD ; \main:CPU_STATE.CPU_IRRS2 ; \main:CPU_STATE.CPU_IRRS ; \main:CPU_STATE.CPU_MTOIRR ; \main:CPU_STATE.CPU_IMTOIRR ; \main:CPU_STATE.CPU_XRRTORR4 ; \main:CPU_STATE.CPU_XRRTORR3 ; \main:CPU_STATE.CPU_XRRTORR2 ; \main:CPU_STATE.CPU_XRRTORR ; \main:CPU_STATE.CPU_XRTOM ; \main:CPU_STATE.CPU_MTOXAD2 ; \main:CPU_STATE.CPU_MTOXAD ; \main:CPU_STATE.CPU_XADTOM ; \main:CPU_STATE.CPU_MUL2 ; \main:CPU_STATE.CPU_MUL1 ; \main:CPU_STATE.CPU_MUL ; \main:CPU_STATE.CPU_INDRR ; \main:CPU_STATE.CPU_VECTOR ; |
+-------------------------------+-----------------------------+---------------------------+----------------------------+-----------------------------+---------------------------+---------------------------+------------------------------+------------------------------+-----------------------------+----------------------------+----------------------------+----------------------------+---------------------------+-------------------------------+------------------------------+---------------------------+--------------------------+------------------------------+-----------------------------+--------------------------+-------------------------+--------------------------+-------------------------+-----------------------------+----------------------------+-----------------------------+-----------------------------+-----------------------------+----------------------------+------------------------------+-----------------------------+--------------------------+-------------------------+--------------------------+--------------------------+-------------------------+-------------------------+---------------------------+--------------------------+--------------------------+---------------------------+---------------------------+--------------------------+---------------------------+---------------------------+--------------------------+---------------------------+--------------------------+----------------------------+-----------------------------+------------------------------+------------------------------+------------------------------+-----------------------------+---------------------------+-----------------------------+----------------------------+----------------------------+--------------------------+--------------------------+-------------------------+---------------------------+----------------------------+ |
; \main:CPU_STATE.CPU_VECTOR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |
; \main:CPU_STATE.CPU_INDRR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; |
; \main:CPU_STATE.CPU_MUL ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_MUL1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_MUL2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XADTOM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_MTOXAD ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_MTOXAD2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRTOM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRTORR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRTORR2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRTORR3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRTORR4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_IMTOIRR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_MTOIRR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_IRRS ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_IRRS2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRD ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRD2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRD3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRS ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRS2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_XRRS3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_IND1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_IND2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_ISMD1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_TMA ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_OMA ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_OMA2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_DMAB ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDW ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDW2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDPTOIM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDPTOIM2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDPTOM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDPTOM2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDPTOM3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDPTOM4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDMTOP ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_LDMTOP2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_BIT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_IBTJ ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_BTJ ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_DJNZ ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_INDJUMP ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_INDJUMP2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_TRAP ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_TRAP2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_INDSTACK ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_INDSTACK2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_STACK ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_STACK1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_STACK2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_STACK3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_UNSTACK ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_UNSTACK2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_UNSTACK3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_STORE ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_DECOD ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_VECTOR2 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_HALTED ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_RESET ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:CPU_STATE.CPU_ILLEGAL ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
+-------------------------------+-----------------------------+---------------------------+----------------------------+-----------------------------+---------------------------+---------------------------+------------------------------+------------------------------+-----------------------------+----------------------------+----------------------------+----------------------------+---------------------------+-------------------------------+------------------------------+---------------------------+--------------------------+------------------------------+-----------------------------+--------------------------+-------------------------+--------------------------+-------------------------+-----------------------------+----------------------------+-----------------------------+-----------------------------+-----------------------------+----------------------------+------------------------------+-----------------------------+--------------------------+-------------------------+--------------------------+--------------------------+-------------------------+-------------------------+---------------------------+--------------------------+--------------------------+---------------------------+---------------------------+--------------------------+---------------------------+---------------------------+--------------------------+---------------------------+--------------------------+----------------------------+-----------------------------+------------------------------+------------------------------+------------------------------+-----------------------------+---------------------------+-----------------------------+----------------------------+----------------------------+--------------------------+--------------------------+-------------------------+---------------------------+----------------------------+ |
|
|
Encoding Type: One-Hot |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; State Machine - |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.TX_STATE ; |
+-------------------------------------------+--------------------------------------+-------------------------------------+-------------------------------------------+-------------------------------------+------------------------------------+------------------------------------+ |
; Name ; \main:DBG_UART.TX_STATE.DBGTX_BREAK2 ; \main:DBG_UART.TX_STATE.DBGTX_BREAK ; \main:DBG_UART.TX_STATE.DBGTX_TRASMITTING ; \main:DBG_UART.TX_STATE.DBGTX_START ; \main:DBG_UART.TX_STATE.DBGTX_IDLE ; \main:DBG_UART.TX_STATE.DBGTX_INIT ; |
+-------------------------------------------+--------------------------------------+-------------------------------------+-------------------------------------------+-------------------------------------+------------------------------------+------------------------------------+ |
; \main:DBG_UART.TX_STATE.DBGTX_INIT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |
; \main:DBG_UART.TX_STATE.DBGTX_IDLE ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; |
; \main:DBG_UART.TX_STATE.DBGTX_START ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; |
; \main:DBG_UART.TX_STATE.DBGTX_TRASMITTING ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; |
; \main:DBG_UART.TX_STATE.DBGTX_BREAK ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_UART.TX_STATE.DBGTX_BREAK2 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
+-------------------------------------------+--------------------------------------+-------------------------------------+-------------------------------------------+-------------------------------------+------------------------------------+------------------------------------+ |
|
|
Encoding Type: One-Hot |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; State Machine - |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.RX_STATE ; |
+-----------------------------------------+-------------------------------------+-----------------------------------------+-------------------------------------+------------------------------------+-----------------------------------------+-----------------------------------------+--------------------------------------+ |
; Name ; \main:DBG_UART.RX_STATE.DBGST_ERROR ; \main:DBG_UART.RX_STATE.DBGST_RECEIVING ; \main:DBG_UART.RX_STATE.DBGST_START ; \main:DBG_UART.RX_STATE.DBGST_IDLE ; \main:DBG_UART.RX_STATE.DBGST_MEASURING ; \main:DBG_UART.RX_STATE.DBGST_WAITSTART ; \main:DBG_UART.RX_STATE.DBGST_NOSYNC ; |
+-----------------------------------------+-------------------------------------+-----------------------------------------+-------------------------------------+------------------------------------+-----------------------------------------+-----------------------------------------+--------------------------------------+ |
; \main:DBG_UART.RX_STATE.DBGST_NOSYNC ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |
; \main:DBG_UART.RX_STATE.DBGST_WAITSTART ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; |
; \main:DBG_UART.RX_STATE.DBGST_MEASURING ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; |
; \main:DBG_UART.RX_STATE.DBGST_IDLE ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; |
; \main:DBG_UART.RX_STATE.DBGST_START ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_UART.RX_STATE.DBGST_RECEIVING ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
; \main:DBG_UART.RX_STATE.DBGST_ERROR ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; |
+-----------------------------------------+-------------------------------------+-----------------------------------------+-------------------------------------+------------------------------------+-----------------------------------------+-----------------------------------------+--------------------------------------+ |
|
|
+------------------------------------------------------------------------------------------------------------------------------------------+ |
; Registers Protected by Synthesis ; |
+--------------------------+------------------------------------------------------------------+--------------------------------------------+ |
; Register Name ; Protected by Synthesis Attribute or Preserve Register Assignment ; Not to be Touched by Netlist Optimizations ; |
+--------------------------+------------------------------------------------------------------+--------------------------------------------+ |
; fpz8_cpu_v1:inst|RXSYNC1 ; yes ; yes ; |
; fpz8_cpu_v1:inst|RXSYNC2 ; yes ; yes ; |
+--------------------------+------------------------------------------------------------------+--------------------------------------------+ |
|
|
+-----------------------------------------------------------------------------------------------+ |
; Registers Removed During Synthesis ; |
+------------------------------------------------------+----------------------------------------+ |
; Register name ; Reason for Removal ; |
+------------------------------------------------------+----------------------------------------+ |
; fpz8_cpu_v1:inst|\main:OLD_IRQ0[0..6] ; Lost fanout ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.BITTIMERX[8..11] ; Stuck at GND due to stuck port data_in ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.BITTIMETX[9..11] ; Stuck at GND due to stuck port data_in ; |
; fpz8_cpu_v1:inst|FCTL[3..6] ; Merged with fpz8_cpu_v1:inst|FCTL[7] ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.TXSHIFTREG[8] ; Stuck at VCC due to stuck port data_in ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.TX_STATE.DBGTX_BREAK ; Stuck at GND due to stuck port data_in ; |
; fpz8_cpu_v1:inst|\main:FETCH_ADDR[14..15] ; Lost fanout ; |
; fpz8_cpu_v1:inst|IAB[14..15] ; Lost fanout ; |
; Total Number of Removed Registers = 24 ; ; |
+------------------------------------------------------+----------------------------------------+ |
|
|
+------------------------------------------------------+ |
; General Register Statistics ; |
+----------------------------------------------+-------+ |
; Statistic ; Value ; |
+----------------------------------------------+-------+ |
; Total registers ; 495 ; |
; Number of registers using Synchronous Clear ; 3 ; |
; Number of registers using Synchronous Load ; 104 ; |
; Number of registers using Asynchronous Clear ; 185 ; |
; Number of registers using Asynchronous Load ; 0 ; |
; Number of registers using Clock Enable ; 490 ; |
; Number of registers using Preset ; 0 ; |
+----------------------------------------------+-------+ |
|
|
+----------------------------------------------------+ |
; Inverted Register Statistics ; |
+------------------------------------------+---------+ |
; Inverted Register ; Fan out ; |
+------------------------------------------+---------+ |
; fpz8_cpu_v1:inst|RXSYNC1 ; 18 ; |
; fpz8_cpu_v1:inst|\main:CAN_FETCH ; 25 ; |
; fpz8_cpu_v1:inst|\main:DBG_UART.LAST_SMP ; 4 ; |
; fpz8_cpu_v1:inst|RXSYNC2 ; 1 ; |
; fpz8_cpu_v1:inst|IAB[1] ; 3 ; |
; Total number of inverted registers = 5 ; ; |
+------------------------------------------+---------+ |
|
|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
; Multiplexer Restructuring Statistics (Restructuring Performed) ; |
+--------------------+-----------+---------------+----------------------+------------------------+------------+----------------------------------------------------+ |
; Multiplexer Inputs ; Bus Width ; Baseline Area ; Area if Restructured ; Saving if Restructured ; Registered ; Example Multiplexer Output ; |
+--------------------+-----------+---------------+----------------------+------------------------+------------+----------------------------------------------------+ |
; 3:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:IQUEUE.WRPOS[1] ; |
; 4:1 ; 4 bits ; 8 LEs ; 8 LEs ; 0 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|ALU_FLAGS.S ; |
; 5:1 ; 4 bits ; 12 LEs ; 4 LEs ; 8 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.TXCNT[0] ; |
; 5:1 ; 8 bits ; 24 LEs ; 8 LEs ; 16 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.TXSHIFTREG[6] ; |
; 6:1 ; 8 bits ; 32 LEs ; 8 LEs ; 24 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[6] ; |
; 6:1 ; 12 bits ; 48 LEs ; 12 LEs ; 36 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.BAUDCNTTX[7] ; |
; 8:1 ; 12 bits ; 60 LEs ; 12 LEs ; 48 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.BAUDCNTRX[9] ; |
; 8:1 ; 8 bits ; 40 LEs ; 16 LEs ; 24 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.SIZE[8] ; |
; 12:1 ; 8 bits ; 64 LEs ; 32 LEs ; 32 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:PC[15] ; |
; 12:1 ; 8 bits ; 64 LEs ; 32 LEs ; 32 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:PC[2] ; |
; 11:1 ; 8 bits ; 56 LEs ; 40 LEs ; 16 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|IAB[12] ; |
; 11:1 ; 4 bits ; 28 LEs ; 20 LEs ; 8 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|IAB[7] ; |
; 11:1 ; 3 bits ; 21 LEs ; 15 LEs ; 6 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|IAB[2] ; |
; 18:1 ; 4 bits ; 48 LEs ; 16 LEs ; 32 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:RESULT[7] ; |
; 15:1 ; 8 bits ; 80 LEs ; 40 LEs ; 40 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DEST_ADDR16[10] ; |
; 16:1 ; 8 bits ; 80 LEs ; 48 LEs ; 32 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DEST_ADDR16[7] ; |
; 15:1 ; 3 bits ; 30 LEs ; 12 LEs ; 18 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.TX_DATA[3] ; |
; 17:1 ; 2 bits ; 22 LEs ; 14 LEs ; 8 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DBG_UART.TX_DATA[4] ; |
; 20:1 ; 4 bits ; 52 LEs ; 24 LEs ; 28 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:RESULT[0] ; |
; 40:1 ; 8 bits ; 208 LEs ; 88 LEs ; 120 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|MODB[2] ; |
; 29:1 ; 8 bits ; 152 LEs ; 32 LEs ; 120 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:TEMP_DATA[1] ; |
; 54:1 ; 2 bits ; 72 LEs ; 20 LEs ; 52 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|CPU_FLAGS.F1 ; |
; 53:1 ; 2 bits ; 70 LEs ; 22 LEs ; 48 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|CPU_FLAGS.D ; |
; 35:1 ; 4 bits ; 92 LEs ; 16 LEs ; 76 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DEST_ADDR[11] ; |
; 40:1 ; 4 bits ; 104 LEs ; 24 LEs ; 80 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DEST_ADDR[0] ; |
; 68:1 ; 8 bits ; 360 LEs ; 96 LEs ; 264 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|RP[7] ; |
; 41:1 ; 4 bits ; 108 LEs ; 28 LEs ; 80 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|\main:DEST_ADDR[5] ; |
; 89:1 ; 4 bits ; 236 LEs ; 56 LEs ; 180 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|SP[11] ; |
; 104:1 ; 8 bits ; 552 LEs ; 112 LEs ; 440 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|SP[1] ; |
; 89:1 ; 3 bits ; 177 LEs ; 48 LEs ; 129 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|MAB[9] ; |
; 103:1 ; 3 bits ; 204 LEs ; 60 LEs ; 144 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|MAB[1] ; |
; 136:1 ; 2 bits ; 180 LEs ; 44 LEs ; 136 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|FCTL[0] ; |
; 107:1 ; 4 bits ; 284 LEs ; 80 LEs ; 204 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|MAB[6] ; |
; 153:1 ; 8 bits ; 816 LEs ; 96 LEs ; 720 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|IRQ0ENH[7] ; |
; 169:1 ; 8 bits ; 896 LEs ; 96 LEs ; 800 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|IRQ0ENL[0] ; |
; 200:1 ; 8 bits ; 1064 LEs ; 88 LEs ; 976 LEs ; Yes ; |CPU|fpz8_cpu_v1:inst|PAOUT[5] ; |
; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; No ; |CPU|fpz8_cpu_v1:inst|OCDCR ; |
; 3:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; No ; |CPU|fpz8_cpu_v1:inst|PC ; |
; 3:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; No ; |CPU|fpz8_cpu_v1:inst|PC ; |
; 3:1 ; 16 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|PC ; |
; 4:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux801 ; |
; 4:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux41 ; |
; 4:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux245 ; |
; 4:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux892 ; |
; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; No ; |CPU|fpz8_cpu_v1:inst|ADDRESSER12 ; |
; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; No ; |CPU|fpz8_cpu_v1:inst|ADDRESSER12 ; |
; 4:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux795 ; |
; 3:1 ; 16 bits ; 32 LEs ; 32 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|PC ; |
; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux423 ; |
; 3:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; No ; |CPU|fpz8_cpu_v1:inst|IQUEUE ; |
; 3:1 ; 6 bits ; 12 LEs ; 12 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|IQUEUE ; |
; 4:1 ; 9 bits ; 18 LEs ; 9 LEs ; 9 LEs ; No ; |CPU|fpz8_cpu_v1:inst|DBG_UART ; |
; 4:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; No ; |CPU|fpz8_cpu_v1:inst|PWDB ; |
; 4:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux253 ; |
; 4:1 ; 16 bits ; 32 LEs ; 32 LEs ; 0 LEs ; No ; |CPU|fpz8_cpu_v1:inst|FETCH_ADDR ; |
; 4:1 ; 61 bits ; 122 LEs ; 61 LEs ; 61 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 4:1 ; 12 bits ; 24 LEs ; 12 LEs ; 12 LEs ; No ; |CPU|fpz8_cpu_v1:inst|SP ; |
; 5:1 ; 8 bits ; 24 LEs ; 8 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|DBG_UART ; |
; 5:1 ; 8 bits ; 24 LEs ; 8 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|TEMP_DATA ; |
; 5:1 ; 2 bits ; 6 LEs ; 2 LEs ; 4 LEs ; No ; |CPU|fpz8_cpu_v1:inst|IQUEUE ; |
; 5:1 ; 15 bits ; 45 LEs ; 30 LEs ; 15 LEs ; No ; |CPU|fpz8_cpu_v1:inst|PC ; |
; 5:1 ; 16 bits ; 48 LEs ; 32 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|PC ; |
; 16:1 ; 7 bits ; 70 LEs ; 42 LEs ; 28 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux906 ; |
; 5:1 ; 2 bits ; 6 LEs ; 2 LEs ; 4 LEs ; No ; |CPU|fpz8_cpu_v1:inst|ATM_COUNTER ; |
; 6:1 ; 2 bits ; 8 LEs ; 2 LEs ; 6 LEs ; No ; |CPU|fpz8_cpu_v1:inst|IQUEUE ; |
; 7:1 ; 12 bits ; 48 LEs ; 24 LEs ; 24 LEs ; No ; |CPU|fpz8_cpu_v1:inst|SP ; |
; 7:1 ; 12 bits ; 48 LEs ; 24 LEs ; 24 LEs ; No ; |CPU|fpz8_cpu_v1:inst|SP ; |
; 17:1 ; 48 bits ; 528 LEs ; 144 LEs ; 384 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 17:1 ; 2 bits ; 22 LEs ; 8 LEs ; 14 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 8:1 ; 6 bits ; 30 LEs ; 6 LEs ; 24 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector8 ; |
; 8:1 ; 63 bits ; 315 LEs ; 126 LEs ; 189 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector150 ; |
; 9:1 ; 3 bits ; 18 LEs ; 6 LEs ; 12 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector185 ; |
; 14:1 ; 8 bits ; 72 LEs ; 8 LEs ; 64 LEs ; No ; |CPU|fpz8_cpu_v1:inst|RP ; |
; 33:1 ; 2 bits ; 44 LEs ; 12 LEs ; 32 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 33:1 ; 2 bits ; 44 LEs ; 14 LEs ; 30 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 11:1 ; 4 bits ; 28 LEs ; 16 LEs ; 12 LEs ; No ; |CPU|fpz8_cpu_v1:inst|DBG_UART ; |
; 12:1 ; 18 bits ; 144 LEs ; 126 LEs ; 18 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 7:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector249 ; |
; 7:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector241 ; |
; 7:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector234 ; |
; 7:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector221 ; |
; 7:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector213 ; |
; 7:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector211 ; |
; 7:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector200 ; |
; 7:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Selector189 ; |
; 12:1 ; 2 bits ; 16 LEs ; 8 LEs ; 8 LEs ; No ; |CPU|fpz8_cpu_v1:inst|DBG_UART ; |
; 13:1 ; 3 bits ; 24 LEs ; 18 LEs ; 6 LEs ; No ; |CPU|fpz8_cpu_v1:inst|DATAREAD ; |
; 13:1 ; 4 bits ; 32 LEs ; 24 LEs ; 8 LEs ; No ; |CPU|fpz8_cpu_v1:inst|DATAREAD ; |
; 15:1 ; 3 bits ; 30 LEs ; 18 LEs ; 12 LEs ; No ; |CPU|fpz8_cpu_v1:inst|Mux916 ; |
; 26:1 ; 4 bits ; 68 LEs ; 8 LEs ; 60 LEs ; No ; |CPU|fpz8_cpu_v1:inst|SP ; |
; 14:1 ; 2 bits ; 18 LEs ; 6 LEs ; 12 LEs ; No ; |CPU|fpz8_cpu_v1:inst|DBG_UART ; |
; 27:1 ; 8 bits ; 144 LEs ; 16 LEs ; 128 LEs ; No ; |CPU|fpz8_cpu_v1:inst|SP ; |
; 16:1 ; 2 bits ; 20 LEs ; 8 LEs ; 12 LEs ; No ; |CPU|fpz8_cpu_v1:inst|DBG_UART ; |
; 16:1 ; 2 bits ; 20 LEs ; 8 LEs ; 12 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 23:1 ; 2 bits ; 30 LEs ; 28 LEs ; 2 LEs ; No ; |CPU|fpz8_cpu_v1:inst|INTVECT ; |
; 269:1 ; 12 bits ; 2148 LEs ; 132 LEs ; 2016 LEs ; No ; |CPU|fpz8_cpu_v1:inst|\main:DBG_CMD.DBG_SEND_PC ; |
; 40:1 ; 46 bits ; 1196 LEs ; 644 LEs ; 552 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 40:1 ; 2 bits ; 52 LEs ; 4 LEs ; 48 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
; 61:1 ; 2 bits ; 80 LEs ; 18 LEs ; 62 LEs ; No ; |CPU|fpz8_cpu_v1:inst|NUM_BYTES ; |
; 61:1 ; 3 bits ; 120 LEs ; 30 LEs ; 90 LEs ; No ; |CPU|fpz8_cpu_v1:inst|CPU_STATE ; |
+--------------------+-----------+---------------+----------------------+------------------------+------------+----------------------------------------------------+ |
|
|
+--------------------------------------------+ |
; Source assignments for fpz8_cpu_v1:inst ; |
+-------------------+-------+------+---------+ |
; Assignment ; Value ; From ; To ; |
+-------------------+-------+------+---------+ |
; PRESERVE_REGISTER ; on ; - ; RXSYNC1 ; |
; PRESERVE_REGISTER ; on ; - ; RXSYNC2 ; |
+-------------------+-------+------+---------+ |
|
|
+---------------------------------------------------------------------------------------------------------+ |
; Source assignments for altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated ; |
+---------------------------------+--------------------+------+-------------------------------------------+ |
; Assignment ; Value ; From ; To ; |
+---------------------------------+--------------------+------+-------------------------------------------+ |
; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; |
+---------------------------------+--------------------+------+-------------------------------------------+ |
|
|
+---------------------------------------------------------------------------------------------------------+ |
; Source assignments for altsyncram1:inst7|altsyncram:altsyncram_component|altsyncram_bua1:auto_generated ; |
+---------------------------------+--------------------+------+-------------------------------------------+ |
; Assignment ; Value ; From ; To ; |
+---------------------------------+--------------------+------+-------------------------------------------+ |
; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; |
+---------------------------------+--------------------+------+-------------------------------------------+ |
|
|
+------------------------------------------------------------------------------------------------+ |
; Parameter Settings for User Entity Instance: altsyncram2:inst1|altsyncram:altsyncram_component ; |
+------------------------------------+-------------------------------+---------------------------+ |
; Parameter Name ; Value ; Type ; |
+------------------------------------+-------------------------------+---------------------------+ |
; BYTE_SIZE_BLOCK ; 8 ; Untyped ; |
; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; |
; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; |
; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; |
; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; |
; WIDTH_BYTEENA ; 1 ; Untyped ; |
; OPERATION_MODE ; SINGLE_PORT ; Untyped ; |
; WIDTH_A ; 8 ; Signed Integer ; |
; WIDTHAD_A ; 14 ; Signed Integer ; |
; NUMWORDS_A ; 16384 ; Signed Integer ; |
; OUTDATA_REG_A ; UNREGISTERED ; Untyped ; |
; ADDRESS_ACLR_A ; NONE ; Untyped ; |
; OUTDATA_ACLR_A ; NONE ; Untyped ; |
; WRCONTROL_ACLR_A ; NONE ; Untyped ; |
; INDATA_ACLR_A ; NONE ; Untyped ; |
; BYTEENA_ACLR_A ; NONE ; Untyped ; |
; WIDTH_B ; 1 ; Untyped ; |
; WIDTHAD_B ; 1 ; Untyped ; |
; NUMWORDS_B ; 1 ; Untyped ; |
; INDATA_REG_B ; CLOCK1 ; Untyped ; |
; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; |
; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; |
; ADDRESS_REG_B ; CLOCK1 ; Untyped ; |
; OUTDATA_REG_B ; UNREGISTERED ; Untyped ; |
; BYTEENA_REG_B ; CLOCK1 ; Untyped ; |
; INDATA_ACLR_B ; NONE ; Untyped ; |
; WRCONTROL_ACLR_B ; NONE ; Untyped ; |
; ADDRESS_ACLR_B ; NONE ; Untyped ; |
; OUTDATA_ACLR_B ; NONE ; Untyped ; |
; RDCONTROL_ACLR_B ; NONE ; Untyped ; |
; BYTEENA_ACLR_B ; NONE ; Untyped ; |
; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; |
; WIDTH_BYTEENA_B ; 1 ; Untyped ; |
; RAM_BLOCK_TYPE ; AUTO ; Untyped ; |
; BYTE_SIZE ; 8 ; Untyped ; |
; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; |
; READ_DURING_WRITE_MODE_PORT_A ; NEW_DATA_NO_NBE_READ ; Untyped ; |
; READ_DURING_WRITE_MODE_PORT_B ; NEW_DATA_NO_NBE_READ ; Untyped ; |
; INIT_FILE ; ../../vhdl/fpz8/FPZ8_test.mif ; Untyped ; |
; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; |
; MAXIMUM_DEPTH ; 0 ; Untyped ; |
; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; |
; CLOCK_ENABLE_INPUT_B ; NORMAL ; Untyped ; |
; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; |
; CLOCK_ENABLE_OUTPUT_B ; NORMAL ; Untyped ; |
; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; |
; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; |
; ENABLE_ECC ; FALSE ; Untyped ; |
; DEVICE_FAMILY ; Cyclone II ; Untyped ; |
; CBXI_PARAMETER ; altsyncram_lge1 ; Untyped ; |
+------------------------------------+-------------------------------+---------------------------+ |
Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". |
|
|
+------------------------------------------------------------------------------------------------+ |
; Parameter Settings for User Entity Instance: altsyncram1:inst7|altsyncram:altsyncram_component ; |
+------------------------------------+----------------------+------------------------------------+ |
; Parameter Name ; Value ; Type ; |
+------------------------------------+----------------------+------------------------------------+ |
; BYTE_SIZE_BLOCK ; 8 ; Untyped ; |
; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; |
; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; |
; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; |
; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; |
; WIDTH_BYTEENA ; 1 ; Untyped ; |
; OPERATION_MODE ; SINGLE_PORT ; Untyped ; |
; WIDTH_A ; 8 ; Signed Integer ; |
; WIDTHAD_A ; 11 ; Signed Integer ; |
; NUMWORDS_A ; 2048 ; Signed Integer ; |
; OUTDATA_REG_A ; UNREGISTERED ; Untyped ; |
; ADDRESS_ACLR_A ; NONE ; Untyped ; |
; OUTDATA_ACLR_A ; NONE ; Untyped ; |
; WRCONTROL_ACLR_A ; NONE ; Untyped ; |
; INDATA_ACLR_A ; NONE ; Untyped ; |
; BYTEENA_ACLR_A ; NONE ; Untyped ; |
; WIDTH_B ; 1 ; Untyped ; |
; WIDTHAD_B ; 1 ; Untyped ; |
; NUMWORDS_B ; 1 ; Untyped ; |
; INDATA_REG_B ; CLOCK1 ; Untyped ; |
; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; |
; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; |
; ADDRESS_REG_B ; CLOCK1 ; Untyped ; |
; OUTDATA_REG_B ; UNREGISTERED ; Untyped ; |
; BYTEENA_REG_B ; CLOCK1 ; Untyped ; |
; INDATA_ACLR_B ; NONE ; Untyped ; |
; WRCONTROL_ACLR_B ; NONE ; Untyped ; |
; ADDRESS_ACLR_B ; NONE ; Untyped ; |
; OUTDATA_ACLR_B ; NONE ; Untyped ; |
; RDCONTROL_ACLR_B ; NONE ; Untyped ; |
; BYTEENA_ACLR_B ; NONE ; Untyped ; |
; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; |
; WIDTH_BYTEENA_B ; 1 ; Untyped ; |
; RAM_BLOCK_TYPE ; AUTO ; Untyped ; |
; BYTE_SIZE ; 8 ; Untyped ; |
; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; |
; READ_DURING_WRITE_MODE_PORT_A ; NEW_DATA_NO_NBE_READ ; Untyped ; |
; READ_DURING_WRITE_MODE_PORT_B ; NEW_DATA_NO_NBE_READ ; Untyped ; |
; INIT_FILE ; UNUSED ; Untyped ; |
; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; |
; MAXIMUM_DEPTH ; 0 ; Untyped ; |
; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; |
; CLOCK_ENABLE_INPUT_B ; NORMAL ; Untyped ; |
; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; |
; CLOCK_ENABLE_OUTPUT_B ; NORMAL ; Untyped ; |
; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; |
; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; |
; ENABLE_ECC ; FALSE ; Untyped ; |
; DEVICE_FAMILY ; Cyclone II ; Untyped ; |
; CBXI_PARAMETER ; altsyncram_bua1 ; Untyped ; |
+------------------------------------+----------------------+------------------------------------+ |
Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". |
|
|
+-----------------------------------------------------------------------------------+ |
; Parameter Settings for Inferred Entity Instance: fpz8_cpu_v1:inst|lpm_mult:Mult0 ; |
+------------------------------------------------+------------+---------------------+ |
; Parameter Name ; Value ; Type ; |
+------------------------------------------------+------------+---------------------+ |
; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; |
; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; |
; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; |
; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; |
; LPM_WIDTHA ; 8 ; Untyped ; |
; LPM_WIDTHB ; 8 ; Untyped ; |
; LPM_WIDTHP ; 16 ; Untyped ; |
; LPM_WIDTHR ; 16 ; Untyped ; |
; LPM_WIDTHS ; 1 ; Untyped ; |
; LPM_REPRESENTATION ; UNSIGNED ; Untyped ; |
; LPM_PIPELINE ; 0 ; Untyped ; |
; LATENCY ; 0 ; Untyped ; |
; INPUT_A_IS_CONSTANT ; NO ; Untyped ; |
; INPUT_B_IS_CONSTANT ; NO ; Untyped ; |
; USE_EAB ; OFF ; Untyped ; |
; MAXIMIZE_SPEED ; 5 ; Untyped ; |
; DEVICE_FAMILY ; Cyclone II ; Untyped ; |
; CARRY_CHAIN ; MANUAL ; Untyped ; |
; APEX20K_TECHNOLOGY_MAPPER ; LUT ; TECH_MAPPER_APEX20K ; |
; DEDICATED_MULTIPLIER_CIRCUITRY ; AUTO ; Untyped ; |
; DEDICATED_MULTIPLIER_MIN_INPUT_WIDTH_FOR_AUTO ; 0 ; Untyped ; |
; DEDICATED_MULTIPLIER_MIN_OUTPUT_WIDTH_FOR_AUTO ; 0 ; Untyped ; |
; CBXI_PARAMETER ; mult_o5t ; Untyped ; |
; INPUT_A_FIXED_VALUE ; Bx ; Untyped ; |
; INPUT_B_FIXED_VALUE ; Bx ; Untyped ; |
; USE_AHDL_IMPLEMENTATION ; OFF ; Untyped ; |
+------------------------------------------------+------------+---------------------+ |
Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". |
|
|
+-----------------------------------------------------------------------------------------------+ |
; altsyncram Parameter Settings by Entity Instance ; |
+-------------------------------------------+---------------------------------------------------+ |
; Name ; Value ; |
+-------------------------------------------+---------------------------------------------------+ |
; Number of entity instances ; 2 ; |
; Entity Instance ; altsyncram2:inst1|altsyncram:altsyncram_component ; |
; -- OPERATION_MODE ; SINGLE_PORT ; |
; -- WIDTH_A ; 8 ; |
; -- NUMWORDS_A ; 16384 ; |
; -- OUTDATA_REG_A ; UNREGISTERED ; |
; -- WIDTH_B ; 1 ; |
; -- NUMWORDS_B ; 1 ; |
; -- ADDRESS_REG_B ; CLOCK1 ; |
; -- OUTDATA_REG_B ; UNREGISTERED ; |
; -- RAM_BLOCK_TYPE ; AUTO ; |
; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; |
; Entity Instance ; altsyncram1:inst7|altsyncram:altsyncram_component ; |
; -- OPERATION_MODE ; SINGLE_PORT ; |
; -- WIDTH_A ; 8 ; |
; -- NUMWORDS_A ; 2048 ; |
; -- OUTDATA_REG_A ; UNREGISTERED ; |
; -- WIDTH_B ; 1 ; |
; -- NUMWORDS_B ; 1 ; |
; -- ADDRESS_REG_B ; CLOCK1 ; |
; -- OUTDATA_REG_B ; UNREGISTERED ; |
; -- RAM_BLOCK_TYPE ; AUTO ; |
; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; |
+-------------------------------------------+---------------------------------------------------+ |
|
|
+-------------------------------------------------------------------------+ |
; lpm_mult Parameter Settings by Entity Instance ; |
+---------------------------------------+---------------------------------+ |
; Name ; Value ; |
+---------------------------------------+---------------------------------+ |
; Number of entity instances ; 1 ; |
; Entity Instance ; fpz8_cpu_v1:inst|lpm_mult:Mult0 ; |
; -- LPM_WIDTHA ; 8 ; |
; -- LPM_WIDTHB ; 8 ; |
; -- LPM_WIDTHP ; 16 ; |
; -- LPM_REPRESENTATION ; UNSIGNED ; |
; -- INPUT_A_IS_CONSTANT ; NO ; |
; -- INPUT_B_IS_CONSTANT ; NO ; |
; -- USE_EAB ; OFF ; |
; -- DEDICATED_MULTIPLIER_CIRCUITRY ; AUTO ; |
; -- INPUT_A_FIXED_VALUE ; Bx ; |
; -- INPUT_B_FIXED_VALUE ; Bx ; |
+---------------------------------------+---------------------------------+ |
|
|
+-------------------------------+ |
; Analysis & Synthesis Messages ; |
+-------------------------------+ |
Info: ******************************************************************* |
Info: Running Quartus II Analysis & Synthesis |
Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition |
Info: Processing started: Thu Nov 10 23:26:59 2016 |
Info: Command: quartus_map --read_settings_files=on --write_settings_files=off FPz8 -c FPz8 |
Info: Found 1 design units, including 1 entities, in source file cpu.bdf |
Info: Found entity 1: CPU |
Info: Found 2 design units, including 1 entities, in source file fpz8_cpu_v1.vhd |
Info: Found design unit 1: fpz8_cpu_v1-cpu |
Info: Found entity 1: fpz8_cpu_v1 |
Info: Found 2 design units, including 1 entities, in source file altsyncram0.vhd |
Info: Found design unit 1: altsyncram0-SYN |
Info: Found entity 1: altsyncram0 |
Info: Found 2 design units, including 1 entities, in source file altsyncram1.vhd |
Info: Found design unit 1: altsyncram1-SYN |
Info: Found entity 1: altsyncram1 |
Info: Found 2 design units, including 1 entities, in source file altsyncram2.vhd |
Info: Found design unit 1: altsyncram2-SYN |
Info: Found entity 1: altsyncram2 |
Info: Elaborating entity "CPU" for the top level hierarchy |
Info: Elaborating entity "fpz8_cpu_v1" for hierarchy "fpz8_cpu_v1:inst" |
Warning (10543): VHDL Variable Declaration warning at fpz8_cpu_v1.vhd(55): used default initial value for variable "INT7" because variable was never assigned a value or an initial value expression. Use of default initial value may introduce unintended design optimizations. |
Warning (10543): VHDL Variable Declaration warning at fpz8_cpu_v1.vhd(57): used default initial value for variable "HALT" because variable was never assigned a value or an initial value expression. Use of default initial value may introduce unintended design optimizations. |
Info: Elaborating entity "altsyncram2" for hierarchy "altsyncram2:inst1" |
Info: Elaborating entity "altsyncram" for hierarchy "altsyncram2:inst1|altsyncram:altsyncram_component" |
Info: Elaborated megafunction instantiation "altsyncram2:inst1|altsyncram:altsyncram_component" |
Info: Instantiated megafunction "altsyncram2:inst1|altsyncram:altsyncram_component" with the following parameter: |
Info: Parameter "clock_enable_input_a" = "BYPASS" |
Info: Parameter "clock_enable_output_a" = "BYPASS" |
Info: Parameter "init_file" = "../../vhdl/fpz8/FPZ8_test.mif" |
Info: Parameter "intended_device_family" = "Cyclone II" |
Info: Parameter "lpm_hint" = "ENABLE_RUNTIME_MOD=NO" |
Info: Parameter "lpm_type" = "altsyncram" |
Info: Parameter "numwords_a" = "16384" |
Info: Parameter "operation_mode" = "SINGLE_PORT" |
Info: Parameter "outdata_aclr_a" = "NONE" |
Info: Parameter "outdata_reg_a" = "UNREGISTERED" |
Info: Parameter "power_up_uninitialized" = "FALSE" |
Info: Parameter "widthad_a" = "14" |
Info: Parameter "width_a" = "8" |
Info: Parameter "width_byteena_a" = "1" |
Info: Found 1 design units, including 1 entities, in source file db/altsyncram_lge1.tdf |
Info: Found entity 1: altsyncram_lge1 |
Info: Elaborating entity "altsyncram_lge1" for hierarchy "altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated" |
Info: Found 1 design units, including 1 entities, in source file db/decode_4oa.tdf |
Info: Found entity 1: decode_4oa |
Info: Elaborating entity "decode_4oa" for hierarchy "altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:decode3" |
Info: Elaborating entity "decode_4oa" for hierarchy "altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|decode_4oa:deep_decode" |
Info: Found 1 design units, including 1 entities, in source file db/mux_kib.tdf |
Info: Found entity 1: mux_kib |
Info: Elaborating entity "mux_kib" for hierarchy "altsyncram2:inst1|altsyncram:altsyncram_component|altsyncram_lge1:auto_generated|mux_kib:mux2" |
Info: Elaborating entity "altsyncram1" for hierarchy "altsyncram1:inst7" |
Info: Elaborating entity "altsyncram" for hierarchy "altsyncram1:inst7|altsyncram:altsyncram_component" |
Info: Elaborated megafunction instantiation "altsyncram1:inst7|altsyncram:altsyncram_component" |
Info: Instantiated megafunction "altsyncram1:inst7|altsyncram:altsyncram_component" with the following parameter: |
Info: Parameter "clock_enable_input_a" = "BYPASS" |
Info: Parameter "clock_enable_output_a" = "BYPASS" |
Info: Parameter "intended_device_family" = "Cyclone II" |
Info: Parameter "lpm_hint" = "ENABLE_RUNTIME_MOD=NO" |
Info: Parameter "lpm_type" = "altsyncram" |
Info: Parameter "numwords_a" = "2048" |
Info: Parameter "operation_mode" = "SINGLE_PORT" |
Info: Parameter "outdata_aclr_a" = "NONE" |
Info: Parameter "outdata_reg_a" = "UNREGISTERED" |
Info: Parameter "power_up_uninitialized" = "FALSE" |
Info: Parameter "widthad_a" = "11" |
Info: Parameter "width_a" = "8" |
Info: Parameter "width_byteena_a" = "1" |
Info: Found 1 design units, including 1 entities, in source file db/altsyncram_bua1.tdf |
Info: Found entity 1: altsyncram_bua1 |
Info: Elaborating entity "altsyncram_bua1" for hierarchy "altsyncram1:inst7|altsyncram:altsyncram_component|altsyncram_bua1:auto_generated" |
Info: Inferred 1 megafunctions from design logic |
Info: Inferred multiplier megafunction ("lpm_mult") from the following logic: "fpz8_cpu_v1:inst|Mult0" |
Info: Elaborated megafunction instantiation "fpz8_cpu_v1:inst|lpm_mult:Mult0" |
Info: Instantiated megafunction "fpz8_cpu_v1:inst|lpm_mult:Mult0" with the following parameter: |
Info: Parameter "LPM_WIDTHA" = "8" |
Info: Parameter "LPM_WIDTHB" = "8" |
Info: Parameter "LPM_WIDTHP" = "16" |
Info: Parameter "LPM_WIDTHR" = "16" |
Info: Parameter "LPM_WIDTHS" = "1" |
Info: Parameter "LPM_REPRESENTATION" = "UNSIGNED" |
Info: Parameter "INPUT_A_IS_CONSTANT" = "NO" |
Info: Parameter "INPUT_B_IS_CONSTANT" = "NO" |
Info: Parameter "MAXIMIZE_SPEED" = "5" |
Info: Found 1 design units, including 1 entities, in source file db/mult_o5t.tdf |
Info: Found entity 1: mult_o5t |
Info: Registers with preset signals will power-up high |
Info: DEV_CLRn pin will set, and not reset, register with preset signal due to NOT Gate Push-Back |
Info: 11 registers lost all their fanouts during netlist optimizations. The first 11 are displayed below. |
Info: Register "fpz8_cpu_v1:inst|\main:OLD_IRQ0[0]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|\main:OLD_IRQ0[1]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|\main:OLD_IRQ0[2]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|\main:OLD_IRQ0[3]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|\main:OLD_IRQ0[4]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|\main:OLD_IRQ0[5]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|\main:OLD_IRQ0[6]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|\main:FETCH_ADDR[15]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|\main:FETCH_ADDR[14]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|IAB[15]" lost all its fanouts during netlist optimizations. |
Info: Register "fpz8_cpu_v1:inst|IAB[14]" lost all its fanouts during netlist optimizations. |
Info: Implemented 5005 device resources after synthesis - the final resource count might be different |
Info: Implemented 3 input pins |
Info: Implemented 9 output pins |
Info: Implemented 4952 logic cells |
Info: Implemented 40 RAM segments |
Info: Implemented 1 DSP elements |
Info: Quartus II Analysis & Synthesis was successful. 0 errors, 2 warnings |
Info: Peak virtual memory: 269 megabytes |
Info: Processing ended: Thu Nov 10 23:29:21 2016 |
Info: Elapsed time: 00:02:22 |
Info: Total CPU time (on all processors): 00:02:19 |
|
|
Analysis & Synthesis Status : Successful - Thu Nov 10 23:29:21 2016 |
Quartus II Version : 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition |
Revision Name : FPz8 |
Top-level Entity Name : CPU |
Family : Cyclone II |
Total logic elements : 4,905 |
Total combinational functions : 4,872 |
Dedicated logic registers : 495 |
Total registers : 495 |
Total pins : 12 |
Total virtual pins : 0 |
Total memory bits : 147,456 |
Embedded Multiplier 9-bit elements : 1 |
Total PLLs : 0 |
-- Copyright (C) 1991-2010 Altera Corporation |
-- Your use of Altera Corporation's design tools, logic functions |
-- and other software and tools, and its AMPP partner logic |
-- functions, and any output files from any of the foregoing |
-- (including device programming or simulation files), and any |
-- associated documentation or information are expressly subject |
-- to the terms and conditions of the Altera Program License |
-- Subscription Agreement, Altera MegaCore Function License |
-- Agreement, or other applicable license agreement, including, |
-- without limitation, that your use is for the sole purpose of |
-- programming logic devices manufactured by Altera and sold by |
-- Altera or its authorized distributors. Please refer to the |
-- applicable agreement for further details. |
-- |
-- This is a Quartus II output file. It is for reporting purposes only, and is |
-- not intended for use as a Quartus II input file. This file cannot be used |
-- to make Quartus II pin assignments - for instructions on how to make pin |
-- assignments, please see Quartus II help. |
--------------------------------------------------------------------------------- |
|
|
|
--------------------------------------------------------------------------------- |
-- NC : No Connect. This pin has no internal connection to the device. |
-- DNU : Do Not Use. This pin MUST NOT be connected. |
-- VCCINT : Dedicated power pin, which MUST be connected to VCC (1.2V). |
-- VCCIO : Dedicated power pin, which MUST be connected to VCC |
-- of its bank. |
-- Bank 1: 3.3V |
-- Bank 2: 3.3V |
-- Bank 3: 3.3V |
-- Bank 4: 3.3V |
-- GND : Dedicated ground pin. Dedicated GND pins MUST be connected to GND. |
-- It can also be used to report unused dedicated pins. The connection |
-- on the board for unused dedicated pins depends on whether this will |
-- be used in a future design. One example is device migration. When |
-- using device migration, refer to the device pin-tables. If it is a |
-- GND pin in the pin table or if it will not be used in a future design |
-- for another purpose the it MUST be connected to GND. If it is an unused |
-- dedicated pin, then it can be connected to a valid signal on the board |
-- (low, high, or toggling) if that signal is required for a different |
-- revision of the design. |
-- GND+ : Unused input pin. It can also be used to report unused dual-purpose pins. |
-- This pin should be connected to GND. It may also be connected to a |
-- valid signal on the board (low, high, or toggling) if that signal |
-- is required for a different revision of the design. |
-- GND* : Unused I/O pin. For transceiver I/O banks, connect each pin marked GND* |
-- either individually through a 10k Ohm resistor to GND or tie all pins |
-- together and connect through a single 10k Ohm resistor to GND. |
-- For non-transceiver I/O banks, connect each pin marked GND* directly to GND |
-- or leave it unconnected. |
-- RESERVED : Unused I/O pin, which MUST be left unconnected. |
-- RESERVED_INPUT : Pin is tri-stated and should be connected to the board. |
-- RESERVED_INPUT_WITH_WEAK_PULLUP : Pin is tri-stated with internal weak pull-up resistor. |
-- RESERVED_INPUT_WITH_BUS_HOLD : Pin is tri-stated with bus-hold circuitry. |
-- RESERVED_OUTPUT_DRIVEN_HIGH : Pin is output driven high. |
--------------------------------------------------------------------------------- |
|
|
|
--------------------------------------------------------------------------------- |
-- Pin directions (input, output or bidir) are based on device operating in user mode. |
--------------------------------------------------------------------------------- |
|
Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition |
CHIP "FPz8" ASSIGNED TO AN: EP2C8T144C6 |
|
Pin Name/Usage : Location : Dir. : I/O Standard : Voltage : I/O Bank : User Assignment |
------------------------------------------------------------------------------------------------------------- |
~ASDO~ / RESERVED_INPUT_WITH_WEAK_PULLUP : 1 : input : 3.3-V LVTTL : : 1 : N |
~nCSO~ / RESERVED_INPUT_WITH_WEAK_PULLUP : 2 : input : 3.3-V LVTTL : : 1 : N |
GND* : 3 : : : : 1 : |
GND* : 4 : : : : 1 : |
VCCIO1 : 5 : power : : 3.3V : 1 : |
GND : 6 : gnd : : : : |
GND* : 7 : : : : 1 : |
GND* : 8 : : : : 1 : |
GND* : 9 : : : : 1 : |
TDO : 10 : output : : : 1 : |
TMS : 11 : input : : : 1 : |
TCK : 12 : input : : : 1 : |
TDI : 13 : input : : : 1 : |
DATA0 : 14 : input : : : 1 : |
DCLK : 15 : : : : 1 : |
nCE : 16 : : : : 1 : |
CLOCK : 17 : input : 3.3-V LVTTL : : 1 : N |
RESET : 18 : input : 3.3-V LVTTL : : 1 : N |
GND : 19 : gnd : : : : |
nCONFIG : 20 : : : : 1 : |
GND+ : 21 : : : : 1 : |
GND+ : 22 : : : : 1 : |
VCCIO1 : 23 : power : : 3.3V : 1 : |
GND* : 24 : : : : 1 : |
GND* : 25 : : : : 1 : |
VCCINT : 26 : power : : 1.2V : : |
GND : 27 : gnd : : : : |
GND* : 28 : : : : 1 : |
VCCIO1 : 29 : power : : 3.3V : 1 : |
GND* : 30 : : : : 1 : |
GND* : 31 : : : : 1 : |
GND* : 32 : : : : 1 : |
GND : 33 : gnd : : : : |
GND_PLL1 : 34 : gnd : : : : |
VCCD_PLL1 : 35 : power : : 1.2V : : |
GND_PLL1 : 36 : gnd : : : : |
VCCA_PLL1 : 37 : power : : 1.2V : : |
GNDA_PLL1 : 38 : gnd : : : : |
GND : 39 : gnd : : : : |
GND* : 40 : : : : 4 : |
GND* : 41 : : : : 4 : |
GND* : 42 : : : : 4 : |
GND* : 43 : : : : 4 : |
GND* : 44 : : : : 4 : |
GND* : 45 : : : : 4 : |
VCCIO4 : 46 : power : : 3.3V : 4 : |
GND* : 47 : : : : 4 : |
GND* : 48 : : : : 4 : |
GND : 49 : gnd : : : : |
VCCINT : 50 : power : : 1.2V : : |
PAOUT[5] : 51 : output : 3.3-V LVTTL : : 4 : N |
PAOUT[1] : 52 : output : 3.3-V LVTTL : : 4 : N |
PAOUT[6] : 53 : output : 3.3-V LVTTL : : 4 : N |
VCCIO4 : 54 : power : : 3.3V : 4 : |
PAOUT[2] : 55 : output : 3.3-V LVTTL : : 4 : N |
GND : 56 : gnd : : : : |
PAOUT[4] : 57 : output : 3.3-V LVTTL : : 4 : N |
GND* : 58 : : : : 4 : |
GND* : 59 : : : : 4 : |
GND* : 60 : : : : 4 : |
GND : 61 : gnd : : : : |
VCCINT : 62 : power : : 1.2V : : |
GND* : 63 : : : : 4 : |
GND* : 64 : : : : 4 : |
GND* : 65 : : : : 4 : |
VCCIO4 : 66 : power : : 3.3V : 4 : |
GND* : 67 : : : : 4 : |
GND : 68 : gnd : : : : |
GND* : 69 : : : : 4 : |
GND* : 70 : : : : 4 : |
GND* : 71 : : : : 4 : |
GND* : 72 : : : : 4 : |
GND* : 73 : : : : 3 : |
GND* : 74 : : : : 3 : |
GND* : 75 : : : : 3 : |
~LVDS54p/nCEO~ : 76 : output : 3.3-V LVTTL : : 3 : N |
VCCIO3 : 77 : power : : 3.3V : 3 : |
GND : 78 : gnd : : : : |
GND* : 79 : : : : 3 : |
GND : 80 : gnd : : : : |
VCCINT : 81 : power : : 1.2V : : |
nSTATUS : 82 : : : : 3 : |
CONF_DONE : 83 : : : : 3 : |
MSEL1 : 84 : : : : 3 : |
MSEL0 : 85 : : : : 3 : |
GND* : 86 : : : : 3 : |
GND* : 87 : : : : 3 : |
GND+ : 88 : : : : 3 : |
GND+ : 89 : : : : 3 : |
GND+ : 90 : : : : 3 : |
GND+ : 91 : : : : 3 : |
GND* : 92 : : : : 3 : |
GND* : 93 : : : : 3 : |
GND* : 94 : : : : 3 : |
VCCIO3 : 95 : power : : 3.3V : 3 : |
GND* : 96 : : : : 3 : |
GND* : 97 : : : : 3 : |
GND : 98 : gnd : : : : |
GND* : 99 : : : : 3 : |
GND* : 100 : : : : 3 : |
GND* : 101 : : : : 3 : |
VCCIO3 : 102 : power : : 3.3V : 3 : |
GND* : 103 : : : : 3 : |
GND* : 104 : : : : 3 : |
GND : 105 : gnd : : : : |
GND_PLL2 : 106 : gnd : : : : |
VCCD_PLL2 : 107 : power : : 1.2V : : |
GND_PLL2 : 108 : gnd : : : : |
VCCA_PLL2 : 109 : power : : 1.2V : : |
GNDA_PLL2 : 110 : gnd : : : : |
GND : 111 : gnd : : : : |
GND* : 112 : : : : 2 : |
GND* : 113 : : : : 2 : |
GND* : 114 : : : : 2 : |
GND* : 115 : : : : 2 : |
VCCIO2 : 116 : power : : 3.3V : 2 : |
GND : 117 : gnd : : : : |
GND* : 118 : : : : 2 : |
GND* : 119 : : : : 2 : |
GND* : 120 : : : : 2 : |
GND* : 121 : : : : 2 : |
GND* : 122 : : : : 2 : |
GND : 123 : gnd : : : : |
VCCINT : 124 : power : : 1.2V : : |
GND* : 125 : : : : 2 : |
GND* : 126 : : : : 2 : |
VCCIO2 : 127 : power : : 3.3V : 2 : |
GND : 128 : gnd : : : : |
PAOUT[7] : 129 : output : 3.3-V LVTTL : : 2 : N |
GND : 130 : gnd : : : : |
VCCINT : 131 : power : : 1.2V : : |
PAOUT[3] : 132 : output : 3.3-V LVTTL : : 2 : N |
PAOUT[0] : 133 : output : 3.3-V LVTTL : : 2 : N |
DBG_RX : 134 : input : 3.3-V LVTTL : : 2 : N |
GND* : 135 : : : : 2 : |
GND* : 136 : : : : 2 : |
DBG_TX : 137 : output : 3.3-V LVTTL : : 2 : N |
VCCIO2 : 138 : power : : 3.3V : 2 : |
GND* : 139 : : : : 2 : |
GND : 140 : gnd : : : : |
GND* : 141 : : : : 2 : |
GND* : 142 : : : : 2 : |
GND* : 143 : : : : 2 : |
GND* : 144 : : : : 2 : |
Sample behavioral waveforms for design file "altsyncram0.vhd"
+The following waveforms show the behavior of altsyncram megafunction for the chosen set of parameters in design "altsyncram0.vhd". For the purpose of this simulation, the contents of the memory at the start of the sample waveforms is assumed to be ( F0, F1, F2, F3, ...). The design "altsyncram0.vhd" has The ram block type of the design is M4K.
+The above waveform shows the behavior of the design under normal read conditions. The read happens at the rising edge of the enabled clock cycle. The output from the RAM is undefined until after the first rising edge of the read clock.
+ + + Index: altsyncram1.bsf =================================================================== --- altsyncram1.bsf (nonexistent) +++ altsyncram1.bsf (revision 2) @@ -0,0 +1,95 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 256 112) + (text "altsyncram1" (rect 93 1 176 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 96 25 108)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect 4 19 49 32)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address[10..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "address[10..0]" (rect 4 35 69 48)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "wren" (rect 4 51 26 64)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 75 27 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 104 88)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q[7..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[7..0]" (rect 223 19 253 32)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 168 32)(line_width 3)) + ) + (drawing + (text "2048 Word(s)" (rect 136 24 148 80)(font "Arial" )(vertical)) + (text "RAM" (rect 149 42 161 62)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 92 119 104)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 80)(line_width 1)) + (line (pt 168 80)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 104 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 104 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 104 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 104 36)(pt 104 89)(line_width 1)) + ) +) Index: altsyncram1.cmp =================================================================== --- altsyncram1.cmp (nonexistent) +++ altsyncram1.cmp (revision 2) @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altsyncram1 + PORT + ( + address : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + clock : IN STD_LOGIC := '1'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + wren : IN STD_LOGIC := '0'; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +end component; Index: altsyncram1.qip =================================================================== --- altsyncram1.qip (nonexistent) +++ altsyncram1.qip (revision 2) @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "ALTSYNCRAM" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altsyncram1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altsyncram1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altsyncram1.cmp"] Index: altsyncram1.vhd =================================================================== --- altsyncram1.vhd (nonexistent) +++ altsyncram1.vhd (revision 2) @@ -0,0 +1,210 @@ +-- megafunction wizard: %ALTSYNCRAM% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: altsyncram1.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altsyncram1 IS + PORT + ( + address : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + clock : IN STD_LOGIC := '1'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + wren : IN STD_LOGIC := '0'; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END altsyncram1; + + +ARCHITECTURE SYN OF altsyncram1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + clock_enable_input_a : STRING; + clock_enable_output_a : STRING; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_reg_a : STRING; + power_up_uninitialized : STRING; + widthad_a : NATURAL; + width_a : NATURAL; + width_byteena_a : NATURAL + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + clock_enable_input_a => "BYPASS", + clock_enable_output_a => "BYPASS", + intended_device_family => "Cyclone II", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 2048, + operation_mode => "SINGLE_PORT", + outdata_aclr_a => "NONE", + outdata_reg_a => "UNREGISTERED", + power_up_uninitialized => "FALSE", + widthad_a => 11, + width_a => 8, + width_byteena_a => 1 + ) + PORT MAP ( + wren_a => wren, + clock0 => clock, + address_a => address, + data_a => data, + q_a => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: ECC NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "16384" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "1" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "4" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "4" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "0" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGrren NUMERIC "1" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "8" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "2048" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SINGLE_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "11" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: USED_PORT: address 0 0 11 0 INPUT NODEFVAL address[10..0] +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC clock +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] +-- Retrieval info: USED_PORT: wren 0 0 0 0 INPUT GND wren +-- Retrieval info: CONNECT: @data_a 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 +-- Retrieval info: CONNECT: @address_a 0 0 11 0 address 0 0 11 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram1_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf Index: altsyncram1_wave0.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: altsyncram1_wave0.jpg =================================================================== --- altsyncram1_wave0.jpg (nonexistent) +++ altsyncram1_wave0.jpg (revision 2)Sample behavioral waveforms for design file "altsyncram1.vhd"
+The following waveforms show the behavior of altsyncram megafunction for the chosen set of parameters in design "altsyncram1.vhd". For the purpose of this simulation, the contents of the memory at the start of the sample waveforms is assumed to be ( F0, F1, F2, F3, ...). The design "altsyncram1.vhd" has
+The above waveform shows the behavior of the design under normal read conditions. The read happens at the rising edge of the enabled clock cycle. The output from the RAM is undefined until after the first rising edge of the read clock.
+ + + Index: altsyncram2.bsf =================================================================== --- altsyncram2.bsf (nonexistent) +++ altsyncram2.bsf (revision 2) @@ -0,0 +1,95 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 64 64 320 176) + (text "altsyncram2" (rect 168 96 251 112)(font "Arial" (font_size 10))) + (text "inst" (rect 8 0 25 12)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect 4 19 57 33)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address[13..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "address[13..0]" (rect 4 35 86 49)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "wren" (rect 4 51 34 65)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 75 33 89)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 104 88)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q[7..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[7..0]" (rect 223 19 258 33)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 168 32)(line_width 3)) + ) + (drawing + (text "16384 Word(s)" (rect 136 21 148 92)(font "Arial" )(vertical)) + (text "RAM" (rect 149 42 161 65)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 92 133 104)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 80)(line_width 1)) + (line (pt 168 80)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 104 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 104 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 104 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 104 36)(pt 104 89)(line_width 1)) + ) +) Index: altsyncram2.cmp =================================================================== --- altsyncram2.cmp (nonexistent) +++ altsyncram2.cmp (revision 2) @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altsyncram2 + PORT + ( + address : IN STD_LOGIC_VECTOR (13 DOWNTO 0); + clock : IN STD_LOGIC := '1'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + wren : IN STD_LOGIC := '0'; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +end component; Index: altsyncram2.qip =================================================================== --- altsyncram2.qip (nonexistent) +++ altsyncram2.qip (revision 2) @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "ALTSYNCRAM" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altsyncram2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altsyncram2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altsyncram2.cmp"] Index: altsyncram2.vhd =================================================================== --- altsyncram2.vhd (nonexistent) +++ altsyncram2.vhd (revision 2) @@ -0,0 +1,213 @@ +-- megafunction wizard: %ALTSYNCRAM% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: altsyncram2.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altsyncram2 IS + PORT + ( + address : IN STD_LOGIC_VECTOR (13 DOWNTO 0); + clock : IN STD_LOGIC := '1'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + wren : IN STD_LOGIC := '0'; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END altsyncram2; + + +ARCHITECTURE SYN OF altsyncram2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + clock_enable_input_a : STRING; + clock_enable_output_a : STRING; + init_file : STRING; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_reg_a : STRING; + power_up_uninitialized : STRING; + widthad_a : NATURAL; + width_a : NATURAL; + width_byteena_a : NATURAL + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (13 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + clock_enable_input_a => "BYPASS", + clock_enable_output_a => "BYPASS", + init_file => "../../vhdl/fpz8/FPZ8_test.mif", + intended_device_family => "Cyclone II", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 16384, + operation_mode => "SINGLE_PORT", + outdata_aclr_a => "NONE", + outdata_reg_a => "UNREGISTERED", + power_up_uninitialized => "FALSE", + widthad_a => 14, + width_a => 8, + width_byteena_a => 1 + ) + PORT MAP ( + wren_a => wren, + clock0 => clock, + address_a => address, + data_a => data, + q_a => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: ECC NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "131072" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "../../vhdl/fpz8/FPZ8_test.mif" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "1" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "4" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "4" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "0" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGrren NUMERIC "1" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "8" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: INIT_FILE STRING "../../vhdl/fpz8/FPZ8_test.mif" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "16384" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SINGLE_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "14" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: USED_PORT: address 0 0 14 0 INPUT NODEFVAL address[13..0] +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC clock +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] +-- Retrieval info: USED_PORT: wren 0 0 0 0 INPUT GND wren +-- Retrieval info: CONNECT: @data_a 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 +-- Retrieval info: CONNECT: @address_a 0 0 14 0 address 0 0 14 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram2_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram2_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altsyncram2_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf Index: altsyncram2_wave0.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: altsyncram2_wave0.jpg =================================================================== --- altsyncram2_wave0.jpg (nonexistent) +++ altsyncram2_wave0.jpg (revision 2)Sample behavioral waveforms for design file "altsyncram2.vhd"
+The following waveforms show the behavior of altsyncram megafunction for the chosen set of parameters in design "altsyncram2.vhd". For the purpose of this simulation, the contents of the memory at the start of the sample waveforms is assumed to be ( F0, F1, F2, F3, ...). The design "altsyncram2.vhd" has
+The above waveform shows the behavior of the design under normal read conditions. The read happens at the rising edge of the enabled clock cycle. The output from the RAM is undefined until after the first rising edge of the read clock.
+ + + Index: fpz8_cpu_v1.vhd =================================================================== --- fpz8_cpu_v1.vhd (nonexistent) +++ fpz8_cpu_v1.vhd (revision 2) @@ -0,0 +1,2139 @@ +-- FPz8 mk1 +-- Zilog Z8 Encore! 100% compatible softcore +-- Author: Fábio Pereira (fabio.jve@gmail.com) +-- Version: 0.9 Nov, 11th, 2016 + +-- FPz8 is a softcore 100% object-code compatible with the Z8 encore microcontroller line. Current implementation includes +-- 2kb of file registers (RAM), 16kb of program memory (using FPGA RAM), 8 vectored interrupts with programmable priority, +-- full-featured onchip debugger 100% compatible with Zilog's OCD and ZDS-II IDE. +-- It was designed to work as a SoC and everything (except the USB chip) fits inside a single FPGA (I have used an Altera +-- Cyclone IV EP4CE6 device). The debugger connection makes use of a serial-to-USB chip (it is part of the low-cost FPGA +-- board used on the project). +-- In a near future I plan to add some more features to the device (such as a timer and maybe other peripherals). +-- The idea behind the FPz8 was to learn more on VHDL and FPGAs (this is my second design using those technologies). I also +-- believe the FPz8 can be a very interesting tool for learning/teaching about VHDL, computing and microprocessors/microcontrollers +-- programming. + +-- You are free to use and to modify FPz8 to fit your needs, except for comercial use (I don't expect anyone would do that anyway). +-- If you want to contribute to the project, contact me and share your thoughts. +-- Don't forget to credit the author! + +-- Note: currently there are only a few SFRs physically implemented, they are: +-- 0xFC0 - IRQ0 +-- 0xFC1 - IRQ0ENH +-- 0xFC2 - IRQ0ENL +-- 0xFCF - IRQCTL +-- 0xFD2 - PAIN +-- 0xFD3 - PAOUT +-- 0xFF8 - FCTL +-- 0xFFC - FLAGS +-- 0xFFD - RP +-- 0xFFE - SPH +-- 0xFFF - SPL +-- Also notice INT7 is not physically present as it is planned to be used with the coming timer peripheral + +-- What else is missing from the original architecture? +-- A: no watchdog (WDT instruction runs as a NOP), no LDE and LDEI instructions (data memory related), no option bytes + +-- FPz8 was tested on a EP4CE6 mini board (50MHz clock) +-- http://www.ebay.com/itm/EP4CE6-Mini-Board-USB-Blaster-Altera-Cyclone-IV-FPGA-CPLD-Nano-Size- + +-- This work is licensed under the Creative Commons Attribution 4.0 International License. +-- To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/. + +library ieee ; +use ieee.std_logic_1164.all ; +use ieee.numeric_std.all; +use ieee.std_logic_unsigned.all ; + +entity fpz8_cpu_v1 IS + port + ( + IAB : buffer std_logic_vector(15 downto 0); -- instruction address bus (16 bits) + IDB : in std_logic_vector(7 downto 0); -- instruction data bus (8 bits) + PWDB : out std_logic_vector(7 downto 0); -- program write data bus (8 bits) + MAB : buffer std_logic_vector(11 downto 0); -- memory address bus (12 bits) + MIDB : in std_logic_vector(7 downto 0); -- memory input data bus (8 bits) + MODB : out std_logic_vector(7 downto 0); -- memory output data bus (8 bits) + RIDB : in std_logic_vector(7 downto 0); -- register input data bus (8 bits) + RODB : out std_logic_vector(7 downto 0); -- register output data bus (8 bits) + PGM_WR : out std_logic; -- program memory write enable + WR : buffer std_logic; -- write enable + REG_SEL : buffer std_logic; -- SFR select (addresses F00 to FFF, except internal registers) + MEM_SEL : buffer std_logic; -- memory select + INT0 : in std_logic; -- interrupt 0 input (vector 0x0016) + INT1 : in std_logic; -- interrupt 1 input (vector 0x0014) + INT2 : in std_logic; -- interrupt 2 input (vector 0x0012) + INT3 : in std_logic; -- interrupt 3 input (vector 0x0010) + INT4 : in std_logic; -- interrupt 4 input (vector 0x000E) + INT5 : in std_logic; -- interrupt 5 input (vector 0x000C) + INT6 : in std_logic; -- interrupt 6 input (vector 0x000A) + DBG_RX : in std_logic; -- debugger receive input + DBG_TX : buffer std_logic; -- debugger transmit output + PAOUT : out std_logic_vector(7 downto 0); -- port A output data + PAIN : in std_logic_vector(7 downto 0); -- port A input data + CLK : in std_logic; -- main clock + CLK_OUT : out std_logic; -- main gated-clock output + CLK_OUTN : out std_logic; -- main inverted-gated-clock output + STOP : buffer std_logic; -- stop output + RESET : in std_logic -- CPU reset + ); +end fpz8_cpu_v1; + +architecture cpu of fpz8_cpu_v1 is + +type Tinstqueue is array (0 TO 7) of std_logic_vector(7 downto 0); +type Tflags is record + C,Z,S,V,D,H,F2,F1 : std_logic; +end record; +shared variable CPU_FLAGS, ALU_FLAGS : Tflags; +shared variable ALU_NOUPDATE : std_logic; +shared variable INT7 : std_logic; +shared variable IRQE : std_logic; +shared variable HALT : std_logic; +shared variable IRQ0 : std_logic_vector(7 downto 0); -- interrupts 0-7 flags +shared variable IRQ0ENH,IRQ0ENL : std_logic_vector(7 downto 0); -- interrupts 0-7 enable high and low +shared variable SP : std_logic_vector(11 downto 0); -- stack pointer +shared variable RP : std_logic_vector(7 downto 0); -- register pointer +shared variable FCTL : std_logic_vector(7 downto 0); -- flash control +shared variable PAOUT_BUFFER : std_logic_vector(7 downto 0); +signal RXSYNC1, RXSYNC2 : std_logic; +ATTRIBUTE preserve : boolean; +ATTRIBUTE preserve OF RXSYNC1 : signal IS true; +ATTRIBUTE preserve OF RXSYNC2 : signal IS true; + +constant ALU_ADD : std_logic_vector(3 downto 0):=x"0"; -- CZSVH D=0 +constant ALU_ADC : std_logic_vector(3 downto 0):=x"1"; -- CZSVH D=0 +constant ALU_SUB : std_logic_vector(3 downto 0):=x"2"; -- CZSVH D=1 +constant ALU_SBC : std_logic_vector(3 downto 0):=x"3"; -- CZSVH D=1 +constant ALU_OR : std_logic_vector(3 downto 0):=x"4"; -- ZS V=0 +constant ALU_AND : std_logic_vector(3 downto 0):=x"5"; -- ZS V=0 +constant ALU_TCM : std_logic_vector(3 downto 0):=x"6"; -- ZS V=0 +constant ALU_TM : std_logic_vector(3 downto 0):=x"7"; -- ZS V=0 +constant ALU_CPC : std_logic_vector(3 downto 0):=x"9"; -- CZSV +constant ALU_CP : std_logic_vector(3 downto 0):=x"A"; -- CZSV +constant ALU_XOR : std_logic_vector(3 downto 0):=x"B"; -- ZS V=0 +constant ALU_BSWAP : std_logic_vector(3 downto 0):=x"D"; -- ZS V=0 +constant ALU_LD : std_logic_vector(3 downto 0):=x"E"; -- Load does not change any flag + +constant LU2_RLC : std_logic_vector(3 downto 0):=x"1"; -- CZSV +constant LU2_INC : std_logic_vector(3 downto 0):=x"2"; -- ZSV +constant LU2_DEC : std_logic_vector(3 downto 0):=x"3"; -- ZSV +constant LU2_DA : std_logic_vector(3 downto 0):=x"4"; -- CZS +constant LU2_COM : std_logic_vector(3 downto 0):=x"6"; -- ZS V=0 +constant LU2_LD : std_logic_vector(3 downto 0):=x"7"; -- Load does not change any flag +constant LU2_RL : std_logic_vector(3 downto 0):=x"9"; -- CZSV +constant LU2_SRL : std_logic_vector(3 downto 0):=x"A"; -- CZSV +constant LU2_CLR : std_logic_vector(3 downto 0):=x"B"; -- Clear does not change any flag +constant LU2_RRC : std_logic_vector(3 downto 0):=x"C"; -- CZSV +constant LU2_SRA : std_logic_vector(3 downto 0):=x"D"; -- CZSV +constant LU2_RR : std_logic_vector(3 downto 0):=x"E"; -- CZSV +constant LU2_SWAP : std_logic_vector(3 downto 0):=x"F"; -- ZS + +-- Debug commands +constant DBGCMD_READ_REV : std_logic_vector(7 downto 0):=x"00"; +constant DBGCMD_READ_STATUS : std_logic_vector(7 downto 0):=x"02"; +constant DBGCMD_READ_RUNCOUNTER : std_logic_vector(7 downto 0):=x"03"; +constant DBGCMD_WRITE_CTRL : std_logic_vector(7 downto 0):=x"04"; +constant DBGCMD_READ_CTRL : std_logic_vector(7 downto 0):=x"05"; +constant DBGCMD_WRITE_PC : std_logic_vector(7 downto 0):=x"06"; +constant DBGCMD_READ_PC : std_logic_vector(7 downto 0):=x"07"; +constant DBGCMD_WRITE_REG : std_logic_vector(7 downto 0):=x"08"; +constant DBGCMD_READ_REG : std_logic_vector(7 downto 0):=x"09"; +constant DBGCMD_WRITE_PROGRAM : std_logic_vector(7 downto 0):=x"0A"; +constant DBGCMD_READ_PROGRAM : std_logic_vector(7 downto 0):=x"0B"; +constant DBGCMD_READ_CRC : std_logic_vector(7 downto 0):=x"0E"; +constant DBGCMD_STEP : std_logic_vector(7 downto 0):=x"10"; +constant DBGCMD_STUFF : std_logic_vector(7 downto 0):=x"11"; +constant DBGCMD_EXEC : std_logic_vector(7 downto 0):=x"12"; + +-- DATAWRITE controls where data to be written actually goes (an internal register, an external register (through register data bus) or RAM) +procedure DATAWRITE + ( ADDRESS : in std_logic_vector(11 downto 0); + DATA : in std_logic_vector(7 downto 0)) is +begin + if (ADDRESS>=x"F00") then ----------------------------------------------- it is a SFR address + if (ADDRESS=x"FFC") then ---------------------------------------------------- FLAGS register + CPU_FLAGS.C := DATA(7); + CPU_FLAGS.Z := DATA(6); + CPU_FLAGS.S := DATA(5); + CPU_FLAGS.V := DATA(4); + CPU_FLAGS.D := DATA(3); + CPU_FLAGS.H := DATA(2); + CPU_FLAGS.F2 := DATA(1); + CPU_FLAGS.F1 := DATA(0); + elsif (ADDRESS=x"FFD") then RP := DATA; ------------------------------------------- RP register + elsif (ADDRESS=x"FFE") then SP(11 downto 8) := DATA(3 downto 0); -------------- SPH register + elsif (ADDRESS=x"FFF") then SP(7 downto 0) := DATA; ------------------------------ SPL register + elsif (ADDRESS=x"FF8") then ----------------------------------------------------- FCTL register + if (DATA=x"73") then FCTL:=x"01"; + elsif (DATA=x"8C" and FCTL=x"01") then FCTL:=x"03"; + elsif (DATA=x"95") then FCTL:=x"04"; + else FCTL:=x"00"; + end if; + elsif (ADDRESS=x"FC0") then IRQ0 := DATA; --------------------------------------- IRQ0 register + elsif (ADDRESS=x"FC1") then IRQ0ENH := DATA; ------------------------------ IRQ0ENH register + elsif (ADDRESS=x"FC2") then IRQ0ENL := DATA; ------------------------------ IRQ0ENL register + elsif (ADDRESS=x"FCF") then IRQE := DATA(7); ------------------------------- IRQCTL register + elsif (ADDRESS=x"FD3") then ---------------------------------------------------- PAOUT register + PAOUT <= DATA; + PAOUT_BUFFER := DATA; + else + REG_SEL <= '1'; + RODB <= DATA; + end if; + else + MEM_SEL <= '1'; + MODB <= DATA; + end if; +end datawrite; + +-- DATAREAD controls where the data to be read actually comes from (an internal register, an external register (through register data bus) or RAM) +impure function DATAREAD + (ADDRESS : in std_logic_vector(11 downto 0)) + return std_logic_vector is +begin + if (ADDRESS>=x"F00") then -------------------------------- it is a SFR address + if (ADDRESS=x"FFC") then --------------------------------- FLAGS register + return (CPU_FLAGS.C,CPU_FLAGS.Z,CPU_FLAGS.S,CPU_FLAGS.V,CPU_FLAGS.D,CPU_FLAGS.H,CPU_FLAGS.F2,CPU_FLAGS.F1); + elsif (ADDRESS=x"FFD") then return RP; ------------------------ RP register + elsif (ADDRESS=x"FFE") then ----------------------------------- SPH register + return "0000" & SP(11 downto 8); + elsif (ADDRESS=x"FFF") then return SP(7 downto 0); ----------- SPL register + elsif (ADDRESS=x"FF8") then return FCTL; ------------------ FCTL register + elsif (ADDRESS=x"FC0") then return IRQ0; ------------------ IRQ0 register + elsif (ADDRESS=x"FC1") then return IRQ0ENH; --------------- IRQ0ENH register + elsif (ADDRESS=x"FC2") then return IRQ0ENL; --------------- IRQ0ENL register + elsif (ADDRESS=x"FCF") then return IRQE&"0000000"; -------- IRQCTL register + elsif (ADDRESS=x"FD2") then return PAIN; ------------------ PAIN register + elsif (ADDRESS=x"FD3") then return PAOUT_BUFFER; --------- PAOUT register + else + REG_SEL <= '1'; + return RIDB; + end if; + else + MEM_SEL <= '1'; + return MIDB; + end if; +end DATAREAD; + +-- CONDITIONCODE returns the result of a logical condition (for conditional jumps) +function CONDITIONCODE + ( CONDITION : in std_logic_vector(3 downto 0)) return STD_LOGIC is +begin + case CONDITION is + when x"0" => + return '0'; + when x"1" => + return ALU_FLAGS.S xor ALU_FLAGS.V; + when x"2" => + return ALU_FLAGS.Z or (ALU_FLAGS.S xor ALU_FLAGS.V); + when x"3" => + return ALU_FLAGS.C or ALU_FLAGS.Z; + when x"4" => + return ALU_FLAGS.V; + when x"5" => + return ALU_FLAGS.S; + when x"6" => + return ALU_FLAGS.Z; + when x"7" => + return ALU_FLAGS.C; + when x"8" => + return '1'; + when x"9" => + return NOT (ALU_FLAGS.S xor ALU_FLAGS.V); + when x"A" => + return NOT (ALU_FLAGS.Z or (ALU_FLAGS.S xor ALU_FLAGS.V)); + when x"B" => + return (NOT ALU_FLAGS.C) AND (NOT ALU_FLAGS.Z); + when x"C" => + return NOT ALU_FLAGS.V; + when x"D" => + return NOT ALU_FLAGS.S; + when x"E" => + return NOT ALU_FLAGS.Z; + when others => + return NOT ALU_FLAGS.C; + end case; +end CONDITIONCODE; + +-- ADDRESSER12 generates a 12-bit address (it decides when to use escaped addressing mode) +function ADDRESSER12 + ( ADDR : in std_logic_vector(11 downto 0)) return std_logic_vector is +begin + if (ADDR(11 downto 4)=x"EE") then -- escaped addressing mode (work register) + return RP(3 downto 0) & RP(7 downto 4) & ADDR(3 downto 0); + elsif (ADDR(11 downto 8)=x"E") then -- escaped addressing mode (register) + return RP(3 downto 0) & ADDR(7 downto 0); + else return ADDR; -- full address + end if; +end ADDRESSER12; + +-- ADDRESSER8 generates a 12-bit address from an 8-bit address (it decides when to use escaped addressing mode) +function ADDRESSER8 + ( ADDR : in std_logic_vector(7 downto 0)) return std_logic_vector is +begin + if (ADDR(7 downto 4)=x"E") then -- escaped addressing mode (register) + return RP(3 downto 0) & RP(7 downto 4) & ADDR(3 downto 0); + else return RP(3 downto 0) & ADDR(7 downto 0); -- full address + end if; +end ADDRESSER8; + +-- ADDRESSER12 generates a 12-bit address from a 4-bit address (using RP register) +function ADDRESSER4 + ( ADDR : in std_logic_vector(3 downto 0)) return std_logic_vector is +begin + return RP(3 downto 0) & RP(7 downto 4) & ADDR; +end ADDRESSER4; + +-- ALU is the arithmetic and logic unit, it receives two 8-bit operands along with a 4-bit operation code and a carry input, returning an 8-bit result +function ALU + ( ALU_OP : in std_logic_vector(3 downto 0); + OPER1 : in std_logic_vector(7 downto 0); + OPER2 : in std_logic_vector(7 downto 0); + CIN : in STD_LOGIC) return std_logic_vector is +variable RESULT : std_logic_vector(7 downto 0); +variable HALF1,HALF2 : std_logic_vector(4 downto 0); +begin + ALU_NOUPDATE := '0'; + case ALU_OP is + when ALU_ADD => -- ADD operation ************************************************** + HALF1 := ('0'&OPER1(3 downto 0))+('0'&OPER2(3 downto 0)); + ALU_FLAGS.H := HALF1(4); + HALF2 := ('0'&OPER1(7 downto 4))+('0'&OPER2(7 downto 4))+HALF1(4); + RESULT := HALF2(3 downto 0) & HALF1(3 downto 0); + ALU_FLAGS.C := HALF2(4); + if (OPER1(7)=OPER2(7)) then + if (OPER1(7)/=RESULT(7)) then ALU_FLAGS.V :='1'; else ALU_FLAGS.V :='0'; + end if; + else ALU_FLAGS.V:='0'; + end if; + when ALU_ADC => -- ADC operation ************************************************** + HALF1 := ('0'&OPER1(3 downto 0))+('0'&OPER2(3 downto 0)+(CIN)); + ALU_FLAGS.H := HALF1(4); + HALF2 := ('0'&OPER1(7 downto 4))+('0'&OPER2(7 downto 4))+HALF1(4); + RESULT := HALF2(3 downto 0) & HALF1(3 downto 0); + ALU_FLAGS.C := HALF2(4); + if (OPER1(7)=OPER2(7)) then + if (OPER1(7)/=RESULT(7)) then ALU_FLAGS.V :='1'; else ALU_FLAGS.V :='0'; + end if; + else ALU_FLAGS.V:='0'; + end if; + when ALU_SUB => -- SUB operation ************************************************** + HALF1 := ('0'&OPER1(3 downto 0))-('0'&(OPER2(3 downto 0))); + ALU_FLAGS.H := (HALF1(4)); + HALF2 := ('0'&OPER1(7 downto 4))-('0'&(OPER2(7 downto 4)))-HALF1(4); + RESULT := HALF2(3 downto 0) & HALF1(3 downto 0); + ALU_FLAGS.C := (HALF2(4)); + if (OPER1(7)/=OPER2(7)) then + if (OPER1(7)=RESULT(7)) then ALU_FLAGS.V :='1'; else ALU_FLAGS.V :='0'; + end if; + else ALU_FLAGS.V:='0'; + end if; + when ALU_SBC => -- SBC operation ************************************************** + HALF1 := ('0'&OPER1(3 downto 0))-('0'&(OPER2(3 downto 0)))-CIN; + ALU_FLAGS.H := (HALF1(4)); + HALF2 := ('0'&OPER1(7 downto 4))-('0'&(OPER2(7 downto 4)))-HALF1(4); + RESULT := HALF2(3 downto 0) & HALF1(3 downto 0); + ALU_FLAGS.C := (HALF2(4)); + if (OPER1(7)/=OPER2(7)) then + if (OPER1(7)=RESULT(7)) then ALU_FLAGS.V :='1'; else ALU_FLAGS.V :='0'; + end if; + else ALU_FLAGS.V:='0'; + end if; + when ALU_OR => -- Logical or operation *********************************************** + RESULT := OPER1 or OPER2; + when ALU_AND => -- Logical AND operation ********************************************** + RESULT := OPER1 AND OPER2; + when ALU_TCM => -- Test Complement Mask operation ************************************* + RESULT := (NOT OPER1) AND OPER2; + ALU_NOUPDATE := '1'; + when ALU_TM => -- Test Mask operation ************************************************ + RESULT := OPER1 AND OPER2; + ALU_NOUPDATE := '1'; + when ALU_CPC => -- CPC operation ************************************************** + HALF1 := ('0'&OPER1(3 downto 0))-('0'&(OPER2(3 downto 0)))-CIN; + ALU_FLAGS.H := (HALF1(4)); + HALF2 := ('0'&OPER1(7 downto 4))-('0'&(OPER2(7 downto 4)))-HALF1(4); + RESULT := HALF2(3 downto 0) & HALF1(3 downto 0); + ALU_FLAGS.C := (HALF2(4)); + if (OPER1(7)/=OPER2(7)) then + if (OPER1(7)=RESULT(7)) then ALU_FLAGS.V :='1'; else ALU_FLAGS.V :='0'; + end if; + else ALU_FLAGS.V:='0'; + end if; + ALU_NOUPDATE := '1'; + when ALU_CP => -- Compare operation ************************************************** + HALF1 := ('0'&OPER1(3 downto 0))-('0'&(OPER2(3 downto 0))); + ALU_FLAGS.H := (HALF1(4)); + HALF2 := ('0'&OPER1(7 downto 4))-('0'&(OPER2(7 downto 4)))-HALF1(4); + RESULT := HALF2(3 downto 0) & HALF1(3 downto 0); + ALU_FLAGS.C := (HALF2(4)); + if (OPER1(7)/=OPER2(7)) then + if (OPER1(7)=RESULT(7)) then ALU_FLAGS.V :='1'; else ALU_FLAGS.V :='0'; + end if; + else ALU_FLAGS.V:='0'; + end if; + ALU_NOUPDATE := '1'; + when ALU_XOR => -- Logical xor operation ********************************************** + RESULT := OPER1 xor OPER2; + when ALU_BSWAP => -- Bit Swap operation ********************************************* + RESULT := OPER2(0)&OPER2(1)&OPER2(2)&OPER2(3)&OPER2(4)&OPER2(5)&OPER2(6)&OPER2(7); + when others => -- Load operation ***************************************************** + RESULT := OPER2; + + end case; + if (RESULT(7 downto 0)=x"00") then ALU_FLAGS.Z := '1'; else ALU_FLAGS.Z := '0'; + end if; + ALU_FLAGS.S := RESULT(7); + return RESULT(7 downto 0); +end ALU; + +-- LU2 is the second logic unit, it performs mostly logical operations not covered by the ALU +function LU2 + ( LU2_OP : in std_logic_vector(3 downto 0); + OPER : in std_logic_vector(7 downto 0); + DIN : in std_logic; + HIN : in std_logic; + CIN : in std_logic) return std_logic_vector is +variable RESULT : std_logic_vector(7 downto 0); +begin + case LU2_OP is + when LU2_RLC => -- RLC operation ************************************************** + ALU_FLAGS.C := OPER(7); + RESULT := OPER(6)&OPER(5)&OPER(4)&OPER(3)&OPER(2)&OPER(1)&OPER(0)&CIN; + when LU2_INC => -- INC operation ************************************************** + RESULT := OPER+1; + if (RESULT=x"00") then ALU_FLAGS.C:='1'; else ALU_FLAGS.C:='0'; + end if; + when LU2_DEC => -- DEC operation ************************************************** + RESULT := OPER-1; + if (RESULT=x"FF") then ALU_FLAGS.C:='1'; else ALU_FLAGS.C:='0'; + end if; + when LU2_DA => -- DA operation *************************************************** + if (DIN='0') then -- decimal adjust following an add operation + if (OPER(3 downto 0)>x"9" or HIN='1') then + RESULT := ALU(ALU_ADD,OPER,x"06",'0'); + else RESULT := OPER; + end if; + if (RESULT(7 downto 4)>x"9" or ALU_FLAGS.C='1') then + RESULT := ALU(ALU_ADD,RESULT,x"60",'0'); + end if; + else -------------- decimal adjust following a sub operation + end if; + when LU2_COM => -- COM operation ************************************************** + RESULT := NOT OPER; + when LU2_RL => -- RL operation *************************************************** + ALU_FLAGS.C := OPER(7); + RESULT := OPER(6)&OPER(5)&OPER(4)&OPER(3)&OPER(2)&OPER(1)&OPER(0)&ALU_FLAGS.C; + when LU2_SRL => -- SRL operation ************************************************** + ALU_FLAGS.C := OPER(0); + RESULT := '0'&OPER(7)&OPER(6)&OPER(5)&OPER(4)&OPER(3)&OPER(2)&OPER(1); + when LU2_RRC => -- RRC operation ************************************************** + ALU_FLAGS.C := OPER(0); + RESULT := CIN&OPER(7)&OPER(6)&OPER(5)&OPER(4)&OPER(3)&OPER(2)&OPER(1); + when LU2_RR => -- RR operation *************************************************** + ALU_FLAGS.C := OPER(0); + RESULT := ALU_FLAGS.C&OPER(7)&OPER(6)&OPER(5)&OPER(4)&OPER(3)&OPER(2)&OPER(1); + when LU2_SRA => -- SRA operation ************************************************** + ALU_FLAGS.C := OPER(0); + RESULT := OPER(7)&OPER(7)&OPER(6)&OPER(5)&OPER(4)&OPER(3)&OPER(2)&OPER(1); + when LU2_SWAP => -- SWAP operation ************************************************* + RESULT := OPER(3)&OPER(2)&OPER(1)&OPER(0)&OPER(7)&OPER(6)&OPER(5)&OPER(4); + when LU2_LD => -- LOAD operation ************************************************* + RESULT := OPER; + when others => -- CLR operation ************************************************** + RESULT := x"00"; + end case; + if (OPER(7)/=RESULT(7)) then ALU_FLAGS.V :='1'; else ALU_FLAGS.V :='0'; + end if; + if (RESULT=x"00") then ALU_FLAGS.Z := '1'; else ALU_FLAGS.Z := '0'; + end if; + ALU_FLAGS.S := RESULT(7); + return RESULT; +end LU2; + +-- ADDER16 adds a signed 8-bit offset to a 16-bit address +function ADDER16 + ( ADDR16 : in std_logic_vector(15 downto 0); + OFFSET : in std_logic_vector(7 downto 0)) return std_logic_vector is +begin + if (OFFSET(7)='0') then return ADDR16 + (x"00" & OFFSET); + else return ADDR16 + (x"FF" & OFFSET); + end if; +end ADDER16; + +begin + clock_out: process(CLK) + begin + CLK_OUTN <= not CLK; + CLK_OUT <= CLK; + end process; + -- main process controls debugging and instruction fetching and decoding along + main: process (CLK,RESET,DBG_RX) + -- CPU state machine + type Tcpu_state is ( + CPU_DECOD, + CPU_INDRR, + CPU_MUL, CPU_MUL1, CPU_MUL2, + CPU_XADTOM, + CPU_MTOXAD, CPU_MTOXAD2, + CPU_XRTOM, + CPU_XRRTORR, CPU_XRRTORR2, + CPU_XRRTORR3, CPU_XRRTORR4, + CPU_IMTOIRR, CPU_MTOIRR, -- indirect and direct to indirect register pair addressing mode + CPU_IRRS, CPU_IRRS2, + CPU_XRRD, CPU_XRRD2, CPU_XRRD3, -- indexed rr pair as destination + CPU_XRRS, CPU_XRRS2, CPU_XRRS3, -- indexed rr pair as source + CPU_IND1, CPU_IND2, -- indirect memory access + CPU_ISMD1, -- indirect source to memory destination + CPU_TMA, -- Two memory access instructions (register to/with register) + CPU_OMA, -- One memory access instructions (immediate to/with register) + CPU_OMA2, -- One memory access instructions (immediate to/with register) logic unit related + CPU_DMAB, -- Decrement address bus (for word access) + CPU_LDW, CPU_LDW2, + CPU_LDPTOIM, CPU_LDPTOIM2, + CPU_LDPTOM, CPU_LDPTOM2, + CPU_LDPTOM3, CPU_LDPTOM4, + CPU_LDMTOP, CPU_LDMTOP2, + CPU_BIT, + CPU_IBTJ, CPU_BTJ, + CPU_DJNZ, + CPU_INDJUMP, CPU_INDJUMP2, + CPU_TRAP, CPU_TRAP2, + CPU_INDSTACK, CPU_INDSTACK2, + CPU_STACK, CPU_STACK1, + CPU_STACK2, CPU_STACK3, + CPU_UNSTACK, CPU_UNSTACK2, + CPU_UNSTACK3, + CPU_STORE, -- store results, no change to the flags + CPU_VECTOR, CPU_VECTOR2, + CPU_HALTED, + CPU_RESET, + CPU_ILLEGAL + ); + type Tfetch_state is ( + F_ADDR, -- instruction queue is initializing, reset pointers and empty queue + F_READ -- instruction queue is fetching opcodes + ); + type Tdbg_uartrxstate is ( + DBGST_NOSYNC, -- debug UART receiver is not synchronized to the host + DBGST_WAITSTART, -- debug UART receiver is waiting for a 0x80 char + DBGST_MEASURING, -- debug UART receiver is measuring a possible sync char + DBGST_IDLE, -- debug UART receiver is synchronized and awaiting commands + DBGST_START, -- debug UART received a start bit + DBGST_RECEIVING, -- debug UART is receiving new command/data + DBGST_ERROR -- debug UART receiver is in error state + ); + type Tdbg_uarttxstate is ( + DBGTX_INIT, -- debug UART transmitter is initializing + DBGTX_IDLE, -- debug UART transmitter is waiting new data to transmit + DBGTX_START, -- debug UART transmitter is sending a start bit + DBGTX_TRASMITTING, -- debug UART transmitter is sending data + DBGTX_BREAK, -- debug UART transmitter is preparing to send a break + DBGTX_BREAK2 -- debug UART is waiting for the break complete + ); + type Tdbg_command is ( + DBG_WAIT_CMD, -- debugger is waiting for commands + DBG_SEND_REV, DBG_SEND_REV2, -- debugger is processing a read revision command + DBG_SEND_STATUS, -- debugger is processing a read OCDST command + DBG_WRITE_CTRL, -- debugger is processing a write OCDCTRL command + DBG_SEND_CTRL, -- debugger is processing a read OCDCTRL command + DBG_WRITE_PC, DBG_WRITE_PC2, -- debugger is processing a PC write command + DBG_SEND_PC, DBG_SEND_PC2, -- debugger is processing a PC read command + DBG_WRITE_REG, DBG_READ_REG, -- debugger is processing a read/write to registers + DBG_REG, DBG_REG2, DBG_REG3, -- debugger is processing a read/write to registers + DBG_REG4, DBG_REG5, -- debugger is processing a read/write to registers + DBG_WRITE_PROGMEM, DBG_READ_PROGMEM, -- debugger is processing a read/write to program memory + DBG_PROGMEM, DBG_PROGMEM2, -- debugger is processing a read/write to program memory + DBG_PROGMEM3, DBG_PROGMEM4, -- debugger is processing a read/write to program memory + DBG_PROGMEM5, DBG_PROGMEM6, -- debugger is processing a read/write to program memory + DBG_STEP, -- debugger is processing a step command + DBG_STUFF, -- debugger is processing a stuff command + DBG_EXEC, DBG_EXEC2, DBG_EXEC3 -- debugger is processing a execute command + ); + type Tdbg_uart is record + RX_STATE : Tdbg_uartrxstate; + TX_STATE : Tdbg_uarttxstate; + RX_DONE : std_logic; -- new data is available + TX_EMPTY : std_logic; -- tx buffer is empty + DBG_SYNC : std_logic; -- debugger is synchronized to host + WRT : std_logic; -- write/read command flag + LAST_SMP : std_logic; -- last sample read from DBG_RX pin + SIZE : std_logic_vector(15 downto 0); -- 16-bit size of command + TXSHIFTREG : std_logic_vector(8 downto 0); -- transmitter shift register + RXSHIFTREG : std_logic_vector(8 downto 0); -- receiver shift register + TX_DATA : std_logic_vector(7 downto 0); -- TX buffer + RX_DATA : std_logic_vector(7 downto 0); -- RX buffer + RXCNT : integer range 0 to 15; -- received bit counter + TXCNT : integer range 0 to 15; -- transmitted bit counter + BAUDPRE : integer range 0 to 2; -- baud prescaler + BAUDCNTRX : std_logic_vector(11 downto 0); -- RX baud divider + BAUDCNTTX : std_logic_vector(11 downto 0); -- TX baud divider + BITTIMERX : std_logic_vector(11 downto 0); -- RX bit-time register (1/2 bit-time) + BITTIMETX : std_logic_vector(11 downto 0); -- TX bit-time register + end record; + variable CPU_STATE : TCPU_STATE; -- current CPU state + variable DBG_UART : Tdbg_uart; + variable DBG_CMD : Tdbg_command; + variable CAN_FETCH : std_logic; -- controls whether the instruction queue can actually fetch opcodes + variable LU_INSTRUCTION : std_logic; -- indicates a LU2-related instruction + variable WORD_DATA : std_logic; -- indicates a 16-bit data instruction + variable PC : std_logic_vector(15 downto 0); -- program counter + variable FETCH_ADDR : std_logic_vector(15 downto 0); -- next address to be fetched + variable DEST_ADDR16 : std_logic_vector(15 downto 0); -- temporary 16-bit destination address + variable DEST_ADDR : std_logic_vector(11 downto 0); -- temporary 12-bit destination address + variable TEMP_DATA : std_logic_vector(7 downto 0); -- temporary 8-bit data + variable OLD_IRQ0 : std_logic_vector(7 downto 0); -- previous state of IRQs + variable INTVECT : std_logic_vector(7 downto 0); -- current interrupt vector (lower 8-bits) + variable RESULT : std_logic_vector(7 downto 0); -- temporary 8-bit result + variable TEMP_OP : std_logic_vector(3 downto 0); -- ALU/LU2 operation code + variable ATM_COUNTER : integer range 0 to 3; -- temporary interrupt disable counter (ATM instruction) + variable NUM_BYTES : integer range 0 to 5; -- number of bytes decoded + variable CKDIVIDER : integer range 0 to 2; + type Tinstructionqueue is record + WRPOS : integer range 0 to 7; -- instruction queue write pointer + RDPOS : integer range 0 to 7; -- instruction queue read pointer + CNT : integer range 0 to 7; -- instruction queue available bytes + FETCH_STATE : tfetch_state; + QUEUE : Tinstqueue; + FULL : std_logic; -- indicates whether the queue is full or not + end record; + variable IQUEUE : Tinstructionqueue; + type Tocdcr is record + DBGMODE : std_logic; + BRKEN : std_logic; + DBGACK : std_logic; + BRKLOOP : std_logic; + RST : std_logic; + end record; + variable OCDCR : Tocdcr; + type Tocdflags is record + SINGLESTEP : std_logic; + end record; + variable OCD : Tocdflags; + + begin + if (reset='1') then -- reset operations + IAB <= x"0002"; + MAB <= x"000"; + PWDB <= x"00"; + SP := x"000"; + RP := x"00"; + WR <= '0'; + PGM_WR <= '0'; + STOP <= '0'; + CAN_FETCH := '1'; + FETCH_ADDR := x"0000"; + DBG_UART.RX_STATE := DBGST_NOSYNC; + DBG_UART.TX_STATE := DBGTX_INIT; + OCDCR.DBGMODE := '0'; + OCDCR.BRKEN := '0'; + OCDCR.DBGACK := '0'; + OCDCR.BRKLOOP := '0'; + OCD.SINGLESTEP := '0'; + OCDCR.RST := '0'; + RXSYNC1 <= '1'; + RXSYNC2 <= '1'; + DBG_UART.LAST_SMP := '1'; + IQUEUE.FETCH_STATE := F_ADDR; + IRQE := '0'; + IRQ0 := x"00"; + OLD_IRQ0 := x"00"; + IRQ0ENH := x"00"; + IRQ0ENL := x"00"; + ATM_COUNTER := 0; + CKDIVIDER := 0; + CPU_STATE := CPU_VECTOR; + elsif (rising_edge(clk)) then + if (OLD_IRQ0(0)='0' and INT0='1') then IRQ0(0) := '1'; end if; + if (OLD_IRQ0(1)='0' and INT1='1') then IRQ0(1) := '1'; end if; + if (OLD_IRQ0(2)='0' and INT2='1') then IRQ0(2) := '1'; end if; + if (OLD_IRQ0(3)='0' and INT3='1') then IRQ0(3) := '1'; end if; + if (OLD_IRQ0(4)='0' and INT4='1') then IRQ0(4) := '1'; end if; + if (OLD_IRQ0(5)='0' and INT5='1') then IRQ0(5) := '1'; end if; + if (OLD_IRQ0(6)='0' and INT6='1') then IRQ0(6) := '1'; end if; + OLD_IRQ0 := INT7&INT6&INT5&INT4&INT3&INT2&INT1&INT0; + CKDIVIDER := CKDIVIDER + 1; + if (CKDIVIDER=0) then -- main clock (50MHz) is divided by 3, resulting in a 16.66MHz system clock + WR <= '0'; + PGM_WR <= '0'; + + -- This is the instruction queue FSM + if (CAN_FETCH='1') then + if (IQUEUE.FETCH_STATE=F_ADDR) then + FETCH_ADDR := PC; + IAB <= PC; + IQUEUE.WRPOS := 0; + IQUEUE.RDPOS := 0; + IQUEUE.CNT := 0; + IQUEUE.FETCH_STATE := F_READ; + else + if (IQUEUE.FULL='0') then + IQUEUE.QUEUE(IQUEUE.WRPOS) := IDB; + FETCH_ADDR := FETCH_ADDR + 1; + IAB <= FETCH_ADDR; + IQUEUE.WRPOS := IQUEUE.WRPOS + 1; + IQUEUE.CNT := IQUEUE.CNT + 1; + end if; + end if; + end if; + if (IQUEUE.CNT=7) then IQUEUE.FULL:='1'; else IQUEUE.FULL:='0'; + end if; + -- This is the end of instruction queue FSM + + -- These are the Debugger FSMs + DBG_UART.BAUDPRE := DBG_UART.BAUDPRE+1; + if (DBG_UART.BAUDPRE=0) then + DBG_UART.BAUDCNTRX := DBG_UART.BAUDCNTRX+1; + DBG_UART.BAUDCNTTX := DBG_UART.BAUDCNTTX+1; + end if; + RXSYNC2 <= DBG_RX; + RXSYNC1 <= RXSYNC2; + case DBG_UART.RX_STATE is + when DBGST_NOSYNC => + DBG_UART.DBG_SYNC := '0'; + DBG_UART.RX_DONE := '0'; + DBG_CMD := DBG_WAIT_CMD; + DBG_UART.RX_STATE := DBGST_WAITSTART; + when DBGST_WAITSTART => + if (RXSYNC1='0' and DBG_UART.LAST_SMP='1') then + DBG_UART.RX_STATE := DBGST_MEASURING; + DBG_UART.BAUDCNTRX := x"000"; + end if; + when DBGST_MEASURING => + if (DBG_UART.BAUDCNTRX/=x"FFF") then + if (RXSYNC1='1') then + DBG_UART.DBG_SYNC := '1'; + DBG_UART.RX_STATE := DBGST_IDLE; + DBG_UART.BITTIMERX := "0000"&DBG_UART.BAUDCNTRX(11 downto 4); + DBG_UART.BITTIMETX := "000"&DBG_UART.BAUDCNTRX(11 downto 3); + end if; + else + DBG_UART.RX_STATE := DBGST_NOSYNC; + end if; + when DBGST_IDLE => + DBG_UART.BAUDCNTRX:=x"000"; + DBG_UART.RXCNT:=0; + if (RXSYNC1='0' and DBG_UART.LAST_SMP='1') then -- it's a start bit + DBG_UART.RX_STATE := DBGST_START; + end if; + when DBGST_START => + if (DBG_UART.BAUDCNTRX=DBG_UART.BITTIMERX) then + DBG_UART.BAUDCNTRX:=x"000"; + if (RXSYNC1='0') then + DBG_UART.RX_STATE := DBGST_RECEIVING; + else + DBG_UART.RX_STATE := DBGST_ERROR; + DBG_UART.TX_STATE := DBGTX_BREAK; + end if; + end if; + when DBGST_RECEIVING => + if (DBG_UART.BAUDCNTRX=DBG_UART.BITTIMETX) then + DBG_UART.BAUDCNTRX:=x"000"; + -- one bit time elapsed, sample RX input + DBG_UART.RXSHIFTREG := RXSYNC1 & DBG_UART.RXSHIFTREG(8 downto 1); + DBG_UART.RXCNT := DBG_UART.RXCNT + 1; + if (DBG_UART.RXCNT=9) then + if (RXSYNC1='1') then + -- if the stop bit is 1, rx is completed ok + DBG_UART.RX_DATA := DBG_UART.RXSHIFTREG(7 downto 0); + DBG_UART.RX_DONE := '1'; + DBG_UART.RX_STATE := DBGST_IDLE; + else + -- if the stop bit is 0, it is a break char, reset receiver + DBG_UART.RX_STATE := DBGST_ERROR; + DBG_UART.TX_STATE := DBGTX_BREAK; + end if; + end if; + end if; + when others => + end case; + DBG_UART.LAST_SMP := RXSYNC1; + case DBG_UART.TX_STATE is + when DBGTX_INIT => + DBG_UART.TX_EMPTY := '1'; + DBG_UART.TX_STATE:=DBGTX_IDLE; + when DBGTX_IDLE => -- UART is idle and not transmitting + DBG_TX <= '1'; + if (DBG_UART.TX_EMPTY='0' and DBG_UART.DBG_SYNC='1') then -- there is new data in TX_DATA register + DBG_UART.BAUDCNTTX:=x"000"; + DBG_UART.TX_STATE := DBGTX_START; + end if; + when DBGTX_START => + if (DBG_UART.BAUDCNTTX=DBG_UART.BITTIMETX) then + DBG_UART.BAUDCNTTX:=x"000"; + DBG_UART.TXSHIFTREG := '1'&DBG_UART.TX_DATA; + DBG_UART.TXCNT := 10; + DBG_UART.TX_STATE := DBGTX_TRASMITTING; + DBG_TX <= '0'; + end if; + when DBGTX_TRASMITTING => -- UART is shifting data + if (DBG_UART.BAUDCNTTX=DBG_UART.BITTIMETX) then + DBG_UART.BAUDCNTTX:=x"000"; + DBG_TX <= DBG_UART.TXSHIFTREG(0); + DBG_UART.TXSHIFTREG := '1'&DBG_UART.TXSHIFTREG(8 downto 1); + DBG_UART.TXCNT :=DBG_UART.TXCNT - 1; + if (DBG_UART.TXCNT=0) then + DBG_UART.TX_STATE:=DBGTX_IDLE; + DBG_UART.TX_EMPTY := '1'; + end if; + end if; + when DBGTX_BREAK => + DBG_UART.BAUDCNTTX:=x"000"; + DBG_UART.TX_STATE:=DBGTX_BREAK2; + when DBGTX_BREAK2 => + DBG_TX <= '0'; + DBG_UART.RX_STATE := DBGST_NOSYNC; + if (DBG_UART.BAUDCNTTX=x"FFF") then + DBG_UART.TX_STATE:=DBGTX_INIT; + end if; + end case; + if (RXSYNC1='0') then DBG_TX <='0'; + end if; + case DBG_CMD is + when DBG_WAIT_CMD => + if (DBG_UART.RX_DONE='1') then + case DBG_UART.RX_DATA is + when DBGCMD_READ_REV => DBG_CMD := DBG_SEND_REV; + when DBGCMD_READ_STATUS => DBG_CMD := DBG_SEND_STATUS; + when DBGCMD_WRITE_CTRL => DBG_CMD := DBG_WRITE_CTRL; + when DBGCMD_READ_CTRL => DBG_CMD := DBG_SEND_CTRL; + when DBGCMD_WRITE_PC => DBG_CMD := DBG_WRITE_PC; + when DBGCMD_READ_PC => DBG_CMD := DBG_SEND_PC; + when DBGCMD_WRITE_REG => DBG_CMD := DBG_WRITE_REG; + when DBGCMD_READ_REG => DBG_CMD := DBG_READ_REG; + when DBGCMD_WRITE_PROGRAM=> DBG_CMD := DBG_WRITE_PROGMEM; + when DBGCMD_READ_PROGRAM=> DBG_CMD := DBG_READ_PROGMEM; + when DBGCMD_STEP => DBG_CMD := DBG_STEP; + when DBGCMD_STUFF => DBG_CMD := DBG_STUFF; + when DBGCMD_EXEC => DBG_CMD := DBG_EXEC; + when others => + end case; + DBG_UART.RX_DONE:='0'; + end if; + when DBG_SEND_REV => + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=x"01"; + DBG_UART.TX_EMPTY:='0'; + DBG_CMD := DBG_SEND_REV2; + end if; + when DBG_SEND_REV2 => + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=x"00"; + DBG_UART.TX_EMPTY:='0'; + DBG_CMD := DBG_WAIT_CMD; + end if; + when DBG_SEND_STATUS => + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=OCDCR.DBGMODE&HALT&"000000"; + DBG_UART.TX_EMPTY:='0'; + DBG_CMD := DBG_WAIT_CMD; + end if; + when DBG_WRITE_CTRL => + if (DBG_UART.RX_DONE='1') then + DBG_UART.RX_DONE:='0'; + OCDCR.DBGMODE := DBG_UART.RX_DATA(7); + OCDCR.BRKEN := DBG_UART.RX_DATA(6); + OCDCR.DBGACK := DBG_UART.RX_DATA(5); + OCDCR.BRKLOOP := DBG_UART.RX_DATA(4); + OCDCR.RST := DBG_UART.RX_DATA(0); + if (OCDCR.RST='1') then CPU_STATE:=CPU_RESET; + end if; + DBG_CMD := DBG_WAIT_CMD; + end if; + when DBG_SEND_CTRL => + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=OCDCR.DBGMODE&OCDCR.BRKEN&OCDCR.DBGACK&OCDCR.BRKLOOP&"000"&OCDCR.RST; + DBG_UART.TX_EMPTY:='0'; + DBG_CMD := DBG_WAIT_CMD; + end if; + when DBG_WRITE_PC => + if (DBG_UART.RX_DONE='1' and OCDCR.DBGMODE='1') then + DBG_UART.RX_DONE:='0'; + CAN_FETCH := '0'; + PC(15 downto 8) := DBG_UART.RX_DATA; + DBG_CMD := DBG_WRITE_PC2; + end if; + when DBG_WRITE_PC2 => + if (DBG_UART.RX_DONE='1') then + DBG_UART.RX_DONE:='0'; + PC(7 downto 0) := DBG_UART.RX_DATA; + IQUEUE.FETCH_STATE := F_ADDR; + IQUEUE.CNT := 0; + CAN_FETCH := '1'; + DBG_CMD := DBG_WAIT_CMD; + end if; + when DBG_SEND_PC => + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=PC(15 downto 8); + DBG_UART.TX_EMPTY:='0'; + DBG_CMD := DBG_SEND_PC2; + end if; + when DBG_SEND_PC2 => + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=PC(7 downto 0); + DBG_UART.TX_EMPTY:='0'; + DBG_CMD := DBG_WAIT_CMD; + end if; + when DBG_WRITE_REG => + DBG_UART.WRT := '1'; + DBG_CMD := DBG_REG; + when DBG_READ_REG => + DBG_UART.WRT := '0'; + DBG_CMD := DBG_REG; + when DBG_REG => + if (DBG_UART.RX_DONE='1' and OCDCR.DBGMODE='1') then + CAN_FETCH := '0'; + MAB(11 downto 8) <= DBG_UART.RX_DATA(3 downto 0); + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_REG2; + end if; + when DBG_REG2 => + if (DBG_UART.RX_DONE='1') then + MAB(7 downto 0) <= DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_REG3; + end if; + when DBG_REG3 => + if (DBG_UART.RX_DONE='1') then + DBG_UART.SIZE := x"00"&DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_REG4; + end if; + when DBG_REG4 => + if (OCDCR.DBGMODE='1') then + if (DBG_UART.WRT='1') then + if (DBG_UART.RX_DONE='1') then + CPU_STATE := CPU_OMA; + TEMP_DATA := DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_REG5; + end if; + else + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=DATAREAD(MAB); + DBG_UART.TX_EMPTY:='0'; + DBG_CMD := DBG_REG5; + end if; + end if; + end if; + when DBG_REG5 => + if (CPU_STATE=CPU_DECOD) then + MAB <= MAB + 1; + DBG_UART.SIZE := DBG_UART.SIZE - 1; + if (DBG_UART.SIZE=x"0000") then + DBG_CMD := DBG_WAIT_CMD; + CAN_FETCH := '1'; + else DBG_CMD := DBG_REG4; + end if; + end if; + when DBG_WRITE_PROGMEM => + DBG_UART.WRT := '1'; + DBG_CMD := DBG_PROGMEM; + when DBG_READ_PROGMEM => + DBG_UART.WRT := '0'; + DBG_CMD := DBG_PROGMEM; + when DBG_PROGMEM => + if (DBG_UART.RX_DONE='1') then + CAN_FETCH := '0'; + IAB(15 downto 8) <= DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_PROGMEM2; + end if; + when DBG_PROGMEM2 => + if (DBG_UART.RX_DONE='1') then + IAB(7 downto 0) <= DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_PROGMEM3; + end if; + when DBG_PROGMEM3 => + if (DBG_UART.RX_DONE='1') then + DBG_UART.SIZE(15 downto 8) := DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_PROGMEM4; + end if; + when DBG_PROGMEM4 => + if (DBG_UART.RX_DONE='1') then + DBG_UART.SIZE(7 downto 0) := DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_PROGMEM5; + end if; + when DBG_PROGMEM5 => + if (DBG_UART.WRT='1') then + if (DBG_UART.RX_DONE='1') then + PWDB <= DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + PGM_WR <= '1'; + DBG_CMD := DBG_PROGMEM6; + end if; + else + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=IDB; + DBG_UART.TX_EMPTY:='0'; + DBG_CMD := DBG_PROGMEM6; + end if; + end if; + when DBG_PROGMEM6 => + IAB <= IAB + 1; + DBG_UART.SIZE := DBG_UART.SIZE - 1; + if (DBG_UART.SIZE=x"0000") then + DBG_CMD := DBG_WAIT_CMD; + CAN_FETCH := '1'; + IQUEUE.CNT := 0; + IQUEUE.FETCH_STATE := F_ADDR; + else DBG_CMD := DBG_PROGMEM5; + end if; + when DBG_STEP => + OCD.SINGLESTEP:='1'; + IQUEUE.FETCH_STATE := F_ADDR; + DBG_CMD := DBG_WAIT_CMD; + when DBG_STUFF => + if (DBG_UART.RX_DONE='1' and OCDCR.DBGMODE='1') then + IQUEUE.QUEUE(IQUEUE.RDPOS) := DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + DBG_CMD := DBG_STEP; + end if; + when DBG_EXEC => + if (OCDCR.DBGMODE='1') then + OCD.SINGLESTEP:='1'; + CAN_FETCH:='0'; + IQUEUE.CNT := 0; + IQUEUE.FETCH_STATE := F_ADDR; + end if; + DBG_CMD := DBG_EXEC2; + when DBG_EXEC2 => + if (DBG_UART.RX_DONE='1') then + if (OCDCR.DBGMODE='0') then DBG_CMD := DBG_WAIT_CMD; + else + IQUEUE.QUEUE(IQUEUE.WRPOS) := DBG_UART.RX_DATA; + DBG_UART.RX_DONE:='0'; + IQUEUE.WRPOS := IQUEUE.WRPOS + 1; + IQUEUE.CNT := IQUEUE.CNT + 1; + DBG_CMD := DBG_EXEC3; + end if; + end if; + when DBG_EXEC3 => + if (OCD.SINGLESTEP='1') then DBG_CMD := DBG_EXEC2; else + DBG_CMD := DBG_WAIT_CMD; + CAN_FETCH:='0'; + IQUEUE.FETCH_STATE := F_ADDR; + end if; + when others => + end case; + -- This is the end of the debugger code + + -- This is the main instruction decoder + case CPU_STATE IS + when CPU_DECOD => + TEMP_OP := ALU_LD; -- default ALU operation is load + LU_INSTRUCTION := '0'; -- default is ALU operation (instead of LU2) + WORD_DATA := '0'; -- default is 8-bit operation + INTVECT := x"00"; -- default vector is 0x00 + NUM_BYTES := 0; -- default instruction length is 0 bytes + if (ATM_COUNTER/=3) then ATM_COUNTER := ATM_COUNTER+1; + else -- interrupt processing ***************************************************************************** + if (IRQE='1') then -- if interrupts are enabled + -- first the highest priority interrupts + if ((IRQ0(7)='1') and (IRQ0ENH(7)='1') and IRQ0ENL(7)='1') then + INTVECT:=x"08"; + IRQ0(7):='0'; + elsif ((IRQ0(6)='1') and (IRQ0ENH(6)='1') and IRQ0ENL(6)='1') then + INTVECT:=x"0A"; + IRQ0(6):='0'; + elsif ((IRQ0(5)='1') and (IRQ0ENH(5)='1') and IRQ0ENL(5)='1') then + INTVECT:=x"0C"; + IRQ0(5):='0'; + elsif ((IRQ0(4)='1') and (IRQ0ENH(4)='1') and IRQ0ENL(4)='1') then + INTVECT:=x"0E"; + IRQ0(4):='0'; + elsif ((IRQ0(3)='1') and (IRQ0ENH(3)='1') and IRQ0ENL(3)='1') then + INTVECT:=x"10"; + IRQ0(3):='0'; + elsif ((IRQ0(2)='1') and (IRQ0ENH(2)='1') and IRQ0ENL(2)='1') then + INTVECT:=x"12"; + IRQ0(2):='0'; + elsif ((IRQ0(1)='1') and (IRQ0ENH(1)='1') and IRQ0ENL(1)='1') then + INTVECT:=x"14"; + IRQ0(1):='0'; + elsif ((IRQ0(0)='1') and (IRQ0ENH(0)='1') and IRQ0ENL(0)='1') then + INTVECT:=x"16"; + IRQ0(0):='0'; + -- now priority level 2 interrupts + elsif ((IRQ0(7)='1') and (IRQ0ENH(7)='1') and IRQ0ENL(7)='0') then + INTVECT:=x"08"; + IRQ0(7):='0'; + elsif ((IRQ0(6)='1') and (IRQ0ENH(6)='1') and IRQ0ENL(6)='0') then + INTVECT:=x"0A"; + IRQ0(6):='0'; + elsif ((IRQ0(5)='1') and (IRQ0ENH(5)='1') and IRQ0ENL(5)='0') then + INTVECT:=x"0C"; + IRQ0(5):='0'; + elsif ((IRQ0(4)='1') and (IRQ0ENH(4)='1') and IRQ0ENL(4)='0') then + INTVECT:=x"0E"; + IRQ0(4):='0'; + elsif ((IRQ0(3)='1') and (IRQ0ENH(3)='1') and IRQ0ENL(3)='0') then + INTVECT:=x"10"; + IRQ0(3):='0'; + elsif ((IRQ0(2)='1') and (IRQ0ENH(2)='1') and IRQ0ENL(2)='0') then + INTVECT:=x"12"; + IRQ0(2):='0'; + elsif ((IRQ0(1)='1') and (IRQ0ENH(1)='1') and IRQ0ENL(1)='0') then + INTVECT:=x"14"; + IRQ0(1):='0'; + elsif ((IRQ0(0)='1') and (IRQ0ENH(0)='1') and IRQ0ENL(0)='0') then + INTVECT:=x"16"; + IRQ0(0):='0'; + -- now priority level 1 interrupts + elsif ((IRQ0(7)='1') and (IRQ0ENH(7)='0') and IRQ0ENL(7)='1') then + INTVECT:=x"08"; + IRQ0(7):='0'; + elsif ((IRQ0(6)='1') and (IRQ0ENH(6)='0') and IRQ0ENL(6)='1') then + INTVECT:=x"0A"; + IRQ0(6):='0'; + elsif ((IRQ0(5)='1') and (IRQ0ENH(5)='0') and IRQ0ENL(5)='1') then + INTVECT:=x"0C"; + IRQ0(5):='0'; + elsif ((IRQ0(4)='1') and (IRQ0ENH(4)='0') and IRQ0ENL(4)='1') then + INTVECT:=x"0E"; + IRQ0(4):='0'; + elsif ((IRQ0(3)='1') and (IRQ0ENH(3)='0') and IRQ0ENL(3)='1') then + INTVECT:=x"10"; + IRQ0(3):='0'; + elsif ((IRQ0(2)='1') and (IRQ0ENH(2)='0') and IRQ0ENL(2)='1') then + INTVECT:=x"12"; + IRQ0(2):='0'; + elsif ((IRQ0(1)='1') and (IRQ0ENH(1)='0') and IRQ0ENL(1)='1') then + INTVECT:=x"14"; + IRQ0(1):='0'; + elsif ((IRQ0(0)='1') and (IRQ0ENH(0)='0') and IRQ0ENL(0)='1') then + INTVECT:=x"16"; + IRQ0(0):='0'; + end if; + if (INTVECT/=x"00") then + DEST_ADDR16 := PC; + IAB <= x"00"&INTVECT; -- build the address of the interrupt vector + SP := SP - 1; -- prepare stack pointer by decrementing it + MAB <= SP; -- put SP on MAB + CAN_FETCH := '0'; -- disable instruction fetching + IQUEUE.CNT := 0; -- empty instruction queue + STOP <= '0'; -- disable stop bit + LU_INSTRUCTION := '1'; -- the stacking uses this bit to flag it is an interrupt stacking operation + CPU_STATE := CPU_STACK; + end if; + end if; + end if; + + if (OCDCR.DBGMODE='0' or (OCDCR.DBGMODE='1' and OCD.SINGLESTEP='1')) then + ------------------------------------------------------------------------------------------------------------------------------ + --**************************************************************************************************************************-- + -- 5-byte instructions -- + --**************************************************************************************************************************-- + ------------------------------------------------------------------------------------------------------------------------------ + if (IQUEUE.CNT>=5) then + ---------------------------------------------------------------------------------------------------- 2nd page instructions + if (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"1F") then + ---------------------------------------------------------------------------------------------- CPC ER2,ER1 instruction + if (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"A8") then + MAB <= ADDRESSER12((IQUEUE.QUEUE(IQUEUE.RDPOS+3)(3 downto 0)) & IQUEUE.QUEUE(IQUEUE.RDPOS+4)); + DEST_ADDR := ADDRESSER12((IQUEUE.QUEUE(IQUEUE.RDPOS+2)) & IQUEUE.QUEUE(IQUEUE.RDPOS+3)(7 downto 4)); + TEMP_OP := ALU_CPC; + NUM_BYTES := 5; + CPU_STATE := CPU_TMA; + ---------------------------------------------------------------------------------------------- CPC IMM,ER1 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"A9") then + MAB <= ADDRESSER12((IQUEUE.QUEUE(IQUEUE.RDPOS+3)(3 downto 0)) & IQUEUE.QUEUE(IQUEUE.RDPOS+4)); + TEMP_DATA := IQUEUE.QUEUE(IQUEUE.RDPOS+2); + TEMP_OP := ALU_CPC; + NUM_BYTES := 5; + CPU_STATE := CPU_OMA; + --------------------------------------------------------------------------------------------- LDWX ER1,ER2 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"E8") then + MAB <= ADDRESSER12((IQUEUE.QUEUE(IQUEUE.RDPOS+3)(3 downto 0)) & IQUEUE.QUEUE(IQUEUE.RDPOS+4)); + DEST_ADDR := ADDRESSER12((IQUEUE.QUEUE(IQUEUE.RDPOS+2)) & IQUEUE.QUEUE(IQUEUE.RDPOS+3)(7 downto 4)); + NUM_BYTES := 5; + CPU_STATE := CPU_LDW; + end if; + end if; + end if; + + ------------------------------------------------------------------------------------------------------------------------------ + --**************************************************************************************************************************-- + -- 4-byte instructions -- + --**************************************************************************************************************************-- + ------------------------------------------------------------------------------------------------------------------------------ + if (IQUEUE.CNT>=4) then + if (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"9") then ------------------------------------------------ column 9 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"8" => ------------------------------------------------------------------------- LDX rr1,r2,X instruction + when x"9" => ------------------------------------------------------------------------ LEA rr1,rr2,X instruction + when x"C" => + CPU_STATE := CPU_ILLEGAL; + when x"D" => + CPU_STATE := CPU_ILLEGAL; + when x"F" => + CPU_STATE := CPU_ILLEGAL; + when others => -------------------------------------------------------------- IM,ER1 addressing mode instructions + MAB <= ADDRESSER12((IQUEUE.QUEUE(IQUEUE.RDPOS+2)(3 downto 0)) & IQUEUE.QUEUE(IQUEUE.RDPOS+3)); + TEMP_DATA := IQUEUE.QUEUE(IQUEUE.RDPOS+1); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 4; + CPU_STATE := CPU_OMA; + end case; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"8") then -------------------------------------------- column 8 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"8" => ------------------------------------------------------------------------- LDX r1,rr2,X instruction + when x"9" => -------------------------------------------------------------------------- LEA r1,r2,X instruction + when x"C" => -------------------------------------------------------------------------------- PUSHX instruction + when x"D" => --------------------------------------------------------------------------------- POPX instruction + when x"F" => + CPU_STATE := CPU_ILLEGAL; + when others => ------------------------------------------------------------- ER2,ER1 addressing mode instructions + MAB <= ADDRESSER12((IQUEUE.QUEUE(IQUEUE.RDPOS+1)) & IQUEUE.QUEUE(IQUEUE.RDPOS+2)(7 downto 4)); + DEST_ADDR := ADDRESSER12((IQUEUE.QUEUE(IQUEUE.RDPOS+2)(3 downto 0)) & IQUEUE.QUEUE(IQUEUE.RDPOS+3)); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 4; + CPU_STATE := CPU_TMA; + end case; + ---------------------------------------------------------------------------------------------------- 2nd page instructions + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"1F") then + ------------------------------------------------------------------------------------------------ CPC R2,R1 instruction + TEMP_OP := ALU_CPC; + if (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"A4") then + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+3)); + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+2)); + NUM_BYTES := 4; + CPU_STATE := CPU_TMA; + ----------------------------------------------------------------------------------------------- CPC IR2,R1 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"A5") then + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+3)); + MAB <= RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 4; + CPU_STATE := CPU_ISMD1; + ----------------------------------------------------------------------------------------------- CPC R1,IMM instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"A6") then + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+2)); + TEMP_DATA := IQUEUE.QUEUE(IQUEUE.RDPOS+3); + NUM_BYTES := 4; + CPU_STATE := CPU_OMA; + ---------------------------------------------------------------------------------------------- CPC IR1,IMM instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"A7") then + MAB <= RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + TEMP_DATA := IQUEUE.QUEUE(IQUEUE.RDPOS+3); + NUM_BYTES := 4; + CPU_STATE := CPU_IND1; + end if; + end if; + end if; + + ------------------------------------------------------------------------------------------------------------------------------ + --**************************************************************************************************************************-- + -- 3-byte instructions -- + --**************************************************************************************************************************-- + ------------------------------------------------------------------------------------------------------------------------------ + if (IQUEUE.CNT>=3) then + if (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"D") then -------------------------------------------------- JP cc,DirectAddress + if (CONDITIONCODE(IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4))='1') then + PC := IQUEUE.QUEUE(IQUEUE.RDPOS+1) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + IQUEUE.FETCH_STATE := F_ADDR; + else + NUM_BYTES := 3; + end if; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"9") then -------------------------------------------- column 9 instructions + if (IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4)=x"8") then ----------------------------------------- LDX rr1,r2,X instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + RESULT := IQUEUE.QUEUE(IQUEUE.RDPOS+2); -- RESULT = offset (X) + NUM_BYTES := 3; + CPU_STATE := CPU_XRRD; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4)=x"9") then ------------------------------------ LEA rr1,rr2,X instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + RESULT := IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_XRRTORR; + end if; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"8") then -------------------------------------------- column 8 instructions + if (IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4)=x"8") then ----------------------------------------- LDX r1,rr2,X instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + RESULT := IQUEUE.QUEUE(IQUEUE.RDPOS+2); -- RESULT = offset (X) + NUM_BYTES := 3; + CPU_STATE := CPU_XRRS; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4)=x"9") then -------------------------------------- LEA r1,r2,X instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + RESULT := IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_XRTOM; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4)=x"C") then ---------------------------------------- PUSHX ER2 instruction + SP := SP - 1; + MAB <= ADDRESSER12(IQUEUE.QUEUE(IQUEUE.RDPOS+1)&IQUEUE.QUEUE(IQUEUE.RDPOS+2)(7 downto 4)); + DEST_ADDR := SP; + NUM_BYTES := 3; + CPU_STATE := CPU_TMA; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4)=x"D") then ----------------------------------------- POPX ER2 instruction + MAB <= SP; + DEST_ADDR := ADDRESSER12(IQUEUE.QUEUE(IQUEUE.RDPOS+1)&IQUEUE.QUEUE(IQUEUE.RDPOS+2)(7 downto 4)); + SP := SP + 1; + NUM_BYTES := 3; + CPU_STATE := CPU_TMA; + end if; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"7") then -------------------------------------------- column 7 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"8" => ------------------------------------------------------------------------- LDX IRR2,IR1 instruction + MAB <= RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+1); + DEST_ADDR := RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_IRRS; + when x"9" => ------------------------------------------------------------------------- LDX IR2,IRR1 instruction + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + DEST_ADDR := RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_IMTOIRR; + when x"C" => --------------------------------------------------------------------------- LD r1,r2,X instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + RESULT := IQUEUE.QUEUE(IQUEUE.RDPOS+2); -- RESULT = offset (X) + NUM_BYTES := 3; + CPU_STATE := CPU_XADTOM; + when x"D" => --------------------------------------------------------------------------- LD r2,r1,X instruction + MAB <= RP(3 downto 0) & RP(7 downto 4) & IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4); + DEST_ADDR := RP(3 downto 0) & RP(7 downto 4) & IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0); + RESULT := IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_MTOXAD; + when x"F" => ------------------------------------------------------------------------ BTJ p,b,Ir1,X instruction + when others => ----------------------------------------------------------------------------- IR1,imm instructions + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + TEMP_DATA := IQUEUE.QUEUE(IQUEUE.RDPOS+2); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 3; + CPU_STATE := CPU_IND1; + end case; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"6") then -------------------------------------------- column 6 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"8" => -------------------------------------------------------------------------- LDX IRR2,R1 instruction + MAB <= RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+1); + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+2)); + NUM_BYTES := 3; + LU_INSTRUCTION := '1'; -- in this mode this flag is used to signal the direct register addressing mode + CPU_STATE := CPU_IRRS; + when x"9" => -------------------------------------------------------------------------- LDX R2,IRR1 instruction + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + DEST_ADDR := RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_MTOIRR; + when x"C" => -- illegal, decoded at 1-byte decoder + --CPU_STATE := CPU_ILLEGAL; -- uncommenting this adds +400 LEs to the design!!! + when x"D" => ------------------------------------------------------------------------------ CALL DA instruction + when x"F" => ------------------------------------------------------------------------- BTJ p,b,r1,X instruction + when others => ------------------------------------------------------------------------------ R1,imm instructions + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + TEMP_DATA := IQUEUE.QUEUE(IQUEUE.RDPOS+2); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 3; + CPU_STATE := CPU_OMA; + end case; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"5") then -------------------------------------------- column 5 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"8" => -------------------------------------------------------------------------- LDX Ir1,ER2 instruction + MAB <= IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + NUM_BYTES := 3; + CPU_STATE := CPU_IND2; + when x"9" => -------------------------------------------------------------------------- LDX Ir2,ER1 instruction + MAB <= RP(3 downto 0) & RP(7 downto 4) & IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4); + DEST_ADDR := IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_ISMD1; + when x"C" => ------------------------------------------------------------------------- LDC Ir1,Irr2 instruction + when x"D" => ----------------------------------------------------------------------------- BSWAP R1 instruction + when x"F" => ---------------------------------------------------------------------------- LD R2,IR1 instruction + when others => ------------------------------------------------------------------------------ IR2,R1 instructions + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+2)); + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 3; + CPU_STATE := CPU_ISMD1; + end case; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"4") then -------------------------------------------- column 4 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"8" => --------------------------------------------------------------------------- LDX r1,ER2 instruction + MAB <= IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + NUM_BYTES := 3; + CPU_STATE := CPU_TMA; + when x"9" => --------------------------------------------------------------------------- LDX r2,ER1 instruction + MAB <= RP(3 downto 0) & RP(7 downto 4) & IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4); + DEST_ADDR := IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_TMA; + when x"C" => ------------------------------------------------------------------------------ JP Irr1 instruction + when x"D" => ---------------------------------------------------------------------------- CALL Irr1 instruction + when x"F" => ----------------------------------------------------------------------------- MULT RR1 instruction + when others => ------------------------------------------------------------------------------- R2,R1 instructions + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+2)); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 3; + CPU_STATE := CPU_TMA; + end case; + end if; + ------------------------------------------------------------------------------------------------- BTJ p,b,r1,X instruction + ------------------------------------------------------------------------------------------------ BTJ p,b,Ir1,X instruction + if (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"F6" or IQUEUE.QUEUE(IQUEUE.RDPOS)=x"F7") then + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); -- source address + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4); -- TEMP_OP has the polarity (bit 3) and bit number (bits 2:0) + RESULT := IQUEUE.QUEUE(IQUEUE.RDPOS+2); -- RESULT has the offset X + NUM_BYTES := 3; + if (IQUEUE.QUEUE(IQUEUE.RDPOS)(0)='0') then CPU_STATE := CPU_BTJ; else CPU_STATE := CPU_IBTJ; + end if; + ---------------------------------------------------------------------------------------------------- LD R2,IR1 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"F5") then + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + DEST_ADDR := RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_IND2; + ------------------------------------------------------------------------------------------------------ CALL DA instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"D6") then + DEST_ADDR16 := PC + 3; + PC := IQUEUE.QUEUE(IQUEUE.RDPOS+1) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + SP := SP - 1; + MAB <= SP; + LU_INSTRUCTION := '0'; -- this is used to indicate wether the stacking is due to a CALL or INT, 0 for a CALL + IQUEUE.FETCH_STATE := F_ADDR; + CPU_STATE := CPU_STACK; + ---------------------------------------------------------------------------------------------------- 2nd page instructions + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"1F") then + -------------------------------------------------------------------------------------------------- PUSH IM instruction + if (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"70") then + SP := SP - 1; + MAB <= SP; + TEMP_DATA := IQUEUE.QUEUE(IQUEUE.RDPOS+2); + NUM_BYTES := 3; + CPU_STATE := CPU_OMA; + ------------------------------------------------------------------------------------------------ CPC r1,r2 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"A2") then + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+2)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+2)(7 downto 4)); -- dest address + TEMP_OP := ALU_CPC; + NUM_BYTES := 3; + CPU_STATE := CPU_TMA; + ----------------------------------------------------------------------------------------------- CPC r1,Ir2 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"A3") then + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+2)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+2)(7 downto 4)); -- dest address + TEMP_OP := ALU_CPC; + NUM_BYTES := 3; + CPU_STATE := CPU_ISMD1; + --------------------------------------------------------------------------------------------------- SRL R1 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"C0") then + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+2)); + TEMP_OP := LU2_SRL; + NUM_BYTES := 3; + CPU_STATE := CPU_OMA2; + -------------------------------------------------------------------------------------------------- SRL IR1 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS+1)=x"C1") then + MAB <= RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+2); + TEMP_OP := LU2_SRL; + NUM_BYTES := 3; + CPU_STATE := CPU_IND1; + LU_INSTRUCTION := '1'; + end if; + end if; + end if; + + ------------------------------------------------------------------------------------------------------------------------------ + --**************************************************************************************************************************-- + -- 2-byte instructions -- + --**************************************************************************************************************************-- + ------------------------------------------------------------------------------------------------------------------------------ + if (IQUEUE.CNT>=2) then + if (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"C") then ------------------------------------------------- LD r,IMM instruction + MAB <= RP(3 downto 0) & RP(7 downto 4) & IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + DATAWRITE(RP(3 downto 0) & RP(7 downto 4) & IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4),IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + NUM_BYTES := 2; + CPU_STATE := CPU_STORE; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"B") then -------------------------------------------- JR cc,RelativeAddress + PC := PC + 2; + if (CONDITIONCODE(IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4))='1') then + PC := ADDER16(PC,IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + IQUEUE.FETCH_STATE := F_ADDR; + else + IQUEUE.RDPOS := IQUEUE.RDPOS + 2; + IQUEUE.CNT := IQUEUE.CNT - 2; + end if; + CPU_STATE := CPU_DECOD; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"A") then ------------------------------------------- DJNZ r,RelativeAddress + MAB <= RP(3 downto 0) & RP(7 downto 4) & IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + PC := PC + 2; + DEST_ADDR16 := ADDER16(PC,IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + IQUEUE.RDPOS := IQUEUE.RDPOS + 2; + IQUEUE.CNT := IQUEUE.CNT - 2; + IQUEUE.FETCH_STATE := F_ADDR; + CPU_STATE := CPU_DJNZ; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"3") then -------------------------------------------- column 3 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"8" => ------------------------------------------------------------------------ LDEI Ir1,Irr2 instruction + when x"9" => ------------------------------------------------------------------------ LDEI Ir2,Irr1 instruction + when x"C" => ------------------------------------------------------------------------ LDCI Ir1,Irr2 instruction + RESULT(3 downto 0) := IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0); + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); + NUM_BYTES := 2; + CAN_FETCH := '0'; + LU_INSTRUCTION := '0'; -- indicates it is a read from program memory + WORD_DATA := '1'; -- indicates it is a LDCI instruction + CPU_STATE := CPU_LDPTOIM; + when x"D" => ------------------------------------------------------------------------ LDCI Ir2,Irr1 instruction + RESULT(3 downto 0) := IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0); + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); + NUM_BYTES := 2; + CAN_FETCH := '0'; + LU_INSTRUCTION := '1'; -- indicates it is a write onto program memory + WORD_DATA := '1'; -- indicates it is a LDCI instruction + CPU_STATE := CPU_LDPTOIM; + when x"F" => ---------------------------------------------------------------------------- LD Ir1,r2 instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); + NUM_BYTES := 2; + CPU_STATE := CPU_IND2; + when others => --------------------------------------------------------------------------- Ir2 to r1 instructions + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 2; + CPU_STATE := CPU_ISMD1; + end case; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"2") then -------------------------------------------- column 2 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"8" => -------------------------------------------------------------------------- LDE r1,Irr2 instruction + when x"9" => -------------------------------------------------------------------------- LDE r2,Irr1 instruction + when x"C" => -------------------------------------------------------------------------- LDC r1,Irr2 instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); + NUM_BYTES := 2; + CAN_FETCH := '0'; + LU_INSTRUCTION := '0'; + CPU_STATE := CPU_LDPTOM; + when x"D" => -------------------------------------------------------------------------- LDC r2,Irr1 instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); + NUM_BYTES := 2; + CAN_FETCH := '0'; + LU_INSTRUCTION := '1'; + CPU_STATE := CPU_LDPTOM; + when x"E" => --------------------------------------------------------------------------- BIT p,b,r1 instruction + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4); -- TEMP_OP has the polarity (bit 3) and bit number (bits 2:0) + RESULT := IQUEUE.QUEUE(IQUEUE.RDPOS+2); -- RESULT has the offset X + NUM_BYTES := 2; + CPU_STATE := CPU_BIT; + when x"F" => ----------------------------------------------------------------------------- TRAP imm instruction + MAB <= "000" & IQUEUE.QUEUE(IQUEUE.RDPOS+1) & '0'; + DEST_ADDR16 := PC + 2; + NUM_BYTES := 2; + CPU_STATE := CPU_TRAP; + when others => ---------------------------------------------------------------------------- r2 to r1 instructions + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0)); -- source address + DEST_ADDR := ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); -- dest address + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 2; + CPU_STATE := CPU_TMA; + end case; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"1") then -------------------------------------------- column 1 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"0" => ------------------------------------------------------------------------------ SRP IMM instruction + RP := IQUEUE.QUEUE(IQUEUE.RDPOS+1); + NUM_BYTES := 2; + CPU_STATE := CPU_DECOD; + when x"5" => ------------------------------------------------------------------------------ POP IR1 instruction + MAB <= SP; + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + SP := SP + 1; + NUM_BYTES := 2; + CPU_STATE := CPU_IND2; + when x"7" => ----------------------------------------------------------------------------- PUSH IR1 instruction + SP := SP - 1; + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + DEST_ADDR := SP; + NUM_BYTES := 2; + CPU_STATE := CPU_ISMD1; + when x"8" => --------------------------------------------------------------------------------- DECW instruction + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + TEMP_OP := LU2_DEC; + WORD_DATA := '1'; + NUM_BYTES := 2; + CPU_STATE := CPU_INDRR; + when x"A" => --------------------------------------------------------------------------------- INCW instruction + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + TEMP_OP := LU2_INC; + WORD_DATA := '1'; + NUM_BYTES := 2; + CPU_STATE := CPU_INDRR; + when others => --------------------------------------------------------------------------------- IR1 instructions + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 2; + CPU_STATE := CPU_IND1; + LU_INSTRUCTION := '1'; + end case; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"0") then -------------------------------------------- column 0 instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"0" => ---------------------------------------------------------------------------------- BRK instruction + -- do nothing, BRK decoding is done in 1-byte instruction section + when x"5" => ---------------------------------------------------------------------------------- POP instruction + MAB <= SP; + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + SP := SP + 1; + NUM_BYTES := 2; + CPU_STATE := CPU_TMA; + when x"7" => --------------------------------------------------------------------------------- PUSH instruction + SP := SP - 1; + MAB <= RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+1); + DEST_ADDR := SP; + NUM_BYTES := 2; + CPU_STATE := CPU_TMA; + when x"8" => --------------------------------------------------------------------------------- DECW instruction + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + MAB <= DEST_ADDR+1; + TEMP_OP := LU2_DEC; + WORD_DATA := '1'; + NUM_BYTES := 2; + CPU_STATE := CPU_OMA2; + when x"A" => --------------------------------------------------------------------------------- INCW instruction + DEST_ADDR := ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + MAB <= DEST_ADDR+1; + TEMP_OP := LU2_INC; + WORD_DATA := '1'; + NUM_BYTES := 2; + CPU_STATE := CPU_OMA2; + when others => ---------------------------------------------------------------------------------- R1 instructions + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + TEMP_OP := IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + NUM_BYTES := 2; + CPU_STATE := CPU_OMA2; + end case; + end if; + ---------------------------------------------------------------------------------------------------------- MUL instruction + if (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"F4") then + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + NUM_BYTES := 2; + CPU_STATE := CPU_MUL; + ---------------------------------------------------------------------------------------------------- CALL IRR1 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"D4") then + DEST_ADDR16 := PC + 2; + MAB <= RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+1); + IQUEUE.FETCH_STATE := F_ADDR; + CPU_STATE := CPU_INDSTACK; + ------------------------------------------------------------------------------------------------------ JP IRR1 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"C4") then + MAB <= RP(3 downto 0) & IQUEUE.QUEUE(IQUEUE.RDPOS+1); + IQUEUE.FETCH_STATE := F_ADDR; + CPU_STATE := CPU_INDJUMP; + ----------------------------------------------------------------------------------------------------- BSWAP R1 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"D5") then + MAB <= ADDRESSER8(IQUEUE.QUEUE(IQUEUE.RDPOS+1)); + TEMP_OP := ALU_BSWAP; + NUM_BYTES := 2; + CPU_STATE := CPU_OMA; + ------------------------------------------------------------------------------------------------- LDC Ir1,Irr2 instruction + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"C5") then + RESULT(3 downto 0) := IQUEUE.QUEUE(IQUEUE.RDPOS+1)(3 downto 0); + MAB <= ADDRESSER4(IQUEUE.QUEUE(IQUEUE.RDPOS+1)(7 downto 4)); + NUM_BYTES := 2; + CAN_FETCH := '0'; + LU_INSTRUCTION := '0'; + CPU_STATE := CPU_LDPTOIM; + end if; + end if; + + ------------------------------------------------------------------------------------------------------------------------------ + --**************************************************************************************************************************-- + -- 1-byte instructions -- + --**************************************************************************************************************************-- + ------------------------------------------------------------------------------------------------------------------------------ + if (IQUEUE.CNT>=1) then + if (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"F") then ------------------------------------------------ column F instructions + case IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4) is + when x"0" => ---------------------------------------------------------------------------------- NOP instruction + NUM_BYTES := 1; + when x"1" => ------------------------------------------------------------------------------ page 2 instructions + when x"2" => + ATM_COUNTER := 0; + NUM_BYTES := 1; + when x"3" => + CPU_STATE := CPU_ILLEGAL; + when x"4" => + CPU_STATE := CPU_ILLEGAL; + when x"5" => ---------------------------------------------------------------------------------- WDT instruction + NUM_BYTES := 1; + when x"6" => --------------------------------------------------------------------------------- STOP instruction + NUM_BYTES := 1; + CPU_STATE := CPU_HALTED; + STOP <= '1'; + when x"7" => --------------------------------------------------------------------------------- HALT instruction + NUM_BYTES := 1; + CPU_STATE := CPU_HALTED; + when x"8" => ----------------------------------------------------------------------------------- DI instruction + IRQE := '0'; + NUM_BYTES := 1; + when x"9" => ----------------------------------------------------------------------------------- EI instruction + IRQE := '1'; + NUM_BYTES := 1; + when x"A" => ---------------------------------------------------------------------------------- RET instruction + NUM_BYTES := 1; + MAB <= SP; + CPU_STATE := CPU_UNSTACK; + when x"B" => --------------------------------------------------------------------------------- IRET instruction + NUM_BYTES := 1; + IRQE := '1'; + MAB <= SP; + CPU_STATE := CPU_UNSTACK3; + when x"C" => ---------------------------------------------------------------------------------- RCF instruction + CPU_FLAGS.C := '0'; + NUM_BYTES := 1; + when x"D" => ---------------------------------------------------------------------------------- SCF instruction + CPU_FLAGS.C := '1'; + NUM_BYTES := 1; + when x"E" => ---------------------------------------------------------------------------------- CCF instruction + CPU_FLAGS.C := not CPU_FLAGS.C; + NUM_BYTES := 1; + when others => ---------------------------------------------------------------------------------- R1 instructions + CPU_STATE := CPU_ILLEGAL; + end case; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)(3 downto 0)=x"E") then ------------------------------------------------ INC r instruction + MAB <= RP(3 downto 0) & RP(7 downto 4) & IQUEUE.QUEUE(IQUEUE.RDPOS)(7 downto 4); + TEMP_OP := LU2_INC; + NUM_BYTES := 1; + CPU_STATE := CPU_OMA2; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"00") then -------------------------------------------------------------- BRK instruction + if (OCDCR.BRKEN='1') then -- the BRK instruction is enabled + if (OCDCR.DBGACK='1') then + if (DBG_UART.TX_EMPTY='1') then + DBG_UART.TX_DATA:=x"FF"; + DBG_UART.TX_EMPTY:='0'; + end if; + end if; + if (OCDCR.BRKLOOP='0') then -- if loop on BRK is disabled + OCDCR.DBGMODE := '1'; -- set DBGMODE halting CPU + end if; + else + NUM_BYTES := 1; -- remove the instruction from queue (execute as a NOP) + end if; + elsif (IQUEUE.QUEUE(IQUEUE.RDPOS)=x"C9" or IQUEUE.QUEUE(IQUEUE.RDPOS)=x"D9" or IQUEUE.QUEUE(IQUEUE.RDPOS)=x"F9" or + IQUEUE.QUEUE(IQUEUE.RDPOS)=x"F8" or IQUEUE.QUEUE(IQUEUE.RDPOS)=x"C6") then --------------------------- illegal opcode + CPU_STATE:= CPU_ILLEGAL; + NUM_BYTES := 1; + end if; + end if; + end if; + PC := PC + NUM_BYTES; + IQUEUE.RDPOS := IQUEUE.RDPOS + NUM_BYTES; + IQUEUE.CNT := IQUEUE.CNT - NUM_BYTES; + if (OCD.SINGLESTEP='1') then + if (NUM_BYTES/=0 or IQUEUE.FETCH_STATE=F_ADDR) then OCD.SINGLESTEP:='0'; + end if; + end if; + when CPU_MUL => -- MUL *********************************************************************************************************** + TEMP_DATA := DATAREAD(MAB); -- read first operand + MAB <= MAB + 1; -- go to the next operand + CPU_STATE := CPU_MUL1; + when CPU_MUL1 => + DEST_ADDR16 := TEMP_DATA * DATAREAD(MAB); -- multiply previous operand by the second operand and store temporarily + DATAWRITE(MAB,DEST_ADDR16(7 downto 0)); -- write the lower byte in current memory address + WR <= '1'; + CPU_STATE := CPU_MUL2; + when CPU_MUL2 => + MAB <= MAB - 1; -- decrement memory address (point to the first operand) + DATAWRITE(MAB,DEST_ADDR16(15 downto 8)); -- write the higher byte + CPU_STATE := CPU_STORE; -- complete store operation + when CPU_XRRTORR => -- LEA ******************************************************************************************************* + TEMP_DATA := DATAREAD(MAB); -- read the operand and store it + MAB <= MAB + 1; -- go to the next memory address + CPU_STATE := CPU_XRRTORR2; + when CPU_XRRTORR2 => + -- read the next operand and perform a 16 bit add with the offset previously in result + DEST_ADDR16 := ADDER16(TEMP_DATA & DATAREAD(MAB),RESULT); + MAB <= DEST_ADDR; -- point to the destination address + DATAWRITE(MAB,DEST_ADDR16(15 downto 8)); -- store the higher byte of the 16-bit result + CPU_STATE := CPU_XRRTORR3; + when CPU_XRRTORR3 => + WR <= '1'; + CPU_STATE := CPU_XRRTORR4; + when CPU_XRRTORR4 => + MAB <= MAB + 1; -- go to the next memory address + DATAWRITE(MAB,DEST_ADDR16(7 downto 0)); -- store the lower byte of the 16-bit result + CPU_STATE := CPU_STORE; -- complete store operation + when CPU_MTOXAD => -- MEMORY TO INDEXED 8-BIT ADDRESS *************************************************************************** + TEMP_DATA := DATAREAD(MAB); + MAB <= DEST_ADDR; + CPU_STATE := CPU_MTOXAD2; + when CPU_MTOXAD2 => + MAB <= RP(3 downto 0)&(DATAREAD(MAB) + RESULT); + DATAWRITE(MAB,TEMP_DATA); + CPU_STATE := CPU_STORE; + when CPU_XADTOM => -- INDEXED 8-BIT ADDRESS TO MEMORY *************************************************************************** + MAB <= RP(3 downto 0)&(DATAREAD(MAB) + RESULT); + CPU_STATE := CPU_TMA; + when CPU_XRTOM => -- LEA ******************************************************************************************************* + TEMP_DATA := DATAREAD(MAB)+RESULT; + MAB <= DEST_ADDR; + DATAWRITE(MAB,TEMP_DATA); + CPU_STATE := CPU_STORE; + when CPU_IMTOIRR => -- INDIRECT MEMORY TO INDIRECT ADDRESS READ FROM REGISTER PAIR *********************************************** + MAB <= RP(3 downto 0) & DATAREAD(MAB); -- source address is read from indirect register + CPU_STATE := CPU_MTOIRR; + when CPU_MTOIRR => -- MEMORY TO INDIRECT ADDRESS READ FROM REGISTER PAIR ******************************************************** + TEMP_DATA := DATAREAD(MAB); -- reads data from the source (MAB) address and store it into TEMP_DATA + MAB <= DEST_ADDR; -- MAB points to the indirect destination register pair + RESULT := x"00"; + CPU_STATE := CPU_XRRD2; -- proceed as X indexed register pair destination + when CPU_IRRS => -- RR PAIR AS INDIRECT SOURCE ADDRESS ************************************************************************ + DEST_ADDR16(15 downto 8) := DATAREAD(MAB); + MAB <= MAB + 1; + CPU_STATE := CPU_IRRS2; + when CPU_IRRS2 => + DEST_ADDR16(7 downto 0) := DATAREAD(MAB); + MAB <= DEST_ADDR16(11 downto 0); + if (LU_INSTRUCTION='1') then + CPU_STATE:= CPU_TMA; -- if it is direct addressing mode, go to TMA + else + CPU_STATE := CPU_IND2; -- if it is indirect addressing mode, go to IND2 + end if; + when CPU_XRRD => + TEMP_DATA := DATAREAD(MAB); -- reads data from the source (MAB) address and store it into TEMP_DATA + MAB <= DEST_ADDR; + CPU_STATE := CPU_XRRD2; + when CPU_XRRD2 => + DEST_ADDR16(15 downto 8) := DATAREAD(MAB); + MAB <= MAB + 1; + CPU_STATE := CPU_XRRD3; + when CPU_XRRD3 => + DEST_ADDR16(7 downto 0) := DATAREAD(MAB); + MAB <= ADDER16(DEST_ADDR16,RESULT)(11 downto 0); + DATAWRITE(MAB,TEMP_DATA); + CPU_STATE := CPU_STORE; + when CPU_XRRS => + DEST_ADDR16(15 downto 8) := DATAREAD(MAB); + MAB <= MAB + 1; + CPU_STATE := CPU_XRRS2; + when CPU_XRRS2 => + DEST_ADDR16(7 downto 0) := DATAREAD(MAB); + MAB <= ADDER16(DEST_ADDR16,RESULT)(11 downto 0); + CPU_STATE := CPU_XRRS3; + when CPU_XRRS3 => + TEMP_DATA := DATAREAD(MAB); + MAB <= DEST_ADDR; + DATAWRITE(MAB,TEMP_DATA); + CPU_STATE := CPU_STORE; + when CPU_INDRR => -- INDIRECT DESTINATION ADDRESS FOR WORD INSTRUCTIONS (DECW AND INCW) **************************************** + MAB <= (RP(3 downto 0) & DATAREAD(MAB))+1; -- the destination address is given by indirect address + CPU_STATE := CPU_OMA2; + when CPU_ISMD1 => -- INDIRECT SOURCE ADDRESS *********************************************************************************** + MAB <= RP(3 downto 0) & DATAREAD(MAB); -- source address is read from indirect register + CPU_STATE := CPU_TMA; + when CPU_IND2 => -- READS REGISTER AND PERFORM OPERATION ON AN INDIRECT DESTINATION ******************************************* + TEMP_DATA := DATAREAD(MAB); -- reads data from the source (MAB) address and store it into TEMP_DATA + MAB <= DEST_ADDR; -- place the address of the indirect register on MAB + CPU_STATE := CPU_IND1; -- proceed to the indirect + when CPU_IND1 => -- INDIRECT DESTINATION ADDRESS ****************************************************************************** + MAB <= RP(3 downto 0) & DATAREAD(MAB); -- the destination address is given by indirect address + if (LU_INSTRUCTION='0') then CPU_STATE := CPU_OMA; -- proceed with one memory access + else CPU_STATE := CPU_OMA2; -- proceed with one memory access (logic unit related) + end if; + when CPU_TMA => -- TWO MEMORY ACCESS, READS SOURCE OPERAND FROM MEMORY ******************************************************* + TEMP_DATA := DATAREAD(MAB); -- reads data from the source (MAB) address and store it into TEMP_DATA + MAB <= DEST_ADDR; -- place the destination address (DEST_ADDR) on the memory address bus (MAB) + CPU_STATE := CPU_OMA; -- proceed to the last stage + when CPU_OMA => -- ONE MEMORY ACCESS stage *********************************************************************************** + -- this stage performs the TEMP_OP operation between TEMP_DATA and data read from current (MAB) address (destination) + RESULT := ALU(TEMP_OP,DATAREAD(MAB),TEMP_DATA,CPU_FLAGS.C); + if (TEMP_OP