Микрокод и PLA¶
PLA-таблицы¶
| Файл | Назначение | Формат |
|---|---|---|
CU_PLA.txt |
Основное управляющее устройство | 16-битный вход → 36-битный выход |
MICROCODE_PLA.txt |
Упрощённая таблица микрокода | 16-битный вход → 16-битный выход |
LENGHT_PLA.txt |
Длины инструкций | 5-битный вход → 4-битный выход |
ALU_PLA.txt |
Операции АЛУ/BSU | 8-битный вход → 4-битный выход |
Формат входа¶
Вход у CU_PLA и MICROCODE_PLA формируется из двух полей:
- OP - opcode (8 бит).
- SF - суффикс / режим (8 бит).
Выход CU_PLA¶
CU_PLA выдаёт 36-битный управляющий вектор. Пример:
Здесь вход - 03h 00h, выход - 36-битный вектор микрокоманд.
MICROCODE_PLA¶
Упрощённая версия с 16-битным выходом. Формат полей:
- IT - Instruction Type (5 бит, формат инструкции).
- FM - Flag Mask (8 бит, маска флагов).
- MD - Mode (3 бита, режим доступа).
Таблица микрокода¶
Полная таблица MICROCODE_PLA для всех инструкций:
| Имя | OP SF | IT | FM | MD |
|---|---|---|---|---|
| NOP | 00h |
00h |
00h |
00h |
| HALT | 01h |
00h |
00h |
00h |
| WAIT | 02h |
00h |
00h |
00h |
| ADD | 03h 00h |
07h |
1Dh |
04h |
| ADD.b | 03h 01h |
08h |
1Dh |
00h |
| ADD.w | 03h 02h |
09h |
1Dh |
01h |
| ADD.dw | 03h 03h |
0Ah |
1Dh |
02h |
| ADC | 04h 00h |
07h |
1Dh |
04h |
| SUB | 05h 00h |
07h |
1Eh |
04h |
| SBB | 06h 00h |
07h |
1Eh |
04h |
| MUL | 07h 00h |
07h |
1Ch |
04h |
| IMUL | 08h 00h |
07h |
1Ch |
04h |
| DIV | 09h 00h |
07h |
1Ch |
04h |
| IDIV | 0Ah 00h |
07h |
1Ch |
04h |
| NOT | 0Bh |
03h |
1Ch |
04h |
| INC | 0Ch |
03h |
1Dh |
04h |
| DEC | 0Dh |
03h |
1Eh |
04h |
| PUSH | 0Eh |
02h |
00h |
04h |
| POP | 0Fh |
01h |
00h |
04h |
| CALL | 10h |
06h |
00h |
04h |
| CALLR | 11h |
02h |
00h |
04h |
| CLABS | 12h |
06h |
00h |
04h |
| RET | 13h |
00h |
00h |
04h |
| LSL | 14h |
0Eh |
1Ch |
04h |
| LSR | 15h |
0Eh |
1Ch |
04h |
| ASR | 16h |
0Eh |
1Ch |
04h |
| ROL | 17h |
0Eh |
1Ch |
04h |
| ROR | 18h |
0Eh |
1Ch |
04h |
| AND | 19h 00h |
07h |
1Ch |
04h |
| OR | 1Ah 00h |
07h |
1Ch |
04h |
| XOR | 1Bh 00h |
07h |
1Ch |
04h |
| CMP | 1Ch 00h |
07h |
FEh |
04h |
| ICMP | 1Dh 00h |
07h |
FEh |
04h |
| JMP | 1Eh |
0Bh |
00h |
00h |
| JMPR | 1Fh |
0Ch |
00h |
04h |
| JMA | 20h |
0Bh |
00h |
00h |
| COPY | 21h 00h |
0Fh |
00h |
04h |
| LDI.b | 21h 01h |
10h |
00h |
00h |
| LDI.w | 21h 02h |
11h |
00h |
01h |
| LDI.dw | 21h 03h |
12h |
00h |
02h |
| INT | 25h |
04h |
00h |
00h |
| IRET | 26h |
00h |
00h |
00h |
| CLI | 27h |
00h |
00h |
00h |
| STI | 28h |
00h |
00h |
00h |
| REM | 29h 00h |
07h |
1Ch |
04h |
| IREM | 2Ah 00h |
07h |
1Ch |
04h |
Длины инструкций¶
Таблица LENGHT_PLA приведена в разделе Форматы инструкций.
ALU_PLA¶
Таблица операций АЛУ/BSU описана в разделе ALU и BSU.