
3 Вычислительный блок
Функцональная схема вычислительного блока представлена на рисунке 3.1
Р
исунок
3.1 — Функцональная схема
Далее рассмотрим схему по блокам. Функциональная схема входного блока представлена на рисунке 3.2.
Данный блок содержит в себе записывающий регистр и счетчик.
Р
исунок
3.2 — Входной
блок
Функциональная схема операционного блока представлена на рисунке
3.3. В нем имеется устройства для выполнения логической и арифметической операции. Блок для выполнения кодирования двоичного числа в 4b5b. Блок для выбора операции для выполнения.
Р
исунок
3.3
—
Операционный
блок
Функциональная схема выходного блока представлена на рисунке 3.4
Р
исунок
3.4 — Выходной
блок
Далее был составлен план моделирования схемы, представленный в
таблице 3.1
Таблица 3.1 – План моделирования
Входы |
Выходы |
||||||||||
КОП |
А |
В |
|||||||||
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Y4 |
Y3 |
Y2 |
Y1 |
Y0 |
|
01 |
X |
X |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
01 |
X |
X |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
10 |
0 |
1 |
1 |
1 |
0 |
1 |
- |
- |
1 |
1 |
0 |
10 |
1 |
0 |
0 |
1 |
0 |
1 |
- |
- |
0 |
0 |
1 |
Окончание табоицы 3.1
Входы |
Выходы |
||||||||||
КОП |
А |
B |
|||||||||
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Y4 |
Y3 |
Y2 |
Y1 |
Y0 |
|
11 |
0 |
0 |
1 |
1 |
0 |
1 |
- |
- |
1 |
0 |
0 |
11 |
1 |
0 |
0 |
0 |
0 |
1 |
- |
- |
0 |
1 |
1 |
00 |
X |
X |
X |
X |
X |
X |
0 |
0 |
1 |
1 |
1 |
сброс |
|||||||||||
00 |
X |
X |
X |
X |
X |
X |
0 |
0 |
0 |
0 |
1 |
Итоги моделирования в режимах Timing и Functional представлены на
рисунках 3.5 – 3.6 соответственно.
Р
исунок
3.5 — Моделирования в режиме Timing
Р
исунок
3.6 –
Моделирования
в режиме Functional
Cистема обрабатывает входные данные data_in и код операции code_in по заднему фронту (спаду) внешнего синхроимпульса cext. При подаче активного сигнала read = 0 происходит выдача значений в строку Q последовательным кодом, начиная со младших разрядов. Выдача синхронизируется импульсами cout, которые зависят от количества выдаваемых значений. Сброс всех регистров выполняется сигналом rst асинхронно с внутренним тактовым сигналом cint.
Операции обработки:
Код 01 — преобразование двоичного числа в 4b5b код;
Код 10 — логическая побитовая операция ;
Код 11 — арифметическая операция A - B;
Код 00 — вывод количества выполненных операций.
В результате моделирования были реализованы два набора данных для каждой из операций. Разберем каждsq код операции.
Cигнал C_int возникает каждые 100 нс.
Первый код 01 на промежутке 400 — 600 нс. Момент нисходящего фронта cext 300 — 500 нс, входные данные data_in XX0001 и code_in 01, активный уровень сигнала rd = 0 на интервае от 600 — 800 нс. Восходящие фронты cout на отметках 750 нс, 950 нс, 1,15 мкс, 1,35 мкс и 1,55 мкс. На выходе получаем значение Q равное 10010, совпадающие с таковыми в таблице.
Второй код 01 на промежутке 1,8 — 2 мкс. Момент нисходящего фронта cext 1,7 — 1,9 мкс, входные данные data_in XX1010 и code_in 01, активный уровень сигнала rd = 0 на интервае 2 — 2,2 мкс. Восходящие фронты cout на отметках 2,15 мкс, 2,35 мкс, 2,55 мкс, 2,75 мкс и 2,95 мкс. На выходе получаем значение Q равное 01101, совпадающие с таковыми в таблице.
Первый код 10 на промежутке 3,2 — 3,4 мкс. Момент нисходящего фронта cext 3,1 — 3,3 мкс, входные данные data_in 011101 и code_in 10, активный уровень сигнала rd = 0 на интервае от 3,4 — 3,6 мкс. Восходящие фронты cout на отметках 3,55 мкс, 3,75 мкс и 3,95 мкс. На выходе получаем значение Q равное 011, совпадающие с таковыми в таблице.
Второй код 10 на промежутке 4,6 — 4,8 мкс. Момент нисходящего фронта cext 4,5 — 4,7 мкс, входные данные data_in 100101 и code_in 10, активный уровень сигнала rd = 0 на интервае от 4,8 — 5 мкс. Восходящие фронты cout на отметках 4,95 мкс, 5,15 мкс и 5,35 мкс. На выходе получаем значение Q равное 100, совпадающие с таковыми в таблице.
Первый код 11 на промежутке 6 — 6,2 мкс. Момент нисходящего фронта cext 5,9— 6,1 мкс, входные данные data_in 001101 и code_in 11, активный уровень сигнала rd = 0 на интервае от 6,2 — 6,4 мкс. Восходящие фронты cout на отметках 6,35 мкс, 6,55 мкс и 6,75 мкс. На выходе получаем значение Q равное 001, совпадающие с таковыми в таблице.
Второй код 11 на промежутке 7,4 — 7,6 мкс. Момент нисходящего фронта cext 7,4 — 7,6 мкс, входные данные data_in 100001 и code_in 11, активный уровень сигнала rd = 0 на интервае от 7,6 — 7,8 мкс. Восходящие фронты cout на отметках 7,75 мкс, 7,95 мкс и 8,15 мкс. На выходе получаем значение Q равное 110, совпадающие с таковыми в таблице.
Первый код 00 на промежутке 9 — 9,2 мкс. Момент нисходящего фронта cext 8,9— 9,1 мкс, входные данные data_in XXXXXX и code_in 00, активный уровень сигнала rd = 0 на интервае 9,2— 9,4 мкс. Восходящие фронты cout на отметках 9,35 мкс, 9,55 мкс, 9,75 мкс, 9,95 мкс и 10,15 мкс. На выходе получаем значение Q равное 11100, совпадающие с таковыми в таблице.
Следующая команда – это сброс rst на промежутке 10,4 — 10,6 мкс. Входных и выходных данных нет.
Второй код 00 на промежутке 10,8 — 11 мкс. Момент нисходящего фронта cext 10,7— 10,9 мкс, входные данные data_in XXXXXX и code_in 00, активный уровень сигнала rd = 0 на интервае 11— 11,2 мкс. Восходящие фронты cout на отметках 11,15 мкс, 11,35 мкс, 11,55 мкс, 11,75 мкс и 11,95 мкс. На выходе получаем значение Q равное 10000, совпадающие с таковыми в таблице.