Тактовый генератор

Нам очень нужен элемент, который будет выдавать периодические импульсы с различным периодом.

Самый простой тактовый генератор можно построить замкнув выход вентиля NOT на самого себя. Слева - обычный, справа он же, оптимизированный. (я уменьшил количество тактов симуляции в секунду до 5 чтобы было лучше видно)

Однотактовый генератор импульсов

:o white :O white
:* red :y orange
+---------------+
|               |
| OO            |
| O Ooy   OO    |
| OO o    O Ooy |
| o  o    OO o  |
| oooo     ooo  |
|               |
+---------------+

Но нам нужен генератор с большими периодами, чем по такту на 1 и 0. Это мы сделаем с помощью следующей схемы “змейки”.

Прошу заметить, что эту змейку надо запускать, так как иначе она будет находиться в довольно глупом состоянии. Я автоматически подам напряжение на красный проводник в начале симуляции за вас. Вы же можете ее перезапустить вручную (включив красный вентиль) когда захотите. Такой сигнал, между прочим, при подаче на который напряжения некоторая схема приходит в заданное “изначальное” положение, называется RESET. И большая часть деталей нашего микропроцессора будет его использовать.

Трехтактовый генератор импульсов

:x white
:* red :r red
:O yellow :o orange
+----------------+
| *r             |
|rr xxxxxxxxxx   |
| rr x x   x x   |
|     O     O    |
|    OO OO OO    |
|  OOO OO OO OO  |
|  O OO OO OO O  |
|  O          O  |
|  OOOOOOOOOOOO  |
|         o      |
|         o      |
+----------------+

Генератор выше в три раза медленнее генератора на одном элементе. Его выход активен три такта. И неактивен тоже три. Чем длинее “змейка”, тем более длинные такты. Сколько вентилей в “змейке”, в столько тактов она медленнее.

Следующий генератор мы будем использовать в нашем микропроцессоре. Каждый его такт занимает 21 тик. Почему так много? Чтобы отработать все переходные процессы в наших блоках, из которых состоит вся схема (помните, как триггер не сразу менял выход по сигналу с входов). Некоторые блоки содержат достаточно много вентилей, чтобы не успевать полностью отработать на более быстром генераторе.

Между прочим, когда вы читаете про “тактовую частоту процессора”, то это именно частота выхода тактового генератора, а не частота переключения элементарных вентилей. И в реальных микропроцессорах делитель далеко не 21, ибо они существенно сложнее и стоят из большего количества элементов.

Этот генератор я не буду замедлять - пусть работает на обычной частоте тиков, 20 в секунду. Что дает нам тактовую частоту приблизительно 0,5 Гц (эмпирически найденная удобная частота для наблюдения за работой предлагаемых схем - не слишком быстро, не слишком медленно, 1 секунда на активность линии).

21-тактовый генератор импульсов

:x white
:* red :r red
:O yellow
+----------------------------------------------------------------------+
| *r                                                                   |
|rr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   |
| rr x x   x x   x x   x x   x x   x x   x x   x x   x x   x x   x x   |
|     O     O     O     O     O     O     O     O     O     O     O    |
|    OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO    |
|  OOO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO  |
|  O OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO O  |
|  O                                                                O  |
|  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  |
|         O                                                            |
|         O                                                            |
+----------------------------------------------------------------------+

… дальше будет …

Copyright (c) 2023 Iaaa