48898 (588620), страница 6
Текст из файла (страница 6)
Табл. 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 переноситься в крайній лівий тригер ТА. В даному випадку можливо говорити про кільцеве переміщення одиниці в регістрі.