Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Застосування двійкових дешифраторів.

Логічні вентилі | Закони алгебри логіки | Створення (синтез) логічної функції комбінаційної схеми по таблиці істинності | Затримки в комбінаційних схемах | Завантаження і встановлення САПР Quartus II. | Створення схеми дешифратора с САПР Quartus II. |


Читайте также:
  1. C. КОМЕНТАР ДО ЗАСТОСУВАННЯ СТАТТІ 10
  2. В охороні праці можна виділити два принципових аспекти застосування економічних методів.
  3. Види адміністративно-запобіжних заходів, які застосовуються міліцією, підстави та порядок їх застосування.
  4. Види інформаційно-рекламних засобів,їх застосування.
  5. Галузі застосування та приклади використання СППР
  6. Глава 39. Кримінальне провадження щодо застосування примусових заходів медичного характеру

Розглянемо застосування двійкового дешифратора на прикладі мікросхеми постійної пам’яті, спрощена структурна схема якої наведена нижче:

Як видно з рисунка, інтегральна мікросхема (ІМС) постійної пам’яті складається з дешифратора адреси (DC) і комірок пам’яті (КП). В даному прикладі розглядається пам'ять з розрядністю шини даних 8 біт (виходи D0-D7) і з розрядністю шини адреси 10 біт (входи A0-A9). Отже така ІМС пам’яті буде містити 210 = 1024 восьмирозрядних слів даних. Кожна КП має вхід вибору і вихід даних. Як тільки на вхід вибору надходить одиниця, вихід даних підключається до внутрішньої схеми КП і на ньому встановлюється значення біту, який зберігає КП (0 або 1). Якщо ж на вхід вибору поступає 0, вихід даних КП від’єднується від внутрішньої схеми КП і переходить в третій стан. Кожне слово пам’яті в нашому прикладі складається із 8-ми КП, входи вибору яких підключені до виходу дешифратора, який відповідає цьому слову. Як тільки на вхід дешифратора подається нова адреса, встановлюється в одиницю відповідний вихід дешифратора і підключає КП слова пам’яті з такою адресою до шини даних D0-D7 на виході ІМС. При цьому інші виходи дешифратора приймають значення нуля, тому КП інших слів пам’яті від’єднанні від шини даних D0-D7.

Ще один спосіб застосування дешифраторів – нарощування об’єму пам’яті. Нижче наведено приклад, коли є 4 ІМС постійної пам’яті, з розрядністю шини адреси 8 біт (об’єм таких ІМС складає 28=256 слів) і необхідно створити на їх основі блок пам’яті з розрядністю шини адреси 10 біт (об’ємом 1024 слова). Перед пояснення принципу роботи такого підходу необхідно зауважити, що багато ІМС мають вхід CS (Chip Select). Якщо на такому вході присутній активний рівень, виходи ІМС з’єднуються з електричною схемою всередині ІМС. Якщо ж активний рівень на вході CS відсутній, виходи ІМС від’єднуються від внутрішньої логіки і на них встановлюється так званий третій стан (не 0 і не 1). Фактично третій стан означає відсутність сигналу (напруги) на виходах ІМС. Це не дивно, оскільки в такому випадку виходи являють собою провідники не підключені до жодного джерела напруги. У кожної ІМС пам’яті з даного прикладу існує два входи і , обоє з активним низьким рівнем. Дані на виході такої ІМС будуть присутні у випадку нулів на і . Входи використовуються для вибору мікросхеми за допомогою дешифратора, а входи всіх мікросхем об’єднуються і слугують входом вибору розроблюваного блоку пам’яті.

Для об’єднання чотирьох зазначених ІМС в один великий масив пам’яті, необхідно підключити молодші 8 біт 10-бітної адреси до входів адреси мікросхем пам’яті, а два старших біта до входу дешифратора, який має чотири виходи з активним низьким рівнем. Кожен біт 4-х бітної шини даних підключається до відповідного виходу кожної ІМС (виходи D0 всіх мікросхем пам’яті з’єднуються між собою і підключаються до нульового виходу шини даних, виходи D1 з’єднуються між собою і підключаються до першого виходу шини даних і т.д.). В такому випадку до кожної лінії шини даних може бути підключено кілька джерел сигналу, але короткого замикання не відбувається, оскільки в кожен момент часу буде активний вихід лише однієї мікросхеми, який і сформує необхідний логічний рівень на відповідній лінії шини даних. Виходи всіх інших мікросхем будуть знаходитися в третьому стані, тобто будуть від’єднанні від нутрощів ІМС. Отже якщо подати нову адресу на вхід розробленого блоку пам’яті, два старших біта цієї адреси за допомогою дешифратора оберуть одну з мікросхем пам’яті, яка видасть на вихід даних слово, що лежить за молодшими 8 біт адреси. При цьому виходи інших ІМС пам’яті будуть знаходитися в 3-му стані.

Двійкові дешифратори широко використовуються при створенні загальної шини. Пам’ять і периферійні пристрої (таймери, лічильники, UART, USB, порти вводу-виводу, тощо) підключають до сучасних процесорів за допомогою загальної шини. Часто ці компоненти знаходяться в одному адресному просторі і якщо ми записуємо дані за однією адресою, попадаємо в пам'ять, а для іншої адреси запис/зчитування проводиться в/із регістру периферійного пристрою. Нижче у якості прикладу наведено частину адресного простору процесору Cortex A8.

….

З наведеної таблиці видно, що в діапазоні адрес 0x402F0400 – 0x402FFFFF повинна знаходитись внутрішня оперативна статична пам'ять (SRAM) мікроконтроллера, побудованого на базі Cortex A8, а зовнішня пам'ять (External memory) знаходиться в діапазоні адрес 0x00000000 – 0x1FFFFFFF. Регістри UART (universal asynchronous receiver/transmitter) знаходяться в діапазоні адрес 0x44e09000 – 0x44e09FFF. Цей діапазон дозволяє адресувати 4096 (4 Кбайт) 32-х бітних регістрів. Звичайно UART не зобов’язаний використовувати таку велику кількість регістрів, тому на практиці UART містить не більше десятка регістрів, а інші адреси з цього діапазону не використовуються. Порти вводу-виводу GPIO0 знаходяться в діапазоні адрес 0x44E07000 – 0x44E07FFF. Отже в такого процесора може бути максимум 4096 32-розрядних портів вводу-виводу і якщо необхідно щось зчитати/записати з якогось порта, необхідно виконати запис/зчитування слова за адресою цього порта. Отже з використанням подібного підходу всі свої зовнішні пристрої процесор бачить, як комірки пам’яті.

Як це можна реалізувати на практиці? Розглянемо найпростіший випадок, коли адресний простір розбитий на блоки по 8Кбайт. Кожен з цих блоків може бути або оперативною RAM пам’яттю, або постійною ROM пам’яттю, або периферійним пристроєм. Припустимо, що загальна адреса містить 16 біт. В такому випадку молодші 13 біт будуть адресувати комірку всередині 4Кбайтного блоку пам’яті, а старші 16 - 13 = 3 біти будуть адресувати сам блок пам’яті, вибір якого відбувається за допомогою двійкового дешифратора:

Наприклад, якщо ми хочемо зчитати друге слово з постійної ROM пам’яті, необхідно виставити на шину адреси число 0х4002 (0100000000000010 в двійковій системі). Три старші біти, які підключаються до входу дешифратора містять число 2 (010). Отже на виході Y2 дешифратора буде 0, а на всіх інших його виходах буде 1. Нуль на вході ROM пам’яті увімкне цю мікросхему, а одиниця на вході RAM пам’яті вимкне її і переведе виходи RAM в третій стан. Комірки всередині ROM і RAM адресуються 13-тю молодшими бітами на шині адреси.

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

Двійкові дешифратори також широко використовуються, як складові частини мультиплексорів і демультиплексорів, схеми яких будуть розглянуті в наступних лабораторних роботах.

Дешифратор семисегментного індикатора є ще один широко розповсюдженим типом дешифратора. Семисегментний індикатор – відомий пристрій для відображення чисел у десятинній системі (0-9) та у шістнадцятковій системі (0-9, A-F) числення. Існує два типи семи сегментних індикаторів – з загальним анодом (ЗА) і загальним катодом (ЗК). Ці назви виникли зі способу сполучення світлодіодів в індикаторах.

Для того, щоб засвітити розряд (сегмент) індикатора з ЗА, необхідно підключити загальний анод до плюса джерела живлення і подати логічний нуль на вхід, який відповідає обраному сегменту (A-F). При цьому важливо пам’ятати, що подавати нуль необхідно не одразу ж на вхід індикатора, а через резистор, який задасть струм через світлодіод. Якщо не використати цей резистор, струм через світло діод буде обмежений лише дуже низьким опором відкритого діода, що призведе до виходу світлодіода з ладу внаслідок протікання дуже великого струму і перегріву. Якщо на вхід сегмента індикатора з ЗА подати логічну одиницю, відповідний світло діод не буде зміщений в прямому напрямку, тому він не світитиметься.

Щоб засвітити розряд (сегмент) індикатора з ЗК, необхідно підключити загальний катод до мінуса джерела живлення і через резистор подати логічну одиницю на вхід відповідного сегменту.

Отже якщо нам необхідно вивести на семисегментний індикатор якесь число, необхідно подати на входи такого індикатора певну комбінацію нулів і одиниць, яка призведе до висвічування потрібного числа на індикаторі. Задачу перетворення двійкового числа у відповідний код для входу семисегментного індикатора виконує КС дешифратора семисегментного індикатора. Оскільки сегменти індикаторів з ЗА і ЗК засвічуються різними логічними рівнями, дешифратори індикаторів з ЗА і ЗК матимуть різну таблицю істинності.

Спосіб підключення дешифратора семисегментного індикатора з ЗА:

Таблиця істинності семисегментного індикатора з ЗА (Для індикації десяткових чисел 0-9. Для комбінацій 1010-1111 всі сегменти індикатора горітимуть):

Десяткове число D3 D2 D1 D0 A B C D E F G
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
10-15 1010-1111              

Логічні функції не складно створити самостійно, використовуючи ДДНФ, або ДКНФ.

Дешифратор команд мікропроцесора.

Одним з етапів роботи мікропроцесора є визначення команди, яку необхідно виконати. Цю операцію реалізують за допомогою дешифратора команд. Розглянемо роботу такого пристрою на прикладі дешифратора команд для процесора MIPS [2].

Інструкції процесора MIPS мають розрядність 32 біта і бувають трьох типів:

1. Register (R-type): Інструкції операцій над двома регістрами з записом результату в регістр. Формат таких інструкцій:

де Op – код операції (operation code). Займає старших 6 бітів. Для всіх команд R-типу Op=0;

funct – код функції, яку виконує команда R-типу (додавання регістрів, зсув регістру, множення, регістрів тощо). Займає 6 молодших біт;

Rs – номер регістру, з якого необхідно взяти перший операнд для виконання інструкції R-типу;

Rt – номер регістру, з якого необхідно взяти другий операнд для виконання інструкції R-типу;

Rd – номер регістру, в який необхідно записати результат виконання інструкції R-типу;

sa – кількість біт для команди операції логічного зсуву.

2. Immediate (I-type): Інструкції операцій над регістром і числовою константою з записом результату в регістр. Формат таких інструкцій:

де Op – код операції (operation code). Займає старших 6 бітів. Для кожної інструкції I-типу (додавання регістру і константи, тощо) існує свій код команди;

Rs – номер регістру, з якого необхідно взяти перший операнд для виконання інструкції I-типу;

Rt – номер регістру, в який необхідно записати результат виконання інструкції I-типу;

Immediate – другий операнд для виконання інструкції I-типу у вигляді 16-бітної константи;

3. Jump (J-type): Інструкція безумовного переходу (jump). Формат таких інструкцій:

де Op – код операції jump;

Immediate – 26-бітна константа, з якої шляхом зсуву на 2 розряди вліво можна отримати молодші 28 біт адреси пам’яті програм, куди необхідно здійснити безумовний перехід.

В MIPS процесорі, який буде розроблено в даному курсі лабораторних робіт, будуть підтримуватись наступні інструкції (значення Op і funct взято з [3]):

Назва Тип Op funct
add R    
addu  
sub  
subu  
and  
or  
nor  
xor  
slt  
sll  
srl  
sra  
andi I   У даних інструкцій поле funct відсутнє
ori  
xori  
slti  
addi  
addiu  
lw  
sw  
beq  
bne  
j J  
jal  
jr R    

Процесор з архітектурою MIPS зчитує інструкції з пам’яті програм і перед тим як їх виконувати визначає тип інструкції за допомогою дешифратора команд (тобто визначає, що саме необхідно робити). Дешифрація команд в MIPS процесорі визначається двома схемами – дешифратором коду операції Op і дешифратором коду функції funct.

Таблиці істинності дешифраторів коду операції і коду функції дозоляють однозначно ідентифікувати операцію і функцію, які необхідно виконати. До входу дешифратору коду операції підключають біти 26-31 інструкції, які містять поле Op. Одиниця на одному з виходів цього дешифратора однозначно ідентифікує операцію. Це саме стосуються і дешифратора коду функції команд R-типу, код операції яких дорівнює нулю. На вхід цього дешифратора підключають біти 0-5 інструкції, які містять поле funct. Одиниця на одному з виходів покаже яку функцію необхідно виконати.

 

 

Таблиця істинності дешифратора коду операції Op:

Вхід: 6-бітний код операції Op Виходи
r_type andi ori xori slti addi addiu lw sw j beq bne jal
                           
                           
                           
                           
                           
                           
                           
                           
                           
                           
                           
                           
                           

 

Таблиця істинності дешифратора коду функції funct:

Вхід: 6-бітний код функції funct Виходи
add addu sub subu and or nor xor slt sll srl sra  
                           
                           
                           
                           
                           
                           
                           
                           
                           
                           
                           
                           

 

Шифратори

Шифратор представляє собою КС з 2N входів і N-бітним виходом. На виході шифратора встановлюється номер входу на який подано активний рівень сигналу. Наприклад, якщо у входів шифратора активний високий рівень, на виході такого шифратора буде номер того з входів, на який подано логічну одиницю. Якщо на жодному з входів немає активного рівня, на виході зазвичай присутнє число 0. Отже принцип роботи шифратора обернений до принципу роботи двійкового дешифратора. Описаний шифратор називають повним. Якщо кількість входів шифратора з N-бітним виходом менша ніж 2N, такий шифратор називають не повним.

Графічне позначення шифратора з активним високим рівнем на вході:

Найпростішим типом шифратора є непріоритетний шифратор. В такому шифраторі в кожен момент часу активний рівень може бути не більше ніж на одному з входів. Якщо у непріоритетного шифратора буде присутній активний рівень більше ніж на одному з входів, на виході такої схеми будуть присутні двійкові числа, що не несуть жодного змісту. Тому такий режим роботи непріоритетного шифратора є забороненим. Отже в кожен момент часу може бути активним лише один з входів непріоритетного шифратора!

Запишемо таблицю істинності непріоритетного шифратора:

Входи Виходи
X0 X1 X2 X3 X4 X5 X6 X7 Y2 Y1 Y0
                     
                     
                     
                     
                     
                     
                     
                     

Очевидно, що це не повна таблиця істинності, оскільки для повної таблиці істинності КС з 8-ма однобітними входами, кількість можливих комбінацій сигналів на цих входах і кількість записів в таблиці істинності буде дорівнювати 28=256. Але в даному випадку, для непріоритетного шифратора маємо можливість записати таку скорочену таблицю істинності, оскільки ми прийняли припущення, що логічна одиниця може бути присутня не більше ніж на одному вході.

Оскільки таблиця істинності не повна, виходи схеми будуть описуватися не класичними ДДНФ і СКНФ, а їх спрощеними варіантами. Кожен з виходів непріоритетного шифратора буде переходити в одиницю лише у випадку присутності одиниці на відповідному вході (за таблицею істинності). Наприклад, вихід Y2 перейде в одиницю лише тоді, коли X4=1, або X5=1, або X6=1, або X7=1. Використовуючи такий принцип, неважко записати логічні рівняння для вcіх трьох виходів КС, що розглядається:

Y2 = X4 + X5 + X6 + X7; Y1 = X2 + X3 + X6 + X7; Y0 = X1 + X3 + X5 + X7;

Схема, що реалізує такі логічні рівняння:

Як видно з таблиці істинності, логічних рівнянь і схеми, вхід X0 не зв’язаний з жодним виходом. Якщо X0 = 1, тоді Y2 = Y1 = Y0 = 0. Якщо X0 = 0 і на інших входах шифратора теж нулі, на виході також Y2 = Y1 = Y0 = 0. Отже при будь якому значенні на вході X0 і нулях на інших входах, на виходах буде нуль. Тому X0 і не зв’язаний з жодним з виходів, оскільки цей вхід на виходи не впливає. В такому випадку постає питання, як розрізнити ситуації присутності активного рівня вході X0 і відсутності активного рівня на будь-якому з входів (в обох випадках на виході буде нуль). Якщо існує необхідність розрізняти ці дві ситуації, додають ще один вихід шифратора. Назвемо його AI (Active Input), який приймає активний рівень, якщо на будь-якому з входів є активний рівень. Наприклад, якщо в нашого шифратора високий активний рівень входів і високий активний рівень на виході AI, в такому випадку на виході AI буде одиниця, якщо одиниця є на будь якому з входів. Якщо на всіх входах нулі, на виході AI буде нуль. Для досягнення такого функціоналу достатньо підключити всі входи шифратора до вентиля АБО, а вихід цього вентиля подати на AI.

Пріоритетний шифратор використовують, коли існує можливість появи активних рівнів одночасно на кількох входах. В такому випадку на виході шифратора буде номер активного входу з найбільшим індексом для шифратора з пріоритетом по старшому входу і номер активного входу з найменшим індексом для шифратора з пріоритетом по молодшому входу. Наприклад, якщо шифратор має 8 входів, є пріоритетним по старшому входу і активний рівень присутній на входах X2, X3 і X5, на виході буде число 5. Якщо ж цей шифратор буде пріоритетний по молодшому входу, на виході буде число 2. Пріоритетний шифратор можна створити на базі непріоритетного, якщо підключити до входів непріоритетного шифратора КС, яка обере серед кількох активних входів лише один відповідно до пріоритету шифратора. Така КС називається арбітром.

Розглянемо створення арбітру для пріоритетного шифратора, що має 8 входів F0-F7 з активним високим рівнем і пріоритетом по старшому входу F7, і виходи X0-X7. Для створення пріоритетного шифратора необхідно підключити виходи арбітра до входів непріоритетного шифратора, а входи арбітра будуть входами пріоритетного шифратора.

Запишемо логічні рівняння арбітра:

;

;

;

;

;

;

З наведених рівнянь очевидно, що у випадку присутності одиниць на кількох входах F, одиниця старшому з цих входів (назвемо його Fi) приводить до появи одиниці на виході Xi та нулів на всіх виходах, молодших за Xi. Наприклад, якщо F5=1 і F7=F6=0, тоді X5=1 і X4=X3=…=X0=0 не залежно від одиниць на входах F4-F0.


Дата добавления: 2015-11-16; просмотров: 67 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Масштабування двійкових дешифраторів.| Застосування шифраторів.

mybiblioteka.su - 2015-2024 год. (0.018 сек.)