Розробка цифрових засобів ПЛІС в інтегрованому середовищі проектування MAX+PLUS II
Генезис програмувальних логічних інтегральних схем, їх класифікація та архітектура. Призначення системи автоматизованого проектування MAX+PLUS II. Теоретичні відомості про тригери. Програми реалізації тригерів в інтегрованому середовищі MAX+PLUS II.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 20.07.2010 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Із табл. 7.1.1 видно, що встановлення тригеру у стан 1 (встановлення 1 на виході Q1) ініціює логічний 0 на вході S. Аналогічно встановлення тригеру в стан 0 (встановлення 0 на виході Q1) ініціює логічний 0 на вході R. Так як зміна стану RS-тригеру обумовлена появою 0 на одному з його входів, то вірогідніше, точнішим зображенням даної схеми було б умовне графічне зображення, приведене на рис. 7.1.2.
Рис. 7.1.2. Умовне графічне позначення RS-тригеру
Рис. 7.1.3. RS-тригер, побудований на логічних елементах І-НЕ
Особливу увагу треба звернути на інвертуючі кола у входів R та S. Вони показують, що активним рівнем сигналу для встановлення тригеру в стан 1 і 0 є рівень логічного 0 на одному із входів. RS-тригер часто називають RS-фіксатором, або тригером з роздільними входами.
7.1.2 Синхронний RS-тригер
Умовне графічне позначення для синхронного RS-тригеру показано на рис. 7.1.4. Воно подібне до звичайного RS-тригеру; відмінність полягає в появі одного додаткового, так званого синхронізуючого входу, що позначається CLK.
Рис. 7.1.4. Умовне графічне позначення синхронного RS-тригеру
Принцип роботи синхронного RS-тригеру ілюструє його таблиця дійсності (табл. 7.1.2).
Табл. 7.1.2. Таблиця дійсності синхронного RS-тригеру
Режим роботи |
Входи |
Виходи |
|||||
CLK |
S |
R |
Q1 |
Q2 |
Вплив на вихід Q1 |
||
Збереження |
0 |
0 |
Без змін |
Без змін |
|||
Встановлення 0 |
0 |
1 |
0 |
1 |
Для встановлення Q1 в 0 |
||
Встановлення 1 |
1 |
0 |
1 |
0 |
Для встановлення Q1 в 1 |
||
Заборонений стан |
1 |
1 |
1 |
1 |
Заборонено - не використовується |
Тільки верхні три рядки таблиці дійсності описують реальні режими роботи RS-тригеру. Нижній рядок відповідає забороненому стану і ніколи не використовується. З таблиці видно, що стан виходів синхронного RS-тригеру може змінюватись лише в моменти приходу тактових імпульсів. В даному випадку кажуть, що тригер працює синхронно: процес переключення його знаходиться в синхронізмі з тактовими імпульсами.
Важливу роль в багатьох цифрових схемах відіграє ще одна характеристика RS-тригеру - наявність пам'яті. Дійсно, якщо тригер встановлений в стан 1 або 0, то він залишається в такому стані навіть при деяких змінах вхідних сигналів.
Рис. 7.1.5. Синхронний RS-тригер, побудований на логічних елементах І-НЕ
Щоб отримати синхронний RS-тригер, в схему звичайного RS-тригеру потрібно ввести два додаткових логічних елемента І-НЕ, як показано на рис. 7.1.5.
7.1.3 D-тригер
Умовне графічне позначення D-тригеру подано на рисунку 7.1.6. У цього тригера є лише один інформаційний вхід D, а також синхронізуюзуючий вхід CLK.
D-тригер часто називають тригером з затримкою. Слово “затримка” означає те, що відбувається з даними (інформацією), що поступає на вхід D. Інформаційний сигнал (0 або 1), поступаючи на цей вхід затримується у тригері рівно на один такт, перед тим як з'явитись на виході Q.
Рис. 7.1.6. Умовне графічне позначення D-тригеру
Спрощена таблиця дійсності для D-тригеру подана нижче.
Табл. 7.1.3. Таблиця дійсності D-тригеру
Вхід |
Вихід |
|
Dn |
Qn+1 |
|
0 |
0 |
|
1 |
1 |
Слід звернути увагу, що сигнал на виході Q в такті n+1 повторює сигнал, що був на вході D в попередньому такті n.
D-тригер можливо отримати з тактуємого RS-тригеру, додаючи до останнього інвертор, як показано на рис. 7.1.7.
Рис. 7.1.7. Схема D-тригера
На рис. 7.1.8 показано умовне позначення типового серійно випускаємого D-тригеру. Він має два додаткових входи - попереднього встановлення (PS) і очищення (CLR). Логічний 0 на вході PS ініціює встановлення логічної 1 на виході Q. Логічний 0 на вході CLR ініціює очистку виходу Q.
В активних станах входи PS і CLR блокують дію входів D і CLK; при розблокуванні входи D і CLK діють аналогічно звичайному D-тригеру, що зображений на рис. 7.1.6.
Рис. 7.1.8. Умовне графічне позначення серійного інтегрального D-тригеру
7.1.4 JK-тригер
JK-тригер - це універсальний тригер, що має характеристики всіх інших типів тригерів. Умовне графічне позначення JK-тригеру подано на рис. 7.1.9. JK-тригер має два інформаційні входи: J і K, і вхід синхронізації CLK і, як і всі тригери два комплементарних виходи Q1 і Q2. Таблиця дійсності для JK-тригера приведена в табл. 7.1.4. Коли на обидва входи J і K подається рівень логічного 0, тригер блокується, і стан його виходів не змінюється. В цьому випадку тригер знаходиться в режимі збереження.
Рис. 7.1.9. Умовне графічне позначення JK-тригеру
Табл. 7.1.4. Таблиця дійсності JK-тригеру
Режим роботи |
Входи |
Виходи |
|||||
CLK |
J |
K |
Q1 |
Q2 |
Вплив на вихід Q1 |
||
Збереження |
0 |
0 |
Без змін |
Без змін - блокування |
|||
Встановлення 0 |
0 |
1 |
0 |
1 |
Скидання або очищення Q1 в 0 |
||
Встановлення 1 |
1 |
0 |
1 |
0 |
Для встановлення Q1 в 1 |
||
Переключення |
1 |
1 |
Переключення |
Зміна стану на протилежний |
Рядки 2 і 3 таблиці дійсності описують режими, що відповідають встановленню тригера в стани 0 на 1. Рядок 4 ілюструє дуже важливий режим роботи JK-тригера - переключення. Якщо на обох входах J і K встановлена логічна 1, то наступні тактові імпульси будуть викликати перекидання рівнів сигналів на виходах тригера від 1 до 0, от 0 до 1 і так далі. Така робота подібна переключенню тумблера, звідки і походить назва режиму.
Умовне графічне позначення JK-тригера, що входить до складу інтегральної схеми показано на рис. 7.1.10. В порівнянні з тригером на рис. 7.1.9 даний тригер має два додаткових асинхронних входи (вхід попереднього встановлення і вхід очищення).
Синхронними входами є інформаційні входи J та K і синхронізуючий вхід CLK.
Рис. 7.1.10. Умовне графічне позначення серійного інтегрального JK-тригеру
При реалізації тригерів за допомогою мови AHDL доцільно користуватись примітивами тригерів.
В табл. 7.1.5 наведено всі примітиви тригерів, що використовуються при описанні роботи апаратури.
Табл. 7.1.5. Примітиви тригерів в AHDL
Примітив |
Прототип примітиву |
|
DFF |
FUNCTION DFF (D, CLK, CLRN, PRN) RETURNS (Q) |
|
DFFE |
FUNCTION DFFE (D, CLK, CLRN, PRN, ENA) RETURNS (Q) |
|
TFF |
FUNCTION TFF (T, CLK, CLRN, PRN) RETURNS (Q) |
|
TFFE |
FUNCTION TFFE (T, CLK, CLRN, PRN, ENA) RETURNS (Q) |
|
JKFF |
FUNCTION JKFF (J, K, CLK, CLRN, PRN) RETURNS (Q) |
|
JKFFE |
FUNCTION JKFFE (J, K, CLK, CLRN, PRN, ENA) RETURNS (Q) |
|
SRFF |
FUNCTION SRFF (S, R, CLK, CLRN, PRN) RETURNS (Q) |
|
SRFFE |
FUNCTION SRFFE (S, R, CLK, CLRN, PRN, ENA) RETURNS (Q) |
|
LATCH |
FUNCTION LATCH (D, ENA) RETURNS (Q) |
Виводи тригерів:
D, T, J, K, S, R - інформаційні входи;
CLK - вхід тактового сигналу (активний перепад 0->1);
CLRN - вхід асинхронного скидання тригера (активний рівень - логічний нуль);
PRN - вхід асинхронного встановлення тригера (активний рівень - логічний нуль);
ENA - вхід дозволу роботи (активний рівень - логічна одиниця).
7.1.5 Програма реалізації тригерів в інтегрованому середовищі MAX+PLUS II
Програма для реалізації тригерів за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:Title "triggers";
Subdesign triggers
(
D,T,J,K,S,R,CLK,CLRN,PRN,ENA : input;
Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9 : output;
)
Begin
Q1 = DFF(D,CLK,CLRN,PRN); Q2 = DFFE (D,CLK,CLRN,PRN,ENA);
Q3 = TFF (T,CLK,CLRN,PRN); Q4 = TFFE (T, CLK, CLRN, PRN, ENA);
Q5 = JKFF (J, K, CLK, CLRN, PRN);
Q6 = JKFFE (J,K, CLK, CLRN, PRN, ENA);
Q7 = SRFF (S, R, CLK, CLRN, PRN);
Q8 = SRFFE (S, R, CLK, CLRN, PRN, ENA);
Q9 = LATCH (D, ENA);
End;
7.1.6 Результати програмної реалізації тригерів
На рис. 7.1.11 зображено вікно сигнального редактору проекту “triggers”.
Рис.7.1.11. Результати тестування RS-, D-, JK-тригерів
7.2 Теоретичні відомості про регістри
7.2.1 Послідовні регістри зсуву
Схема одного з типових регістрів зсуву подана на рис. 7.2.1. Цей регістр реалізований на 4 D-тригерах. Такий регістр має назву 4-розрядний регістр зсуву, оскільки він дозволяє зберігати 4 двійкових розряди даних А, B, C, D.
Рис.7.2.1. 4-розрядний послідовний регістр зсуву
За допомогою табл. 7.2.1 і рис. 7.2.1 ми маємо можливість спостерігати за роботою цього пристрою. Спочатку очистимо регістр (встановимо рівні логічного нуля на його виходах А, B, C, D). Для цього потрібно подати логічний 0 на вхід очищення CLR. Отриманому стану регістра зсуву відповідає рядок 1 табл. 7.2.1 До приходу тактового імпульсу виходи регістру залишаються в стані 0000. Подамо перший імпульс на синхронізуючий вхід CLK; індикатор покаже число 1000 (рядок 3 в табл. 7.2.1), оскільки на тактовому імпульсі логічна 1 з інформаційного входу тригера TA переноситься на його логічний вихід Q. Тепер при наявності логічної 1 на інформаційному вході регістру ця одиниця з кожним тактовим імпульсом вводиться в розряд А, а введені раніше одиниці зсуваються на одну позицію (розряд) вправо (тактові імпульси 2 і 3 в табл. 7.2.1). Таким самим чином при подачі на інформаційний вхід логічного 0 цей нуль при кожному тактовому імпульсі вводиться в розряд А, а введені раніше одиниці та нулі зсуваються вправо (тактові імпульси 4-8 в табл. 7.2.1). Перед приходом тактового імпульсу 9 на інформаційному вході встановлюється 1, а перед приходом імпульсу 10 цей вхід повертається до 0. В час дії тактових імпульсів 9-13 введена в регістр на імпульсі 9 одиниця буде зміщуватись на індикаторі вправо. Рядок 15 в табл. 7.2.1 показує, на імпульсі 13 ця одиниця покидає крайній правий розряд регістру зсуву і втрачається.
Табл.7.2.1. Робота 4-розрядного регістру зсуву
Входи |
Виходи |
|||||||
Номер рядка |
Очищення |
Дані |
Номер тактового імпульсу |
TА |
TB |
TC |
TD |
|
А |
B |
C |
D |
|||||
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
2 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
|
3 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
|
4 |
1 |
1 |
2 |
1 |
1 |
0 |
0 |
|
5 |
1 |
1 |
3 |
1 |
1 |
1 |
0 |
|
6 |
1 |
0 |
4 |
0 |
1 |
1 |
1 |
|
7 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
|
8 |
1 |
0 |
6 |
0 |
0 |
0 |
1 |
|
9 |
1 |
0 |
7 |
0 |
0 |
0 |
0 |
|
10 |
1 |
0 |
8 |
0 |
0 |
0 |
0 |
|
11 |
1 |
1 |
9 |
1 |
0 |
0 |
0 |
|
12 |
1 |
0 |
10 |
0 |
1 |
0 |
0 |
|
13 |
1 |
0 |
11 |
0 |
0 |
1 |
0 |
|
14 |
1 |
0 |
12 |
0 |
0 |
0 |
1 |
|
15 |
1 |
0 |
13 |
0 |
0 |
0 |
0 |
Нагадаємо, що D-тригер називають також тригером з затримкою. Він просто передає інформаційний сигнал з входу D на вихід Q з затримкою на один такт.
Прилад, схема якого приведена на рис. 7.2.1 має назву послідовного регістру зсуву. Термін “послідовний” відображає той факт, що в цей регістр дані вводяться порозрядно. Наприклад, щоб ввести в регістр двійкову комбінацію 0111 треба пройти всю послідовність станів від рядка 1 до рядка 6 в табл. 7.2.1. Послідовне завантаження 4-бітової комбінації 0111 в послідовний регістр відбувається за 5 тактів (рядок 2 можливо виключити).
Інший спосіб завантаження регістру - паралельне (або розширене) завантаження, при якому всі інформаційні біти вводяться в регістр одночасно “за командою” одного тактового імпульсу.
Регістр зсуву на рис. 7.2.1 можливо трансформувати в 5-розрядний, додав до схеми ще один D-тригер. Регістри зсуву частіше бувають 4-, 5- або 8-розрядними. В них можливо використання не тільки D-тригеру, але й тригерів іншого типу (наприклад, JK-тригера, або синхронних RS-тригерів).
7.2.2 Паралельні регістри зсуву
Послідовний регістр зсуву, робота якого описана вище має два суттєві недоліки: він дозволяє вводити тільки по одному біту інформації на кожному тактовому імпульсі і, крім того, кожний раз при зсуві вправо втрачається крайній правий біт.
На рис. 7.2.2 показана схема 4-розрядного паралельного кільцевого регістру. Входи A, B, C, D вданому приладі є інформаційними.
Рис. 7.2.2. 4-розрядний паралельний кільцевий регістр зсуву
Цю систему можливо спорядити ще однією корисною характеристикою - можливістю кільцевого переміщення інформації, коли дані з входу приладу повертаються на його вхід і не втрачаються.
В даному регістрі зсуву використовуються чотири JK-тригери. Треба звернути увагу на зворотній зв'язок виходу тригера TD та входів J і K тригера ТА. Завдяки цьому ланцюгу зворотного зв'язку введена в регістр інформація, яка звично втрачається на виході тригеру TD, буде циркулювати по регістру зсуву. Сигналом очищення регістру (встановлення його виходів в стан 0000) є рівень логічного нуля на вході CLR.
Входи паралельного завантаження A, B, C, D пов'язані з входами попереднього встановлення тригерів PRN, що дозволяє встановлювати рівень логічної одиниці на будь-якому виході (A, B, C, D). Якщо на один з цих входів подати логічний 0, то на відповідному виході буде логічна 1. Подача тактових імпульсів на входи CLK всіх JK-тригерів призводить до зсуву інформації в регістрі вправо. З тригеру TD дані передаються в тригер ТА (кільцеве переміщення інформації).
Табл. 7.2.2. Робота 4-розрядного паралельного кільцевого регістру зсуву
Входи |
Виходи |
||||||||||
Номер рядка |
Очищення |
Паралельне завантаження даних |
Номер тактового імпульсу |
TА |
TB |
TC |
TD |
||||
A |
B |
C |
D |
А |
B |
C |
D |
||||
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
|
2 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
|
3 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
|
4 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
|
5 |
1 |
1 |
1 |
1 |
1 |
2 |
0 |
0 |
0 |
1 |
|
6 |
1 |
1 |
1 |
1 |
1 |
3 |
1 |
0 |
0 |
0 |
|
7 |
1 |
1 |
1 |
1 |
1 |
4 |
0 |
1 |
0 |
0 |
|
8 |
1 |
1 |
1 |
1 |
1 |
5 |
0 |
0 |
1 |
0 |
|
9 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
||
10 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
||
11 |
1 |
1 |
1 |
1 |
1 |
6 |
0 |
0 |
1 |
1 |
|
12 |
1 |
1 |
1 |
1 |
1 |
7 |
1 |
0 |
0 |
1 |
|
13 |
1 |
1 |
1 |
1 |
1 |
8 |
1 |
1 |
0 |
0 |
|
14 |
1 |
1 |
1 |
1 |
1 |
9 |
0 |
1 |
1 |
0 |
|
15 |
1 |
1 |
1 |
1 |
1 |
10 |
0 |
0 |
1 |
1 |
Табл. 7.2.2 допомагає зрозуміти принцип роботи паралельного регістру зсуву. При включенні живлення на виходах регістру встановлюється будь-яка двійкова комбінація, така, наприклад як в рядку 1 таблиці 7.2.2. Подача логічного 0 на входи CLR тригерів ініціює очищення регістру (рядок 2). Далі (рядок 3) відбувається завантаження в регістр двійкової комбінації 0100. Послідовні тактові імпульси викликають зсув введеної інформації вправо (рядки 4-8). Треба звернути увагу на рядки 5 і 6: одиниця з крайнього правого тригеру TD переноситься в крайній лівий тригер ТА. В даному випадку можливо говорити про кільцеве переміщення одиниці в регістрі.
Далі (рядок 9) заново ініціюється очищення регістру за допомогою входу CLR. Завантажується нова двійкова комбінація 0110 (рядок 10). Подача 5 тактових імпульсів (рядки 11-15) призводить до кільцевого зсуву інформації на 5 позицій вправо. Треба звернути увагу, що для повернення даних в початковий стан потрібно 4 тактових імпульси. Якщо в регістрі зсуву на рис. 2.2 розірвати ланцюг зворотного зв'язку, то ми отримаємо звичайний паралельний регістр зсуву; можливість кільцевого переміщення даних буде виключена.
7.2.3 Програма реалізації регістрів в інтегрованому середовищі MAX+PLUS II
Програма для реалізації 4-розрядного послідовного регістру зсуву за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Title "register1";
Parameters
(WIDTH = 4); - встановлення розрядності регістру
Assert (WIDTH > 0) - перевірка розрядності регістру на відмінність від 0
Report "Value of WIDTH parameter must be greater then %" WIDTH
Severity Error;
Subdesign register1
(
D_INPUT, SET, RESET : input = GND; - вхідні сигнали
CLK : input; - вхід синхронізації
ENABLE : input = VCC; - вхід дозволу роботи
Q_OUTPUT : output; - вихідні сигнали
)
Variable
FF[WIDTH..1] : DFFE; - об'ява змінної FF, що належить до класу DFFE
Begin
FF[].clk = CLK;
FF[].prn = !SET;
FF[].clrn = !RESET;
FF[].ena = ENABLE;
FF[].d = (FF[WIDTH-1..1].q, D_INPUT);
Q_OUTPUT = FF[WIDTH].q;
End;
- Примітка: на часовій діаграммі:
- FF - двійкове число на виході регістру
Програма для реалізації 4-розрядного паралельного кільцевого регістру зсуву за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign register2
Parameters
(WIDTH = 4); - встановлення розрядності регістру
Assert (WIDTH > 0) - перевірка розрядності тригера (більша від нуля)
Report "Value of WIDTH parameter must be greater then %" WIDTH
Severity Error;
(
I[WIDTH..1] : input = VCC; - вхідні сигнали (дані)
CLK : input;
RESET : input;
O[WIDTH..1] : output; - вихідні сигнали (дані)
)
Variable
FF[WIDTH..1] : JKFF; - об'ява змінної FF, що належить до класу JKFF
Begin
FF[WIDTH..1].j = (FF[WIDTH-1..1].q, FF[WIDTH].q);
FF[WIDTH..1].k = (!FF[WIDTH-1..1].q, !FF[WIDTH].q);
FF[WIDTH..1].clk = CLK;
FF[WIDTH..1].clrn = !RESET;
FF[WIDTH..1].prn = I[WIDTH..1];
O[WIDTH..1] = FF[WIDTH..1].q;
End;
7.2.4 Результати програмної реалізації регістрів
На рис. 7.2.3 зображено вікно сигнального редактору проекту “register1”.
Рис. 7.2.3. Результати тестування 4-розрядного послідовного регістру зсуву
На рис. 7.2.4 зображено вікно сигнального редактору проекту “register2”.
Рис. 7.2.3. Результати тестування 4-розрядного паралельного кільцевого регістру зсуву
7.3 Теоретичні відомості про лічильники
7.3.1 Лічильник з крізним переносом
Процедури двійкової і десяткової лічби ілюстровано в табл. 7.3.1. Використовуючи лише чотири двійкових розряди (T4, T3, T2, T1), ми можемо рахувати від 0000 до 1111 (від 0 до 15 в десятеричній системі відліку). Стовпчик T1 таблиці відповідає двійковому розряду одиниці або самій молодшій значимій цифрі. Зазвичай використовується термін “самий молодший розряд”. Стовпець T4 відповідає двійковому розряду вісімок або старшій значимій цифрі. Зазвичай використовується термін “самий старший розряд”. Зверніть увагу, що в стовпці одиниць цифри змінюються найчастіше. Якщо вам потрібний лічильник, що рахує від 0000 до 1111 в двійковій системі, у нього повинно бути 16 різних вихідних станів. Такий лічильник має назву лічильник за модулем 16. Модуль лічильника - це число різних станів, через які проходить лічильник в процесі одного повного циклу відліку.
Табл. 7.3.1. Відлікова послідовність для лічильника за модулем 16
Двійкова лічба |
Десяткова лічба |
||||
T4 |
T3 |
T2 |
T1 |
||
8 |
4 |
2 |
1 |
||
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
1 |
0 |
2 |
|
0 |
0 |
1 |
1 |
3 |
|
0 |
1 |
0 |
0 |
4 |
|
0 |
1 |
0 |
1 |
5 |
|
0 |
1 |
1 |
0 |
6 |
|
0 |
1 |
1 |
1 |
7 |
|
1 |
0 |
0 |
0 |
8 |
|
1 |
0 |
0 |
1 |
9 |
|
1 |
0 |
1 |
0 |
10 |
|
1 |
0 |
1 |
1 |
11 |
|
1 |
1 |
0 |
0 |
12 |
|
1 |
1 |
0 |
1 |
13 |
|
1 |
1 |
1 |
0 |
14 |
|
1 |
1 |
1 |
1 |
15 |
Функціональна схема лічильника за модулем 16, зібраного з чотирьох JK-тригерів, показана на рис 7.3.1. Кожний JK-тригер працює в режимі переключення (J = K = 1). Нехай в початковий момент часу стан виходів лічильника відповідає двійковому числу 0000 - лічильник очищений. При надходженні тактового імпульсу 1 на синхронізуючий вхід CLK тригера Т1 цей тригер переключається, при проходженні зрізу імпульсу, і на індикаторі з'являється число 0001. Лічба продовжується: зріз сигналу на виході кожного тригеру запускає наступний тригер. Повертаючись до табл. 7.3.1. ми бачимо, що цифри (1 або 0) в стовпці T1 (одиниць) змінюються на кожному етапі лічби. Іншими словами тригер Т1 переключається з приходом кожного нового тактового імпульсу. Як бачимо з стовпця T2, тригер Т2 переключається в два рази рідше від тригера Т1. Взагалі кожний старший розряд в табл. 7.3.1 переключається в два рази рідше попереднього.
Рис. 7.3.1. Логічна схема лічильника за модулем 16
Роботу лічильника за модулем 16 ілюструють часові діаграми на рис. 7.3.2. Синхронізуючому входу відповідає верхня діаграма. Діаграми для виходів Q регістрів Т4, Т3, Т2, Т1 наведено нижче.
Оскільки кожний тригер впливає тільки на один наступний за ним тригер, то для переключення всіх тригерів необхідний деякий час.
Ми бачимо, що зміна станів послідовно проходить по ланцюжку тригерів. Тому лічильник, що ми розглядаємо має назву лічильника з крізним переносом.
Рис. 7.3.2. Часова діаграма лічильника за модулем 16
Лічильник, функціональна схема якого показана на рис. 7.3.1, можливо назвати не тільки лічильником з крізним переносом, але й лічильником за модулем 16, 4-розрядним лічильником або асинхронним лічильником. Кожна з назв характеризує розглядувану схему з якогось одного боку.
Визначення “з крізним переносом” і “асинхронний” говорять про те, що запуск тригерів відбувається не в один і той же час. Назва “лічильник за модулем 16” віддзеркалює число різних станів, що “проходяться” лічильником за один повний цикл лічби. Визначення “4-розрядний” вказує на число двійкових розрядів на виході лічильника.
7.3.2 Асинхронний лічильник з модулем 10
Лічильник за модулем 10 рахує від 0000 до 1001 (від 0 до 9 в десятковій системі), тобто перші 10 комбінацій в табл. 7.3.1. Ми бачимо, що для цього потрібно чотири двійкових розряди: розряд одиниць, розряд двійок, розряд четвірок і розряд вісімок.
Рис. 7.3.3. Логічна схема лічильника за модулем 10
Такий лічильник можливо реалізувати на чотирьох тригерах, з'єднаних по схемі описаного вище асинхронного лічильника. В схему потрібно додатково ввести логічний елемент І-НЕ (рис. 7.3.3) для встановлення всіх тригерів в нульовий стан, очищення лічильника, з приходом десятого імпульсу (тобто з приходом першого імпульсу після того, як лічильник нарахував до 1001 - 9 в десятковій системі).
Принцип використання такого логічного елемента стає зрозумілим якщо розглянути яке двійкове число настає за 1001. З табл. 7.3.1 видно, що цим числом є 1010 (10 в десятковій системі). При поданні логічної 1 , що міститься в розрядах двійок і вісімок двійкового числа 1010, на входи логічного елемента І-НЕ (як показано на рис. 7.3.3), цей елемент встановить всі тригери в стан 0. Лічильник почне рахувати від 0000 до 1001. Таким чином, логічний елемент І-НЕ забезпечує встановлення лічильника в стан 0000. Подібне використання логічного елемента І-НЕ дозволяє створити лічильники з деякими іншими значеннями модуля. На рис. 7.3.3 показано функціональну схему асинхронного лічильника за модулем 10. Цей лічильник можливо також назвати декадним (десятковим) лічильником.
7.3.3 Лічильник віднімання
Вище було описано лічильники, що рахують в прямому напрямку (0, 1, 2,...). Однак в деяких цифрових системах з'являється необхідність рахування в зворотному напрямку (9, 8, 7, 6,...). Лічильники, які рахують від більших чисел до менших називають лічильниками віднімання, або лічильниками зворотної дії.
Схема асинхронного лічильника віднімання за модулем 8 показано на рис. 7.3.4, відповідна відлікова послідовність чисел наведена в табл. 7.3.2.
Рис. 7.3.4. Логічна схема асинхронного 3-розрядного лічильника віднімання
Табл. 7.3.2. Відлікова послідовність для 3-розрядного лічильника віднімання
Номер тактового імпульсу |
Двійкова відлікова послідовність |
Десяткові числа |
|||
Т3 |
Т2 |
Т1 |
|||
0 |
1 |
1 |
1 |
7 |
|
1 |
1 |
1 |
0 |
6 |
|
2 |
1 |
0 |
1 |
5 |
|
3 |
1 |
0 |
0 |
4 |
|
4 |
0 |
1 |
1 |
3 |
|
5 |
0 |
1 |
0 |
2 |
|
6 |
0 |
0 |
1 |
1 |
|
7 |
0 |
0 |
0 |
0 |
|
8 |
1 |
1 |
1 |
7 |
|
9 |
1 |
1 |
0 |
6 |
Треба звернути увагу на те, що схема лічильника віднімання нагадує схему лічильника прямої дії на рис. 7.3.1. Єдиною відмінністю є спосіб переносу від тригера Т1 до тригера Т2 і від тригера Т2 до тригера Т3. В лічильнику прямої дії синхронізуючий вхід кожного тригера пов'язаний з інверсним виходом Q попереднього тригера. Зауважимо, що в лічильнику відліку перед початком відліку в зворотному напрямку передбачене його попереднє встановлення в стан 111 (деcяткове число 7) за допомогою входу предвстановлення (PRN). Тригер Т3 - двійковий лічильник розряду одиниць (стовпець T1). Тригер Т2 - лічильник розряду двійок (стовпець T2). Тригер Т3 - лічильник розряду четвірок (стовпець T3).
7.3.4 Програми реалізації лічильників в інтегрованому середовищі MAX+PLUS II
Програма для реалізації 4-розрядного асинхронного лічильника з крізним переносом за модулем 16 за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
title "counter1";
parameters
(WIDTH = 4); - встановлення розрядності лічильника
assert (WIDTH > 0) - перевірка розрядності лічильника
report "Value of WIDTH parameter must be greater then %" WIDTH
severity error;
subdesign counter1
(
CLK : input; - імпульси синхронізації (CLK) лічильника
RESET : input; - імпульси зкидання (CLRN) тригерів лічильника
SET : input; - імпульси предвстановлеення (PRN) тригерів лічильника
O [WIDTH..1] : output; - вихід лічильника
)
variable
TRIGGER [WIDTH..1] : JKFF;
begin
TRIGGER [WIDTH..1].j = vcc;
TRIGGER [WIDTH..1].k = vcc;
TRIGGER [WIDTH..1].clrn = !RESET;
TRIGGER [WIDTH..1].prn = !SET;
TRIGGER [WIDTH].clk = !CLK;
TRIGGER [WIDTH-1..1].clk = !TRIGGER [WIDTH..2].q;
O [WIDTH..1] = TRIGGER [1..WIDTH].q;
end;
Програма для реалізації асинхронного лічильника за модулем 10 за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
title "counter2";
parameters
(WIDTH = 4); - встановлення розрядності лічильника
assert (WIDTH > 0) - перевірка розрядності лічильника
report "Value of WIDTH parameter must be greater then %" WIDTH
severity error;
subdesign counter2
(
CLK : input; - імпульси синхронізації (CLK) лічильника
SET : input; - імпульси предвстановлення (PRN) тригерів лічильника
O [WIDTH..1] : output; - вихід лічильника
)
variable
TRIGGER [WIDTH..1] : JKFF;
begin
TRIGGER [WIDTH..1].j = vcc;
TRIGGER [WIDTH..1].k = vcc;
TRIGGER [WIDTH..1].prn = !SET;
TRIGGER [WIDTH].clk = !CLK;
TRIGGER [WIDTH-1..1].clk = !TRIGGER [WIDTH..2].q;
TRIGGER [WIDTH..1].clrn = (TRIGGER [3].q !& TRIGGER [1].q);
O [WIDTH..1] = TRIGGER [1..WIDTH].q;
end;
Програма для реалізації 3-розрядного лічильника віднімання за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
title "counter3";
parameters
(WIDTH = 3); - встановлення розрядності лічильника
assert (WIDTH > 0) - перевірка розрядності лічильника
report "Value of WIDTH parameter must be greater then %" WIDTH
severity Error;
subdesign counter3
(
CLK : input; - імпульси синхронізації (CLK) лічильника
RESET : input; - імпульси зкидання (CLRN) тригерів лічильника
SET : input; - імпульси предвстановлення (PRN) тригерів лічильника
O[WIDTH..1] : output; - вихід лічильника
)
variable
TRIGGER[WIDTH..1] : JKFF;
begin
TRIGGER [WIDTH..1].j = vcc;
TRIGGER [WIDTH..1].k = vcc;
TRIGGER [WIDTH..1].clrn = !RESET;
TRIGGER [WIDTH..1].prn = !SET;
TRIGGER [WIDTH..1].clk = (CLK, !TRIGGER [WIDTH..2].q);
O [WIDTH..1] = !TRIGGER [1..WIDTH].q;
end;
Програма для реалізації 3-розрядного універсального лічильника за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
title "counter4";
parameters
(WIDTH = 3); - встановлення розрядності лічильника
assert (WIDTH > 0) - перевірка розрядності лічильника
report "Value of WIDTH parameter must be greater then %" WIDTH
severity Error;
subdesign counter4
(
CLK : input; - імпульси синхронізації (CLK) лічильника
SET : input; - імпульси предвстановлення (PRN) тригерів лічильника
RESET : input; - імпульси зкидання (CLRN) тригерів лічильника
FWC : input;
BWC : input;
O[WIDTH..1] : output; - вихід лічильника
)
variable
TRIGGER[WIDTH..1] : JKFF;
begin
TRIGGER[].j = vcc;
TRIGGER[].k = vcc;
TRIGGER[].prn = !SET;
TRIGGER[].clrn = !RESET;
TRIGGER[WIDTH].clk = !CLK;
TRIGGER[WIDTH-1..1].clk = !((TRIGGER[WIDTH..2].q & !FWC) & !(!TRIGGER[WIDTH..2].q & !BWC));
O[WIDTH..1] = TRIGGER[1..WIDTH].q;
end;
- Примітка:
- Значення входів, що відповідают вставленню відліку лічильника в
- зростаючому напрямку:
- FWC = 1;
- BWC = 0.
- Значення входів, що відповідают вставленню відліку лічильника в
- спадаючому напрямку:
- FWC = 0;
- BWC = 1.
7.3.5 Результати програмної реалізації лічильників
На рис. 7.3.5 зображено вікно сигнального редактору проекту “counter1”.
Рис 7.3.5. Результати тестування 4-розрядного асинхронного лічильника з крізним переносом за модулем 16
На рис. 7.3.6 зображено вікно сигнального редактору проекту “counter2”.
Рис 7.3.6. Результати тестування асинхронного лічильника за модулем 10
На рис. 7.3.7 зображено вікно сигнального редактору проекту “counter3”.
Рис 7.3.7. Результати тестування 3-розрядного синхронного лічильника
На рис. 7.3.8 зображено вікно сигнального редактору проекту “counter4”.
Рис 7.3.8. Результати тестування 3-розрядного універсального лічильника
7.4 Теоретичні відомості про мультиплексори, демультиплексори, шифратори, дешифратори
7.4.1 Мультиплексор
Мультиплексором називають комбінаційний логічний пристрій, призначений для керування передачею даних від кількох джерел до одного вихідного каналу.
Типове використання мультиплексорів - передача даних від кількох рознесених в просторі джерел інформації на вхід приймача. Припустимо, вимірюється температура навколишнього середовища в кількох приміщеннях й результати цих вимірів повинні бути виведені на ЕОМ. При цьому, так як температура змінюється повільно, для отримання достатньої точності зовсім не обов'язково виміряти її постійно. А достатньо мати виміри, проведені через деякі фіксовані проміжки часу. Головне, щоб проміжки між двома вимірами були суттєво менші за сталу часу, що характеризує зміну температури в приміщенні, яке контролюється. Саме цю функцію, тобто підключення різних джерел інформації до одного приймача, за заданою командою, і виконує мультиплексор. Інформацію, рознесену в просторі, він перетворює до вигляду з розділом в часі.
Відповідно до визначення, мультиплексор повинен мати один вихід і дві групи входів: інформаційні і адресні. Код, що подається на адресні входи, визначає, який з інформаційних входів в даний момент підключений до вихідного виводу. Оскільки n-розрядний двійковий код може приймати 2n значень, то, якщо число адресних входів мультиплексора дорівнює n, то число його інформаційних входів повинно дорівнювати 2n.
Таблиця дійсності, що відображає роботу мультиплексора з двома адресними входами має наступний вигляд (табл. 7.4.1).
Табл. 7.4.1. Таблиця дійсності для мультиплексора з двома адресними входами
E |
A1 |
A0 |
Q |
|
|
1 |
х |
x |
0 |
1 |
|
0 |
0 |
0 |
D0 |
|
|
0 |
0 |
1 |
D1 |
|
|
0 |
1 |
0 |
D2 |
|
|
0 |
1 |
1 |
D3 |
|
В даній таблиці враховано, що мультиплексор зазвичай має додатковий інверсний вихід і вхід дозволу роботи Е (в програмах мовою AHDL вхід дозволу роботи, по прикладу примітивів тригерів, має ім'я ENA). Якщо на вхід дозволу роботи Е подається активний логічний сигнал (Е=1), вихідний сигнал мультиплексора постійний і не залежить від його вхідних сигналів.
Функція алгебри логіки, що описує роботу мультиплексора має вид:
. (1)
Логічна схема мультиплексора, що відповідає наведеній функції алгебри логіки та умовне позначення мультиплексора на прикладі ІС (інтегральна схема) 555КП7 показані на рис. 7.4.1 а, б.
а) б)
Рис. 7.4.1. Логічна схема мультиплексора (а) і його умовне графічне позначення (б)
При передачі інформації від кількох джерел по звичайному каналу з розподілом в часі потрібні не тільки мультиплексори, але й пристрої оберненого призначення, що розподіляють інформацію, отриману з одного каналу поміж кількох приймачів. Таку задачу вирішують демультиплексори.
В інтегрованому середовищі MAX+PLUS II за допомогою мови AHDL мультиплексор може бути описаний двома методами:
1) таблицею дійсності;
2) на поведінковому рівні.
Описання пристрою за допомогою таблиці дійсності найбільш просте, адже вимагає знання проектувальником лише таблиці дійсності мультиплексора. Об'єм отриманої програми, порівняно з об'ємом програми описання на поведінковому рівні, має значно менший розмір, але архітектура (логічна схема) самого пристрою залишається проектувальнику невідомою.
Фахівець обирає метод описання виходячи з технічного завдання, заданого об'єму програми, кількості елементарних вентилів на мікросхемі та власного досвіду.
В даній дипломній роботі приклади описання мультиплексора, що має два адресних, чотири інформаційних входи і один вхід дозволу роботи наведено і за допомогою таблиці дійсності, і на поведінковому рівні.
7.4.2 Демультиплексор
Демультиплексором називається комбінаційний логічний пристрій, призначений для керування передачею даних від одного джерела інформації до декількох вихідних каналів. Відповідно до визначення, демультиплексор в загальному випадку має один інформаційний вхід, n адресних входів і 2n виходів. Таблиця дійсності, що описує роботу демультиплексора з двома адресними входами і входом дозволу роботи Е, має вид (табл. 7.4.2):
Табл.7.4.2. Таблиця дійсності для демультиплексора з двома адресними входами
E |
A1 |
A0 |
Q0 |
Q1 |
Q2 |
Q3 |
|
1 |
x |
X |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
D |
0 |
0 |
0 |
|
0 |
0 |
1 |
0 |
D |
0 |
0 |
|
0 |
1 |
0 |
0 |
0 |
D |
0 |
|
0 |
1 |
1 |
0 |
0 |
0 |
D |
Даній таблиці відповідає наступна функція алгебри логіки:
(2)
На рис. 7.4.2,а наведена логічна схема демультиплексора, що задовольняє функції алгебри логіки (2), а на рис. 7.4.2,б показано його умовне графічне зображення.
а) б)
Рис. 7.4.2. Логічна схема демультиплексора (а) і його умовне графічне позначення (б)
7.4.3 Шифратор
Шифратором, або кодером називається комбінаційний логічний пристрій для перетворення чисел з десяткової системи відліку до двійкової. Входам шифратора послідовно присвоюються значення десяткових чисел, тому подача активного логічного сигналу на один з входів сприймається шифратором як подача відповідного десяткового числа. Цей сигнал перетворюється на виході шифратора в двійковий код. Відповідно до сказаного, якщо шифратор має n виходів, то число його входів повинно бути не більше за 2n. Шифратор, що має 2n входів і n виходів, називається повним. Якщо число входів шифратора менше за 2n, то він називається неповним.
Розглянемо роботу шифратору на прикладі перетворювача десяткових чисел від 0 до 9 в двійково-десятковий код. Таблиця дійсності, що відповідає даному випадку має вигляд (табл. 7.4.3).
Так як число входів даного пристрою менше за 2n = 16, то ми маємо неповний шифратор. Використовуючи таблицю для Q3, Q2, Q1, Q0, стає можливо записати наступні вирази:
Q3 = x8 + x9;
Q2 = x4 +x5 + x6 +x7;
Q1 = x2 + x3 +x6 + x7; (3)
Q0 = x1 + x3 +x5 +x7 +x9.
Табл. 7.4.3. Таблиця дійсності для перетворювача десяткових чисел від 0 до 9 в двійко-десятковий код
x9 |
x8 |
x7 |
х6 |
x5 |
x4 |
x3 |
x2 |
x1 |
x0 |
Q3 |
Q2 |
Q1 |
Q0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
|
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
|
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
|
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
|
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
Отримана система (3) характеризує роботу шифратора. Логічна схема пристрою, що відповідає системі (3) показана на рис. 7.4.3.
Неважко помітити, що в шифраторі даного типу сигнал, що подається на вхід x0 не використовується. Тому відсутність сигналу на будь-якому з входів x0, x1 трактується схемою як наявність нульового сигналу.
Рис. 7.4.3. Логічна схема шифратору десяткових чисел
Основний напрямок використання шифратора в цифрових системах - введення початкової інформації з клавіатури.
При натисканні будь-якої клавіші на відповідний вхід шифратора подається сигнал “логічна одиниця”, який і перетворюється потім в двійково-десятковий код. Варіант пристрою введення інформації показано на рис. 7.4.4.
Рис. 7.4.4. Пристрій введення інформації з клавіатури
В інтегрованому середовищі MAX+PLUS II за допомогою мови AHDL шифратор може бути описаний двома методами:
3) емульованою, за допомогою оператора CASE, таблицею дійсності;
4) на поведінковому рівні.
Описання пристрою, емульованою за допомогою оператора CASE, таблицею дійсності найбільш просте, адже вимагає знання проектувальником лише таблиці дійсності шифратору. Об'єм отриманої програми, порівняно з об'ємом програми описання на поведінковому рівні, має значно менший розмір, але архітектура (логічна схема) самого пристрою залишається проектувальнику невідомою.
Фахівець обирає метод описання виходячи з технічного завдання, заданого об'єму програми, кількості елементарних вентилів на мікросхемі та власного досвіду.
В даній дипломній роботі наведено приклади описання шифратора 10 на 4 і за допомогою таблиці дійсності, і на поведінковому рівні.
7.4.4 Дешифратор
Дешифратором, або декодером називається комбінаційний логічний пристрій для перетворення чисел з двійкової системи відліку до десяткової. Відповідно до визначення дешифратор відноситься до класу перетворювачів коду. Розуміється, що кожному двійковому числу ставиться у відповідність сигнал, що формується на виході пристрою. Таким чином, дешифратор виконує операцію, обернену стосовно шифратора. Якщо число адресних входів дешифратора n пов'язано з числом його виходів m співвідношенням m = 2n, то дешифратор називають повним. В оберненому випадку, якщо m < 2n, дешифратор називають неповним.
Поведінку дешифратора описують таблицею дійсності, аналогічно до таблиці дійсності шифратора (дивись систему 3), але в цій таблиці вхідні і вихідні сигнали помінялися місцями. У відповідності до даної таблиці, так як вихідний сигнал дорівнює 1 тільки на одному, єдиному, наборі вхідних змінних, тобто для одної конституєнти одиниці, алгоритм роботи дешифратора описується системою рівнянь виду:
х0 = ;
х1 = ; (4)
х2 = ;
і так далі, де Qi - значення логічної змінної на і-ому вході пристрою.
В загальному випадку система (4) має вид:
хі = (Q3Q2Q1Q0)і, (5)
де, xi - сигнал на і-ому виході шифратора; (Q3Q2Q1Q0)і - конституанта одиниці, що відповідає двійковому коду і-ої десяткової цифри.
Неважко помітити, що функція алгебраїчної логіки дешифратора (4) відрізняється від функції алгебраїчної логіки демультиплексора (2) лише наявністю в останній додаткового множника, що відповідає значенню сигналу на інформаційному вході D. Тому при D = 1 демультиплексор функціонує як дешифратор. Обернене перетворення дешифратора в демультиплексор вимагає введення двох допоміжних логічних елементів І, що виконують операцію логічного множення між загальним сигналом інформаційного входу D і відповідним логічним результатом множення адресних сигналів (Q3Q2Q1Q0).
Використовуючи дешифратор, можливо побудувати і схему мультиплексора. Для цього схему з рис. 7.4.5,а необхідно доповнити чотирма вихідними логічними елементами АБО (рис. 7.4.5,б).
а) б)
Рис. 7.4.5. Реалізація демультиплексора (а) і мультиплексора (б) з використанням дешифратора
При розробці інтегральних схем використовують декілька логічних структур дешифратора. Їх головна відмінність полягає в швидкодії і кількості використаних елементарних логічних елементів.
Найбільш швидкодійним і в той же час найбільш складним є дешифратор, що прямо реалізує систему функцій алгебри логіки (4). Такий дешифратор називається одноступінчастим або паралельним. Його структурна схема аналогічна до схеми демультиплексора (дивись рис. 7.4.2) за умови D = 1.
Вважаючи, що для реалізації обробки одного вхідного логічного сигналу необхідна деяка умовна одиниця апаратних засобів, число одиниць цих апаратних засобів для n-розрядного дешифратора визначається виразом:
N1 = n2n.
На рис. 7.4.6 наведено умовне графічне зображення дешифратора. Воно відповідає інтегральній схемі двійково-десяткового дешифратора типа 564ИД1.
Якщо при проектуванні основною вимогою є простота системного рішення, використовують інші структурні схеми дешифраторів. Однак, спрощення структури досягається за рахунок падіння швидкодії.
Рис. 7.4.6. Умовне графічне позначення дешифратора
Мікросхеми дешифраторів часто мають входом дозволу роботи E (вхід стробування). Наявність цього входу дозволяє на основі готових інтегральних схем при необхідності збільшення розрядності вхідного коду створювати структури дешифраторного дерева.
7.4.5 Програми реалізації мультиплексорів, демультиплексорів, шифраторів, дешифраторів в інтегрованому середовищі MAX+PLUS II
Програма для реалізації шифратора 10 на 4 (опис таблицею дійсності шифратора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign shifrator1
(
XIP[9..0] : input; - вхідні сигнали
QOP[3..0] : output; - вихідні сигнали
)
Begin
Table
XIP[] => QOP[];
b"0000000001" => b"0000";
b"0000000010" => b"0001";
b"0000000100" => b"0010";
b"0000001000" => b"0011";
b"0000010000" => b"0100";
b"0000100000" => b"0101";
b"0001000000" => b"0110";
b"0010000000" => b"0111";
b"0100000000" => b"1000";
b"1000000000" => b"1001";
End table;
End;
Програма для реалізації шифратора 10 на 4 (опис на поведінковому рівні шифратора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign shifrator2
(
XIP[9..0] : input; - вхідні сигнали
QOP[3..0] : output; - вихідні сигнали
)
Begin
QOP[3]= XIP[8] + XIP[9];
QOP[2]= XIP[4] + XIP[5] + XIP[6] + XIP[7];
QOP[1]= XIP[2] + XIP[3] + XIP[6] + XIP[7];
QOP[0]= XIP[1] + XIP[3] + XIP[5]+ XIP[7] + XIP[9];
End;
Програма для реалізації 3-розрядного дешифратора з інверсними виходами за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
subdesign decipherer1
(
XIP[3..1] : input; - вхідні сигнали
QOP[7..0] : output; - вихідні сигнали
)
begin
case XIP[] is
when 0 => QOP = b"11111110";
when 1 => QOP = b"11111101";
when 2 => QOP = b"11111011";
when 3 => QOP = b"11110111";
when 4 => QOP = b"11101111";
when 5 => QOP = b"11011111";
when 6 => QOP = b"10111111";
when 7 => QOP = b"01111111";
end case;
end;
Програма для реалізації мультиплексора з 2 адресними входами, 4 інформаційними і входом дозволу роботи (опис емульованою таблицею дійсності мультиплексора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
subdesign multiplexer1
(
INFIN[4..1] : input; - інформаційні входи
ADRIN[2..1] : input; - адресні входи
ENA : input; - вхід дозволу роботи (вхід стробування)
Q : output; - вихід мультиплексора
)
begin
if ENA == 0 then - емуляція таблиці дійсності
case ADRIN[2..1] is
when 0 => Q = INFIN[1];
when 1 => Q = INFIN[2];
when 2 => Q = INFIN[3];
when 3 => Q = INFIN[4];
end case;
end if;
end;
- Примітка: компілятор AHDL не дозволяє присутності в
- таблиці дійсності змінних (параметрів), навіть якщо
- змінним (параметрам) раніше вже присвоєне фіксоване
- значення. Тому за логікою таблиці дійсності, на основі
- оператору вибору CASE, формується послідовність перевірки
- значень вхідних сигналів системи.
Програма для реалізації мультиплексора з 2 адресними входами, 4 інформаційними і входом дозволу роботи (опис на поведінковому рівні мультиплексора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
subdesign multiplexer2
(
INFIN[4..1] : input; - інформаційні входи
ADRIN[2..1] : input; - адресні входи
ENA : input; - вхід дозволу роботи (вхід стробування)
Q : output; - вихід мультиплексора
)
begin
Q = INFIN[1] & !ADRIN[2] & !ADRIN[1] & !ENA #
INFIN[2] & !ADRIN[2] & ADRIN[1] & !ENA #
INFIN[3] & ADRIN[2] & !ADRIN[1] & !ENA #
INFIN[4] & ADRIN[2] & ADRIN[1] & !ENA;
end;
- Примітка: Q - функція алгебри логіки, що описує роботу мультиплексора.
Програма для реалізації демультиплексора з 3 адресними входами, 1 інформаційним і входом дозволу роботи за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
subdesign demultiplexer1
(
ADRIN[3..1] : input; - адресний вхід
INFIN : input; - інформаційний вхід
ENA : input; - вхід дозволу роботи (вхід стробування)
Q[7..0] : output; - виходи демультиплексора
)
begin
if ENA == 0 then
case ADRIN[] is
when 0 => Q[0] = INFIN;
when 1 => Q[1] = INFIN;
when 2 => Q[2] = INFIN;
when 3 => Q[3] = INFIN;
when 4 => Q[4] = INFIN;
when 5 => Q[5] = INFIN;
when 6 => Q[6] = INFIN;
when 7 => Q[7] = INFIN;
end case;
end if;
end;
7.4.6 Результати програмної реалізації мультиплексорів, демультиплексорів, шифраторів, дешифраторів
На рис. 7.4.7 зображено вікно сигнального редактору проекту “shifrator1”.
Рис.7.4.7. Результати тестування шифратора 10 на 4
На рис. 7.4.8 зображено вікно сигнального редактору проекту “decipherer1”.
Рис. 7.4.8. Результати тестування повного 3-розрядного дешифратора з інверсними виходами
На рис. 7.4.9 зображено вікно сигнального редактору проекту “multiplexer2”.
Рис. 7.4.9. Результати тестування мультиплексора з 2 адресними входами, 4 інформаційними і входом дозволу роботи
На рис. 7.4.10 зображено вікно сигнального редактору проекту “demultiplexer1”.
Рис. 7.4.10. Результати тестування демультиплексора з 3 адресними входами,1 інформаційним і входом дозволу роботи
7.5 Теоретичні відомості про суматори, віднімані
7.5.1 Суматори
Крайній лівий розряд двійкового числа, такого, наприклад, як 101011, називають самим старшим розрядом (ССР), а крайній правий розряд - самим молодшим розрядом (СМР). Нагадаємо, що розряди представленого двійкового числа в порядку зростання старшинства мають ваги (зправа налiво) 1, 2, 4, 8, 16, 32.
Оскільки в двійкових числах присутні лише дві цифри (0 і 1), таблиця додавання досить проста. Вона приведена на рис. 7.5.1. Як і в випадку додавання десяткових чисел, три перших результати не викликають питань. Що стосується останньої задачі (1+1), то при складанні десяткових чисел в даному випадку відповіддю було б число 2. Таким чином, при двійковому додаванні 1+1=0 плюс перенос 1 в сусідній старший двійковий розряд.
Рис. 7.5.1. Таблиця двійкового додавання
Ще один приклад на складання двійкових чисел представлено на рис. 7.5.2,а.
Рис. 7.5.2. Двійкове додавання а) - приклад на двійкове додавання; б) - скорочена форма таблиці двійкового додавання
Рішення виглядає простим, доки ми не доходимо до розряду двійок, де треба знайти двійкову суму. В десятковій системі ця сума дорівнює 3, що відповідає числу 11. Цей випадок не відображений на рис. 7.5.1. Сума 1+1+1 може виникнути в будь-якому розряді, за винятком розряду одиниць. В нову (скорочену) таблицю на рис. 7.5.2,б включена ще одна можлива комбінація 1+1+1.
Ця таблиця справедлива для всіх розрядів двійкових чисел, за виключенням розряду одиниць.
У відповідній таблиці дійсності (табл. 7.5.1) надано всі можливі комбінації двійкових однорозрядних доданків А, В і сигналу переносу Сin.
Табл.7.5.1. Таблиця дійсності повного суматора
Входи |
Виходи |
||||
Сin |
В |
А |
С0 |
||
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
1 |
1 |
0 |
|
0 |
1 |
0 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
|
1 |
0 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
1 |
|
1 |
1 |
0 |
0 |
1 |
|
1 |
1 |
1 |
1 |
1 |
|
Перенос + В + А |
Сума |
Перенос |
Повні суматори використовуються для складання всіх двійкових розрядів за виключенням одиниць. Вони повинні мати додатковий вхід переносу.
Повний суматор - 3-входова схема. Сигнали на його виходах і С0 отримуються внаслідок складання трьох вхідних сигналів (на входах А, В і Сin).
На рис. 7.5.3 показана розгорнута логічна схема повного суматора. Вона основана на структурній схемі з двома напівсуматорами.
Рис.7. 5.3. Логічна схема повного суматора
На рис. 7.5.4. приведена інша схема повного суматора з використанням двох логічних елементів виключного АБО і трьох логічних елементів І-НЕ. Зазначимо, що схеми, приведені на рис. 7.5.3. і 7.5.4. відрізняються лише заміною логічних елементів І та АБО на логічні елементи І-НЕ.
Рис. 7.5.4. Логічна схема повного суматора з використанням виключного АБО та І-НЕ
Напівсуматори і суматори зазвичай використовують разом. Велика кількість схем, аналогічних до напівсуматорів і повних суматорів, є в складі мікропроцесорних арифметично-логічних приладів (АЛП). Мікропроцесорні АЛП можуть виконувати і операції віднімання, при цьому використовуються ті ж самі напівсуматори і суматори.
Певним чином поєднуючи між собою напівсуматори та повні суматори отримують пристрої, що одночасно виконують додавання декількох двійкових розрядів. Пристрій, схема якого показана на рис. 7.5.5. виконує операцію додавання двох 3-розрядних чисел. Числа-доданки А2А1А0 і В2В1В0. Сигнали, що відповідають значенням розряду одиниць в доданках, поступають на вхід суматора розряду одиниць (напівсуматора). Вхідними сигналами для повного суматора розряду двійок є сигнал переноса з виходу напівсуматора (подається на вхід Сin) і значення А1 і В1 розряду двійок і доданків. Далі суматор четвірок складає А2 і В2 і сигнал переносу з суматора двійок. На двійковому виході пристрою (показано в правому нижньому куті рис. 7.5.5) встановлюється двійкова сума.
В результаті додавання двох 3-розрядних двійкових чисел можливо отримати 4-розрядне число, тому на індикаторі суми маємо додатковий розряд вісімок. Зверніть увагу, що даний розряд пов'язаний з виходом (С0) суматора четвірок.
Рис. 7.5.5. 3-розрядний паралельний суматор
Логіка роботи розглядуваного 3-розрядного суматора майже не відрізняється від послідовності операцій , що виконуються при додаванні вручну (додаванні однорозрядних чисел плюс перенос в наступний розряд). Однак електронний суматор виконує дані операції набагато швидше.
Ще раз зазначимо, що в багаторозрядних суматорах напівсуматори використовуються лише для додавання в розряді одиниць; у всіх iнших розрядах використовуються повні суматори. Описаний вище 3-розрядний суматор називається паралельним суматором.
В паралельному суматорі інформаційні біти всіх розрядів поступають на входи одночасно. Результат (сума) з'являється на виході практично миттєво. Паралельний суматор на рис. 7.5.5 відноситься до класу комбінаційних логічних схем. Для фіксації даних на входах і виходах суматорів зазвичай використовують різноманітні додаткові регістри.
7.5.2 Віднімачі
Далі буде показано, що суматори і віднімачі подібні один до одного, і, крім того напіввіднімачі та повні віднімачі використовуються аналогічно напівсуматорам та повним суматорам. Таблиця двійкового віднімання приведена нижче, в ній наведено правила віднімання двійкових чисел, що подані на рис. 7.5.6, у вигляді таблиці дійсності. Ми бачимо, що В віднімається з А (А і В - вхідні сигнали), результат (різниця) появляється на виході D1. Якщо В більше за А (як в рядку 2 таблиці), потрібно позичити 1 в сусіднього старшого розряду. Сигнал позики вказано у стовпці В0.
Табл. 7.5.2. Таблиця двійкового віднімання
Входи |
Виходи |
|||
А |
В |
Di |
B0 |
|
0 |
0 |
0 |
0 |
|
0 |
1 |
1 |
1 |
|
1 |
0 |
1 |
0 |
|
1 |
1 |
0 |
0 |
|
A-B |
Різниця |
Позика |
Рис. 7.5.6. Таблиця двійкового віднімання
При відніманні багаторозрядних двійкових чисел треба приймати до уваги позику “одиниць” в більш старших розрядах.
Таблиця дійсності, що містить всі можливі комбінації, які виникають при відніманні двійкових чисел, приведена нижче.
Табл. 7.5.3. Таблиця дійсності повного віднімача
Входи |
Виходи |
||||
A |
В |
Bin |
Di |
B0 |
|
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
1 |
1 |
1 |
|
0 |
1 |
0 |
1 |
1 |
|
0 |
1 |
1 |
0 |
1 |
|
1 |
0 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
0 |
|
1 |
1 |
0 |
0 |
0 |
|
1 |
1 |
1 |
1 |
1 |
|
A - B - Bin |
Різниця |
Позика |
Умовне позначення повного віднімача показано на рис. 7.5.7,а. Ліворуч - входи А, В, Bin, праворуч - виходи Di, B0.По аналогії з повним суматором повний віднімач можливо зібрати з двох напіввіднімачів і логічного елемента АБО. На рис. 7.5.7,б показано як потрібно поєднати напіввіднімачі і логічний елемент АБО, щоб отримати повний віднімач. Розгорнута логічна схема повного віднімача наведена на рис. 7.5.7,в. Ця схема працює у відповідності до таблиці дійсності 7.5.3. При необхідності логічні елементи І та АБО можливо замінити на три логічних елемента І-НЕ. В цьому випадку ми отримаємо схему повного віднімача, аналогічну до схеми повного суматора.
Подобные документы
Використання програмованих логічних інтегральних схем для створення проектів пристроїв, їх верифікації, програмування або конфігурування. Середовища, що входять до складу пакету "MAX+PLUS II": Graphic, Text, Waveform, Symbol та Floorplan Editor.
курсовая работа [1,8 M], добавлен 16.03.2015Організаційні основи розробки систем автоматизованого проектування на виробництві, їх впровадження і експлуатація. Загальні відомості про мікропроцесорні пристрої і системи. Основні поняття, визначення, постановка й розв’язок простих оптимізаційних задач.
методичка [16,9 K], добавлен 13.04.2009Структура системи автоматизованого проектування засобів обчислювальної техніки. Опис життєвого циклу продукту за методом Зейда. Основні поняття про системи автоматизованого виробництва. Проектування інформаційних систем та побудова мережевого графіка.
реферат [1,5 M], добавлен 13.06.2010Продукти корпорації Autodesk: інтерфейс, основні команди та принципи роботи в середовищі. Використання систем автоматизованого проектування для виконання картографічних побудов. Система автоматизованого проектування AutoCAD. Створення векторної карти.
курсовая работа [1,7 M], добавлен 24.11.2013Суть, методологія, стадії та етапи інженерного проектування. Структура, принципи побудови і функціонування систем автоматизованого проектування. Технічне, математичне, програмне, інформаційне, лінгвістичне, методичне і організаційне забезпечення САПР.
курс лекций [107,5 K], добавлен 13.09.2009Розробка та проектування інтерфейсу користувача у середовищі Microsoft Visual Studio 2010 з використання Visaul C#. Введення, додавання, вилучення даних. Пошук і фільтрація потрібних записів за допомогою запитів. Реалізація валідації, обробка виключень.
курсовая работа [1,5 M], добавлен 29.03.2017Навчально-методичне забезпечення до курсового проектування, технологічні та організаційні питання проектування автоматизованих економічних систем, зміст і правила оформлення документації. Програмування здійснюється у середовищі Delphi, C++Builder, VB.
методичка [462,6 K], добавлен 12.01.2009Опис алгоритмів реалізації автоматизованої інформаційної системи обслуговування роботи торгового агента в середовищі програмування Delphi. Створення схем технологічного процесу введення, редагування і видачі результатів. Інсталяція і експлуатація проекту.
курсовая работа [118,4 K], добавлен 25.09.2010Microsoft Access як функціонально повна реляційна СУБД, робота в Microsoft Access, створення таблиць БД "Договору НДР". Проектування форм, запитів у режимі конструктора, у режимі таблиці. Розрахунок відомості про виконання договорів за допомогою MS Excel.
контрольная работа [4,2 M], добавлен 22.02.2010Сутність та характерні особливості системного програмування. Історія розвитку комп'ютерних ігор. Створення програми, що реалізує гру "Lines" в середовищі С++ за допомогою автоматного підходу, її правила. Розробка і опис структурної і функціональної схем.
курсовая работа [610,4 K], добавлен 12.02.2014