Синтез логічних схем для зберігання і переробки інформації.
Синтез реверсивного регістра зсуву.
Регістр на 10 розрядів. Використати тригери типу D.
Рішення
Регістри являють собою вузли цифрових систем, призначені для запису і
зберігання двійкових кодів. Наприклад: Якщо необхідно скласти два числа А і В, то
необхідна їх попередній запис у два регістри.
Т. к. Схема регістра повинна зберігати двійкові цифри, а тригер призначений для
запису і зберігання 0 або 1, то схема регістра повинна містити стільки тригерів,
скільки двійкових цифр необхідно зберігати. Зазвичай регістри будують, використовуючи
тригери типу D.
Як приклад представимо структуру регістра, призначеного для запису і
зберігання 4-х розрядних двійкових чисел.
У поданій схемі виходи Q3, Q2, Q1, Q0 є прямими виходами регістра,
в той час як необов'язкові виходи Q3, Q2, Q1, Q0 є інверсними виходами
регістра.
Для реалізацій операцій зсуву вліво/вправо можуть використовуватися або
мультиплексори, або регістри. Регістр, здатний зрушувати дані в обох
напрямках, називається реверсивним зсуваються регістром (РСР).
Синтез РСР.
Виконаємо синтез РСР на тригерах типу D.
Складемо таблицю, в якій відобразимо поточний і наступний стан кожного з
тригерів регістра. При цьому будемо вважати, що регістр 3-х розрядний. Так як
регістр повинен зрушувати або вліво, або вправо, то в цій таблиці слід в
окремому стовпці записувати значення спеціального керуючого сигналу SL/R.
Крім того, таблиця буде містити значення, які потрібно подавати на входи D
кожного з тригерів при переході від поточного стану в наступний стан.
SL/Rtt 1 D2D1D0
Q2Q1Q0Q2Q1Q0
0000000000
0001010010
0010100100
0011110110
0100000000
0101010010
0110100100
0111110110
1000000000
1001000000
1010001001
1011001001
1100010010
1101010010
1110011011
1111011011
Заповнимо діаграму Вейча-Карно з тим, щоб отримати логічні вирази для D2
, D1, D0. OOO1111O OOO1111O OOO1111O
OO 11OO 11 OO
O1 11O1 11 O1
11 11111111 11
1O 1O 1O 11
D2 = SL/R & Q1
D1 = SL/R & Q0 SL/R & Q2
D0 = SL/R & Q1
За отриманими логічним виразами синтезуємо схему регістра.
На основі отриманих логічних виразів і синтезованої схеми можна отримати
логічне вираження і схему для i-го тригера.
Di = SL/R & Qi - 1 SL/R & Qi + 1
На основі отриманого виразу можна побудувати схему заданого регістра.
Завдання № 2
Синтез асинхронного двійкового лічильника, що виконує прямий рахунок, з модулем
рахунку рівним 26, використовуючи тригери типу D.
Рішення
Самими простими двійковими лічильниками є асинхронні двійкові
лічильники (АДС). Нехай к = 3, тоді АДС з М = 2 ^ 3 буде виглядати:
Представлена схема є схемою АДС, що забезпечує підсумовування вхідних
імпульсів (з примим рахунком).
Представлена тимчасова діаграма пояснює роботу асинхронного 3-х розрядного
лічильника.
Таблиця переходів для прямого рахунку записується так:
000
001
010
011
100
101
110
111
Молодший тригер лічильника спрацьовує по зрізу вхідних імпульсів на лінії clk.
Як видно з діаграми стан на виході молодшого тригера змінюється після
кожного зрізу вхідних синхроімпульсів. Так як середній тригер синхронізується
прямим виходом сусіднього молодшого тригера, то стан на його виході буде
змінюватись при формуванні зрізу на виході Q0. Так само як і на Q2.
Перевагою цієї схеми є простота структури, поряд з цим є величезний
недолік: зі зростанням розрядності, тобто числа тригерів лічильника, зростає
сумарна затримка спрацьовування найстаршого тригера лічильника, що означає
необхідність уменшенія частоти вхідних синхроімпульсів. Інакше кажучи, в АДС
неможливо забезпечити високі робочі частоти.
Якщо вхід синхронізації сусіднього старшого тригера пдключіть до зворотного виходу
сусіднього тригера, то лічильник стане віднімаються. У цьому випадку говорять, що
має місце зворотний рахунок.
Здійснимо синтез заданого АДС:
Визначимо кількість тригерів log2 26 = 5.
Переведемо число 26 з десяткової системи числення в двійкову: 262 = 110102.
Зобразимо схему заданого АДС:
Завдання № 3
Синтез синхронного двійкового лічильника, що виконує зворотний рахунок, з модулем
рахунку рівним 14, використовуючи тригери типу JK і логіку І-НЕ.
Рішення
Використовуємо тригери типу JK.
Визначимо кількість тригерів.
M = log2 14 = 4
Будується таблиця переходів лічильника. При цьому іпсользуется таблиця переходів
відповідного тригера.
QtQt 1 JK
000 *
011 *
10 * 1
11 * 0
Для лічильника з к = 14 таблиця переходів буде виглядати наступним
чином: Q3Q2Q1Q0Q3'Q2'Q1'Q0'J3K3J2K2J1K1J0K0
000011011 * 1 * 0 * 1 *
11011100 * 0 * 00 ** 1
11001011 * 0 * 11 * 1 *
10111010 * 00 ** 0 * 1
10101001 * 00 ** 11 *
10011000 * 00 * 0 ** 1
10000111 * 11 * 1 * 1 *
011101100 ** 0 * 0 * 1
011001010 ** 0 * 11 *
010101000 ** 00 ** 1
010000110 ** 11 * 1 *
001100100 * 0 ** 0 * 1
001000010 * 0 ** 11 *
000100000 * 0 * 0 ** 1
11100000 * 1 * 1 * 10 *
11110000 * 1 * 1 * 1 * 1
Будуємо діаграму Вейча-Карно для функції управління J і K кожного з тригерів,
використовуючи таблицю переходів лічильника.
За діаграм виконаємо мінімізацію відповідних функцій, тобто отримуємо
мінімальні діз'юнктівние нормальні форми для всіх сигналів J і
K.OOO1111OOOO1111OOOO1111OOOO1111O
OO1 OO **** OO1 OO ****< br />
O1 O1 **** O1 **** O11
11 **** 11 111 **** 111 11
1O **** 1O1 11O1 1O ****< br />
J3 = Q2 * Q1 * Q0K3 = Q2 * Q1 * Q0 Q1 * Q0 J2 = Q1 * Q0K2 = Q1 * Q0 Q3 * Q1
OOO1111OOOO1111OOOO1111OOOO1111O
OO ** OO ** 1OO1 ** 1OO * 11 *
O11 ** O1 ** 1O11 ** 1O1 * 11 *
111 ** 11 ** 11111 ** 11 * 11 *
1O1 ** 1O ** 11O1 ** 11O * 11 *
J1 = Q3 * Q0 Q2 * Q0
K1 = Q0 Q3 * Q2
J0 = Q1 Q3 Q3 * Q2K0 = 1
За отриманими виразами можна побудувати схему заданого лічильника:
Завдання № 4
Синтез послідовного восьмирозрядного суматора.
Рішення
При складання двійкових чисел на рівні I-го розряду необхідно враховувати двійкові
цифри ai і bi, а також можливе перенесення з сусіднього молодшого розряду.
Елементарне пристрій, що виконує підсумовування зазначених двійкових цифр
називається повним однорозрядних двійковим суматори (подс).
Синтез подс виконується класичним шляхом, тобто починається з таблиці
істинності. Функції, що описують виходи Si і Ci залежать від 3-х змінних ai, bi
і ci; тому таблиця істинності буде виглядати наступним
чином: aibiCi-1SiCiOOO1111O
00000O11
0101011 1
10010
11001
Si = ai * bi * Ci-1 ai * bi * Ci-1 ai * bi * Ci-1 ai * bi * Ci-1
00110
01101OOO1111O
10101O 1
111111 111
Ci = ai * bi Ci-1 * bi ai * Ci-1
Логічна схема подс в базисі І-АБО-НЕ буде виглядати наступним чином:
У загальному випадку нам необхідно складати n-розрядні двійкові числа. Для
складання таких чисел необхідно взяти n подс.
Структура n-розрядного двійкового суматора називається суматори з
послідовним розподілом переносу.
Перевагою такого суматора є простота і низька вартість схеми.
Недоліком є його низька швидкодія, тобто великий час
підсумовування двійкових чисел.
Легко помітити, що час підсумовування двійкових чисел на такому суматорі
зростає зі зростанням розрядності складаємо чисел.
Якщо потрібне швидке підсумовування двійкових чисел незалежно від їх розрядності,
використовують схему суматора, в якій реалізується так званий прискорений
перенос. У такому суматорі, поряд з однорозрядною двійковими суматора,
використовується спеціальна схема прискореного переносу. При цьому однорозрядних
суматори складають двійкові цифри вихідних чисел з урахуванням перенесень
вироблюваних схемою прискореного перенесення. Тому що подібна схема обчислює всі
переноси одночасно (паралельно), то при підсумовуванні чисел не доводиться
чекати послідовної створення необхідних переносів.
На базі отриманої схеми однорозрядних двійкового суматора можна побудувати
заданий суматор. При цьому потрібно здійснювати завантаження двох восьмирозрядних
чисел, а також зсув результату праворуч.
Таким чином схема заданого суматора буде виглядати наступним чином: