3. Синтез автоматів з програмованою логікою
3.1 Синтез автомата з примусовою адресацією команд
ПЗУ – зберігаємий набір команд, кожна з котрих несе інформацію про набір вихідного сигналу, про поточний такт та адресу мікрокоманд, котрі повинні бути виконані у наступному такті.
| |
Рис. 3.1 - Формат МК
| |
Рис. 3.2 - Структурна схема АПЛ з примусовою адресацією мікрокоманд
Аналіз рисунка 3.2:
- СФВС - дозволяє декодувати інформацію, що утримується в полі Y.
- САХ - являє собою мультиплексор на інформаційні входи якого подаються вхідні сигнали, а на адресні, код з поля Nх при цьому на А0 завжди подається сигнал "0", у такий спосіб формується сигнал Z, що забезпечує передачу на адресний вхід пам'яті А або А0, або А1.
Для того щоб сформувати вміст ROM по граф-схемі мікрокоманд необхідно:
- відзначити номера мікрокоманд;
- закодувати вихідні сигнали і сформувати мікрокоманди по заданому форматі;
- сформувати таблицю вмісту ROM.
Рис. 3.3 – Граф-схема автомата з примусовою адресацією команд
Для скорочення довжини слова ROM будемо використовувати принцип максимального кодування вихідних сигналів.
Табл. 3.1 – Максимальне кодування вихідних сигналів
| №п/п | Макрокоманда | Мікрооперації | Код |
| 1 | Y0 | - | 000000 |
| 2 | Y1 | y1 y2 y4 y7 | 000001 |
| 3 | Y2 | y3 y8 | 000010 |
| 4 | Y3 | y14 y17 y21 y40 | 000011 |
| 5 | Y4 | y11 y16 y35 | 000100 |
| 6 | Y5 | y10 y17 y27 y41 | 000101 |
| 7 | Y6 | y11 y25 y37 | 000110 |
| 8 | Y7 | y10 y20 y27 y41 | 000111 |
| 9 | Y8 | y13 y16 y35 | 001000 |
| 10 | Y9 | y15 y19 y34 | 001001 |
| 11 | Y10 | y10 y30 y32 y41 | 001010 |
| 12 | Y11 | y12 y18 y20 y41 | 001011 |
| 13 | Y12 | y11 y28 y36 | 001100 |
| 14 | Y13 | y10 y27 y29 y41 | 001101 |
| 15 | Y14 | y14 y17 y21 y41 | 001110 |
| 16 | Y15 | y15 y19 y34 | 001111 |
| 17 | Y16 | y14 y18 y32 y41 | 010000 |
| 18 | Y17 | y13 y31 y36 | 010001 |
| 19 | Y18 | y12 y30 y32 y41 | 010010 |
| 20 | Y19 | y13 y28 y39 | 010011 |
| 21 | Y20 | y12 y15 y17 y21 y22 y34 y40 | 010100 |
| 22 | Y21 | y12 y30 y32 y41 | 010101 |
| 23 | Y22 | y12 y23 y30 y41 | 010110 |
| 24 | Y23 | y15 y19 y37 | 010111 |
| 25 | Y24 | y12 y18 y32 y41 | 011000 |
| 26 | Y25 | y14 y20 y24 y40 | 011001 |
| 27 | Y26 | y14 y17 y24 y41 | 011010 |
| 28 | Y27 | y15 y31 y38 | 011011 |
| 29 | Y28 | y9 y14 y18 y19 y20 y35 y41 | 011100 |
| 30 | Y29 | y14 y23 y33 y41 | 011101 |
| 31 | Y30 | y15 y31 y34 | 011110 |
| 32 | Y31 | y14 y24 y32 y40 | 011111 |
| 33 | Y32 | y11 y31 y35 | 100000 |
| 34 | Y33 | y10 y26 y30 y40 y0 | 100001 |
| 35 | Y34 | y10 y26 y30 y41 y0 | 100010 |
| 36 | Y35 | y11 y25 y34 | 100011 |
Табл. 3.2 – Структура переходів для автомата з примусовою адресацією команд
| Адресаа1а2а3а4а5а6 | Y0..5 | X6..8 | FA09..14 | FA115..20 | Перехід |
| 000000 | 000001 | 000 | 000001 | * | b0 → b1 |
| 000001 | 000010 | 000 | 000010 | * | b1 → b2 |
| 000010 | 000011 | 011 | 000011 | 001011 | b2 → |
| 000011 | 000000 | 100 | 000100 | 001000 | b3 → |
| 000100 | 000100 | 000 | 000101 | * | b4 → b5 |
| 000101 | 000101 | 000 | 000110 | * | b5 → b6 |
| 000110 | 000110 | 000 | 000111 | * | b6 → b7 |
| 000111 | 000111 | 000 | 001110 | * | b7 → b14 |
| 001000 | 001000 | 000 | 001001 | * | b8 → b9 |
| 001001 | 001001 | 000 | 001010 | * | b9 → b10 |
| 001010 | 001010 | 000 | 001110 | * | b10 → b14 |
| 001011 | 001011 | 000 | 001100 | * | b11 → b12 |
| 001100 | 001100 | 000 | 001101 | * | b12 → b13 |
| 001101 | 001101 | 000 | 001110 | * | b13 → b14 |
| 001110 | 001110 | 011 | 001111 | 011000 | b14 → |
| 001111 | 000000 | 100 | 010000 | 010101 | b15 → |
| 010000 | 001111 | 000 | 010001 | * | b16 → b17 |
| 010001 | 010000 | 000 | 010010 | * | b17 → b18 |
| 010010 | 010001 | 000 | 010011 | * | b18 → b19 |
| 010011 | 010010 | 000 | 010100 | * | b19 → b20 |
| 010100 | 010011 | 000 | 011010 | * | b20 → b26 |
| 010101 | 010100 | 000 | 010110 | * | b21 → b22 |
| 010110 | 010101 | 000 | 010111 | * | b22 → b23 |
| 010111 | 010110 | 000 | 011010 | * | b23 → b26 |
| 011000 | 010111 | 000 | 011001 | * | b24 → b25 |
| 011001 | 011000 | 000 | 011010 | * | b25 → b26 |
| 011010 | 011001 | 011 | 011011 | 100000 | b26 → |
| 011011 | 000000 | 100 | 011100 | 011110 | b27 → |
| 011100 | 011010 | 000 | 011101 | * | b28 → b29 |
| 011101 | 011011 | 010 | 100010 | 100110 | b29 → |
| 011110 | 011100 | 000 | 011111 | * | b30 → b31 |
| 011111 | 011101 | 010 | 100010 | 100110 | b31 → |
| 100000 | 011110 | 000 | 100001 | * | b32 → b33 |
| 100001 | 011111 | 010 | 100010 | 100110 | b33 → |
| 100010 | 000000 | 001 | 100011 | 100101 | b34 → |
| 100011 | 100000 | 000 | 100100 | * | b35 → b36 |
| 100100 | 100001 | 000 | 000000 | * | b36 → кінець |
| 100101 | 100010 | 000 | 000000 | * | b37 → кінець |
| 100110 | 100011 | 000 | 100111 | * | b38 → b39 |
| 100111 | 100001 | 000 | 000000 | * | b39 → кінець |
Табл. 3.3 – Таблиця кодів станівавтомата з примусовою адресацієюкоманд
| № п/п | Стан | Код |
| 1 | b0 | 000000 |
| 2 | b1 | 000001 |
| 3 | b2 | 000010 |
| 4 | b3 | 000011 |
| 5 | b4 | 000100 |
| 6 | b5 | 000101 |
| 7 | b6 | 000110 |
| 8 | b7 | 000111 |
| 9 | b8 | 001000 |
| 10 | b9 | 001001 |
| 11 | b10 | 001010 |
| 12 | b11 | 001011 |
| 13 | b12 | 001100 |
| 14 | b13 | 001101 |
| 15 | b14 | 001110 |
| 16 | b15 | 001111 |
| 17 | b16 | 010000 |
| 18 | b17 | 010001 |
| 19 | b18 | 010010 |
| 20 | b19 | 010011 |
| 21 | b20 | 010100 |
| 22 | b21 | 010101 |
| 23 | b22 | 010110 |
| 24 | b23 | 010111 |
| 25 | b24 | 011000 |
| 26 | b25 | 011001 |
| 27 | b26 | 011010 |
| 28 | b27 | 011011 |
| 29 | b28 | 011100 |
| 30 | b29 | 011101 |
| 31 | b30 | 011110 |
| 32 | b31 | 011111 |
| 33 | b32 | 100000 |
| 34 | b33 | 100001 |
| 35 | b34 | 100010 |
| 36 | b35 | 100011 |
| 37 | b36 | 100100 |
| 38 | b37 | 100101 |
| 39 | b38 | 100110 |
| 40 | b39 | 100111 |
Табл. 3.4 – Таблиця вхіднихсигналівавтомата з примусовоюадресацієюкоманд