на головну | список тем | перегляд презинтацій | самотестування | історія створення

 

 

 

Тема 26. Використання мікросхем пам'яті
26.1. Загальні поняття.

Мікросхеми пам'яті (або просто пам'ять, або запам”ятовуючі пристрої - ЗП, англійське - Memory) є групою ще складніших цифрових мікросхем в порівнянні з мікросхемами, розглянутими раніше. Пам'ять - це завжди дуже складна структура, що включає безліч елементів. Правда, внутрішня структура пам'яті регулярна, більшість елементів однакова, зв'язку між елементами порівняльно прості, тому функції, виконувані мікросхемами пам'яті, не дуже складні.
Пам'ять, як і виходить з її назви, призначена для запам'ятовування, зберігання якихось масивів інформації, простіше кажучи, наборів, таблиць, груп цифрових кодів. Кожний код зберігається в окремому елементі пам'яті, званому елементом пам'яті. Основна функція будь-якої пам'яті якраз і полягає у видачі цих кодів на виходи мікросхеми по зовнішньому запиту. А основний параметр пам'яті - це її об'єм, тобто кількість кодів, які можуть в ній зберігатися, і розрядність цих кодів.
Для позначення кількості елементів пам'яті використовуються наступні спеціальні одиниці вимірювання:

  • 1К - це 1024, тобто 210 (читається «кіло-»), приблизно рівно одній тисячі;
  • 1М - це   1048576, тобто 220 (читається «мега-»), приблизно рівно одному мільйону;
  • Г - це 1073741824, тобто 230 (читається «гіга-»), приблизно рівно одному мільярду.

 

Принцип організації пам'яті записується таким чином: спочатку пишеться кількість комірок, а потім через знак множення (косий хрест) пишеться розрядність коду, що зберігається в одній комірці. Наприклад, організація пам'яті 64К X 8 означає, що пам'ять має 64К (тобто 65536) комірок і кожна комірка - восьмирозрядна. А організація пам'яті 4М X 1 означає, що пам'ять має 4М (тобто 4194304) комірок, причому кожний комірка має всього один розряд. Загальний об'єм пам'яті вимірюється в байтах (кілобайтах - Кбайт, мегабайтах - Мбайт, гігабайтах - Гбайт) або в бітах (кілобітах - Кбіт, мегабітах - Мбіт, гігабітах - Гбіт).
Залежно від способу занесення (запису) інформації і від способу зберігання інформації мікросхеми пам'яті розділяються на наступні основні типи:

  • Постійна пам'ять (ПЗП, ROM - Read Only Memory - пам'ять тільки для читання), в яку інформація заноситься один раз на етапі виготовлення мікросхеми. Така пам'ять називається ще масочним ПЗП. Інформація в пам'яті не пропадає при виключенні її живлення, тому її ще називають енергонезалежною пам'яттю.
  • Програмована постійна пам'ять (ППЗП - програмований ПЗП, PROM - Programmable ROM), в яку інформація може заноситися користувачем за допомогою спеціальних методів (обмежене число раз). Інформація в ППЗП теж не пропадає при виключенні її живлення, тобто вона також енергонезалежна.
  • Оперативна пам'ять (ОЗП, RAM - Random Access Memory - пам'ять з довільним доступом), запис інформацію в яку найбільш простий і може проводитися користувачем скільки завгодно раз протягом всього терміну служби мікросхеми. Інформація в пам'яті пропадає при виключенні її живлення.

Існує безліч проміжних типів пам'яті, а також безліч підтипів, але вказані типи найголовніші, принципово відмінні один від одного. Хоча різниця між ПЗП і ППЗП з погляду розробника цифрових пристроїв, як правило, не така вже велика, але в окремих випадках, наприклад, при використовуванні так званої флеш-пам'яті (flash-memory), що є ППЗП з багатократним електричним стиранням і перезаписом інформації, ця різниця дійсно надзвичайно важлива. Можна вважати, що флеш-пам'ять займає проміжне положення між ОЗП і ПЗП.

вп

Малюнок 26.1. Мікросхеми пам'яті: ПЗП (а), ОЗП з двонаправленою шиною даних (б), ОЗП з роздільними шинами вхідних і вихідних даних (в).

В загальному випадку будь-яка мікросхема пам'яті має наступні інформаційні виводи  (малюнок 26.1):

  • Адресні виводи (вхідні), створюючі шину адреси пам'яті. Код на адресних лініях є двійковим номером елемента пам'яті, до якої відбувається звертання в даний момент. Кількість адресних розрядів визначає кількість елементів пам'яті: при кількості адресних розрядів п кількість елементів пам'яті рівна 2П.
  • Виводи даних (вихідні), створюючі шину даних пам'яті. Код на лініях даних є вмістом того елемента пам'яті, до якої проводиться звертання в даний момент. Кількість розрядів даних визначає кількість розрядів всіх елементів пам'яті (звичайне воно буває рівним 1, 4, 8, 16). Як правило, виходи даних мають тип вихідного каскаду ОК або ЗС.
  • У разі оперативної пам'яті крім вихідної шини даних може бути ще і окрема вхідна шина даних, на яку подається код, записуваний у вибраний елемент пам'яті. Інший можливий варіант - поєднання вхідної і вихідний шин даних, тобто двонаправлена шина даних, напрям передачі інформації по якій визначається управляючими сигналами. Двонаправлена шина застосовується звичайно при використовуванні 4-розрядної шини даних або шин даних ще більшої розрядності.
  • Управляючі виводи (вхідні), які визначають режим роботи мікросхеми. В більшості випадків у пам'яті є вхід вибору мікросхеми CS (їх може бути кілька, з'єднаних по функції І). У оперативної пам'яті також обов'язково є вхід запису WR, активний рівень сигналу на якому переводить мікросхему в режим запису.

 

Ми в даному розділі, звичайно, не вивчатимемо всі можливі різновиди мікросхем пам'яті, для цього не вистачить цілої книги. До того ж ця інформація міститься в численних довідниках. Мікросхеми пам'яті випускаються десятками фірм у всьому світі, тому навіть перерахувати все їх не дуже просто, не говорячи вже про те, щоб детально розглядати їх особливості і параметри. Ми всього лише розглянемо різні схеми включення типових мікросхем пам'яті для вирішення найпоширеніших задач, а також методи проектування деяких вузлів і пристроїв на основі мікросхем пам'яті. Саме це має безпосереднє відношення до цифрової схемотехніки. І саме способи включення мікросхем мало залежать від характерних особливостей тієї або іншої мікросхеми тієї або іншої фірми.

 

 

 

 

26.2. Постійна пам'ять

В даному розділі ми не говоритимемо про флеш-пам'ять, оскільки область її вживання поки не дуже широка. Ми обмежимося тільки мікросхемами ПЗП і ППЗП, інформація в які заноситься раз і назавжди (на етапі виготовлення або ж самим користувачем). Ми також не розглядатимемо тут особливості устаткування для програмування ППЗП (так званих програматорів), принципи їх побудови і використовування, це окрема велика тема. Ми вважатимемо, що потрібна нам інформація може бути записана в ПЗП або ППЗП, а коли, як, яким способом вона буде записана, нам не дуже важливо. Всі ці допущення дозволять нам зосередитися саме на схемотехніці вузлів і пристроїв на основі ПЗП і ППЗП (для простоти називатимемо їх надалі просто ПЗП).
Згадаємо тут тільки, що ППЗП діляться на репрограмовані або перепрограмовані ПЗП (РПЗП, EPROM - Erasable Programmable ROM), тобто допускаючі стирання і перезапис інформації, і однократно програмовані ПЗП. У свою чергу РПЗП діляться на ПЗП, інформація в яких стирається електричними сигналами (EEPROM - Electrically Erasable Programmable ROM), і на ПЗП, інформація в яких стирається ультрафіолетовим випромінюванням через спеціальне прозоре віконце в корпусі мікросхеми (власне EPROM - Erasable Programmable ROM). Запис інформації в будь-кого ППЗП проводиться за допомогою подачі певних послідовностей електричних сигналів (як правило, підвищеної напруги) на виводи мікросхеми.
Фірмами-виробниками цифрових мікросхем випускається немало найрізноманітніших ПЗП і ППЗП. Розрізняються мікросхеми постійної пам'яті різним об'ємом (від 32 байт до 8 Мбайт і більше), різною організацією (звичайно кількість розрядів даних буває 4, 8 або 16), способами управління (призначенням управляючих сигналів), типами вихідних каскадів (звичайне ОК або ЗС), різною швидкодією (звичайно затримка складає від одиниць до сотень наносекунд). Але суть всіх мікросхем ПЗП залишається однією і тією ж: є шина адреси, на яку треба подавати код адреси потрібного елемента пам'яті, є шина даних, на яку видається код, записаний в комірці, що адресується, і є входи управління, які дозволяють або забороняють видачу інформації з комірки, що адресується, на шину даних.
На малюнку 26.2 представлено для прикладу декілька найпростіших і типових мікросхем постійної пам'яті.
Мікросхема К155РЕЗ (аналог - N8223N) є однократно програмованим ППЗП з організацією 32 X 8. Початковий стан (до програмування) - всі біти всіх комірок нульові. Для програмування (запису інформації) використовується спеціальний програматор, що подає на розряди даних імпульси високої напруги. Тип вихідних каскадів - відкритий колектор, тобто обов'язково треба включати на виходах резистори, приєднані до шини живлення. Є один управляючий вхід -CS, при позитивному рівні сигналу на якому на всіх виходах встановлюються одиниці.
Мікросхема КР556РТ4 (аналог - 13601) - це також однократно програмована постійна пам'ять з організацією 256 х 4. Початковий стан (до програмування) - всі біти всіх комірок нульові. Тип вихідних каскадів - ОК. Два управляючі входи -CS1 і -CS2 з'єднано за принципом І, тобто для дозволу роботи мікросхеми (для переходу виходів в активний стан) обидва ці сигналу повинні бути нульовими. Для запису інформації в мікросхему використовується програматор.

 

уа

Малюнок 26.2. Приклади мікросхем ППЗП вітчизняного виробництва.

Мікросхема КР556РТ18 (аналог - НМ76161) також є однократно програмованим ППЗП і має організацію 2К X 8. Тип виходів мікросхеми - ЗС. Є три управляючі входи: один інверсний -CS1, два інших - прямі CS2 і CS3, з'єднаних по функції І. Виходи даних переходять в активний стан при нульовому рівні на -CS1 і при одиничних рівнях на CS2 і CS3. Якщо входи управління використовуються для подачі управляючих сигналів (тобто виходи можуть переходити в третій стан), то на виходах треба включати резистори навантажень, підключені до шини живлення. Початковий стан мікросхеми (до програмування) - всі біти всіх комірок одиничні.
Нарешті, мікросхема К573РФ8 (аналог - 127256) - це приклад пам'яті РПЗУ з ультрафіолетовим стиранням інформації. Щоб перепрограмувати пам'ять, необхідно її стерти, для чого протягом деякого часу (звичайно декілька хвилин) треба опромінювати мікросхему через віконце в корпусі ультрафіолетовим випромінюванням (можна використовувати медичний кварцовий опромінювач). Стерта мікросхема має всі біти встановлені в одиницю. Потім проводиться процедура запису за допомогою програматора, дещо відмінного від програматорів однократно програмованих мікросхем. Управляючі входи -CS і -СЕ повинні бути встановлені в нуль для переводу виходів мікросхеми в активний стан. Є спеціальний вхід UPR для подачі програмуючої високої напруги, на який при читанні інформації з мікросхеми треба подавати напругу живлення. Тип вихідних каскадів - ЗС. Мікросхеми цього типу найповільніші, їх затримки найбільші.
Основні тимчасові характеристики мікросхем ПЗП - це дві величини затримки. Затримка вибірки адреси пам'яті - цей час від установки вхідного коду адреси до установки вихідного коду даних. Затримка вибірки мікросхеми - цей час від установки активного дозволяючого управляючого сигналу CS до установки вихідного коду даних пам'яті. Затримка вибірки мікросхеми звичайна у декілька разів менше затримки вибірки адреси.
Вміст ПЗП звичайно зображається у вигляді спеціальної таблиці, званою картою прошивки пам'яті. В таблиці показується вміст всіх елементів пам'яті, причому в кожному рядку записується вміст 16 (або 32) елементів пам'яті, що послідовно йдуть (при наростанні коду адреси). При цьому, як правило, використовується 16-ткове кодування.
Приклад карти прошивки ПЗП з організацією 256 X 8 показана в таблиці26.1 (всі біти всіх комірок вважаються встановленими в одиницю). Користуватися таблицею дуже просто. Наприклад, для того, щоб подивитися вміст елемента пам'яті з 16-ковою адресою 8А, треба узяти рядок таблиці з номером 80 і стовпець таблиці з номером А (даний комірка в таблиці виділений жирним шрифтом).
Будь-які мікросхеми ПЗП легко можна включати так, щоб зменшувати або збільшувати кількість адресних розрядів, тобто зменшувати або збільшувати кількість елементів пам'яті, що використовуються. І то і інше часто потрібне при побудові схем цифрових пристроїв.

нек

упі

Малюнок 26.3. Зменшення кількості адресних розрядів ПЗП.

Для зменшення кількості адресних розрядів необхідно на потрібне число старших адресних входів подати нульові сигнали. Кожний відключений таким чином адресний розряд зменшує кількість комірок ПЗП удвічі. Наприклад, на малюнку  26.3 показано, як з мікросхеми з організацією 2К X 8 зробити мікросхему 512 X 8. Два старші розряди адреси пам'яті відключено (на них подані нульові сигнали). Використовуватися будуть тільки молодші (верхні в таблиці прошивки) 512 елементів пам'яті, і лише їх треба буде програмувати. Звичайно, набагато краще підібрати мікросхему саме з тією кількістю комірок, яка дійсно необхідна в даній схемі, але це, на жаль, можливо не завжди.

еу

Малюнок 26.4. Збільшення кількості адресних розрядів ПЗП за допомогою дешифратора.

Задача збільшення кількості адресних розрядів ПЗП зустрічається значно частіше за задачу зменшення кількості адресних розрядів. В результаті такого збільшення зростає об'єм ПЗП, об'єми окремих мікросхем підсумовуються. Для збільшення адресних розрядів звичайно застосовуються мікросхеми дешифраторів (малюнок 26.4). Молодші розряди шини адреси при цьому подаються на з'єднані адресні входи всіх мікросхем, а старші - на управляючі (адресні) входи дешифратора. Вихідні сигнали дешифратора дозволяють роботу завжди тільки однієї мікросхеми пам'яті. В результаті на загальну шину даних всіх ПЗП видає свою інформацію тільки одна мікросхема. На малюнку для простоти не показані вихідні резистори з розрядів даних на шину живлення, підключення яких частіше за все необхідно, оскільки тип виходів даних мікросхем ПЗП - це ОК або ЗС.
В результаті подібного об'єднання мікросхем ПЗП може збільшитися час вибірки адреси одержаного єдиного ПЗП. В даному випадку (див. малюнок 26.4) воно буде рівно максимальній з двох величин: часу вибірки адреси однієї мікросхеми і суми двох затримок: затримки дешифратора і затримки вибірки мікросхеми ПЗП.
Якщо треба об'єднати дві мікросхеми (тобто додати всього один розряд адресної шини), то можна обійтися без дешифратора, подаючи на вхід -CS однієї мікросхеми прямий додатковий сигнал адреси, а на вхід -CS іншої мікросхеми - цей же сигнал з інверсією. Вживання дешифратора 3-8 дозволяє об'єднати 8 мікросхем ПЗП (додати три адресні розряди), а вживання дешифратора 4-16 додає чотири адресні розряди, об'єднуючи 16 мікросхем ПЗП.

Часто виникає також задача збільшення кількості розрядів даних. Для цього необхідно всього лише об'єднати однойменні адресні входи потрібної кількості мікросхем ПЗП, а виходи даних ПЗП не об'єднуються, а утворюють код з великим числом розрядів. Наприклад, при об'єднанні таким чином двох мікросхем з організацією 8К X 8 можна одержати ПЗП з організацією 8К X 16.

 

 

 

 

26.3. ПЗП як універсальна комбінаційна мікросхема

Одне з найпоширеніших вживань мікросхем ПЗП - заміна ними складних комбінаційних схем. Таке рішення дозволяє істотно спростити проектований пристрій і понизити кількість комбінаційних мікросхем, що використовуються, а також іноді зменшити споживаний струм і збільшити швидкодію схеми.                                        
Суть пропонованого підходу зводиться до наступного. Якщо розглядати адресні входи мікросхеми ПЗП як входи комбінаційної схеми, а розряди даних - як виходи цієї комбінаційної схеми, то можна сформувати будь-яку необхідну таблицю істинності даної комбінаційної схеми. Для цього всього лише треба скласти таблицю прошивки ПЗП, відповідну потрібній таблиці істинності. В цьому випадку не треба ні підбирати логічні елементи, ні оптимізувати їх з'єднання, не думати про те, чи можна взагалі побудувати необхідну комбінаційну схему із стандартних мікросхем. Важливо тільки, щоб кількість необхідних входів не перевищувала кількості адресних розрядів ПЗП, а кількість необхідних виходів не перевищувала розрядності шини даних ПЗП.

уафі

Малюнок 26.5. Приклад комбінаційної схеми, замінюваної на ПЗП.

Як приклад розглянемо досить складну комбінаційну схему (малюнок 26.5), що має вісім входів і чотири виходи. Функція схеми зводиться до наступного. Перш за все вона розпізнає два різні 5-розрядні вхідні коди (11001 і 10011) у разі, коли на вході дозволу -Разр. присутній нульовий сигналюнок 2А при приході сигналів -Строб 1 і -Строб 2 схема видає на вихід негативні імпульси. Причому перший вихідний сигнал виробляється у разі, коли вхідний код рівний 11001 і прийшов сигнал -Строб 1, другий вихідний сигнал - при тому ж коді, але по вхідному сигналу -Строб 2. Третій і четвертий вихідні сигнали виробляються при вхідному коді 10011 і при приході відповідно управляючих сигналів -Строб 1 і -Строб 2. Тобто логіка роботи досить складна, і різноманітних логічних елементів потрібен немало.
Але всю цю схему можна замінити всього лише однією мікросхемою ПЗП, наприклад типа РТ4, має 8 адресних входів і 4 виходи даних (малюнок 26.6). При цьому п'ять розрядів вхідного коду подаються на молодші розряди адреси ПЗП (А0...А4), вхідний сигнал -Разр. - на адресний вхід А5, сигнал -Строб 1 - на вхід А6, сигнал -Строб 2 - на вхід А7. Молодший розряд даних пам'яті D0 використовується для першого вихідного сигналу, D1 - для другого вихідного сигналу, D2 - для третього вихідного сигналу, D3 - для четвертого вихідного сигналу. Мікросхема ПЗП завжди вибрана (управляючі сигнали -CS1 і -CS2 - нульові). На виходах даних пам'яті включені резистори, оскільки тип виходів мікросхеми РТ4 – ОК.
Складемо карту прошивки ПЗП. Активні вихідні сигнали - нульові, а пасивні - одиничні. Значить, в більшості комірок ПЗП будуть записані коди F (тобто всі вихідні сигнали пасивні). Активному (нульовому) першому вихідному сигналу при пасивних інших відповідатиме двійковий код даних 1110 (16-ковий код - Е), активному другому вихідному сигналу відповідатиме двійковий код 1101 (16-ковий - D), активному третьому вихідному сигналу - двійковий код 1011 (або В), активному четвертому вихідному сигналу - двійковий код 0111 (або 7). Тобто тільки вміст чотирьох елементів пам'яті відрізнятиметься від F.


іа

Малюнок 26.6. Включення ПЗП для заміни комбінаційної схеми, показаної на малюнку 26.5.

Наприклад, код Е буде записаний в комірці з такою адресою, значення п'яти молодших розрядів якого (А0...А4) рівні селектованому вхідному коду 11001, розряду А5 - нулю (сигнал -Разр. активний), розряду А6 - нулю (сигнал -Строб 1 активний) і розряду А7 - одиниці (сигнал -Строб 2 пасивний). Тобто одержуємо двійковий код адреси 10011001 (або в 16-ковому коді 99). Так само код D буде записаний в комірка з адресою 01011001 (тобто 16-ричное 59), код В - в комірка з адресою 10010011 (тобто 93), а код 7 - в комірка з адресою 01010011 (тобто 53). Карта прошивки ПЗП, що вийшла, приведена в таблиці 26.2. Вона повністю співпадає з таблицею істинності замінюваної комбінаційної схеми.

пп

Може здатися, що таке використовування мікросхеми ПЗП занадто марнотратне, надмірно, але це не так. Набагато важливіше, що схема сильно спрощується. Якщо ж узяти комбінаційну схему з складнішою таблицею істинності, то можливості ПЗП будуть використані повніше. До того ж велика перевага такого рішення полягає в тому, що при необхідності зміни логіки роботи комбінаційної схеми буде потрібно всього лише перепрошивка ПЗП, а не проектування нової схеми з логічних елементів. Затримка ПЗП при заміні комбінаційної схеми будь-якої складності залишається однією і тією ж, вона рівна затримці вибірки адреси мікросхеми ПЗП. При складній замінюваній комбінаційній схемі ПЗП може виявитися навіть швидше.
Проте використовування ПЗП для заміни комбінаційних схем має і свої досить серйозні недоліки. Річ у тому, що мікросхеми ПЗП ще більше, ніж комбінаційні мікросхеми, чутливі до моменту зміни вхідних сигналів (адресних розрядів). На виходах даних мікросхем ПЗП при будь-якій зміні вхідного коду адреси можуть з'являтися короткі паразитні імпульси. Тому краще всього використовувати ПЗП для заміни комбінаційних схем, які працюють в статичному режимі, і в яких короткі імпульси не мають значення.
Можна також застосовувати методи синхронізації вихідних сигналів ПЗП (малюнок 26.7) за допомогою управляючих сигналів вибору мікросхеми CS (а) або ж за допомогою вихідних трігерів і регістрів (б). Суть синхронізації полягає в тому, що вихідні сигнали ПЗП треба дозволяти або фіксувати за допомогою синхросигнала тільки тоді, коли всі перехідні процеси усередині мікросхеми, викликані зміною коду адреси, вже закінчилися, і паразитні імпульси на виходах гарантований відсутні.

фіа

Малюнок 26.7. Методи синхронізації вихідних сигналів ПЗП за допомогою сигналу CS (а) і вихідного регістра (б).

Мікросхеми ПЗП можуть замінювати собою будь-які комбінаційні мікросхеми: дешифратори, шифратори, компаратори кодів, суматори, мультиплексори, перетворювачі кодів і т.д. Проте при подібній заміні завжди варто подумати чи не краще використовувати вже готові мікросхеми, ніж виготовляти нові (програмувати ПЗП). Мікросхеми ПЗП можуть виявитися повільнішими за стандартні комбінаційні мікросхеми і споживати більший струм живлення. До того ж вони можуть зажадати використовування вихідних резисторів, якщо мікросхеми мають виходи ОК або при використовуванні входів CS у мікросхем з виходами ЗС. Інша справа, коли ПЗП виконує функцію, відмінну від функції стандартної комбінаційної мікросхеми. Найпростіший приклад - дешифратор з позитивними, а не з негативними (як в стандартних серіях) активними вихідними сигналами.
В загальному випадку ПЗП можна розглядати як перетворювач вхідного коду (коду адреси) у вихідний код (код даних) по довільному закону, що задається розробником. Це дозволяє не тільки перетворювати різні стандартні коди, але і виконувати безліч інших функцій, наприклад використовувати ПЗП як найпростіший табличний обчислювач. Для цього треба на адресні розряди ПЗП подати код вхідного числа (аргументу), а на виходах розрядів даних одержати код вихідного числа (функції). Такий табличний обчислювач має дуже високу швидкодію в порівнянні з іншими типами обчислювачів (час обчислення функції рівно затримці вибірки адреси ПЗП).
Як найпростіший приклад розглянемо обчислювач для піднесення в квадрат 4-розрядного двійкового числа (малюнок 26.8). Обчислювач виконаний на мікросхемі ПЗП типа РЕЗ, у якого використано чотири розряди адреси і вісім розрядів даних. Він дозволяє одержувати двійкові коди квадратів будь-яких чисел в діапазоні від 0 (або в двійковому коді 0000, в 16-ковому коді 0) до 15 (або в двійковому коді 1111, в 16-ковому коді F), які приймають значення від 0 (або в двійковому коді 00000000, в 16-ковому - 00) до 225 (або в двійковому коді 11100001, в 16-ковому -Е1).

 

цук

Малюнок 26.8. Обчислювач квадратів вхідних чисел.

Карта прошивки ПЗП обчислювача квадратів (таблиця 26.3) буде дуже проста: код даних в кожній комірці рівний квадрату коду адреси цієї комірки. Використовується всього 16 елементів пам'яті, вміст решти 16 комірок не має значення (що позначене в таблиці XX).

3к

На такій же точно схемі (малюнок 26.8) можна зробити і обчислювач квадратів в двійково-десятковому коді. В цьому випадку буде використано всього лише десять елементів пам'яті з адресами від 0 до 9, а в комірках будуть записані їх квадрати від 0 до 81.
Недолік будь-якого табличного обчислювача на ПЗП - це необхідність збільшення удвічі необхідного об'єму пам'яті при збільшенні розрядності вхідного числа на одиницю. Наприклад, при 8-розрядних вхідних числах потрібен ПЗП з кількістю комірок 256, при 16-розрядних вхідних числах - ПЗП з кількістю комірок 64К, а при 32-розрядних вхідних числах- ПЗП з кількістю комірок 4Г. Такі великі об'єми дуже важко реалізувати на мікросхемах, що серійно випускаються. Тому табличні обчислювачі на ПЗП звичайно будуються тільки для розрядності вхідних чисел не більше 16.
Одне з найпоширеніших вживань ПЗП як перетворювача кодів - це побудова на їх основі всіляких індикаторів, що відображають на екрані букви і цифри. ПЗП в даному випадку переводить код (номер) букви або цифри в її зображення. Звичайно, в даному випадку замінити ПЗП комбінаційною схемою абсолютно неможливо, оскільки букв і цифр дуже багато, а їх зображення дуже різноманітні.
Найпростіший приклад даного вживання ПЗП - це управління знаковим семисегментним індикатором, знайомим всім по калькуляторах, касових апаратах, електронному годиннику і т.д. В семисегментних індикаторах зображення всіх цифр від 0 до 9 будується всього з семи сегментів (відрізків ліній) (малюнок 26.9).

цк

Малюнок 26.9. Дешифратор знакового семисегментного індикатора на ПЗП.

Щоб відобразити у вигляді цифри 4-розрядний двійковий код, треба цей код перетворити в 7-розрядний код, кожному розряду якого відповідатиме один сегмент індикатора. Тобто коду 0000 винне відповідати зображення нуля (6 сегментів, розташованих по периметру), а коду 0001 - зображення одиниці (два праві вертикальні сегменти). Для підвищення універсальності індикатора зручно доповнити десять цифр ще і шістьма буквами, що використовуються в 16-ковому коді (А, В, С, D, E, F). Сім сегментів індикатора дозволяють зробити і це, правда, зображення букв при цьому виходять не дуже якісними.
ПЗП типу РЕЗ, що використовується як дешифратор індикатора, має 4 входи і 7 виходів (старший розряд адреси і старший розряд даних не використовуються). Карта прошивки ПЗП приведена в таблиці 26.4. Нульовий сигнал на кожному з виходів даних ПЗП запалює відповідний йому сегмент.

ио

ПЗП дозволяють також формувати і складніші зображення букв і цифр - матричні. Такі зображення використовуються, наприклад, в табло типу ”біжуча стрічка”. Кожна буква цифра, інший знак розташовується в даному випадку на прямокутній матриці, званій знакомісцем і що складається з декількох рядків і декількох стовпців точкових елементів зображення, які можуть запалюватися незалежно один від одного. Чим більше рядків і стовпців в знакомісці, тим більш якісне зображення букв і цифр можна одержати. Мінімально можливий розмір знакомісця - 5 стовпців на 7 рядків, тобто всього 35 елементів зображення.
ПЗП в даному випадку містить в собі інформацію про зображення всіх можливих букв і цифр (звичайно цей набір включає 256 символів). Але вихідний код ПЗП має мало розрядів, тому кожний такий код, відповідний одній адресі, уявляє собою інформацію про зображення не цілого символу, а тільки одного його рядка (або стовпця). Інформація про цілий символ займає в ПЗП стільки комірок, скільки в зображенні символу є стовпців (або рядків). Приклад матричного знакогенератора на ПЗП приведений на малюнок 26.10.

ва

Малюнок 26.10. Матричний знакогенератор на ПЗП.

В даному випадку використовується  матриця з 8 рядків і 8 стовпців. В кожний комірці ПЗП записується код зображення однієї з 8 рядків одного з 256 символів. Зображення одного символу займає 8 послідовно розташованих комірок в ПЗП. Для букв і цифр правий стовпець знакомісця не використовується, він служить для відділення знаків один від одного. Він може і використовуватися у разі спеціальних (наприклад, графічних) символів. У разі матричного світлодіодного індикатора перебір рядків може здійснюватися 3-розрядним лічильником з дешифратором 3-8 на його виході. У разі телевізійного монітора перебір рядків здійснюється за допомогою генератора вертикальної розгортки зображення.
Складання карти прошивки такого ПЗП непросте, воно звичайне проводиться за допомогою спеціальних програм на комп'ютері. Але принцип складання простий. Наприклад, якщо активному (засвіченому) елементу зображення відповідає одиничний сигнал, то для нульового рядка символу «М», показаного на малюнку, в ПЗП треба записати 10000010, для першого рядка - код 11000110, для другого - код 10101010, для третього - 10010010 і т.д.

 

 

 

 

26.4. ПЗП в генераторах імпульсних послідовностей

Наступне найважливіше вживання ПЗП - це побудова генераторів складних послідовностей цифрових імпульсів. Такі генератори широко використовуються в самих різних вимірювальних системах, в пристроях автоматики, в телевізійних системах, в схемах управління лінійними або матричними індикаторами і т.д.
Задача в даному випадку ставиться таким чином. Необхідно сформувати послідовність з декількох сигналів різної тривалості, зсунутих щодо один одного на різні тимчасові інтервали. Причому послідовність ця може бути як разовою (однократно тією, що починається по зовнішньому сигналу), так і періодичною, безперервно тією, що повторюється.

ва

Малюнок 26.11. Приклад структури генератора послідовностей сигналів на ПЗП.

Найпоширеніша структура генератора послідовностей вихідних сигналів на ПЗП включає тактовий генератор потрібної частоти, лічильник з необхідним числом розрядів, ПЗП і вихідний регістр (малюнок 26.11). Лічильник перебирає адреси ПЗП, ПЗП послідовно видає на виходи даних всі записані в нього коди. Вихідний регістр, тактований тим же тактовим сигналом, що і лічильник, служить для запобігання появи у вихідних сигналах паразитних імпульсів і для забезпечення одночасного перемикання всіх вихідних сигналів (що особливо важливе у разі, коли використовуються кілька паралельно включених мікросхем ПЗП для збільшення розрядності шини даних).

вап

Малюнок 26.12. Тимчасова діаграма формованих вихідних сигналів.

Розглянемо приклад. Хай необхідно безперервно формувати періодичну послідовність з шести вихідних сигналів відповідно до тимчасової діаграми малюнок 26.12. Одержати таку послідовність можна, звичайно, за допомогою комбінаційних схем, включених на виході лічильника або за допомогою безлічі одновібраторів, запускаючих один одного, але і те і інше рішення занадто громіздке і складне як в проектуванні, так і в настройці. Вживання ж ПЗП значно спрощує задачу. Достатньо провести нескладні розрахунки і скласти карту прошивки ПЗП.
Розрахунки зводяться до наступного.
Перш за все визначаємо мінімально можливу тактову частоту (з метою мінімізації необхідного об'єму ПЗП). Для цього треба виділити максимальний часовий інтервал (дискрет часу), який укладається ціле число раз у всі тимчасові зсуви, затримки, тривалості необхідної діаграми. В нашому випадку цей дискрет рівний одному розподілу по осі часу. Наприклад, якщо тривалість цього розподілу рівна 250 нс, то і період тактового сигналу треба вибирати 250 нс, тобто тактова частота буде рівна 4 Мгц. Можна, звичайно, вибрати її і кратною 4 Мгц, наприклад 8 Мгц, 12 Мгц, але тоді буде потрібно удвічі або втричі більший об'єм ПЗП. Якби нам треба було формувати тільки три верхні сигнали (Вихід 0, Вихід 1, Вихід 2), то період тактової частоти можна б було брати бути удвічі більше (в нашому прикладі - 500 не), оскільки для цих сигналів все тривалості кратні двом розподілам.
Другий розрахунок зводиться до визначення кількості комірок і розрядності ПЗП. Шість вихідних сигналів схеми вимагають шести розрядів даних ПЗП. Тривалість послідовності рівна 20 тактам (або 14 в 16-ковому коді), тобто не рівна 2n, тому лічильник доведеться скидати в нуль через кожні 20 тактів, для чого буде потрібно ще один розряд даних ПЗП. Разом буде потрібно 7 розрядів. А для перебору 20 тактів послідовності буде потрібно 5-розрядний лічильник, оскільки 24 = 16 (недостатньо), а 25 = 32 (достатньо). Значить, розрядність шини адреси ПЗП також повинна бути не менше п'яти, тобто мінімальні вимоги до організації ПЗП - це 32 X 8, значить, підійде мікросхема ПЗП типа РЕЗ.
Нарешті, третій розрахунок торкається умов правильної роботи схеми. Генератор послідовності працюватиме правильно, якщо за період тактового сигналу встигнуть спрацювати лічильник і ПЗП. Тобто сума затримки повного перемикання лічильника і затримки вибірки адреси ПЗП не повинна перевищувати періоду тактового сигналу.


рак

Малюнок 26.13. Перший варіант схеми генератора послідовності сигналів на ПЗП.

Таким чином, один з можливих варіантів схеми генератора послідовності імпульсів (малюнок 26.13) включатиме тактовий генератор, п'ятирозрядний лічильник на базі ИЕ19, ПЗП типа К155РЕЗ і 8-розрядний вихідний регістр ИР27. Оскільки лічильник спрацьовує по негативному фронту тактового сигналу, а регістр - по позитивному фронту тактового сигналу, необхідно включити інвертор. На схемі для простоти не показані резистори на виходах даних типа ОК мікросхеми ПЗП.
З схеми видно, що існує ще одна додаткова умова правильної роботи, зв'язана з використанням сигналу скидання. За період тактового сигналу повинен встигнути спрацювати регістр (записати в себе сигнал скидання з виходу ПЗП), повинен скинутися лічильник і повинне видати код ПЗП. Тобто сума затримок регістра, скидання лічильника і вибірки адреси ПЗП не повинна перевищувати періоду тактового сигналу.
Тепер складемо карту прошивки ПЗП. Для цього сформуємо таблицю значень всіх семи вихідних сигналів у всіх двадцяти робочих тактах генератора послідовностей (таблиця 26.5). Значення шести вихідних сигналів (Вихід 0 ... Вихід 5) ми безпосередньо беремо з необхідної тимчасової діаграми (див. малюнок 26.12). Хоча ці сигнали приходитимуть на вихід схеми із затримкою на один такт через наявність вихідного регістра, але при періодичній роботі генератора послідовності це не має ніякого значення.
Сьомий сигнал (Вихід 6) використовується як скидання лічильника, він рівний нулю від нульового такту до 18 (в 16-ковому коді - 12) такту і рівний одиниці в останньому дев'ятнадцятому такті (в 16-ковому коді - 13). Цим одиничним сигналом лічильник скидатиметься в нуль, тобто робота схеми після 19 такту поновлюватиметься з нульового такту.
Хай нам потрібна більш висока швидкодія схеми. Наприклад, період тактового генератора повинен бути рівний 100 нс і навіть менший. В цьому випадку асинхронний лічильник типа ИЕ19 вже не підійде через свою низьку швидкодію. Треба використовувати 5-розрядний синхронний лічильник. Можна, звичайно, включити дві мікросхеми 4-розрядних лічильників типа ИЕ17, але можна обійтися і одним 4-розрядним лічильником, якщо задіювати той, що залишився вільним вихід даних ПЗП і що залишився вільним розряд регістра (малюнок 26.14). При цьому без жодного зменшення швидкодії можна використовувати синхронний лічильник з асинхронним перенесенням ИЕ7, оскільки потрібна всього одна мікросхема лічильника. 


укр

Малюнок 26.14. Другий варіант схеми генератора послідовності з 4-розрядним синхронним лічильником ИЕ7.

Карта прошивки ПЗП генератора послідовностей залишається тією ж самою, що і у попередньому випадку, але додається один (сьомий) розряд шини даних ПЗП. Значення цього розряду повинне бути рівно нулю в п'ятнадцяти тактах з нульового до 14 (Е в 16-ковому коді), в чотирьох тактах з 15 (F в 16- ковому  коді) по 18 (12 в 16-ковому коді) його значення повинне бути рівним одиниці (код даних збільшиться на 80), а в останньому 19 такті (13 в 16-ковому коді) - знову нулю. В результаті адреси ПЗП перебиратимуться від 0 до 15 (старший розряд адреси - нульовий), потім від 16 до 19 (в старшому розряді адреси одиниця, а лічильник після переповнювання працює з нуля), а потім знову від нульової адреси (лічильник скинеться сигналом Вихід 6, а старший розряд адреси пам'яті стане нульовим). Карта прошивки ПЗП, що виходить в результаті, приведена в таблиці 26.6.

п

рг

                                                           
Звичайно, розглянутий приклад досить простий, при використовуванні ПЗП більшого об'єму послідовності сигналів, що генеруються, можуть бути набагато складнішими, і вихідних сигналів може бути більше, але суть залишається: ПЗП видає будь-які послідовності вихідних сигналів мінімальними засобами. Причому послідовності, що генеруються, можна досить просто змінювати, замінюючи ПЗП на мікросхеми з іншою картою прошивки.

 

 

 

26.5. Мікропрограмні автомати на ПЗП

Використовування мікропрограмних автоматів - це наступний крок по шляху ускладнення «інтелекту» цифрових схем. На основі мікропрограмних автоматів можна будувати пристрої, які працюють по досить складним алгоритмам, виконують різні функції, визначувані вхідними сигналами, видають складні послідовності вихідних сигналів. При цьому алгоритм роботи мікропрограмного автомата може бути легко змінений заміною прошивки ПЗП.
На відміну від пристроїв на «жорсткій» логіці, принцип роботи яких однозначно визначається елементами і способом їх з'єднання, що використовуються, що розглядалися раніше, мікропрограмні автомати за допомогою однієї і тієї ж схеми можуть виконувати самі різні функції. Тобто вони набагато більш гнучкіші, ніж схеми на «жорсткій» логіці. До того ж проектувати мікропрограмні автомати з погляду схемотехніки досить просто. Недоліком будь-якого мікропрограмного автомата в порівнянні з схемами на «жорсткій» логіці є менша гранична швидкодія і необхідність складання карти прошивки ПЗП з мікропрограмами, часто досить складними.
Найпоширеніша структура мікропрограмного автомата (малюнок 26.15) включає всього лише три елементи: ПЗП, регістр, що спрацьовує по фронту, і тактовий генератор.

ef

Малюнок 26.15. Структура мікропрограмного автомата.

ПЗП має (L+M) адресних розрядів і N розрядів даних. Регістр використовується з кількістю розрядів (N+L). Розряди даних ПЗП записуються в регістр по позитивному фронту тактового сигналу генератора. Частина цих розрядів (М) використовується для утворення адреси ПЗП, інша частина (N-М) служить для формування вихідних сигналів. Вхідні сигнали (L) поступають на входи регістра і використовуються спільно з частиною вихідних розрядів ПЗП для отримання адреси ПЗП.
Схема працює таким чином. В кожному такті ПЗП видає код даних, тим самим визначаючи не тільки стан вихідних сигналів схеми, але і адресу ПЗП, яка встановиться в наступному такті (після наступного позитивного фронту тактового сигналу). На цю наступну адресу впливають також і вхідні сигнали. Тобто на відміну від формувача послідовності сигналів, розглянутого в попередньому розділі, в даному випадку адреси можуть перебиратися не тільки послідовно (за допомогою лічильника), але і в довільному порядку, визначуваному прошивкою ПЗП, званою мікропрограмою.
Умовою правильної роботи схеми буде наступне. За один період тактового сигналу повинні встигнути спрацювати регістр і ПЗП. Тобто сума затримки регістра і затримки вибірки адреси ПЗП не повинна перевищувати періоду тактового сигналу. Відзначимо також, що вхідні сигнали мікропрограмного автомата не можна подавати безпосередньо на адресні входи ПЗП (без регістра), оскільки їх асинхронна (по відношенню до тактового сигналу) зміна може викликати перехідний процес на виходах даних ПЗП саме в той момент, коли вихідні сигнали ПЗП записуються в регістр. В результаті в регістр може записатися невірна інформація, що порушить роботу всієї схеми. Регістр же синхронізує зміни вхідних сигналів з тактовим сигналом, внаслідок чого всі розряди коду адреси ПЗП міняються одночасно - по позитивному фронту тактового сигналу. Регістр повинен обов'язково спрацьовувати по фронту, використовування регістра-защіпки не допускається, оскільки він може викликати лавиноподібний перехідний процес.
Можливості такої простої схеми виявляються дуже великими. Наприклад, мікропрограмний автомат може видавати послідовності вихідних сигналів у відповідь на певну зміну вхідних сигналів. Він може також тимчасово зупинити видачу вихідних сигналів до приходу вхідних сигналів. Він може аналізувати тривалість вхідного сигналу і залежно від неї видавати ті або інші вихідні сигнали. Він може також і багато що інше.
Сформулюємо декілька елементарних функцій, з яких можуть складатися алгоритми роботи мікропрограмного автомата (малюнок 26.16).

  • Послідовний перебір адрес ПЗП (наприклад, для видачі послідовності вихідних сигналів).
  • Періодичне повторення послідовності адрес ПЗП (наприклад, для повторення послідовності вихідних сигналів).
  • Зупинка в якійсь адресі ПЗП (наприклад, для очікування зміни вхідного сигналу).
  • Тимчасове відключення реакції на вхідні сигнали (наприклад, для того, щоб закінчити обробку реакції на попередню зміну вхідних сигналів). Ця функція на малюнку не показана.

efh

Малюнок 26.16. Елементарні функції мікропрограмного автомата: послідовний перебір (а), циклічне повторення (б) і зупинка (в).

Як приклад розглянемо виконання деяких елементарних функцій мікропрограмним автоматом, показаним на малюнку 26.17.
ПЗП має організацію 64 X 8 (це можуть бути, наприклад, дві мікросхеми РЕЗ або одна мікросхема РТ18), кількість розрядів регістра рівна десяти (наприклад, це може бути дві мікросхеми ИР27). Схема має два вхідні сигнали і чотири вихідних сигнали. Така організація мікропрограмного автомата добра тим, що його мікропрограма (тобто карта прошивки ПЗП) дуже наочна, легко складається і читається.

hr

Малюнок 26.17. Приклад практичної схеми мікропрограмного автомата на ПЗП.

Вихідні розряди даних ПЗП діляться на дві групи по 4 сигнали: молодші йдуть на утворення наступної адреси ПЗП, старші утворюють чотири вихідні сигнали. Вхідні сигнали поступають (через регістр) на два старші розряди адреси ПЗП. Якщо ми зобразимо карту прошивки ПЗП в звичному для нас вигляді таблиці з чотирьох рядків і 16 стовпців (таблиця 26.7), то в цій таблиці будуть наочно видні як стан кожного з внутрішніх сигналів, так і реакція схеми на будь-який вхідний сигнал, а також стану всіх вихідних сигналів в кожному такті.

fgh

Перш за все, легко помітити, що вибір того або іншого рядка таблиці проводиться старшими розрядами коду адреси ПЗП, тобто вхідними сигналами мікропрограмного автомата. Таким чином, будь-яка зміна вхідних сигналів приводить до переходу в карті прошивки на інший рядок. Наприклад, рядок 00 відповідатиме нульовим вхідним сигналам мікропрограмного автомата, а рядок 30 - одиничним вхідним сигналам.
Тепер подивимося на структуру 8-розрядного коду даних ПЗП. Молодші чотири розряди цього коду (правий, молодший знак 16-кового коду в таблиці) відповідають чотирьом молодшим розрядам коду адреси ПЗП. Старші чотири розряди коду даних ПЗП (лівий, старший знак 16- кового  коду в таблиці) відповідають чотирьом вихідним сигналам мікропрограмного автомата. Тобто безпосередньо за 16- ковим  кодом даних з таблиці можна сказати, по-перше, якою буде наступна адреса ПЗП, і по-друге, якими будуть вихідні сигнали автомата в наступному такті.
Розглянемо приклад мікропрограми (таблиця 26.8), що реалізовує деякі елементарні функції.

fgth 

            
Верхній (нульовий) рядок таблиці демонструє послідовний перебір адрес пам'яті при нульових вхідних сигналах. Хай, наприклад, автомат знаходиться в адресі 00. В комірці з адресою 00 вказана наступна адреса 1 (молодший знак 16-кового коду 11), тобто в наступному такті автомат перейде на адресу 01 (вважаємо, що вхідні сигнали залишаються нульовими). З адреси 01 автомат перейде на адресу 02, оскільки в комірці з адресою 01 вказана наступна адреса 2. Так само з адреси 02 автомат перейде на адресу 03 і так далі до адреси 0F, в якому вказана наступна адреса 0, тобто в наступному такті автомат знову повернеться на адресу 00. Потім цикл послідовного проходження адрес першого рядка повториться (якщо, звичайно, вхідні сигнали залишаться нульовими). Чотири вихідні сигнали автомата в даному випадку повторюють код наступної адреси, тобто подібно 4-розрядному двійковому лічильнику видають поступово наростаючий код.
Другий зверху (перший) рядок таблиці демонструє циклічне повторення групи тактів. Якщо, наприклад, робота починається з адреси 10, то мікропрограмний автомат послідовно перебиратиме адреси 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, а потім повернеться на адресу 15 і постійно повторюватиме групу адрес 15, 16, 17, 18, 19. В даному випадку ми вважаємо, що вхідний сигнал Вх.1 постійно рівний одиниці, а вхідний сигнал Вх.2 постійно рівний нулю, що і відповідає другому зверху рядку таблиці.
Подивимося тепер, що робитиме автомат, якщо вхідний сигнал Вх.2 постійно рівний нулю, а вхідний сигнал Вх. 1 міняє свій стан з нуля на одиницю і назад. Таке перемикання вхідних сигналів приводить до переходу між нульовою і першою рядками таблиці з мікропрограмою. Припустимо, автомат починає роботу з адреси 00 (сигнал Вх.1 рівний нулю). Йде послідовний перебір адрес нульового рядка. Навіть якщо протягом перших дев'яти тактів сигнал Вх.1 мінятиметься, на вихідних сигналах автомата це ніяк не відобразиться, оскільки коди перших дев'яти адрес в нульовій і першій рядках повністю співпадають. Тому можна сказати, що в цих перших дев'яти тактах ми відключили реакцію нашого автомата на вхідний сигнал Вх.1 за рахунок дублювання кодів.
Допустимо тепер, що спочатку нульовий вхідний сигнал Вх.1 став рівний одиниці в адресі 0А і далі не міняється. Це приведе до тому, що замість адреси 0В автомат перейде на адресу 1В. Потім він пройде адреси 1С...IF, перейде на адресу 10, дійде до адреси 19 і почне повторювати цикл 15...19. Якщо ж, наприклад, в адресі 18 сигнал Вх.1 знову стане рівний нулю, то замість адреси 19 автомат потрапить на адресу 09 і далі виконуватиме мікропрограму нульового рядка.
Третій зверху (другий) рядок таблиці, яка відповідає вхідним сигналам Вх.1 = 0, Вх.2 = 1, показує приклад зупинки автомата в кожній адресі і очікування приходу вхідного сигналу. Наприклад, автомат знаходиться в адресі 23. Наступною адресою в коді даної комірки вказана 3. Значить, якщо вхідні сигнали залишаються незмінними, то автомат перейде знову ж таки на адресу 23 і залишатиметься в ньому постійно. Але якщо вхідний сигнал Вх.2 стане рівним нулю, автомат перейде на адресу 03 і почне виконувати мікропрограму нульового рядка. Тобто перемикання вхідного сигналу Вх.2 з нуля в одиницю при нульовому рівні Вх.1 зупиняє виконання мікропрограми нульового рядка до зворотного переходу вхідного сигналу Вх.2 в нуль.
Нарешті нижній (третій) рядок таблиці демонструє перехід з будь-якої адреси рядка на нульову адресу цього ж рядка. Хай, наприклад, виконується мікропрограма нульового рядка (Вх. 1 і Вх.2 - нульові) і в адресі 06 обидва вхідні сигнали переходять в одиницю. Автомат потрапляє на адресу 37, а з нього - на адресу 30, де і залишається постійно до зміни вхідних сигналів. Якщо потім обидва вхідні сигнали знову стануть нульовими, то автомат перейде на адресу 00 і почне знову виконувати мікропрограму нульового рядка таблиці.
Іноді необхідно перевести автомат на якусь певну адресу. Адже при включенні живлення в регістрі може виявитися довільний код. Для такої ініціалізації автомата можна, наприклад, використовувати регістр, що має вхід скидання -R, на який подається зовнішній сигнал, і тоді по цьому сигналу автомат потрапить на нульову адресу. Але можна піти і іншим шляхом: скласти мікропрограму таким чином, що автомат при включенні живлення сам перейде за декілька тактів на потрібну адресу незалежно від того, на яку адресу він потрапив при включенні живлення.
Розглянемо тепер приклад проектування найпростішого мікропрограмного автомата.
Хай нам необхідно формувати за допомогою мікропрограмного автомата послідовність з трьох вихідних сигналів у відповідь на позитивний фронт одного вхідного сигналу (малюнок 26.18).


wd

Малюнок 26.18. Діаграма роботи проектованого мікропрограмного автомата.

Другий вихідний сигнал «вкладений» в перший, а третій вихідний сигнал «вкладений» в другій. Причому до тих пір, поки дана послідовність не закінчиться, вхідний сигнал може довільно міняти свій стан, на роботі схеми це ніяк не повинно позначатися. А після закінчення даної послідовності мікропрограмний автомат знову повинен чекати позитивного фронту вхідного сигналу і починати по ньому вироблення нової послідовності.
Всі тимчасові зсуви у вихідній послідовності (t) приймемо для простоти однаковими і рівними 1 мкс. Це значно полегшує вибір тактової частоти мікропрограмного автомата, вона повинна бути рівною 1 Мгц (період 1 мкс). В цьому випадку повна довжина послідовності, що генерується, складе всього 6 тактів (один такт відповідає переходу всіх вихідних сигналів в одиницю).
Для формування 6-тактової послідовності необхідні не менше 3 адресних розрядів ПЗП (оскільки 22= 4, а 23 = 8). Ще один розряд адреси ПЗП буде потрібно для вхідного сигналу схеми. Разом необхідні 4 адресні розряди ПЗП.
Для формування трьох вихідних сигналів потрібні три розряди даних ПЗП. Ще три розряди даних ПЗП потрібно для завдання наступної адреси при відробітку вихідної послідовності. Разом необхідні шість розрядів даних ПЗП.
Порахуємо необхідну розрядність вихідного регістра. ПЗП видає шість розрядів даних. Є один вхідний сигнал. Разом регістр повинен фіксувати 7 сигналів, значить, він повинен бути 7-розрядним.

wf

Малюнок 26.19. Спроектований мікропрограмний автомат.

Отже, всі розрахунки закінчені. Одержана схема мікропрограмного автомата приведена на малюнку 26.19. Вона включає тактовий генератор з частотою 1 Мгц, мікросхеми ПЗП типа РЕЗ, у якої не використовується один розряд адреси і два розряди даних, а також 8-розрядного регістра ИР27, у якого не використовується один розряд. Для простоти на малюнку не показані резистори на виходах даних типа ОК мікросхеми ПЗП.
Тепер необхідно скласти мікропрограму для спроектованої схеми. Вона повинна включати очікування позитивного фронту вхідного сигналу, відробіток послідовності вихідних сигналів з тимчасовим відключенням вхідного сигналу, очікування нульового рівня вхідного сигналу і перехід на нове очікування позитивного фронту вхідного сигналу. Одержана мікропрограма з необхідними коментарями представлена в таблиці 26.9.
Відключення реакції на вхідний сигнал досягається в мікропрограмі за рахунок дублювання ділянки відробітку вихідної послідовності при вхідному сигналі, рівному нулю, і при вхідному сигналі, рівному одиниці. Якщо в кінці вихідної послідовності вхідний сигнал рівний одиниці, то схема чекає спочатку переходу вхідного сигналу в нуль (негативний фронт), а потім вже чекає позитивного фронту вхідного сигналу. Якщо в кінці послідовності вхідний сигнал рівний нулю, то схема зразу ж переходить на очікування позитивного фронту вхідного сигналу.
Всі невживані мікропрограмним автоматом осередки заповнені командами переходу в початковий стан схеми з пасивними (одиничними) вихідними сигналами. Таке рішення забезпечує правильний початок роботи мікропрограмного автомата при будь-якій початковій адресі (при будь-якому початковому коді в регістрі). Початкове скидання автомата не використовується.

thjf

Останній мікропрограмний автомат, який ми розглянемо в даному розділі, призначений для дешифрації (декодування) послідовного коду Манчестер-2, що застосовується для послідовної передачі даних на великі відстані, зокрема в локальних мережах.
Дешифрація (декодування) цього коду набагато складніша за кодування (малюнок 26.20). Вона вимагає виділення «правильних», інформаційних фронтів в середині бітових інтервалів (помічені на малюнку колами) і відсікання «неправильних» фронтів між бітовими інтервалами (помічені на малюнку хрестиками). Для цього треба після першого (інформаційного) фронту протягом тимчасового інтервалу 0,75Т не реагувати на фронти вхідного сигналу, що приходять, а потім знову обробляти будь-який фронт, що приходить, знову витримувати інтервал 0,75Т і т.д. При приході «правильних», інформаційних фронтів (в середині бітових інтервалів) необхідно формувати вихідні синхросигнали, по яких фіксується (в регістрі) інформація з сигналу в коді Манчестер-П.
Ми бачимо, що алгоритм декодування досить складний. Його можна, звичайно, виконати за допомогою одновібраторів і трігерів. Але можна скористатися і мікропрограмним автоматом, який на відміну від одновібратора не вимагає настройки, не чутливий до перешкод і тактується сигналом кварцового генератора.
Схема такого мікропрограмного автомата (малюнок 26.21) дуже проста, вона включає ПЗП типа РЕЗ, регістр ИР27 і тактовий генератор з частотою, в 8 разів перевищуючої частоту приходу бітів в коді Манчестер-П. Наприклад, при тривалості бітового інтервалу 1 мкс (швидкість передачі інформації 1 Мбіт/с) частота генератора повинна бути рівною 8 Мгц. Схема практично не відрізняється від схеми, розглянутої в попередньому прикладі, хоча виконувана їй функція набагато складніше.

df

Малюнок 26.20. Декодування коду Манчестер-2.

dfdg

Малюнок 26.21. Мікропрограмний автомат для декодування коду Манчестер-2.

Крім синхросигналу (його звичайно позначають RxC або С) мікропрограмний автомат видає також сигнал огинаючої інформаційного пакету (Р), тобто сигнал, активний за наявності передачі інформації в коді Манчестер-2 і пасивний за відсутності передачі інформації (див. малюнок 26.20). Сигнал С (RxC) стробує запис сигналу даних RxD, що є просто вхідний сигнал в коді Манчестер-2, пропущений через регістр.
Ми детально не розглядатимемо складання мікропрограми для декодування коду Манчестер-2, оскільки це зайняло б дуже багато місця. Достатньо тільки уважно вивчити таблицю 26.10, що містить мікропрограму з коментарями, щоб зрозуміти, що в ній присутні і відключення реакції на вхідний сигнал, і витримка тимчасових інтервалів (затримка), і переходи на задані адреси, і зупинки для очікування позитивного і негативного фронтів вхідного сигналу.

rth

 

 

 

 

 

26.6. Оперативна пам'ять

Основна відмінність оперативної пам'яті (RAM) від постійної (ROM) полягає в можливості оперативної зміни вмісту всіх елементів пам'яті за допомогою додаткового управляючого сигналу запису WR. Кожний елемент оперативної (статичної) пам'яті є, по суті, регістром з комірок трігерів, в який може бути записана інформація і з якого можна інформацію читати. Вибір того або іншого регістра (того або іншого елемента пам'яті) проводиться за допомогою коду адреси пам'яті. Тому при виключенні живлення вся інформація з оперативної пам'яті пропадає (стирається), а при включенні живлення інформація в оперативній пам'яті може бути довільною.
Відзначимо, що існує також ще один різновид оперативної пам'яті, так звана динамічна (на відміну від статичної), в якій інформація зберігається не в регістрах (не в комірках трігерів), а у вигляді заряду на конденсаторах. Ця пам'ять відрізняється більш низькою вартістю, меншою швидкодією і необхідністю регулярної регенерації (Refresh - освіження) інформації в ній (оскільки конденсатори з часом розряджаються). Область вживання динамічної пам'яті набагато вужча, ніж статичної, в основному вона застосовується як системна оперативна пам'ять комп'ютерів, де міркування вартості виходять на перший план. Тому тут ми про неї говорити не будемо. Хоча багато особливостей використовування статичної пам'яті відносяться і до динамічної пам'яті.
У всіх розглянутих в попередньому розділі схемах постійна пам'ять у принципі може бути замінена оперативною, тільки карту прошивки в даному випадку доведеться записувати в пам'ять кожного разу наново після включення живлення. Так само багато що з сказаного в даному розділі про оперативну пам'ять справедливе і для постійної пам'яті, але тільки інформацію в постійній пам'яті міняти неможливо. Проте існують також і специфічні області вживання оперативної пам'яті, яким і буде надана тут особлива увага.
Як вже наголошувалося, оперативна пам'ять буває двох основних видів: з роздільними шинами вхідних і вихідних даних (в основному, це однорозрядна пам'ять) і з двунаправленною (суміщеної) шиною вхідних і вихідних даних (це багаторозрядна пам'ять). Деякі найпростіші приклади мікросхем пам'яті обох цих видів приведені на малюнку 26.22. Виходи даних мікросхем пам'яті мають тип ОК (досить рідко) або ЗС. Управляючі сигнали - це сигнал вибору мікросхеми CS (іноді їх кілько), сигнал запису WR (звичайно негативний) і іноді сигнал дозволу виходу ОЄ.


wr

Малюнок 26.22. Приклади мікросхем статичних ОЗП.

Мікросхема оперативної пам'яті К155РУ7 (аналог - F9342APC) має організацію 1К X 1 і роздільні вхідні і вихідні сигнали даних. Вихід мікросхеми - типа ЗС. Управління роботою мікросхеми проводиться двома управляючими сигналами -CS і -WR. Режими роботи мікросхеми приведені в таблиці 26.11.

tyj

Мікросхема КМ132РУ10 відрізняється від К155РУ7 в основному великим об'ємом (організація 64К х 1) і дещо меншою швидкодією. Призначення управляючих сигналів і таблиця режимів роботи у цих мікросхем співпадають.

gft

Мікросхема КР541РУ2 (аналог - IM7147L-3) відноситься до іншого різновиду мікросхем пам'яті. У неї чотири двонаправлені виводи даних типа ЗС. Управляючі сигнали ті ж самі: -CS і -WR. Таблиця режимів роботи (таблиця 26.12) також схожа на таблицю для однорозрядних мікросхем. Головна відмінність полягає в тому, що в режимі запису на входах/виходах даних присутня записувана інформація.
Мікросхема НМ62256 фірми Hitachi відрізняється від КР541РУ2 перш за все організацією (32К X 8) і управляючими сигналами (доданий сигнал дозволу виходу -ОЄ). Коли цей сигнал пасивний (рівний одиниці), входи/виходи даних мікросхеми знаходяться в стані ЗС незалежно від режиму роботи. Введення додаткового сигналу дозволяє більш гнучко управляти роботою мікросхеми. До того ж звичайно в подібних мікросхемах при пасивному сигналі -CS (рівному одиниці) значно зменшується споживана потужність.
В даний час є величезний вибір мікросхем пам'яті з різним об'ємом (від декількох байт до декількох мегабайт), з різною кількістю розрядів (звичайні 1, 4, 8, 16 розрядів), з різними методами управління, з різним споживанням і швидкодією. У кожному конкретному випадку треба підбирати оптимальну пам'ять, що найбільшою мірою задовольняє вимогам вирішуваної задачі.
Таблиці режимів роботи (таблиці істинності) мікросхем пам'яті не дають достатньо інформації для їх практичного використовування. Для мікросхем пам'яті дуже важливі тимчасові параметри (затримки сигналів щодо один одного) і порядок виставляння і зняття сигналів адреси, даних і управління. Всю цю інформацію дають тимчасові діаграми циклів запису в пам'ять і читання (прочитування) з пам'яті, що приводяться в довідниках. Найголовніші тимчасові параметри оперативної пам'яті наступні:

  • час вибірки адреси (затримка між зміною адреси і видачею даних);
  • час вибірки мікросхеми (затримка видачі даних по виставлянню сигналу -CS);
  • мінімальна тривалість сигналу запису -WR;
  • мінімальна тривалість сигналу -CS.

 

Всього ж кількість тимчасових параметрів може досягати двох-трьох десятків, але ми детально не зупинятимемося на цьому, оскільки вся подібна інформація є в численних довідниках. Характерні величини всіх тимчасових параметрів пам'яті складає від одиниць і навіть часток наносекунд до десятків наносекунд.
Типові тимчасові діаграми циклів запису і читання приведені на малюнку 26.23. Конкретні тимчасові діаграми для кожного типу пам'яті можна знайти в довідниках.

qwrqw

Малюнок 26.23. Типові тимчасові діаграми запису в пам'ять (а) і читання з пам'яті (6).

Для запису інформації в пам'ять треба виставити код адреси на адресних входах, виставити код записуваних на цю адресу даних на входах даних, подати сигнал запису -WR і подати сигнал вибору мікросхеми -CS. Порядок виставляння сигналів може бути різним, він може бути істотним або неістотним (наприклад, можна виставляти або знімати -CS раніше або пізніше за виставляння або зняття -WR). Власне запис звичайно проводиться сигналом -WR або -CS, причому дані повинні утримуватися протягом всього сигналу -WR (або -CS) і заданий час після його закінчення.
Сигнал -CS у деяких мікросхем пам'яті допускається підтримувати активним (нульовим) для всіх записуваних адрес і при цьому подавати імпульси -WR для кожної адреси. Так само у деяких мікросхем допускається підтримувати активним (нульовим) сигнал запису -WR, але при цьому подавати імпульси -CS.
У разі мікросхем пам'яті з двонаправленою шиною даних необхідно використовувати джерело записуваних даних з виходом ЗС або ОК, щоб уникнути конфлікту даних, записуваних в пам'ять з даними, видаваними з пам'яті в режимі читання.
Для читання інформації з пам'яті треба виставити код адреси читаної комірки і подати сигнали -CS і -ОЄ (якщо він є). Сигнал -WR в процесі читання повинен залишатися пасивним (рівним одиниці). В деяких мікросхемах пам'яті (званих нетактованими, наприклад К155РУ7, КР541РУ2, НМ62256) можна тримати активним (нульовим) сигнал -CS для всіх читаних адрес. В інших мікросхемах (званих тактованими, наприклад, КМ132РУ10, К537РУ8) необхідно подавати свій імпульс -CS для кожної читаної адреси. Зрозуміло, що нетактовані мікросхеми набагато зручніше у вживанні, ніж тактовані.
Мікросхеми оперативної пам'яті досить часто об'єднуються для збільшення розрядності даних або розрядності адреси.
На малюнку 26.24 показано об'єднання чотирьох мікросхем К155РУ7 для отримання пам'яті з організацією IK x 4. Так само можуть бути з'єднані і мікросхеми з двонаправленою шиною даних. Наприклад, з чотирьох мікросхем пам'яті з організацією 1К х 4 можна одержати пам'ять з організацією 1К X 16.
Для збільшення кількості адресних розрядів використовуються ті ж методи, що і у разі ПЗП (див. малюнок 26.4). Якщо об'єднуються всього дві мікросхеми пам'яті, то можна обійтися без вживання дешифраторів, що вибирають одну з об'єднуваних мікросхем.

wrq

Малюнок 26.24. Об'єднання мікросхем пам'яті для збільшення розрядності шини даних.

qwrr

Малюнок 26.25. Об'єднання мікросхем пам'яті для збільшення розрядності шини адреси.


На малюнку 26.25 показаний варіант схеми об'єднання двох мікросхем НМ62256 для отримання пам'яті з організацією 64К X 8. Додатковий старший адресний розряд управляє проходженням сигналу -CS на одну з мікросхем (при нульовому рівні на додатковому адресному розряді сигнал -CS проходить на ліву по малюнку мікросхему, при одиничному рівні - на праву мікросхему).

Цікавою особливістю мікросхем оперативної пам'яті є можливість довільної зміни порядку сигналів адресних розрядів без жодних наслідків для функціонування пам'яті. Наприклад, сигнал, що поступає на розряд А0 можна з тим же успіхом подавати на А7, сигнал, що приходить на А7 подавати на A3, сигнал, що приходить на A3 подавати на А10 і т.д. Річ у тому, що інформація в оперативну пам'ять записується за тими ж самими адресами, по яких потім і читається. І перестановка адресних розрядів змінює тільки номер осередку, в який записується інформація і з якого потім читається ця ж інформація. Така взаємозамінність адресних входів оперативної пам'яті буває корисної при проектуванні розводки друкарської платні. У разі ПЗП це правило не працює, оскільки там інформація в ПЗП записана раз і назавжди, і читати її треба за тими ж адресами, по яких її раніше записали.

 

 

 

 

 

26.7. ОЗП для тимчасового зберігання інформації

Головне вживання мікросхем оперативної пам'яті, безпосередньо слідує з її назви, - це тимчасове зберігання цифрової інформації, всіляких масивів кодів, таблиць даних, одиночних чисел і т.д. Мета такого зберігання інформації полягає в тому, щоб у будь-який момент мати нагоду швидко її прочитати для подальшої обробки, запису в енергозалежну пам'ять (в ПЗП, на магнітні носії) або для іншого використовування. Записана в оперативну пам'ять і непрочитана потім інформація не має сенсу, оскільки при виключенні живлення вона безповоротно пропаде.
Тобто тимчасове зберігання припускає, що до пам'яті є можливість доступу від якогось пристрою або від якоїсь іншої частини схеми як з операцією запису, так і з операцією читання (прочитування). Залежно від того, в якому порядку може записуватися або читатися інформація, існують два різновиди ОЗП:

  • ОЗП з паралельним або довільним доступом (це сама універсальна схема);
  • ОЗП з послідовним доступом (це більш специфічна схема).

 

Паралельний або довільний доступ найбільш простий і звичайно не вимагає ніяких додаткових елементів, оскільки саме на цей режим безпосередньо розраховані мікросхеми пам'яті. В цьому режимі можна записувати інформацію на будь-яку адресу ОЗП і читати інформацію з будь-якої адреси ОЗП в довільному порядку. Проте паралельний доступ вимагає формування досить складних послідовностей всіх вхідних сигналів пам'яті. Тобто для запису інформації необхідно сформувати код адреси записуваної комірки і тільки потім подати дані, супроводжувані управляючими сигналами -CS і -WR (див. малюнок 26.23). Так само необхідно подавати повний код адреси читаної комірки при операції читання. Цей режим доступу частіше за все застосовується в комп'ютерах і контролерах, де найголовнішими чинниками є універсальність і гнучкість використовування пам'яті для самих різних цілей.
Послідовний доступ до пам'яті припускає більш простий порядок спілкування з пам'яттю. В цьому випадку не треба задавати код адреси записуваної або читаної комірки, оскільки адреса пам'яті формується схемою автоматично. Для запису інформації треба всього лише подати код записуваних даних і супроводжувати його стробом запису. Для читання інформації треба подати строб читання і одержати читані дані. Автоматичне завдання адреси при цьому здійснюється внутрішніми лічильниками, що міняють свій стан по кожному зверненню до пам'яті. Наприклад, десять послідовних циклів запису запишуть інформацію в десять послідовно розташованих елементів пам'яті. Недолік такого підходу очевидний: ми не маємо нагоди записувати або читати комірки з довільними адресами у будь-якому порядку. Зате істотно спрощується і швидшає процедура обміну з пам'яттю (запис і читання). Ми в даному розділі розглядатимемо саме цей тип пам'яті, цей тип доступу.
Можна виділити три основні типи оперативної пам'яті з послідовним доступом:

  • пам'ять типу «перший ввійшов - перший вийшов» (FIFO,   First In – First Out);
  • пам'ять магазинного, стекового типу, що працює за принципом «останній ввійшов - останній вийшов» (LIFO, Last In – First Out);
  • пам'ять для зберігання масивів даних.

Два перші типи пам'яті мають на увазі можливість чергування операцій запису і читання в пам'яті. При цьому пам'ять FIFO видає читані дані в тому ж порядку, в якому вони були записані, а пам'ять LIFO - видає читані дані в порядку, зворотному тому, в якому вони були записані в пам'ять. Пам'ять FIFO можна порівняти з зсувним регістром, на виході якого дані з'являються в тому ж порядку, в якому вони були в нього записані. А пам'ять LIFO звичайно порівнюють з магазином для подачі патронів в автоматі або пістолеті, в якому першим видається патрон, вставлений в магазин останнім. Пам'ять з принципом LIFO використовується зокрема в комп'ютерах (стек), де вона береже інформацію про параметри програм і підпрограм.
Для пам'яті FIFO потрібне зберігання двох кодів адреси (адреса для запису і адреса для читання), для пам'яті LIFO достатньо одного коду адреси.
Зберігання масивів в пам'яті припускає, що спочатку в пам'ять записується цілком великий масив даних, а потім цей же масив цілком читається з пам'яті. Ця пам'ять також може бути влаштована за двома принципами (FIFO і LIFO). В першому випадку (FIFO) записаний масив читається в тому ж порядку, що і був записаний, в другому випадку (LEFO) - в протилежному порядку (починаючи з кінцем). В обох цих випадках для спілкування з пам'яттю вимагається берегти тільки один код адреси пам'яті.
Розглянемо декілька прикладів схем, що реалізовують перераховані типи пам'яті з послідовним доступом.
На малюнку 26.26 представлена функціональна схема пам'яті типа FIFO на мікросхемах з роздільними шинами вхідних і вихідних даних. Адреси пам'яті задаються двома лічильниками - лічильником запису і лічильником читання, вихідні коди яких мультиплексуються за допомогою 2-канального мультиплексора. Запис даних здійснюється по стробу запису -Зап., читання даних - по стробу читання -Чт. Своїм заднім фронтом сигнал -Зап. перемикає лічильник запису, а задній фронт сигналу -Чт. перемикає лічильник читання. В результаті кожний наступний запис здійснюється на наступну по порядку адресу пам'яті. Так само кожне наступне читання проводиться з наступної по порядку адреси пам'яті.

dsf
Малюнок 26.26. Функціональна схема пам'яті типа FIFO.

Перед початком роботи необхідно скинути лічильники в нуль сигналом Скидання. За відсутності операцій запису і читання пам'ять знаходиться в стані читання (сигнал -WR рівний одиниці), а на адресні входи пам'яті подається код адреси запису з лічильника запису. При подачі строба запису -Зап. проводиться запис вхідних даних за адресою з лічильника запису. Вхідні (записувані) дані повинні виставлятися раніше початку сигналу -Зап., а закінчуватися після сигналу -Зап. При подачі строба читання -Чт. мультиплексор перемикається на передачу адреси читання, і на виході пам'яті з'являється інформація, прочитувана з адреси читання, що задається лічильником читання. Дійсними вихідні (читані) дані будуть по задньому (позитивному) фронту сигналу -Чт.
Запис починається з нульової адреси пам'яті і проводиться за послідовно наростаючими адресами. Так само читання починається з нульової адреси пам'яті і проводиться за послідовно наростаючими адресами. Операції запису і читання можуть чергувати. Тимчасові діаграми циклів запису і читання показані на малюнку 26.27.
Як лічильники можна використовувати потрібну кількість мікросхем ИЕ7, як мультиплексор - мікросхеми КП11, як пам'ять - К155РУ7 або будь-які інші нетактовані мікросхеми пам'яті з роздільними шинами вхідних і вихідних даних.


swf

Малюнок 26.27. Тимчасові діаграми циклів запису (а) і читання (б) для пам'яті типа FIFO.

Умови правильної роботи схеми наступні. Тривалість сигналу -Зап. не повинна бути меншою мінімально допустимої тривалості сигналу -WR пам'яті. Тривалість сигналу -Чт. не повинна бути менше суми затримки перемикання мультиплексора і затримки вибірки адреси пам'яті. Період проходження сигналу -Зап. не повинен бути менше суми затримки перемикання лічильника запису і тривалості сигналу -Зап. Період проходження сигналу -Чт. не повинен бути менше суми затримки перемикання лічильника читання і тривалості сигналу -Чт.
Функціональна схема пам'яті типа LIFO (малюнок 26.28) простіше по структурі, ніж схема пам'яті FIFO, оскільки вона містить тільки один лічильник і не вимагає мультиплексування. В даному випадку вважаємо, що використовується пам'ять з двонаправленою шиною вхідних/вихідних даних.
Лічильник адреси необхідний реверсивний, з роздільними тактовими входами прямого і зворотного рахунку (наприклад, ИЕ7). Після проведення циклу запису по задньому фронту сигналу -Зап. лічильник збільшує свій вихідний код (адреса пам'яті) на одиницю. Перед проведенням циклу читання по передньому фронту сигналу -Чт. лічильник зменшує свій вихідний код на одиницю. Така організація перебору адрес дозволяє організувати читання з пам'яті в порядку, зворотному порядку запису в пам'ять.
Наприклад, хай початковий стан лічильника 2. Хай ми проводимо три цикли запису: перший - на адресу 2, другий - на адресу 3, третій - на адресу 4. Після третього циклу запису лічильник видаватиме код 5. Потім проведемо три цикли читання: перший - з адреси 4 (перед читанням адреса зменшилася на одиницю), другий - з адреси 3, третій - з адреси 2. Після третього циклу читання лічильник видаватиме код 2. Ми повернулися в початковий стан, прочитавши записану інформацію в зворотному порядку.


ghrh

Малюнок 26.28. Функціональна схема пам”яті типу  FIFO

Початковий стан лічильника в даній схемі взагалі-то не дуже важливий, оскільки не важлива поточна адреса пам'яті, в яку проводиться запис і з якої потім проводиться читання. Проте у разі, коли використовується початкове скидання лічильника в нульовий стан (по сигналу Скидання), можна досить просто організувати контроль за переповнюванням пам'яті LIFO через дуже велику кількість записаної в неї інформації. Для контролю переповнювання можна використовувати вихідний сигнал перенесення старшого лічильника (>15).
Тимчасові діаграми циклів запису і читання приведені на малюнку 26.29.


er

Малюнок 26.29. Тимчасові діаграми циклів запису (а) і читання (б) для пам'яті типа LIFO.

В циклі запису по сигналу -Зап. відкривається вхідний буфер АП5 і вхідні (записувані) дані поступають на входи/виходи пам'яті. Одночасно по цьому ж сигналу -Зап. пам'ять переходить в режим запису. В результаті на поточну адресу пам'яті записуються вхідні дані, після чого адреса збільшується на одиницю. Вхідні дані повинні починатися до початку сигналу -Зап. і закінчуватися після його закінчення.
В циклі читання по сигналу -Чт. адреса зменшується на одиницю, після чого відкривається вихідний буфер АП5, що видає на вихід схеми читану з пам'яті інформацію. Вживання вихідного буфера не обов'язкове, проте він запобігає проходженню на шину вихідних даних інформації, записуваної в пам'ять в циклі запису. Вихідні дані дійсні по задньому фронту сигналу -Чт.
Умови правильної роботи схеми наступні. Тривалість сигналу запису повинна бути не меншою мінімально допустимої тривалості сигналу -WR пам'яті. Період проходження сигналів -Зап. не повинен бути менше суми часу спрацьовування лічильників і тривалості сигналу -Зап. Тривалість сигналу читання повинна бути не менше за суму часу спрацьовування лічильника, часу вибірки адреси пам'яті і затримки вихідного буфера даних. Період проходження сигналів -Чт. також не повинен бути менше цієї ж суми. Пам'ять повинна бути нетактованою, наприклад КР541РУ2.
Нарешті, третій тип пам'яті для тимчасового зберігання даних - пам'ять для зберігання масивів даних. Розглянемо варіант схеми такої пам'яті типа FIFO (малюнок 26.30).

erg

Малюнок 26.30. Функціональна схема пам'яті для зберігання масивів даних.


Адреси пам'яті в даному випадку задаються одним єдиним лічильником, який працює в режимі тільки прямого рахунку. Перед початком роботи необхідно скинути лічильник (сигнал Скидання). Потім проводиться запис масиву даних. При цьому після кожного циклу запису по задньому фронту сигналу -Зап. вихідний код лічильника збільшується на одиницю. Після закінчення запису всього масиву знову треба скинути лічильник в нуль (сигнал Скидання), а потім проводити читання масиву, починаючи з нульової адреси. При цьому після кожного циклу читання по задньому фронту сигналу -Чт. вихідний код лічильника як і раніше збільшується на одиницю. В результаті масив даних читається в тому ж порядку, в якому і був записаний. Контроль за довжиною записуваного і читаного масивів покладається на зовнішній по відношенню до приведеної схеми пристрій.
Для даної схеми повинна використовуватися нетактована пам'ять (наприклад, КР541РУ2) з двонаправленою шиною вхідних/вихідних даних. Вважаємо, що дані подаються на схему і читаються з схеми також по двонаправленій шині даних. Між пам'яттю і цією шиною включається двонаправлений буфер (типа АП6), який може знадобитися, наприклад, для забезпечення великого вихідного струму і малого вхідного струму з боку зовнішньої двонаправленої шини даних (це типова ситуація при побудові мікропроцесорних і комп'ютерних систем). Буфер цей відкривається на передачу даних в пам'ять по сигналу -Зап. (сигнал -EZ стає рівним нулю, сигнал Т також нульовий) і відкривається для читання даних з пам'яті по сигналу -Чт. (сигнал -EZ стає рівним нулю, сигнал Т рівний одиниці).

Умови правильної роботи схеми наступні. Тривалість сигналу запису -Зап. повинна бути не менше мінімальній тривалості сигналу -WR пам'яті. Вхідні (записувані) дані повинні починатися до початку сигналу -Зап., а закінчуватися після закінчення сигналу -Зап. Тривалість сигналу читання -Чт. не повинна бути менше суми затримки буфера і часу вибірки адреси пам'яті. Дійсними читані дані будуть по задньому фронту сигналу -Чт. За період проходження сигналів -Зап. і -Чт. схема повинна встигати виконати операцію запису і читання відповідно, крім того повинен встигнути повністю перемкнутися лічильник адреси пам'яті.

 

 

 

 

 

26.8. ОЗП як інформаційний буфер

Друге найважливіше вживання мікросхем оперативної пам'яті полягає в організації різноманітних інформаційних буферів, тобто буферної пам'яті для проміжного зберігання даних, передаваних між двома пристроями або системами. Суть інформаційного буфера полягає в наступному: передаючий пристрій записує передавані дані в буфер, а приймаючий пристрій читає дані, що приймаються, з буфера (малюнок 26.31).

yg

Малюнок 26.31. Включення буферної пам'яті.

Таке проміжне зберігання дозволяє краще погоджувати роботу пристроїв, що беруть участь в обміні даними, підвищити їх незалежність один від одного, погоджувати швидкості передачі і прийому даних.
Хай, наприклад, як перший пристрій виступає комп'ютер, а як другий - кабель локальної мережі. Комп'ютеру значно зручніше видавати дані з швидкістю, визначуваною його власною швидкодією, але в локальну мережу треба передавати дані із строго певною швидкістю, що задається стандартом на мережу (наприклад, 100 Мбіт/с). Крім того, комп'ютер по можливості не повинен відволікатися на контроль за поточним станом мережі, за її зайнятістю і звільненням. Тому буферна пам'ять в даному випадку необхідна. І так само вона потрібна при прийомі даних з локальної мережі в комп'ютер.
Головна відмінність буферної пам'яті від пам'яті для тимчасового зберігання інформації, розглянутої в попередньому розділі, полягає в тому, що до інформаційного буфера завжди мають доступ не один зовнішній пристрій, а два (або навіть більше). Через це іноді істотно ускладнюється як схема завдання адреси мікросхеми пам'яті, так і схема розділення потоків даних (записуваних в пам'ять і читаних з пам'яті).

ig

Малюнок 26.32. Двонаправлений інформаційний буфер.

Інформаційні буфери бувають однонаправленими (вхідними або вихідними) і двонаправленими (тобто вхідними і вихідними одночасно - малюнок 26.32). Наприклад, буферна пам'ять мережевого адаптера двонаправлена, оскільки вона буферизує як інформацію, передавану в мережу з комп'ютера, так і інформацію, що приймається з мережі в комп'ютер. Двонаправлені буфери завжди складніше проектувати через більшу кількість потоків даних.
Інформаційні буфери можуть забезпечувати періодичний обмін між пристроями або безперервний обмін між ними. Прикладом буфера з безперервним режимом обміну може служити контроллер відеомонітора, інформація з якого постійно видається на відеомонітор, але може змінюватися за ініціативою комп'ютера.
Інформаційні буфери з періодичним режимом обміну можуть бути організовані по типу FIFO або по типу LIFO.
У разі FIFO масив даних читається з пам'яті одним пристроєм в тому ж порядку, в якому він був записаний в пам'ять іншим пристроєм. Випускаються навіть спеціальні мікросхеми швидкодійної буферної пам'яті типа FIFO, які не мають адресної шини і є, по суті, багаторозрядним зсувним регістром. На відміну від звичайної мікросхеми зсувного регістра, де читати інформацію, що подаються в буфер, можна тільки тоді, коли вона просунеться по всіх комірках регістра, інформацію з виходів буфера FIFO можна починати читати з виходів зразу ж після того, як вона почала записуватися в його входи. Але ми розглядатимемо тут тільки буфери на звичайних, традиційних мікросхемах пам'яті як більш універсальні.
У разі інформаційного буфера LIFO масив даних читається з пам'яті в порядку, протилежному тому, в якому він був записаний в пам'ять. Таке рішення іноді дозволяє простіше організувати схему перебору адрес пам'яті.
Тобто різноманітність інформаційних буферів величезна. Ми ж розглянемо тут всього три приклади схем буферної пам'яті.
Перша схема - це найпростіший однонаправлений буфер з періодичним режимом обміну за принципом FIFO (малюнок 26.33). Один пристрій записує інформацію в буфер, на інший пристрій видається інформацію з буфера. Пам'ять завжди записується повністю, за всіма адресами, і читається також повністю. Строб запису -Зап. поступає в режимі запису з частотою, необхідною для запису, строб читання -Чт. поступає при читанні з частотою, необхідною для читання. Шини даних для запису і читання в пам'ять у випадку, показаному на малюнку, окремі.


uy

Малюнок 26.33. Однонаправлений буфер типа FIFO.

За таких умов необхідний всього лише один лічильник для перебору адрес пам'яті, причому лічильник, що працює тільки в режимі прямого рахунку і має вхід початкового скидання в нуль.
Перед початком роботи пристрій, що проводить запис в пам'ять, скидає лічильник в нуль сигналом -Сброс і встановлює режим запису в пам'ять, перекидаючи в нуль управляючий трігер (одиниця на інверсному виході). Потім починається процес запису: записувані дані поступають з однонаправленого вхідного буфера (АП5) і записуються в пам'ять сигналом -Зап., який своїм заднім фронтом перемикає адреси пам'яті. Повна процедура запису включає стільки циклів запису, скільки є комірок у пам'яті, що використовується.
Після закінчення процедури запису пристрій, що проводив запис, дозволяє читання з пам'яті, встановлюючи в одиницю трігер позитивним фронтом сигналу Пуск (нуль на інверсному виході). При цьому дозволяється проходження сигналу -Чт. Адреси пам'яті перемикаються по задньому фронту сигналу -Чт., і по цьому ж фронту дані, читані з пам'яті, фіксуються у вихідному регістрі, що спрацьовує по фронту (наприклад ИР27). Вихідний регістр виконує дві функції: він не пропускає на вихід дані, записувані в пам'ять (по сигналу -WE забороняється запис в трігер), а також забезпечує одночасність зміни всіх розрядів читаних даних. Вихідна інформація через цей регістр затримується на один період сигналу -Чт., що необхідно враховувати. Якщо узяти регістр з входом скидання в нуль, то можна зробити, щоб при процедурі запису в пам'ять на виході схеми був нульовий код.
Після закінчення читання всього об'єму пам'яті виробляється сигнал перенесення лічильника -Р, який знову переводить всю схему в режим запису, скидаючи трігер в нуль (одиниця на інверсному виході). Після цього записуючий зовнішній пристрій знову може починати процедуру запису в пам'ять.
Умови правильної роботи схеми наступні. Тривалість сигналу -Зап. не повинна бути менше мінімальної тривалості сигналу -WR пам'яті. Період проходження сигналів -Зап. не повинен бути менше суми тривалості сигналу -Зап. і затримки перемикання лічильника. Період проходження сигналів -Чт. не повинен бути менше суми часу вибірки адреси пам'яті і затримки перемикання лічильника. Пам'ять повинна бути нетактованою (наприклад, КР541РУ2).
Складнішу структуру має двонаправлений буфер з періодичним режимом обміну типу LIFO. Він дозволяє видавати і приймати масиви даних довільної довжини (а не фіксованої довжини, як у попередньому випадку) із заданою швидкістю. Така задача виникає зокрема при проектуванні адаптерів локальних мереж. Не дивлячись на те, що дані читаються з буфера в порядку, зворотному тому, в якому вони були записані в буфер, при обміні інформацією між двома буферами це ніяк не позначається.
Хай, наприклад, пристрій 1 передає інформацію в пристрій 2, а як проміжний пристрій (пристрій 3) виступає кабель мережі (малюнок 26.34).
Пристрій 1 записує в буфер 1 масив в прямому порядку, буфер 1 видає цей масив в пристрій 3 (мережа) в зворотному порядку, буфер 2 приймає масив з мережі в зворотному порядку, а пристрій 2 читає прийняту інформацію знову ж таки в прямому порядку. Тобто читається інформація в тому ж порядку, в якому вона і записувалася. Те ж саме відбувається і при передачі інформації з пристрою 2 в пристрій 1.
Схема буфера LIFO (малюнок 26.35) включає крім пам'яті і двонаправленого буфера реверсивний лічильник (типу ИЕ7) і реверсивний регістр зсуву (типу ИР24), що служить для перетворення паралельного коду в послідовний при передачі в мережу і послідовного коду в паралельний при прийомі з мережі. Режими роботи буфера задаються двома трігерами, один з яких дозволяє режим передачі в мережу, а інший - режим прийому з мережі.

ggg

Малюнок 26.34. Обмін між двома пристроями через два буфери типа LIFO.

yyy
Малюнок 26.35. Двонаправлений буфер типа LIFO.

Перед початком роботи обидва трігери скинено в нуль, лічильник також скинений в нуль сигналом Скидання. Спочатку в пам'ять записується передаваний в мережу масив даних. Запис проводиться сигналом -Зап., задній фронт якого збільшує вихідний код лічильника (адреса пам'яті) на одиницю. Після закінчення запису масиву сигналом Разр.пер. дозволяється передача масиву в мережу. В режимі передачі по сигналу строба передачі (ТхС) перебираються адреси пам'яті в зворотному порядку (лічильник працює в режимі зворотного рахунку). Дані, читані з пам'яті, записуються в зсувний регістр і видаються в мережу в послідовному коді (TxD). Після того, як лічильник долічить до нуля, виробляється сигнал перенесення <0, який скидає в нуль трігер передачі. Тобто в мережу видається весь масив, записаний в пам'ять, незалежно від його довжини, причому масив видається в зворотному порядку.
В режимі прийому інформації з мережі записується одиниця в трігер дозволу прийому по сигналу Разр.пр. Дані в послідовному коді RxD, що приймаються з мережі, записуються в зсувний регістр, а з нього вже в паралельному коді - в пам'ять. Запис проводиться по сигналу строба прийому RxC, заднім фронтом якого перемикається лічильник, що працює в режимі інверсного рахунку. Після закінчення прийому по сигналу «Кінець прийому» скидається трігер дозволу прийому. Після цього проводиться читання інформації з пам'яті по сигналу -Чт. Заднім фронтом цього сигналу перемикається лічильник, що працює в режимі прямого рахунку. Тобто масив читається в порядку, зворотному тому, в якому він прийшов з мережі.
Умови правильної роботи даної схеми аналогічні тим, що були сформульовані для попередніх розглянутих схем буферів. Сигнали стробів запису і читання повинні мати таку тривалість, щоб здійснювати відповідно запис в пам'ять і читання з пам'яті. Період проходження цих сигналів повинен бути таким, щоб встигали проводитися операції запису і читання, а також встигав перемикатися лічильник.

 

 

 

 

 

 

26.9. Поліпшення параметрів ОЗП

При вживанні оперативної пам'яті часто встає задача поліпшення її характеристик. Про сумісне включення декількох мікросхем з метою збільшення розрядності шини адреси і шини даних вже мовилося. Тут же ми зупинимося на задачі підвищення швидкодії пам'яті, тобто збільшення граничної тактової частоти, з якою можна записувати інформацію в пам'ять і читати інформацію з пам'яті.
Напевно, найпоширеніше і найпростіше рішення, що дозволяє підвищити швидкодію пам'яті, полягає у вживанні зсувних регістрів. Зсувні регістри завжди мають істотно більшу швидкодію, ніж пам'ять, оскільки вони мають набагато більш просту структуру. Частота проходження тактових імпульсів цих регістрів може досягати десятків і сотень мегагерц, тоді як пам'ять з такими параметрами знайти важко.
Збільшення швидкодії пам'яті досягається за допомогою зсувних регістрів дуже просто: зменшення у декілька разів розрядності шини даних пам'яті дозволяє в стільки ж разів збільшити частоту запису інформації в пам'ять або читання інформації з пам'яті.
Наприклад, якщо необхідно в 8 разів збільшити частоту читання інформації з пам'яті, то треба з'єднати потрібну кількість мікросхем пам'яті для збільшення розрядності шини даних в 8 разів, а потім застосувати на виходах даних схему (малюнок 26.36) на основі 8-розрядного регістра зсуву. 8-розрядний код, читаний з пам'яті, записується в зсувний регістр, а потім зсовується сім разів з частотою, в 8 разів більшою, ніж частота опитування пам'яті. І запис і зсув проводяться одним тактовим сигналом з генератора. Вісім тактових імпульсів відлічуються синхронним лічильником. Для управління роботою регістра зсуву застосований елемент ЗАБО-НІ, що видає позитивний імпульс протягом першої 1/8 періоду опиту пам'яті. Цей же сигнал використовується як строб читання з пам'яті (своїм заднім фронтом він перемикає адреси пам'яті).

gv

Малюнок 26.36. Збільшення частоти читання інформації.

При необхідності збільшення частоти запису в пам'ять одного зсувного регістра недостатньо. Річ у тому, що інформація в пам'ять записується не по фронту сигналу, а по рівню, тобто записувана інформація повинна зберігатися на вході пам'яті певний час. Тому код з виходу зсувного регістра необхідно перед записом в пам'ять переписати в паралельний регістр, де він буде потім зберігатися протягом всього періоду запису в пам'ять.
Схема, показана на малюнок 26.37, прискорює частоту запису в пам'ять в 4 рази.

jjj

Малюнок 26.37. Збільшення частоти запису інформації.

В даному випадку як регістр зсуву зручно використовувати звичайний паралельний регістр, що спрацьовує по фронту, у якого виходи трьох розрядів сполучені з входами наступних розрядів. При цьому з одного 8-розрядного регістра ми одержуємо два 4-розрядні регістри зсуву. Вхідна 2-розрядна інформація записується в ці два 4-розрядні регістри зсуву, потім переписується в паралельний регістр і тільки потім записується в пам'ять. Для відліку чотирьох імпульсів тактового генератора застосований 2-розрядний лічильник на двох JK-трігерах, включених в рахунковому режимі, що дозволяє дещо підвищити швидкодію в порівнянні із стандартними мікросхемами лічильників. Сигнал з виходу другого трігера записує інформацію в паралельний регістр, а також використовується як строб запису в пам'ять Зап.
Великий недолік оперативної пам'яті полягає в тому, що інформація, записана в неї, зникає при виключенні джерела живлення. Тому часто використовується додаткове джерело живлення (гальванічна батарея або акумулятор), яке живить при виключенні джерела живлення тільки мікросхеми пам'яті. В даному випадку дуже зручні мікросхеми ОЗП, виконані по КМОП технології, струм споживання яких в статичному режимі (при незмінних вхідних і вихідних сигналах) дуже малий (порядку одиниць мікроамперів). В результаті виходить так звана енергонезалежна оперативна пам'ять, вміст якої може легко перезаписуватися, але не пропадає при виключенні живлення, як в ПЗП.
Схема енергозалежної пам'яті (малюнок 26.38) досить проста, хоча і має ряд неочевидних особливостей.

jjg

Малюнок 26.38. Енергонезалежна оперативна пам'ять.

Річ у тому, що управляючі сигнали пам'яті -WR і -CS мають активний низький рівень, а при виключенні живлення всі вхідні сигнали пам'яті, природно, стануть нульовими. Це приведе до спотворення записаної в пам'ять інформації. Тому необхідно забезпечити, щоб при виключенні живлення сигнали на входах -WR і -CS були пасивними, тобто мали рівень логічної одиниці. Для цього звичайно використовуються логічні елементи з виходами ОК, резистори навантажень яких приєднуються не до пропадаючої напруги живлення пам'яті Uип, а до напруги живлення пам'яті Uпам, що зберігається, Для отримання напруги Uпам використовується проста схема на двох діодах (краще брати діоди Шоттки з меншим падінням напруги), яка передає на вихід Uпам напругу джерела живлення Uип (якщо живлення включено) або напругу від гальванічної батареї 3-4,5 В (якщо живлення вимкнене).
Для більшої гарантії від пропадання інформації під час перехідних процесів (при поступовому наростанні Uип і при поступовому його зменшенні) необхідно управляти проходженням сигналів WR і CS на пам”ять за допомогою управляючого сигналу Скидання. Цей сигнал рівний нулю при напруги Uип менше 4,7-4,8 В і рівний одиниці при нормальній напрузі Uип = 5 В (тимчасова діаграма приведена на малюнку). В результаті такого рішення пам'ять відключається від решти схеми при недостатній напрузі живлення (сигнали -WR і -CS рівні одиниці) і підключається до решти схеми при нормальній напрузі живлення.
На закінчення даного розділу треба відзначити, що в ній свідомо не розглянута одна з найважливіших областей вживання мікросхем пам'яті (як постійної, так і оперативної) - мікропроцесорні системи і комп'ютерні системи. Річ у тому, що говорити про вживання пам'яті в цій області неможливо без викладу основ мікропроцесорної і комп'ютерної схемотехніки, а це окрема велика тема, що вимагає спеціальної книги. До того ж вивчення методів включення пам'яті, які розглянуті в даному розділі, дозволяє надалі досить легко зрозуміти принципи вживання пам'яті в будь-яких можливих областях.

презинтація

попередня тема наступна тема