Низкоуровневую работу микропроцессора мы будем демонстрировать с помощью простого клеточного автомата (википедия, но можно не ходить), визуализированного в виде обычной картинки, где каждая клетка - пиксель, чаще всего увеличенный для наглядности.
Эта каждая клетка является либо проводником (когда окрашена), либо “физически отсутствует” (когда нет). Мы будем раскрашивать клетки в разные цвета ради удобства нашего восприятия, но для клеточного автомата они все будут совершенно равнозначны. Есть цвет - проводник. Нет цвета (черный) - не проводник.
Вы вполне можете думать о каждой из них как о медном квадратике на печатной плате со слегка скругленными углами, который сверху покрыли цветным лаком. Скругленными, чтобы не было контакта между угловыми клетками, только между торцевыми; иначе это усложнит нам правила (формально описаны в следующем разделе).
Если к этому квадратику с любого торца подать напряжение (перевести в активное состояние, выставить 1, включить и т.д.), то он будет это напряжение через себя проводить во все стороны. А если не подавать, то не будет. Клетки “под напряжением” мы будем выделять более ярким цветом.
Так как примеров у нас довольно много, а кроме того их часто требуется показывать в динамике, я буду вставлять наши схемы прямо в текст с помощью похожего на xpm формата с автоматической трансформацией в картинку по мере загрузки.
Вот такую, например:
:x white
+------------------------------------------+
| x x x |
| x x x xx xxxxxxxxxxx |
| xxxx xxx xxxxxx xx xxxxxxxxxxx |
| x x x xx x xxxx xxxx |
|xxx xxxx x x xxx xxx xxx |
| x x x xx xx xxxxxxx xxx |
| x xxxx xxxxxx xx xxxxxxxxxx xxxxxxxx|
| x x x xx xx xxxxxxx xxx |
| x x x x xxx xxx xxx |
| x x x xx xx x xxxx xxxx |
| x x xxxx xx xx xxxxxxxxxxx |
| x x x xx xx xxxxxxxxxxx |
| x x x |
+------------------------------------------+
На месте схемы выше вы должны были сначала увидеть обычный текст, где описаны символы, их цвет и собственно схему в ASCII, а так же быстрое превращение всего этого в картинку. Если не увидели - не берите в голову, у вас хороший компьютер (смартфон, телевизор, …). Если же ничего никуда не конвертировалось, то жаль, у вас наоборот недостаточно шустрая машинка; ну либо не поддерживается wasm; или отключен js; надеюсь все же не я накосячил.
Это, на всякий случай, не трансформированный оригинал:
:x white
+------------------------------------------+
| x x x |
| x x x xx xxxxxxxxxxx |
| xxxx xxx xxxxxx xx xxxxxxxxxxx |
| x x x xx x xxxx xxxx |
|xxx xxxx x x xxx xxx xxx |
| x x x xx xx xxxxxxx xxx |
| x xxxx xxxxxx xx xxxxxxxxxx xxxxxxxx|
| x x x xx xx xxxxxxx xxx |
| x x x x xxx xxx xxx |
| x x x xx xx x xxxx xxxx |
| x x xxxx xx xx xxxxxxxxxxx |
| x x x xx xx xxxxxxxxxxx |
| x x x |
+------------------------------------------+
Картинкой лучше, не так ли?
А вот такие у нас есть цвета (слева просто дорожка, справа дорожка под напряжением; напряжение, кстати, можно переключать мышкой, или пальцем, или пультом, … короче, кликом):
:* black
:r red :g green :b blue
:y yellow :m magenta :c cyan
:w white :o orange
+------------------------------+
| |
| rrrrrrrrrrrrr *rrrrrrrrrrrrr |
| |
| ggggggggggggg *ggggggggggggg |
| |
| bbbbbbbbbbbbb *bbbbbbbbbbbbb |
| |
| yyyyyyyyyyyyy *yyyyyyyyyyyyy |
| |
| mmmmmmmmmmmmm *mmmmmmmmmmmmm |
| |
| ccccccccccccc *ccccccccccccc |
| |
| wwwwwwwwwwwww *wwwwwwwwwwwww |
| |
| ooooooooooooo *ooooooooooooo |
| |
+------------------------------+
Кликнув на проводник можно изменить его состояние. Если вы, кликнув, подадите напряжение на проводник, то оно будет подаваться N тактов симуляции (по умолчанию - 5, в иных случаях будет сообщено отдельно). Если же таким образом отключите, то это произойдет только на текущий такт.
Еще у схем может быть кнопка запуска симуляции, нажав на которую мы сможем их оживить и в динамике проследить, что происходит (я запущу симуляцию автоматически, чтобы вы не напрягались, но так делать буду не всегда):
:x white :* yellow
:O yellow
+----------------------------------------------------------------------+
| *** |
| * * |
| x |
| xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 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 |
+----------------------------------------------------------------------+
Если в описании схемы есть символы “*” (сырую схему можно увидеть открыв исходный код страницы), то на них на старте напряжение подается автоматически, на такие же N тактов симуляции.
И последнее. На наших схемах теми же клетками-проводниками может быть выложен пиксельный текст. Это просто текст, никакой функциональной нагрузки он не несет. Но зато несет информационную. Так же делают, кстати, и на настоящих печатных платах.
:x white
+-------------------------------------------------+
| x |
| x |
| x x |
| xxxxxxxxx |
| x x x x x |
| x x x x x x x x |
| xxx xxx xxx xxx xxx xxx xxx xxx xxx xx |
| x x x x x x x x x x x x x x x |
| x x x x x xxx xx xxx xxx xxx xx x |
| xxx xxx x |
| x x x |
+-------------------------------------------------+
Дальше на очереди - Правила…
Copyright (c) 2023 Iaaa