Дешифратор адреси плати PCL-711B

 

Плата аналогового і дискретного уведення-виведення PCL-711B (Advantech Co.) в просторі адрес портів уведення-виведення IBM PC-сумісного комп'ютера займає діапазон з 16 послідовно розміщених адрес. Адреса кожного порту визначається відносно базової адреси BASE, що встановлюється за допомогою перемички на платі. Додатково деякі регістри плати визначаються режимом звернення до них (читання або запис). В таблиці 3.5 перераховані порти плати PCL-711B.

Сигнали вибору регістрів плати PCL-711B можна об'єднати в 15-розрядну шину. Призначення регістрів плати і умовні найменування відповідних сигналів шини приведені в таблиці 3.6.

Таблиця 3.5 – Адреси портів уведення-виведення

 

Адреса Читання Запис
BASE Лічильник 0 Лічильник 0
BASE+1 Лічильник 1 Лічильник 1
BASE+2 Лічильник 2 Лічильник 2
BASE+3 не використовується Керування лічильником
BASE+4 Дані АЦП, м. байт Дані ЦАП, м. байт
BASE+5 Дані АЦП, т.. байт Дані ЦАП, т.. байт
BASE+6 Дискретний вхід, м. байт не використовується
BASE+7 Дискретній вхід, ст. байт не використовується
BASE+8 не використовується Скидання стану переривання
BASE+9 не використовується Настройка коеф. підсилення сигналу
BASE+10 не використовується Сканування мультиплексора
BASE+11 не використовується Управління режимом та перериванням
BASE+12 не використовується Програмний пуск АЦП
BASE+13 не використовується Дискретний вихід, м. байт
BASE+14 не використовується Дискретний вихід, ст. байт
BASE+15 не використовується не використовується

 

Таблиця 3.6 – Призначення регістрів плати PCL-711B

 

Сигнал Призначення регистрів
CNT0 Лічильник 0. Регістр Counter 0 НВІС Intel 8253
CNT1 Лічильник 1. Регістр Counter 1 НВІС Intel 8253
CNT2 Лічильник 2. Регістр Counter 0 НВІС Intel 8253
CCNT Керування лічильником. Регістр Control НВІС Intel 8253
AD0 Дані АЦП, м. байт. Молодший байт даних ВІС АЦП AD574
AD1 Дані АЦП, ст. байт. Старший байт даних ВІС АЦП AD574
DA0 Дані ЦАП, м. байт. Молодший байт даних ВІС ЦАП PM7548
DA1 Дані ЦАП, ст. байт. Старший байт даних ВІС ЦАП PM7548
DIO0 Дискретний вхід/вихід, мл. байт. Молодший байт дискретних даних
DIO1 Дискретний вхід/вихід, ст. байт. Старший байт дискретних даних
RESET Скидання переривання. В режимі передачі даних по перериванню запис в цей регістр дозволяє скинути прапор переривання
GAIN Настройка коеф. підсилення. Можна задати значення коефіцієнта підсилення сигналу, що поступає на АЦП

Продовження табл. 3.6

 

MUX Управління мультиплексором. Вибір одного з восьми каналів аналогового введення
MODE Управління режимом і перериванням. АЦП може виконуватися по сигналу від трьох джерел: з програми, від вбудованої системи запуску, по зовнішньому сигналу
START Програмний запуск АЦП. Запис в цей регістр приводить до запуску АЦП

 

Завдання 5. BASE = 220h. Розробити VHDL-модель поведінки дешифратора адреси регістрів плати PCL-711B. На вхід дешифратора повинні поступати дві шини: 10-розрядна шина ADDR адреси порту уведення-виведення і 2-розрядна шина MODE, що задає режим звернення до порту (читання/запис). На виході повинен формуватися 15-розрядний позиційний код, що відповідає сигналу вибору регістра плати PCL-711B.

3.6 Режими адресації мікропроцесора Intel 8086

 

В більшості випадків для визначення режиму адресації в команді мікропроцесора Intel 8086 використовуються три бітових поля: MOD (2 біти), R/M (3 біти) і W (1 біт). Ефективна адреса операнда для різних поєднань цих бітових полів обчислюється за допомогою різних регістрів мікропроцесора. Іноді в команді явно вказується величина зсуву. Позначимо 16-бітовий зсув D16, 8-бітовий, розширений із знаком, зсув позначимо D8. Тоді правила обчислення ефективної адреси операнда можна задати таблицею 3.7.

 

Таблиця 3.7 – Режими адресації мікропроцесора Intel 8086

 

Поле MOD=00 MOD=01 MOD=10 MOD=11; W=0 MOD=11; W=1
R/M=000 (BX)+(SI) (BX)+(SI)+D8 (BX)+(SI)+D16 AL AX
R/M=001 (BX)+(DI) (BX)+(DI)+D8 (BX)+(DI)+D16 CL CX
R/M=010 (BP)+(SI) (BP)+(SI)+D8 (BP)+(SI)+D16 DL DX
R/M=011 (BP)+(DI) (BP)+(DI)+D8 (BP)+(DI)+D16 BL BX
R/M=100 (SI) (SI)+D8 (SI)+D16 AH SP
R/M=101 (DI) (DI)+D8 (DI)+D16 CH BP
R/M=110 D16 (BP)+D8 (BP)+D16 DH SI
R/M=111 (BX) (BX)+D8 (BX)+D16 BH DI

 

Наприклад, якщо поля MOD=01 і R/M=011 (значення біта W в цьому випадку не має значення), то ефективна адреса виходить після підсумовування вмісту регістрів BP, DI і 8-бітового зсуву D8, вказаного в команді. Потім ефективна адреса складається з помноженим на 16 значенням, що зберігається в сегментному регістрі. В результаті цих маніпуляцій одержують фізичну адресу операнду.

Завдання 6. Розробити VHDL-модель поведінки блоку, що формує список регістрів, що беруть участь в обчисленні ефективної адреси залежно від значення бітових полів MOD, R/M і W. Всього регістрів шістнадцять: АХ, AH, AL, BX, BH, BL, CX, CH, CL, DX, DH, DL, BP, SP, SI і DI. Список регістрів має вигляд 16-розрядного позиційного кода, кожний біт якого відповідає одному з перерахованих регістрів мікропроцесора Intel 8086. Наприклад, для раніше розглянутого випадку (MOD = 01, R/M = 011, W - будь-яке значення), якщо біти позиційного коду розташовані у вказаному порядку, список задіяних регістрів буде закодований так: 0000000000001001.

 

3.7 Система команд мікропроцесору Intel 4004

 

i4004 – один з перших мікропроцесорів, випущений фірмою Intel в 1974 році. Система команд його складалася з 16 машинних, 14 акумуляторних і 15 команд вводу-виведення/зварнення до оперативної пам‘яті. В таблицях 3.8, 3.9 та 3.10 приведені коди операцій і мнемоніка машинних команд процесора Intel 4004.

Таблиця 3.8 – Машинні команди мікропроцесора Intel 4004

 

Код Мнемоніка Опис команди
00h NOP Холостий цикл (немає операції).
1Xh JCN Умовний перехід при виконанні умови.
2Xh FIM Вибірка числа з пам'яті програм в регістрову пару.
2Xh SRC Посилка регістрового управління.
3Xh FIN Непряма вибірка числа з ПЗП в регістрову пару.
3Xh JIN Непрямий перехід за адресою, яка зберігається в регістровій парі.
4Xh JUN Безумовний перехід.
5Xh JMS Виконати підпрограму. Попередню адресу зберегти в стек.
6Xh INC Інкремент вмісту регістра.
7Xh ISZ Інкремент і перепускання за нульовою умовою.
8Xh ADD Додати вміст регістра до вмісту акумулятора.
9Xh SUB Відняти вміст регістра з акумулятора.
AXh LD Завантажити акумулятор з регістра.
BXh XCH Обміняти вміст регістра і акумулятора.
CXh BBL Повернення з підпрограми.
DXh LDM Завантажити дані в акумулятор.

Таблиця 3.9 – Акумуляторні команди мікропроцесора Intel 4004

 

Код Мнемоніка Опис команди
F0h CLB Загальне скидання.
F1h CLC Скинути перенесення.
F2h IAC Інкремент вмісту акумулятора.
F3h CMC Утворити зворотний код трігера перенесення.
F4h CMA Утворити зворотний код вмісту акумулятора.
F5h RAL Циклічний зсув вліво вмісту акумулятора і трігера.
F6h RAR Циклічний зсув управо вмісту акумулятора і трігера.
F7h TCC Передати перенесення в акумулятор.
F8h DAC Декремент вмісту акумулятора.
F9h TCS Віднімання з перенесенням.
FAh STC Встановити трігер перенесення.
FBh DAA Десяткова корекція вмісту акумулятора.
FCh KBP Перетворення коду клавіатури в двійковий код.
FDh DCL Визначити лінію управління пам'яттю.

 

Таблиця 3.10 – Команди уведення-виведення і звернення до пам‘яті мікропроцесора Intel 4004

 

Код Мнемоніка Опис команди
E0h WRM Запис вмісту акумулятора в символьне поле регістра пам‘яті.
E1h WMP Запис вмісту акумулятора в порт виводу пам‘ять.
E2h WRR Запис вмісту акумулятора в порт уведення-виведення.
E3h WPM Запис вмісту акумулятора в пам‘ять програми.
E4h WR0 Запис вмісту акумулятора в полі 0 пам‘яті.
E5h WR1 Запис вмісту акумулятора в полі 1 пам‘яті.
E6h WR2 Запис вмісту акумулятора в полі 2 пам‘яті.
E7h WR3 Запис вмісту акумулятора в полі 3 пам‘яті.
E8h SBM Відняти вміст символьного поля пам‘яті з акумулятора.
E9h RDM Читання символьного поля пам‘яті в акумулятор.
EAh RDR Читання вмісту порту уведення-виведення в акумулятор.
EBh ADM Скласти вміст символьного поля пам‘яті з акумулятором.
ECh RD0 Читання поля 0 пам‘яті в акумулятор.
EDh RD1 Читання поля 1 пам‘яті в акумулятор.
EEh RD2 Читання поля 2 пам‘яті в акумулятор.
EFh RD3 Читання поля 3 пам‘яті в акумулятор.

Завдання 7. Розробити VHDL-модель поведінки дешифратора машинних команд мікропроцесора Intel 4004. Код операції - 8 біт. На виході дешифратора повинен формуватися позиційний двійковий код вибору операції (16 біт).

Завдання 8. Розробити VHDL-модель поведінки дешифратора акумуляторних команд мікропроцесора Intel 4004. Код операції - 8 біт. На виході дешифратора повинен формуватися позиційний двійковий код вибору операції (14 біт).

Завдання 9. Розробити VHDL-модель поведінки дешифратора команд уведення-виведення і звернення до пам‘яті мікропроцесора Intel 4004. Код операції - 8 біт. На виході дешифратора повинен формуватися позиційний двійковий код вибору операції (15 біт).