внешней синхронизации C_ext. При помощи сигнала CLR реализован асинхронный сброс.
На рисунке 3.3 представлен операционный блок.
Рисунок 3.3 – Операционный блок
На выходе OP1 получаем результат логической операции A ∩ B, где
Q_reg[5..3] и Q_reg[2..0] это входы А и В соответственно.
На выходе OP2 получаем результат арифметической операции А-В.
При помощи декодеров inst13, inst15, inst17, inst19, inst21 реализовано преобразование из двоичного кода в код МТК-2 согласно соответствующей таблице истинности. Результат преобразования получаем на выходе OP3.
При помощи счетчика inst24 осуществляется счет проделанных операций.
На clk_en поступает сигнал, когда счетчик тактирующих сигналов C_ext равен 0,
и при подаче сигнала на C_ext срабатывает счетчик inst24. Счетчик оснащен асинхронным сбросом по сигналу CLR.
11
На рисунке 3.4 представлен выходной блок.
Рисунок 3.4 – Выходной блок
На мультиплексор в качестве адресного сигнала поступает сигнал
OPERATION, идущий из входного блока. Для каждой операции предусмотрен свой код, через который можно вывести результат данной операции. С приходом активного уровня сигнала nreadd с помощью D триггера происходит генерация одиночного выходного тактового импульса считывающего устройства.
12
4МОДЕЛИРОВАНИЕ
Втаблице 4.1 представлен план моделирования, по которому каждая операция будет выполняться два раза с разными входными данными и сброс до
ипосле вывода количества выполненных операций.
Таблица 4.1 – План моделирования
|
|
|
|
|
|
Входы |
|
|
|
|
|
|
|
|
|
|
Выходы |
|
|
|
|
||||||
|
Код |
|
|
A |
|
|
|
|
|
|
B |
|
|
CLR |
4 |
|
3 |
|
2 |
|
|
1 |
|
0 |
|
||
операции |
5 |
|
4 |
|
3 |
|
|
2 |
|
1 |
|
0 |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
0 |
|
1 |
x |
|
x |
|
0 |
|
|
1 |
|
0 |
|
1 |
|
0 |
0 |
|
0 |
|
0 |
|
|
0 |
|
1 |
|
0 |
|
1 |
x |
|
x |
|
1 |
|
|
1 |
|
1 |
|
0 |
|
0 |
0 |
|
0 |
|
1 |
|
|
0 |
|
0 |
|
1 |
|
0 |
1 |
|
0 |
|
0 |
|
|
0 |
|
0 |
|
1 |
|
0 |
0 |
|
0 |
|
0 |
|
|
0 |
|
1 |
|
1 |
|
0 |
0 |
|
0 |
|
0 |
|
|
1 |
|
1 |
|
0 |
|
0 |
0 |
|
0 |
|
1 |
|
|
1 |
|
0 |
|
1 |
|
1 |
1 |
|
1 |
|
0 |
|
|
0 |
|
0 |
|
1 |
|
0 |
0 |
|
0 |
|
1 |
|
|
0 |
|
1 |
|
1 |
|
1 |
0 |
|
1 |
|
0 |
|
|
1 |
|
1 |
|
0 |
|
0 |
0 |
|
0 |
|
1 |
|
|
0 |
|
0 |
|
0 |
|
0 |
x |
x |
|
x |
|
x |
x |
x |
0 |
0 |
|
0 |
|
1 |
|
|
1 |
|
1 |
|
|||||
x |
|
x |
x |
x |
|
x |
|
x |
x |
x |
1 |
0 |
|
0 |
|
0 |
|
|
0 |
|
0 |
|
|||||
0 |
|
0 |
x |
x |
|
x |
|
x |
x |
x |
0 |
0 |
|
0 |
|
0 |
|
|
0 |
|
1 |
|
На рисунке 4.1 представлено моделирование для операции преобразования двоичного кода в код МТК-2.
Рисунок 4.1 – Моделирование первых двух операций (Timing)
На передний фронт (50 нс) первого такта (50-100 нс) C_ext сигнал 1 на входе input (0-100 нс).
На передний фронт (150 нс) второго такта (150-200 нс) C_ext сигнал 0 на входе input (100-200 нс).
13
На передний фронт (250 нс) третьего такта (250-300 нс) C_ext сигнал 1 на входе input (200-300 нс).
На передний фронт (350 нс) четвертого такта (350-400 нс) C_ext сигнал 0
на входе input (300-400 нс).
На передний фронт (450 нс) пятого такта (450-500 нс) C_ext сигнал 1 на входе input (400-500 нс).
На передний фронт (550 нс) шестого такта (550-600 нс) C_ext сигнал 0 на входе input (500-600 нс).
Таким образом входные данные ХХ0101, а код операции 01, причем данные были введены последовательно младшими разрядами вперед. При подаче активного сигнала nreadd (900-1000 нс) генерируется тактовый сигнал
C_out (956,25-1056,25 нс). Выдача полученного результата происходит по заднему фронту (925-975 нс). На выходе outt осуществляется выдача выходных данных: 00001.
На передний фронт (1300 нс) первого такта (1300-1350 нс) C_ext сигнал 1
на входе input (1250-1350 нс).
На передний фронт (1400 нс) второго такта (1400-1450 нс) C_ext сигнал 0
на входе input (1350-1450 нс).
На передний фронт (1500 нс) третьего такта (1500-1550 нс) C_ext сигнал 0
на входе input (1450-1550 нс).
На передний фронт (1600 нс) четвертого такта (1600-1650 нс) C_ext сигнал
1 на входе input (1550-1650 нс).
На передний фронт (1700 нс) пятого такта (1700-1750 нс) C_ext сигнал 1 на входе input (1650-1750 нс).
На передний фронт (1800 нс) шестого такта (1800-1850 нс) C_ext сигнал 1
на входе input (1750-1850 нс).
Таким образом входные данные ХХ1110, а код операции 01, причем данные были введены последовательно младшими разрядами вперед. При подаче активного сигнала nreadd (2200-2300 нс) генерируется тактовый сигнал
14
C_out (2256,5-2356,5 нс). Выдача полученного результата происходит по заднему фронту (2225-2275 нс). На выходе outt осуществляется выдача выходных данных: 00100.
На рисунке 4.2 представлено моделирование логической операции.
Рисунок 4.2 – Моделирование логической операции
На передний фронт (2700 нс) первого такта (2700-2750 нс) C_ext сигнал 0
на входе input (2650-2750 нс).
На передний фронт (2800 нс) второго такта (2800-2850 нс) C_ext сигнал 1
на входе input (2750-2850 нс).
На передний фронт (2900 нс) третьего такта (2900-2950 нс) C_ext сигнал 1
на входе input (2850-2950 нс).
На передний фронт (3000 нс) четвертого такта (3000-3050 нс) C_ext сигнал
0 на входе input (2950-3050 нс).
На передний фронт (3100 нс) пятого такта (3100-3150 нс) C_ext сигнал 0 на входе input (3050-3150 нс).
На передний фронт (3200 нс) шестого такта (3200-3250 нс) C_ext сигнал 0
на входе input (3150-3250 нс).
На передний фронт (3300 нс) седьмого такта (3300-3350 нс) C_ext сигнал 0
на входе input (3250-3350 нс).
На передний фронт (3400 нс) восьмого такта (3400-3450 нс) C_ext сигнал 1
на входе input (3350-3450 нс).
15
Таким образом входные данные 10001, а код операции 10, причем данные были введены последовательно младшими разрядами вперед. При подаче активного сигнала nreadd (3600-3700 нс) генерируется тактовый сигнал C_out (3656,5-3756,5 нс). Выдача полученного результата происходит по заднему фронту (3625-3675 нс). На выходе outt осуществляется выдача выходных данных: 00001.
На передний фронт (3850 нс) первого такта (3850-3900 нс) C_ext сигнал 0
на входе input (3800-3900 нс).
На передний фронт (3950 нс) второго такта (3950-4000 нс) C_ext сигнал 1
на входе input (3900-4000 нс).
На передний фронт (4050 нс) третьего такта (4050-4100 нс) C_ext сигнал 0
на входе input (4000-4100 нс).
На передний фронт (4150 нс) четвертого такта (4150-4200 нс) C_ext сигнал
1 на входе input (4100-4200 нс).
На передний фронт (4250 нс) пятого такта (4250-4300 нс) C_ext сигнал 1 на входе input (4200-4300 нс).
На передний фронт (4350 нс) шестого такта (4350-4400 нс) C_ext сигнал 0
на входе input (4300-4400 нс).
На передний фронт (4450 нс) седьмого такта (4450-4500 нс) C_ext сигнал 0
на входе input (4400-4500 нс).
На передний фронт (4550 нс) восьмого такта (4550-4600 нс) C_ext сигнал 0
на входе input (4500-4600 нс).
Таким образом входные данные 000110, а код операции 10, причем данные были введены последовательно младшими разрядами вперед. При подаче активного сигнала nreadd (4750-4850 нс) генерируется тактовый сигнал C_out (4806,5-4906,5 нс). Выдача полученного результата происходит по заднему фронту (4775-4825 нс). На выходе outt осуществляется выдача выходных данных: 00110.
На рисунке 4.3 представлено моделирование арифметической операции.
16
Рисунок 4.3 – Моделирование арифметической операции
На передний фронт (5050 нс) первого такта (5050-5100 нс) C_ext сигнал 1
на входе input (5000-5100 нс).
На передний фронт (5150 нс) второго такта (5150-5200 нс) C_ext сигнал 1
на входе input (5100-5200 нс).
На передний фронт (5250 нс) третьего такта (5250-5300 нс) C_ext сигнал 1
на входе input (5200-5300 нс).
На передний фронт (5350 нс) четвертого такта (5350-5400 нс) C_ext сигнал
0 на входе input (5300-5400 нс).
На передний фронт (5450 нс) пятого такта (5450-5500 нс) C_ext сигнал 0 на входе input (5400-5500 нс).
На передний фронт (5550 нс) шестого такта (5550-5600 нс) C_ext сигнал 0
на входе input (5500-5600 нс).
На передний фронт (5650 нс) седьмого такта (5650-5700 нс) C_ext сигнал 1
на входе input (5600-5700 нс).
На передний фронт (5750 нс) восьмого такта (5750-5800 нс) C_ext сигнал 1
на входе input (5700-5800 нс).
Таким образом входные данные 110001, а код операции 11, причем данные были введены последовательно младшими разрядами вперед. При подаче активного сигнала nreadd (5950-6050 нс) генерируется тактовый сигнал C_out (6006,5-6106,5 нс). Выдача полученного результата происходит по заднему фронту (5975-6025- нс). На выходе outt осуществляется выдача выходных данных: 00101.
17
На передний фронт (6350 нс) первого такта (6350-6400 нс) C_ext сигнал 1
на входе input (6300-6400 нс).
На передний фронт (6450 нс) второго такта (6450-6500 нс) C_ext сигнал 1
на входе input (6400-6500 нс).
На передний фронт (6550 нс) третьего такта (6550-6600 нс) C_ext сигнал 0
на входе input (6500-6600 нс).
На передний фронт (6650 нс) четвертого такта (6650-6700 нс) C_ext сигнал
1 на входе input (660-6700 нс).
На передний фронт (6750 нс) пятого такта (6750-6800 нс) C_ext сигнал 1 на входе input (6700-6800 нс).
На передний фронт (6850 нс) шестого такта (6850-6900 нс) C_ext сигнал 0
на входе input (6800-6900 нс).
На передний фронт (6950 нс) седьмого такта (6950-7000 нс) C_ext сигнал 1
на входе input (6900-7000 нс).
На передний фронт (7050 нс) восьмого такта (7050-7100 нс) C_ext сигнал 0
на входе input (7000-7100 нс).
Таким образом входные данные 010110, а код операции 11, причем данные были введены последовательно младшими разрядами вперед. При подаче активного сигнала nreadd (7150-7250 нс) генерируется тактовый сигнал C_out (7206,5-7306,5 нс). Выдача полученного результата происходит по заднему фронту (7175-7225 нс). На выходе outt осуществляется выдача выходных данных: 00100.
На рисунке 4.4 представлено моделирование счетчика выполненных операций, сброса и снова счетчика выполненных операций.
18
Рисунок 4.4 – Последний этап моделирования
На передний фронт (7650 нс) первого такта (7650-7700 нс) C_ext сигнал 0
на входе input (7600-7700 нс).
На передний фронт (7750 нс) второго такта (7750-7800 нс) C_ext сигнал 0
на входе input (7700-7800 нс).
Таким образом входные данные ХХХХХХ, а код операции 00, причем данные были введены последовательно младшими разрядами вперед. При подаче активного сигнала nreadd (8450-8550 нс) генерируется тактовый сигнал
C_out (8506,5-8606,5 нс). Выдача полученного результата происходит по заднему фронту (8475-8,8525 нс). На выходе outt осуществляется выдача выходных данных: 00111.
После этого подается сигнал сброса (8700-8800 нс). После этого обнуляются выходы регистров inst3, inst2, счетчики inst1, inst24, а также выход триггера inst26.
На передний фронт (9050 нс) первого такта (9050-9100 нс) C_ext сигнал 0
на входе input (9000-9100 нс).
На передний фронт (9150 нс) второго такта (9150-9200 нс) C_ext сигнал 0
на входе input (9100-9200 нс).
Таким образом входные данные ХХХХХХ, а код операции 00, причем данные были введены последовательно младшими разрядами вперед. При подаче активного сигнала nreadd (9850-9950 нс) генерируется тактовый сигнал
C_out (9906,5-10000 нс). Выдача полученного результата происходит по заднему
19
фронту (9875-9925 нс). На выходе outt осуществляется выдача выходных данных: 00001.
На рисунках 4.5 – 4.8 представлено моделирование данных этапов в режиме Functional.
Рисунок 4.5 – Моделирование в режиме Functional. Часть 1
Рисунок 4.6 – Моделирование в режиме Functional. Часть 2
Рисунок 4.7 – Моделирование в режиме Functional. Часть 3
20