Асинхронний лічильник з модулем 10 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Асинхронний лічильник з модулем 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. Цей лічильник можливо також назвати декадним (десятковим) лічильником.

 

Лічильник віднімання

Вище було описано лічильники, що рахують в прямому напрямку (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
         
         
         
         
         
         
         
         
         
         

 

Треба звернути увагу на те, що схема лічильника віднімання нагадує схему лічильника прямої дії на рис. 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.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 194; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.69.152 (0.022 с.)