Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
Курсова робота
"Проектування спеціалізованого обчислювача"
з дисципліни: "Комп’ютерна схемотехніка"
Зміст
Теоретична частина 3
Опис автомата Мілі 3
Кодування граф-схеми автомата 5
Побудова таблиці переходів 5
Синтез керуючого автомату 6
Лічильник 7
ОЗП 9
Двійковий суматор 12
Регістр зсуву 13
ПЗП 15
Шинний формувач 17
Інвертор 19
Кон’юнктор 20
Мультиплексор 21
Практична частина 23
Мікропрограма 23
Граф схема МПА 24
Формування прошивки ПЗП керуючого автомату 25
Перевірка правильності роботи обчислювача 26
Результати моделювання у вигляді часових діаграм 27
Список використаної літератури 28
Додатки 29
Теоретична частина
1.1 Опис Автомата Мілі
Автомат Мілі - скінченний автомат чиї вихідні символи якого визначаються його станом, та символами на вході (на відміну від автомату Мура вихідні символи якого визначаються тільки його станом). На ребрах в діаграмі станів позначають вхідні та вихідні символи .
Автомат Мілі може бути примітивною математичною моделлю шифрувальної машини. Якщо взяти за вхідний та вихідний алфавіти наприклад символи латинки, то можна сконструювати автомат Мілі, який буде для кожного вхідного рядка давати на виході зашифровану послідовність.
Структура автомата Мілі
/
Рис. 1 Загальна структурна схема автомата Мілі
Таблиця - Двійкового кодування станів автомата
№
Стан автомата
позначення
Код
ai
Q3
Q2
Q1
Q0
0
a0
0
0
0
0
1
a1
0
1
0
1
2
a2
1
0
1
0
…
…
…
…
8
a8
1
0
0
0
9
a9
1
0
0
1
За способом формування функції виходів виділяють три типи абстрактних автоматів: автомат Мілі, автомат Мура та С-автомат.
В абстрактному автоматі Мілі значення функції виходу в момент t залежить не лише від стану автомата, але і від набору значень вхідних сигналів.
Довільний абстрактний автомат Мілі має один вхідний і один вихідний канали.
Автомат Мілі характеризується системою рівнянь:
(2.1)
де – множина вхідних сигналів автомата (вхідний алфавіт);
– множина станів автомата (алфавіт станів);
– множина вихідних сигналів (вихідний алфавіт).
λ – функція виходів автомата;
φ – функція переходів автомата.
Іншими словами, функція виходів λ задає відображення (XS)→Y, тобто ставить у відповідність будь-якій парі елементів декартового добутку множин (XS) елемент множини S.
1.2 Кодування граф-схеми автомату
В автоматі Мілі початок і кінець мікропрограми представляються початковим станом автомата а0. Кожна дуга, яка виходить із операторної вершини позначається символом аі. Якщо декілька дуг, позначені певними станами ак, входять до одного блоку графа мікропрограми, то всі вони помічаються однаковим символом стану ак.
1.3 Побудова таблиці переходів
Умови переходу по мікропрограмі від одного стану до іншого задають функцію переходів автомата.
Таблиця переходів (виходів) являє собою таблицю з подвійним входом, рядки якого пронумеровані вхідними буквами, а стовпці – станами. На перетині вказується стан, у який переходить автомат (в таблиці переходів) або вихідний сигнал, що видається ним (у таблиці виходів).
Іноді при завданні автоматів Мілі використовують одну суміщену таблицю переходів і виходів, в якій на перетині стовпця аm і рядка хj записуються у вигляді аs/yg наступний стан і вихідний сигнал, що видається.
1.4 Синтез керуючого автомату
Керуючі пристрої складаються із окремих логічних схем елементів, які виробляють керуючі сигнали в заданій послідовності. Такий керуючий пристрій можна розглядати як керуючий автомат типу Мура чи Мілі.
Для автомату Мілі вихідний сигнал залежить не лише від внутрішнього стану, а й від зовнішнього стану схеми. Можна побудувати граф переходів автомата Мура, де вершинами являються стани автомата, а дугами - умови переходу з одного стану в інший.
В залежності від способу визначення вихідного сигналу в синхронних автоматах існує два способи:
вихідний сигнал y(t) однозначно визначається вхідним сигналом x(t) і станом а(t-1) автомата в наступний момент часу;
вихідний сигнал y(t) однозначно визначається вхідним сигналом x(t) і станом а в даний момент часу.
Автомати можна задати також у вигляді графів, таблиць виходів та переходів, суміщеної таблиці переходів і виходів. Управляючий пристрій складається із окремих логічних схем, що виробляють управляючі сигнали в заданій послідовності. Такий управляючий пристрій можна розглядати як керуючий автомат типу Мура чи Мілі.
Після побудови автомата Мілі функціонування керуючого автомата представляють у вигляді таблиць переходів і виходів. Для цього спочатку виробляють кодування станів автомата двійковими кодами, визначають тип та кількість тригерів. Потім по таблиці переходів встановлюють значення сигналів на входах тригерів, при яких відбуваються переходи; визначають функції збудження тригерів і виконують їх мінімізацію (спрощення). По знайдених виразах будується схема управляючого автомата на вибраних елементах.
1.5 Лічильник
Лічильником називають послідовнісний цифровий пристрій, призначений для підрахунку та запам’ятовування числа імпульсів, поданих на його лічильний вхід.
До синхронних лічильників відносяться лічильники, в яких переключення розрядів відбувається одночасно, незалежно від віддаленості розряду від лічильного входу. Це досягається подаванням на всі тригери синхронізуючих імпульсів, які додатнім або від’ємним перепадом викликають переключення тригерів у відповідності із логікою роботи лічильника. Завдяки такій синхронізації досягається мінімальний час встановлення лічильника, який не перевищує час встановлення одного тригера, чим забезпечується максимальна частота зміни станів лічильника.
Мікросхема SN74LS163 – це 4-розрядний двійковий синхронний реверсивний лічильник. В якому вхід CLR використовується для скидання лічильника в 0, а вхід LD – для попереднього запису в лічильник інформації, що надходить з входів D0, D1, D2 і D3.
Скидання лічильника в 0 відбувається при подаванні лог.1 на вхід CLR, при цьому на вході LD повинна бути лог.1. Максимальний коефіцієнт перерахунку SN74S163 складає 16.
/
Рис.2 Умовне графічне позначення лічильника SN74S163
/
Рис. 3 Часові діаграми вхідних та вихідних сигналів лічильника
Таблиця істинності лічильника
Режими
Входи
Виходи
R
+1
-1
D3
D2
D1
D0
Q3
Q2
Q1
Q0
Скидання
1
1
x
x
x
X
x
x
0
0
0
0
1
1
Паралельне
завантаження
0
0
x
0
0
0
0
0
0
0
0
0
1
0
0
0
x
1
0
0
0
0
0
0
0
0
1
1
0
0
0
x
1
1
1
1
1
1
1
1
0
1
0
0
1
x
1
1
1
1
1
1
1
1
1
1
Пряме рахування
0
1
(
1
x
x
x
x
Пряме рахування
1
1
1.6 Оперативно запам’ятовуючий пристрій
Запам’ятовуючі пристрої (ЗП) складають самостійний, широко розвинений клас мікросхем середнього, великого і надвеликого ступеня інтеграції.
Напівпровідникові ЗП за режимом занесення інформації поділяються на оперативні і постійні, за принципом вибірки інформації – на пристрої з довільною та з послідовною вибіркою, за технологією виготовлення – на біполярні та уніполярні.
Оперативні запам’ятовуючі пристрої (ОЗП) поділяються на дві великі групи: статичні і динамічні. В накопичувачах статичних ОЗП застосовуються тригерні елементи пам’яті. В ОЗП динамічного типу запам’ятовуючим елементом служить конденсатор, в якому інформація зберігається в формі наявності або відсутності заряду.
Перевагою статичних ОЗП перед динамічними є відсутність схеми регенерації інформації, що значно спрощує керування. Крім того, швидкодія статичних ОЗП суттєво перевищує швидкодію динамічних ОЗП. З іншого боку, ємність мікросхем динамічних ОЗП набагато вища, ніж статичних.
На рис. 4 наведено типову структурну схему напівпровідникового ОЗП, яка складається з наступних типових вузлів: матриці запам’ятовуючих елементів (ЗЕ), дешифраторів рядків і стовбців (DCX, DCY) пристрою запису (ПЗ), пристрою читання (ПЧ) і пристрою керування (ПК).
При об’єднанні ЗП в систему пам’яті використовуються типові елементи, пов’язані з вхідними та вихідними схемами. Вхідні схеми являють собою логічні елементи, через які інформаційні, керуючі і адресні сигнали надходять в ЗП. Вхідні інформаційні сигнали DI надходять в пристрій запису ПЗ, який служить для записування інформації в елементи пам’яті, об’єднані в матриці ЗЕ. Вихідні інформаційні сигнали DO зчитуються із ЗП через пристрій читання ПЧ.
Керуючі сигнали і надходять в пристрій керування ПК і пристрій запису ПЗ і визначають режим роботи ЗП (запис, збереження, зчитування інформації).
/
Рис.4 Структурна схему напівпровідникового ОЗП
В даній роботі у якості запам’ятовуючих елементів використовується мікросхема моделі CY7C128A(RAM). Для запису шістнадцяти розрядних слів використовується дві мікросхеми. В яких використовуються такі входи:
А10…А0 – адресні входи
WE – Вхід дозволу запису та зчитування
OE – вхід управління станом вхідного буфера
СE - Вхід вибору кристала
/
Рис. 5 Умовне графічне позначення ОЗП CY7C128A
Рис. 6 Цикл читання 1
Рис. 8 Цикл запису WE
Рис. 9 Цикл запису CE
1.7 Двійковий суматор
Суматори – це комбінаційні пристрої, що здійснюють основну арифметичну операцію – додавання чисел в двійковому коді. Найбільш поширені двійкові повні суматори.
Кожний розряд двійкового повного суматора має три входи (A і B – для доданків, P0 – сигнал переносу від попереднього розряду) і два виходи (S – суми і P – сигналу переносу в наступний розряд). Входи A, B і P0 в загальному рівноправні. Сигнал суми S приймає значення лог.1 при непарній кількості одиниць на входах A, B і P0, і лог.0 при парній. Сигнал переносу P рівень лог.1 при кількості одиниць на входах, рівній 2 або 3. Логічні функції виходів повного одно-розрядного суматора:
Мікросхема SN74S283 – це швидкодіючий повний 4-розрядний двійковий суматор. В якому використовуються такі входи та виходи :
А0…А4 - входи даних
В0…В4 –входи даних
Р0 – вхід переносу
Р4 – вихід сигналу переносу
S1…S4 – виходи на яких появляються суми вхідних слів
/
Рис. 10 Умовне графічне позначення суматора SN74S283
1.8 Регістр
Регістри – це послідовні пристрої, призначені для прийому, збереження, простих перетворень та передачі двійкових кодів. Під простими перетвореннями розуміють зсув кодів на задану кількість розрядів, а також перетворення послідовного двійкового коду в паралельний і паралельного в послідовний. Базовими елементами регістрів є тригери, які доповнюються комбінаційними логічними елементами для реалізації певних зв’язків між розрядами регістра і для керування прийомом та передачею операндів. Одне з функціональних призначень регістрів – оперативна пам’ять для багато розрядних двійкових кодів.
Мікросхема ИР13 – це універсальний 8-розрядний реверсивний регістр зсуву. Він має 8 виходів паралельного коду Q0..Q7 і наступні входи: D0..D7 – для подавання інформації при паралельному записуванні, DR і DL – для подавання послідовної інформації і зсуві вправо і вліво відповідно, C – для подавання тактових імпульсів, S0 і S1 – для керування режимом і – для скидання тригерів регістра.
При подаванні на вхід лог.0 відбувається скидання всіх тригерів регістра незалежно від станів інших входів. Будь-які інші зміни станів регістра відбуваються лише по додатньому фронту тактового імпульса на вході C. При лог.1 на вході S0 і лог.0 на вході S1 відбувається послідовний прийом інформації з входу DR в 0-й розряд регістра і зсув вправо. При лог.1 на вході S1 і лог.0 на вході S0 відбувається послідовний прийом інформації з входу DL в 7-й розряд регістра і зсув вліво. Якщо ж лог.1 подається на обидва входи S0 і S1, то відбувається паралельний запис в регістр інформації з входів D0..D7. Подавання лог.0 на обидва входи S0 і S1 блокує тактові імпульси, що подаються на вхід C і регістр переводиться в режим збереження.
/
Рис. 11 Умовне графічне позначення регістра зсуву К555ИР13
Режим
Входи
Виходи
роботи
C
S1
S0
DR
DL
Dn
Q0
Q1..Q6
Q7
Скидання
x
0
x
x
x
x
x
0
0..0
0
Збереження
x
1
0
0
x
x
x
q0
q1 .. q6
q7
Зсув вправо
(
1
0
1
V
x
x
V
q0 .. q5
q6
Зсув вліво
(
1
1
0
x
V
x
q1
q2 .. q7
V
Паралельний запис
(
1
1
1
x
x
dn
d0
d1 .. d6
d7
Рис. 12 Таблиця істинності регістра зсуву К555ИР13
1.9 Постійний запам’ятовуючий пристрій
Постійні запам'ятовуючі пристрої призначені для зберігання одноразово записаної інформації, яка має зберігатися навіть за умов знеструмлення комп'ютеру. Такою інформацією є, наприклад, дані і програми, потрібні для завантаження операційної системи та керування роботою зовнішніх пристроїв комп'ютеру (BIOS). Таким чином, постійний запам'ятовуючий пристрій – це комбінаційна багато входова схема з одним або кількома виходами Q0,...,Qk- ПЗП призначені для зберігання інформації, яка залишається незмінною протягом всього часу роботи пристрою. Ця інформація не зникає при відключенні напруги живлення. Тому в ПЗП можливий лише режим зчитування інформації, причому зчитування інформації не супроводжується її порушенням.
/
Рис.13 Умовне графічне позначення постійного запам’ятовуючого пристрою 6116LA70TDB
Рис.14 Внутрішня схема постійного запам’ятовуючого пристрою
1.10 Шинний формувач
Шинний формувач представляє 8 - розрядний паралельний передатчик з три стабільними виходами і використовується як буферний пристрій шини даних в мікропроцесорних системах.
Пристрій передає данні з шини А в шину В або з B шини у А шину , в залежності від логіки рівня в напрямку контролю (DIR - вхід керування напрямком передачі). OUT-Enable (OE) вхід може бути використаний для відключення пристрою, щоб шина була надійно ізольована.
/
Рис.15 Умовне графічне позначення шинного формувача SN74LV245
/
Рис.16 Часові діаграми тривалості імпульсу формувача SN74LV245
/
Рис.17 Графік часової затримки сигналів SN74LV245
1.11 Інвертор
Інвертор представляє собою пристрій для інверсії двійкових розрядів.
Для нашого спеціалізованого обчислювача ми вибрали мікросхему SN74HC14, яка містить в собі 6 незалежних інверторів і працює за логічною формулою Y=/A.
Рис.18 Умовне графічне позначення інвертора SN74HC14
Таблиця істинності інвертора
1.12 Кон’юнктор
Кон'юнкція (лат. conjangere — об'єднувати) (операція AND) — двомісна логічна операція, що має значення «істина», якщо всі операнди мають значення «істина».Операція передбачає вживання сполучника «і» в логічних висловлюваннях.висловлюваннях.
/
Рис.19 Умовне графічне позначення кон’юнктура
Таблиця істинності кон’юнктура
X1
X2
Y
0
0
0
0
0
0
1
1
0
1
1
1
1.13 Мультиплексор
Мультиплексори – це цифрові багатопозиційні перемикачі (або комутатори). Вони забезпечують комутацію на виході одного з декількох інформаційних вхідних сигналів у відповідності із заданим кодом на керуючих входах.
Схема мультиплексора має чотири входи даних D0..D3, два адресних входи A0, A1, вхід стробування та вихід Y. В залежності від комбінації керуючих сигналів на адресних входах і при наявності сигналу стробування (=0) мультиплексор забезпечує комутацію одного з входів даних на вихід. При =1 на виході мультиплексора утримується постійний рівень лог.0. Логічний вираз, що визначає функціонування цього мультиплексора, має вигляд:
.
/
Рис 20. 4-входовий мультиплексор.
2. Практична Частина
2.1 Мікропрограма у відповідності із заданим варіантом
№
N
Формула
8
14
Yi = –Xi / 8 + 3∙Xi+1 / 4 = –Xi / 8 + Xi+1 / 2+ Xi+1 / 4
Умови переходу по мікропрограмі від одного стану до іншого задають функцію переходів автомата.
Таблиця переходів (виходів) являє собою таблицю з подвійним входом, рядки якого пронумеровані вхідними буквами, а стовпці – станами. На перетині вказується стан, у який переходить автомат (в таблиці переходів) або вихідний сигнал ,що видається ним (у таблиці виходів)
S0-S7 – (S - state) стани мікро програмного автомата;
Мікропрограма обчислювального автомата
S0:
if condition_signal = 0
MUX0=1,MUX1=1
go to S0
else
LOAD=0,INC=0,A4=0,RWE=1,EOE=0, rd_rdy=1, IOE=1 ,MUX0=0 ,MUX=1 ,IDIR=1
go to S1
S1:
if condition_signal = 0
LOAD=1 ,INC=1 ,RWE=0
go to S1
Else
LOAD=0 ,RWE=1 ,IOE=0 ,IDIR=0 , INC=1 ,A4 = 0 ,rd_rdy = 0
go to S2
S2:
LOAD=1 ,INC=1
go to S3
S3:
if condition_signal = 0
INC=0 ,LOAD=1 ,RWE=1 ,EOE=0 ,A4=0
go to S4
else
wr_ack=1 ,LOAD=0 ,A4=1 ,RWE=1 ,MUX0=1 ,MUX1=0 ,EOE=0
go to S6
S4:
INC=0 ,LOAD=1 ,RWE=1 ,EOE=0 ,A4=0
go to S5
S5:
INC=1 ,RWE=0,EOE=1 ,A4=1
go to S3
S6:
if condition_signal = 0
go to S6
else
LOAD=1 ,IOE=1 ,INC=1 ,MUX0=0 ,MUX1=1 ,wr_ack=1
go to S7
S7:
if condition_signal = 0
else
IOE=0 ,INC=0 ,wr_ack=0 , rd_rdy=0,MUX0=0 ,MUX1=0 , IDIR=0
go to S7
2.2 Граф-схема МПА
/
Рис.21 Граф-схема автомата
2.3 Формування прошивки ПЗП керуючого автомату
Для занесення інформації в ПЗП необхідно скласти таблицю прошиття, яка встановлює відповідність між адресами і даними. Занесення інформації в ПЗП здійснюється користувачем за допомогою програматора. В моєму випадку таблиця прошиття має такий вигляд
State
NextState
A2
A1
A0
condition_signal
S2
S1
S0
A4
EOE
IDIR
INC
IOE
DATA
s0
s0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
s0
s1
0
0
0
1
0
0
1
0
0
1
0
1
2
5
s1
s1
0
0
1
0
0
0
1
0
0
1
1
1
2
7
s1
s2
0
0
1
1
0
1
0
0
0
0
1
0
4
2
s2
s3
0
1
0
-
0
1
1
0
0
0
1
0
6
2
s3
s4
0
1
1
0
1
0
0
0
0
1
0
0
8
4
s3
s6
0
1
1
1
1
1
0
1
0
0
1
0
D
2
s4
s5
1
0
0
-
1
0
1
0
0
0
0
0
A
0
s5
s3
1
0
1
-
0
1
1
1
1
0
1
0
7
A
s6
s6
1
1
0
0
1
1
0
1
0
0
1
0
D
2
s6
s7
1
1
0
1
1
1
1
1
0
0
1
1
F
3
s7
s7
1
1
1
0
1
1
1
1
0
0
1
1
F
3
s7
s0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
State
NextState
A2
A1
A0
condition_signal
LOAD
MUX0
MUX1
rd_rdy
RWE
wr_ack
DATA
s0
s0
0
0
0
0
0
1
1
0
0
0
1
8
s0
s1
0
0
0
1
0
0
1
1
1
0
0
E
s1
s1
0
0
1
0
1
0
1
1
0
0
2
C
s1
s2
0
0
1
1
0
0
1
0
1
0
0
A
s2
s3
0
1
0
-
1
0
1
0
1
0
2
A
s3
s4
0
1
1
0
1
0
1
0
1
0
2
A
s3
s6
0
1
1
1
0
1
0
0
1
1
1
3
s4
s5
1
0
0
-
1
0
1
0
1
0
2
A
s5
s3
1
0
1
-
1
0
1
0
0
0
2
8
s6
s6
1
1
0
0
0
1
0
0
1
1
1
3
s6
s7
1
1
0
1
1
0
1
0
1
0
2
A
s7
s7
1
1
1
0
1
0
1
0
1
0
2
A
s7
s0
1
1
1
1
0
0
0
0
0
0
0
0
2.4 Перевірка правильності роботи обчислювача
Варіант №8 :
Yi = –Xi / 8 + 3∙Xi+1 / 4 = –Xi / 8 + Xi+1 / 2+ Xi+1 / 4
Перевірка на вхідних даних Xi=2716 і Xі+1=2F16 ,обчислення кожного з доданків відбувається в 3 такти:
Такт 1.
На головну шину поступає значення 2716 яке записується в регістр D13 оскільки на входи регістра S0 i S1 поступає 1 ,запис йде по додатному фронту clock.
Такт 2.
По додатному фронту clock збільшується значення лічильника і з ОЗП береться наступне значення Xi+1=2F16 і поступає на головну шину це значення йде на суматор D15 зсунене на 1 біт і 2 біти вправо, так формуються доданок 3*Xi+1/4= Xi+1/2 + Xi+1/4=2216 ,оскільки два молодших біти Xi+1 рівні 1 то значення на кон’юнкторі D14 буде рівне 1 це значення подасться на вхідний перенос суматора D15.В регістрі D13 збереженне значення Xi=2716 воно зсовується на 3 біти вправо ,тобто ділиться на 8 результатом буде Xi/8=416 це значення інверсується і подається на суматор D17 разом з результатом обчислення з суматора D15 ,а також 1 подається на вхідний перенос суматора D17 оскільки значення Xi подається в інверсному значенні ,результат обчислення записується у регістр D18.INC скидається у 0.
Такт 3.
По додатному фронту clock відкривається шинний формувач D19 який подає обчисленне значення з регістра D18 на головну шину. ОЗП переходить з стану зчитування в стан запису, на A4 подається 1 для запису результату обчислення яке надійшло на головну шину з регістра D18.ОЗП зберігає значення обчисленої величини і йде на обчислення наступного результату.
В результаті обчислень отримуємо наступне значення:
Yi = –Xi / 8 + 3∙Xi+1 / 4 = –2716/ 816 + 2F16 / 416 + 216F / 216=-416 + 2316 =1F16
2.5 Результат моделювання у вигляді часових діаграм
Рис.22. Часова діаграма роботи VHDL моделі
Список використаної літератури
Павлов В.Н., Ногин В.Н. Схемотехника аналоговых электронных устройств: Учебник для вузов.- М.: Горячая Линия, Телеком, 2001;
Хоровиц П., Хилл У. Искусство схемотехники.- М.: Мир,2001;
Бойко В.И. Схемотехника электронных систем. Цифровые устройства.- СПб.: БХВ-Петербург, 2004;
Угрюмов Е.П. Цифровая схемотехника. — СПб.: БХВ — Санкт – Петербург, 2000;
Титце У., Шенк К. Полупроводниковая схемотехника. 12-е изд. Том II: Пер. с нем.- М.: ДМК Пресс, 2007.
Додатки
VHDL-код:
BD.vhdl
library IEEE;
use IEEE.std_logic_1164.all;
entity BDDIR is
port(
A : inout std_logic_vector(7 downto 0);
DIR : in std_logic;
OE : in std_logic;
B : inout std_logic_vector(7 downto 0)
);
end BDDIR;
architecture BDDIR of BDDIR is
begin
Main : process (A,B,DIR,OE,B)
begin
if OE = '1' then
if DIR='0' then
B<=A;
else
A<=B;
end if;
else
B<=(others => 'Z');
A<=(others => 'Z');
end if;
end process Main;
end BDDIR;
Counter.vhdl
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity Counter is
port(
P : in std_logic_vector(3 downto 0);
CLK : in std_logic;
ENT : in std_logic;
ENP : in std_logic;
CLR : in std_logic;
LOAD: in std_logic;
Q : out std_logic_vector(3 downto 0);
TC : out std_logic
);
end Counter;
architecture Counter of Counter is
signal CNT_VAL : std_logic_vector(3 downto 0);
begin
Q <= CNT_VAL;
TC <= '1' when (CNT_VAL=x"F") else '0';
Main : process (P,CLK,ENT,ENP,CLR)
begin
if rising_edge(CLK) then
if CLR='0' then
CNT_VAL<=x"0";
else
if LOAD='0' then
CNT_VAL<=P;
else
if ENT='1' and ENP='1' then
CNT_VAL <= CNT_VAL + 1;
end if;
end if;
end if;
end if;
end process Main;
end Counter;
Mux4in1.vhdl
library IEEE;
use IEEE.std_logic_1164.all;
entity Mux4in1 is
port(
Y : out std_logic;
D0 : in std_logic;
D1 : in std_logic;
D2 : in std_logic;
D3 : in std_logic;
A0 : in std_logic;
A1 : in std_logic
);
end entity Mux4in1;
architecture Mux4in1 of Mux4in1 is
begin
Main: process(D0,D1,D2,D3,A0,A1)
variable adress : std_logic_vector(1 downto 0);
begin
adress := A1&A0;
case adress is
when "00" => Y<=D0;
when "01" => Y<=D1;
when "10" => Y<=D2;
when "11" => Y<=D3;
when others => Y<='0';
end case;
end process Main;
end architecture Mux4in1;
Invertor.vhdl
library IEEE;
use IEEE.std_logic_1164.all;
entity Invertor is
port(
X : in std_logic_vector(7 downto 0);
NX : out std_logic_vector(7 downto 0)
);
end Invertor;
architecture Invertor of Invertor is
begin
Main:process(X)
begin
NX<=not(X);
end process Main;
end;
Ram.vhdl
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity Ram is
port(
AB : in std_logic_vector(4 downto 0);
CE : in std_logic;
WE : in std_logic;
OE : in std_logic;
DB : inout std_logic_vector(7 downto 0)
);
end Ram;
architecture Ram of Ram is
type Memory is array (31 downto 0) of std_logic_vector(7 downto 0);
signal RamMemory : Memory;
begin
DB<=RamMemory(conv_integer(AB)) when (CE='0' and OE='1' and WE='1') else (others => 'Z');
Main : process(OE,WE,AB,