скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыДипломная работа: Розробка цифрових засобів ПЛІС в інтегрованому середовищі проектування MAX+PLUS II

Рис. 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-розрядного паралельного кільцевого регістру зсуву

Входи Виходи
Номер рядка Очищення Паралельне завантаження даних Номер тактового імпульсу 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 переключається в два рази рідше попереднього.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.