Компоненты симулятора

Все 40 элементов симулятора на одной странице: настоящий снимок компонента с холста, короткое описание и ссылка на даташит с таблицей истинности. Возвращайтесь сюда, когда встретили незнакомый элемент схемы.

Помимо палитровых элементов, собранная вами схема может быть свёрнута в пользовательский чип — готовый блок с задержкой распространения, как настоящая микросхема. Первый такой чип-награда — ADDER8, 8-битный сумматор; остальные выдаются за уровни 13–16 и финалы частей.

Базовая логика

КомпонентОписаниеДаташит
NAND (И-НЕ) NAND (И-НЕ) Универсальный логический элемент. Выдаёт 0 только когда оба входа равны 1, во всех остальных случаях — 1. Из NAND можно собрать любой другой логический элемент: NOT, AND, OR, XOR и даже целый процессор.
NOT (Инвертор) NOT (Инвертор) Простейший логический элемент. Переворачивает сигнал: 0 превращает в 1, а 1 — в 0. Часто используется там, где нужен инверсный сигнал.
AND (И) AND (И) Логическое умножение (конъюнкция). Выдаёт 1 только когда оба входа равны 1, в остальных случаях — 0. Соответствует операции «И»: результат true, только если оба условия true.
OR (ИЛИ) OR (ИЛИ) Логическое сложение (дизъюнкция). Выдаёт 1, если хотя бы один из входов равен 1. Только при двух нулях выдаёт 0. Соответствует операции «ИЛИ»: результат true, если хотя бы одно условие true.
XOR (исключающее ИЛИ) XOR (исключающее ИЛИ) Исключающее ИЛИ. Выдаёт 1, когда значения на входах разные (один 0, другой 1). Если оба входа одинаковы — выдаёт 0. Полезен для сравнения битов и в сумматорах.
NOR (ИЛИ-НЕ) NOR (ИЛИ-НЕ) Комбинация ИЛИ и НЕ. Выдаёт 1 только когда оба входа равны 0, во всех остальных случаях — 0. Используется как основа для построения RS-триггеров и других схем с памятью.

Арифметика и выбор

КомпонентОписаниеДаташит
Half Adder (Полусумматор) Half Adder (Полусумматор) Складывает два бита. Выдаёт сумму (Sum) и перенос (Carry). Не умеет обрабатывать перенос с предыдущего разряда — для этого нужен полный сумматор. Строится из XOR и AND.
Full Adder (Полный сумматор) Full Adder (Полный сумматор) Складывает три бита: два слагаемых и перенос с предыдущего разряда (CarryIn). Выдаёт сумму (Sum) и перенос (CarryOut). Соединяя несколько полных сумматоров, можно складывать многоразрядные числа.
MUX (Мультиплексор 2→1) MUX (Мультиплексор 2→1) Направляет один из двух входных сигналов на выход в зависимости от управляющего сигнала (селектора). Если селектор = 0, на выход проходит первый вход; если = 1 — второй. Работает как цифровой переключатель.

Шины данных

КомпонентОписаниеДаташит
Bus Input (8-битный вход) Bus Input (8-битный вход) Позволяет установить числовое значение от 0 до 255 на 8-битной шине данных. Значение задаётся ползунком. Шина объединяет 8 битов в одно число — так удобнее работать с байтами.
Bus Output (8-битный выход) Bus Output (8-битный выход) Показывает значение на 8-битной шине в десятичном виде. Удобен для наблюдения за результатами работы схем, оперирующих байтами.
Bus Constant (Константа на шине) Bus Constant (Константа на шине) Всегда выдаёт заданное значение (0–255) независимо от внешних сигналов. Полезно для подачи постоянных адресов, масок или конфигурационных кодов.
Splitter (Разделитель шины) Splitter (Разделитель шины) Принимает 8-битную шину и разделяет её на 8 отдельных битовых сигналов (от младшего к старшему). Позволяет работать с каждым битом байта по отдельности.
Maker (Сборщик шины) Maker (Сборщик шины) Принимает 8 отдельных битовых сигналов (от младшего к старшему) и собирает их в один 8-битный байт. Позволяет собрать число из отдельных битов.
Bus NOT (Шинное НЕ) Bus NOT (Шинное НЕ) Побитовое НЕ для шины. Инвертирует каждый из 8 битов независимо: каждый 0 становится 1, каждая 1 становится 0. Применяется для побитового отрицания байта.
Bus AND (Шинное И) Bus AND (Шинное И) Побитовое И для двух 8-битных шин. Каждый бит результата равен 1, только если соответствующие биты обеих входных шин равны 1. Используется для применения битовых масок.
Bus OR (Шинное ИЛИ) Bus OR (Шинное ИЛИ) Побитовое ИЛИ для двух 8-битных шин. Каждый бит результата равен 1, если хотя бы один из соответствующих битов входных шин равен 1.
Bus XOR (Шинное исключающее ИЛИ) Bus XOR (Шинное исключающее ИЛИ) Побитовое XOR для двух 8-битных шин. Каждый бит результата равен 1, если соответствующие биты входных шин различаются. Полезно для сравнения байтов.
Bus MUX (Шинный мультиплексор) Bus MUX (Шинный мультиплексор) Направляет одну из двух 8-битных шин на 8-битный выход по сигналу селектора. Работает как обычный мультиплексор, но переключает целые байты, а не отдельные биты.
Bus SHL (Шинный сдвиг влево) Bus SHL (Шинный сдвиг влево) Сдвигает 8-битное значение на один бит влево: каждый бит переходит на позицию старше, старший бит (7) теряется, на место младшего (0) записывается 0. Арифметически это умножение на 2 (по модулю 256).
Bus SHR (Шинный сдвиг вправо) Bus SHR (Шинный сдвиг вправо) Сдвигает 8-битное значение на один бит вправо: каждый бит переходит на позицию младше, младший бит (0) теряется, на место старшего (7) записывается 0. Арифметически это целочисленное деление на 2.
Bus Zero (Детектор нуля) Bus Zero (Детектор нуля) Проверяет 8-битную шину и выдаёт 1, если на ней ноль (00000000), и 0 — при любом ненулевом значении. Позволяет схеме «видеть» результат вычисления.

Память

КомпонентОписаниеДаташит
DFF (D-триггер) DFF (D-триггер) Запоминает один бит данных. Значение на выходе (Q) меняется только в момент положительного фронта тактового сигнала (Clock). Между тактами выход хранит предыдущее значение. Базовый элемент для построения регистров и счётчиков.
Register 8-bit (8-битный регистр) Register 8-bit (8-битный регистр) Хранит один байт (8 бит). Записывает новое значение по фронту тактового сигнала. Пока Clock не переключится, регистр сохраняет предыдущее значение. Используется для временного хранения данных в процессоре.
ROM (Постоянное запоминающее устройство) ROM (Постоянное запоминающее устройство) Хранит 256 байт данных, которые не меняются в процессе работы. Адресуется 8-битным адресом (0–255). Содержит программу для процессора или константы. Данные сохраняются даже при выключении питания.
RAM (Оперативное запоминающее устройство) RAM (Оперативное запоминающее устройство) Хранит 256 байт данных, поддерживает запись и чтение. Адресуется 8-битным адресом. Данные временные — теряются при выключении. Используется для хранения переменных и результатов вычислений.

Процессор и управление

КомпонентОписаниеДаташит
Program Counter (Счётчик команд) Program Counter (Счётчик команд) Хранит адрес текущей выполняемой инструкции. По каждому такту увеличивает своё значение на величину Inc (по умолчанию 1), переходя к следующей инструкции. Важнейшая часть процессора — определяет, какую команду читать из памяти.
Index Register (IX) Index Register (IX) Индексный регистр для косвенной адресации. Хранит 8-битный адрес, который можно использовать для доступа к массивам в RAM. Увеличивается на 1 по фронту Clock при Inc=1. Загружает данные с шины при WE=1.
Addr Decoder (ADEC) Addr Decoder (ADEC) Дешифратор адреса. Определяет, принадлежит ли адрес оперативной памяти (0x00–0xDF) или устройствам ввода-вывода (0xE0–0xFF). Формирует сигналы для разграничения доступа к RAM и I/O-устройствам.
LFSR (Генератор случайных чисел) LFSR (Генератор случайных чисел) Linear Feedback Shift Register — генератор псевдослучайных чисел на 8 бит. Полином: x^8 + x^6 + x^5 + x^4 + 1. Сдвигается по каждому фронту Clock. Читается через порт 0xFA (DevAddr=0x1A).
Decoder (Дешифратор команд) Decoder (Дешифратор команд) Разбирает 8-битную инструкцию на два поля: старшие 4 бита — код операции (opcode), младшие 4 бита — операнд. По коду операции формирует 9 управляющих сигналов, которые включают нужные блоки процессора: запись в регистр, чтение RAM, выбор операции АЛУ, переход.
ALU 8-bit (Арифметико-логическое устройство) ALU 8-bit (Арифметико-логическое устройство) Выполняет 8 операций над двумя 8-битными числами: ADD (сложение), SUB (вычитание), AND, OR, XOR, NOT, SHL (сдвиг влево), SHR (сдвиг вправо). Операция выбирается управляющим сигналом. Сердце любого процессора.
Тактовый генератор Тактовый генератор Вырабатывает периодический сигнал, переключающийся между 0 и 1 с заданной частотой. Используется для синхронизации работы последовательных схем: регистров, счётчиков, памяти и всего процессора.
Manual Clock (Ручной такт) Manual Clock (Ручной такт) Ручной генератор тактового сигнала. При каждом нажатии кнопки «▶ Tick» выдаёт полный тактовый импульс (0→1→0) на выходе Tick. Используется для пошагового ручного тактирования схемы.

Ввод/вывод и периферия

КомпонентОписаниеДаташит
Вход Вход Источник сигнала. Позволяет вручную переключать значение между 0 и 1. Используется как входной порт схемы — через него таблица истинности подаёт тестовые значения на схему.
Выход Выход Приёмник сигнала. Показывает текущее значение (0 или 1) на своём входе. Используется как выходной порт схемы — по его значению проверяется правильность работы.
Gamepad (Геймпад) Gamepad (Геймпад) 4-кнопочный геймпад (Up/Down/Left/Right) для управления схемой и программами. Адресуется через порт 0xFE (DevAddr=0x1E). Возвращает битовую маску нажатых кнопок.
Matrix Display 16x16 Matrix Display 16x16 Матричный дисплей 16×16 пикселей для вывода графики. Адресуется через три порта: 0xFC (установка X-координаты), 0xFD (установка Y-координаты), 0xFF (запись пикселя).
Дисплей Дисплей Показывает числовое значение на входе в десятичном, двоичном или шестнадцатеричном формате. Переключение между режимами — кликом по дисплею. Незаменим для отладки и визуализации работы схем.
LED8 (Светодиодная линейка) LED8 (Светодиодная линейка) Визуальный индикатор 8 бит. Каждый бит входной шины DataIn отображается отдельным светодиодом: горящий = 1, погашенный = 0. Позволяет видеть значение регистра в двоичном виде.
Собрать схему самому →