3 ВЫЧИСЛИТЕЛЬНЫЙ БЛОК
Функцональная схема вычислительного блока представлена на рисунке
3.1
Рисунок 3.1 — Функцональная схема
Далее рассмотрим схему по блокам. Функциональная схема входного блока представлена на рисунке 3.2.
Данный блок содержит в себе записывающий регистр и счетчик.
Рисунок 3.2 — Входной блок
11
Функциональная схема операционного блока представлена на рисунке 3.3. В нем имеется устройства для выполнения логической и арифметической операции. Блок для выполнения проверки Commodore GCR-кода. Блок для выбора операции для выполнения.
Рисунок 3.3 — Операционный блок
12
Функциональная схема выходного блока представлена на рисунке 3.4
Рисунок 3.4 — Выходной блок
13
Далее был составлен план моделирования схемы, представленный в таблице 3.1 Таблица 3.1 – План моделирования
|
|
|
Входы |
|
|
|
|
|
Выходы |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|||
КОП |
|
А |
|
|
В |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Y4 |
Y3 |
|
Y2 |
|
Y1 |
Y0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
01 |
X |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
|
0 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
01 |
X |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
|
0 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
01 |
X |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
|
1 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
01 |
X |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
|
0 |
|
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
01 |
X |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
|
0 |
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
0 |
0 |
0 |
0 |
1 |
0 |
- |
- |
|
1 |
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
0 |
1 |
0 |
1 |
1 |
1 |
- |
- |
|
0 |
|
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
0 |
0 |
0 |
0 |
0 |
1 |
- |
- |
|
0 |
|
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
0 |
1 |
1 |
0 |
0 |
1 |
- |
- |
|
1 |
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00 |
X |
X |
X |
X |
X |
X |
0 |
1 |
|
0 |
|
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
сброс |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00 |
X |
X |
X |
X |
X |
X |
0 |
0 |
|
0 |
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Система обрабатывает входные данные data_in и код операции code_in по переднему фронту внешнего синхроимпульса C_ext. При подаче активного сигнала RD = 1 происходит выдача значений в строку dout последовательным кодом, начиная с младших разрядов (LSB̅ first). Выдача синхронизируется импульсами C_out, которые зависят от количества выдаваемых значений. Сброс всех регистров выполняется сигналом RST синхронно с внутренним тактовым сигналом C_int.
Операции обработки:
14
Код 01 — проверка Commodore GCR-кода (задача №9); Код 10 — логическая побитовая операция A B̅T;
Код 11 — арифметическая операция A+B̅+1;
Код 00 — вывод количества выполненных операций.
В результате моделирования были реализованы несколько наборов данных для каждой из операций. Разберем каждый код операции.
Cигнал C_int возникает каждые 100 нс.
Первый код 01 на промежутке 400 — 600 нс. Момент нарастающего фронта C_ext 500 нс, входные данные data_in = X00111 и code_in = 01, активный уровень сигнала RD = 1 на интервале 600 — 800 нс. Нисходящие фронты C_out на отметках 750 нс (dout=0), 950 нс (dout=0), 1,15 мкс (dout=0), 1,35 мкс (dout=0) и 1,55 мкс (dout=1). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 00001, что соответствует параллельному коду 10000 из таблицы.
Второй код 01 на промежутке 1,8 — 2,0 мкс. Момент нарастающего фронта C_ext 1,9 мкс, входные данные data_in = X11100 и code_in = 01, активный уровень сигнала RD = 1 на интервале 2,0 — 2,2 мкс. Нисходящие фронты C_out на отметках 2,15 мкс (dout=0), 2,35 мкс (dout=0), 2,55 мкс (dout=0), 2,75 мкс (dout=1) и 2,95 мкс (dout=0). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 00010, что соответствует параллельному коду 01000 из таблицы.
Рисунок 3.5 — Моделирования в режиме Functional для 1 и 2 операции
15
Рисунок 3.6 — Моделирования в режиме Timing для 1 и 2 операции
Третий код 01 на промежутке 3,2 — 3,4 мкс. Момент нарастающего фронта C_ext 3,3 мкс, входные данные data_in = X10100 и code_in = 01, активный уровень сигнала RD = 1 на интервале 3,4 — 3,6 мкс. Нисходящие фронты C_out на отметках 3,55 мкс (dout=0), 3,75 мкс (dout=0), 3,95 мкс (dout=1), 4,15 мкс (dout=0) и 4,35 мкс (dout=0). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 00100, что соответствует параллельному коду 00100 из таблицы.
Четвёртый код 01 на промежутке 4,6 — 4,8 мкс. Момент нарастающего фронта C_ext 4,7 мкс, входные данные data_in = X10001 и code_in = 01, активный уровень сигнала RD = 1 на интервале 4,8 — 5,0 мкс. Нисходящие фронты C_out на отметках 5,05 мкс (dout=0), 5,25 мкс (dout=1), 5,45 мкс (dout=0), 5,65 мкс (dout=0) и 5,85 мкс (dout=0). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 01000, что соответствует параллельному коду 00010 из таблицы.
16
Рисунок 3.7 — Моделирования в режиме Functional для 3 и 4 операции
Рисунок 3.8 — Моделирования в режиме Timing для 3 и 4 операции
Пятый код 01 на промежутке 6,0 — 6,2 мкс. Момент нарастающего фронта C_ext 6,1 мкс, входные данные data_in = X11111 и code_in = 01, активный уровень сигнала RD = 1 на интервале 6,2 — 6,4 мкс. Нисходящие фронты C_out на отметках 6,45 мкс (dout=1), 6,65 мкс (dout=0), 6,85 мкс (dout=0), 7,05 мкс (dout=0) и 7,25 мкс (dout=0). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 10000, что соответствует параллельному коду 00001 из таблицы.
Первый код 10 на промежутке 7,4 — 7,6 мкс. Момент нарастающего фронта C_ext 7,5 мкс, входные данные data_in = 000010 и code_in = 10, активный уровень сигнала RD = 1 на интервале 7,6 — 7,8 мкс. Нисходящие фронты C_out на отметках 7,95 мкс (dout=1), 8,15 мкс (dout=0) и 8,35 мкс
17
(dout=1). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 101, что соответствует параллельному коду 101 из таблицы.
Рисунок 3.9 — Моделирования в режиме Functional для 5 и 6 операции
Рисунок 3.10 — Моделирования в режиме Timing для 5 и 6 операции
Второй код 10 на промежутке 8,9 — 9,1 мкс. Момент нарастающего фронта C_ext 9,0 мкс, входные данные data_in = 010111 и code_in = 10, активный уровень сигнала RD = 1 на интервале 9,1 — 9,3 мкс. Нисходящие фронты C_out на отметках 9,45 мкс (dout=0), 9,65 мкс (dout=1) и 9,85 мкс (dout=0). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 010, что соответствует параллельному коду 010 из таблицы.
18
Первый код 11 на промежутке 10,4 — 10,6 мкс. Момент нарастающего фронта C_ext 10,5 мкс, входные данные data_in = 000001 и code_in = 11, активный уровень сигнала RD = 1 на интервале 10,6 — 10,8 мкс. Нисходящие фронты C_out на отметках 11,25 мкс (dout=0), 11,45 мкс (dout=1) и 11,65 мкс (dout=0). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 010, что соответствует параллельному коду 010 из таблицы.
Рисунок 3.11 — Моделирования в режиме Functional для 7 и 8 операции
Рисунок 3.12 — Моделирования в режиме Timing для 7 и 8 операции
Второй код 11 на промежутке 12,2 — 12,4 мкс. Момент нарастающего фронта C_ext 12,3 мкс, входные данные data_in = 011001 и code_in = 11, активный уровень сигнала RD = 1 на интервале 12,4 — 12,6 мкс. Нисходящие фронты C_out на отметках 12,85 мкс (dout=1), 13,05 мкс (dout=0) и 13,25 мкс
19
(dout=1). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 101, что соответствует параллельному коду 101 из таблицы.
Первый код 00 на промежутке 13,9 — 14,1 мкс. Момент нарастающего фронта C_ext 13,8 мкс, входные данные data_in = XXXXXX и code_in = 00, активный уровень сигнала RD = 1 на интервале 14,0 — 14,2 мкс. Нисходящие фронты C_out на отметках 14,25 мкс (dout=0), 14,45 мкс (dout=1), 14,65 мкс (dout=0), 14,85 мкс (dout=1) и 15,05 мкс (dout=0). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 01010, равное 10 операциям, что соответствует параллельному коду 01010 из таблицы.
Рисунок 3.13 — Моделирования в режиме Functional для 9 и 10 операции
Рисунок 3.14 — Моделирования в режиме Timing для 9 и 10 операции
20
