Складаємо таблицю кодування мікрокоманд. Кожна мікрооперація кодується своєю мікрокомандою. Мікрооперації, які виконуються одна за одною послідовно на протязі одного такту часу, поєднуються до однієї мікрокоманди. У даному прикладі дві мікрооперації (mY1, mY2) виконуються одна за одною послідовно. Тому ми поєднуємо їх в одну мікрокоманду. Таблиця кодування зображена в Таблиці 2.
Таблиця 2
Мікрокоманда | Мікрооперація |
Y1 | mY1, mY2 |
Y2 | mY3 |
Y3 | mY4 |
Y4 | mY5 |
Y5 | mY1 |
Y6 | mY6 |
Y7 | mY7 |
Складаємо закодовану мікрокомандну схему алгоритму (Рис.5). Проставляємо мітки внутрішніх станів автомата Мілі таким чином:
мітки ставляться після кожної мікрокоманди (перед блоком після операційного);
початок та кінець мікрокомандної схеми алгоритму відмічається міткою а0;
мітки проставляються згідно з порядковим номером;
Будуємо основну таблицю автомата (Таблиця 3). Ця таблиця складається на основі закодованої мікрокомандної схеми алгоритму (Рис.5) В першому стовпчику таблиці записуються усі стани, в яких може знаходитися наш автомат. В першому рядку таблиці записуються способи переходу автомата з одного стану в інший (вхідні сигнали), тобто, чи то буде СІ (той перехід, в процесі якого на шляху не зустрілась жодна верхівка), чи то при переході автомату буде поставлена умова. В клітинках таблиці фіксується, перехід до якого стану здійснюється, і що буде на виході. Наприклад, із стану а0 автомат може здійснити перехід до стану а1 і в результаті цього переходу на виході автомата буде Y1, тобто, автомат виконає ті мікрооперації, які виконуються на протязі одного такту часу (mY1 і mY2 закодовані мікрокомандою Y1), при чому, цей перехід станеться під синхроімпульсним сигналом.
Таблиця 3
СІ=1 | X1 | X2 | X3 | X4 | ||||
a0 | a1/Y1 | |||||||
a1 | a2/Y2 | |||||||
a2 | a3/Y3 | a3/__ | ||||||
a3 | a4/Y4 | |||||||
a4 | a1/__ | a5/Y5 | ||||||
a5 | a6/Y6 | |||||||
a6 | a7/Y3 | a7/__ | ||||||
a7 | a8/Y4 | |||||||
a8 | a5/__ | a0/Y7 |
Будуємо граф-схему переходів (Рис.7). Граф-схема будується на основі Рис.5. і Таблиці 3. Кружочками позначаються можливі стани автомата. Стрілки указують на перехід із стану i до стану j. Над стрілкою указується, під яким вхідним сигналом станеться перехід, і, що при цьому буде на виході автомата.
Складаємо систему рівнянь переходів. Ця система складається на основі граф-схеми переходів (Рис.7) або основної таблиці абстрактного автомата (Таблиця 3). Сигнал СІ опущений.
Складаємо систему рівнянь виходів. Ця система складається на основі закодованої мікрокомандної схеми алгоритму (Рис.5), де Х - вхід,
Y - вихід.
Для того, щоб закодувати внутрішні стани автомата, визначаємо кількість необхідних для цього тригерів (n). Кількість тригерів розраховується із співвідношення: log2 A ≤ n, де
n - кількість необхідних тригерів;
А - кількість станів аi (a0 - a8)
А = 9log2 9 ≤ nÞn = 4,Нам необхідні 4 тригери, значить внутрішні стани автомата будемо кодувати чотирьох-розрядним двійковим кодом. Процес кодування зображений у Таблиці 4.
Таблиця 4
S1 | S2 | S3 | S4 | |
a0 | 0 | 0 | 0 | 0 |
a1 | 0 | 0 | 0 | 1 |
a2 | 0 | 0 | 1 | 0 |
a3 | 0 | 0 | 1 | 1 |
a4 | 0 | 1 | 0 | 0 |
a5 | 0 | 1 | 0 | 1 |
a6 | 0 | 1 | 1 | 0 |
a7 | 0 | 1 | 1 | 1 |
a8 | 1 | 0 | 0 | 0 |
Операційний автомат складається з п’яти (5) частин (Рис.5).
У вхідній частині розташовані чотири (4) RS-тригери, чотири (4) логічних елементи АБО, на які подається вхідний сигнал, декодер та дві шини, одна з яких необхідна для передачі сигналів, які надходять з декодера, а інша - для сигналів з виходів компаратора.
У перехідній частині автомата виконується перетворення сигнала на протязі одного такту часу. Пройшовши через логічні елементи І та (або) АБО, чи того не роблячи, сигнал змінюється і результат надходить на шину (at), відкіля продовжує передаватися до програмованої логічної матриці (ПЛМ). Перехідна частина будується на основі системи рівнянь переходів.
Вихідна частина. Ця частина будується на основі системи рівнянь виходів. Тут виконується той самий процес, що й у перехідній частині, тільки сигнали подаються на вихідну шину Yt, з якої сигнал надходить до вихідної матриці.
Побудувати операційний автомат, який знаходить максимальний парний елемент в кожному рядку масива (A [n,n]).
Мікропрограмний автомат необхідно реалізувати за схемою Уілкса-Стрінжера у вигляді автомата Мура.
Оптимальну функціональну схему керуючих частин автомата синтезувати на елементах І, НЕ, RS-, D - тригерах.
До складу змістовної схеми алгоритму (Рис.1) входять операційні та умовні верхівки. Наш алгоритм виконує знаходження максимального парного елементу кожному рядку масива, використовуючи при цьому чотири (4) умовні верхівки і вісім (8) операційних верхівок. Позначення операційних верхівок показано на Рис.2. Позначення умовних верхівок на Рис.3.
Кожна верхівка, чи то операційна чи умовна, кодується. При чому, якщо, мікрооперації повторюються і умовні верхівки повторюються, вони кодуються однаково. В даному прикладі три мікрооперації повторюються двічі, тому, однакові верхівки ми можемо кодувати одним кодом. Таблиця кодування верхівок зображена у Таблиці1.
Таблиця 1
Код | Зміст | Примітки |
mY1 | j = 1 | |
mY2 | i = 1 | |
mY3 | max = 0 | |
mY4 | A [i,j] | Ввід A [i,j] |
mY5 | max = A [i,j] | |
mY6 | i = i + 1 | |
mY7 | max | Вивід max |
mY8 | j = j + 1 | |
X1 | A [i,j]% 2 | так - 1, ні - 0 |
X2 | A [i,j] > max | так - 1, ні - 0 |
X3 | i < n | так - 1, ні - 0 |
X4 | j < m | так - 1, ні - 0 |
Закодована мікроопераційна схема алгоритму будується на основі змістовної схеми алгоритму (Рис.1) і таблиці кодування операційних та умовних верхівок (Таблиця 1), шляхом заміни відповідних блоків. Схема алгоритму зображена на Рис.4.
Складаємо таблицю кодування мікрокоманд. Кожна операція кодується своєю мікрокомандою. Мікрооперації, які виконуються одна за одною послідовно на протязі одного такта часу, об’єднуються в одну мікрокоманду. В даному прикладі двічі по дві мікрооперації ( (mY2, mY3) и (mY7, mY8)) виконуються послідовно. Тому ми об’єднуємо їх в одну мікрокоманду. Таблиця кодування зображена в Таблиці 2.