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

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

Помимо палитровых элементов, собранная вами схема может быть свёрнута в пользовательский чип — готовый блок с задержкой распространения, как настоящая микросхема. Первый такой чип-награда — 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, выбор операции АЛУ, переход. →
Decoder V2 (Дешифратор команд V2) Decoder V2 (Дешифратор команд V2) Дешифратор команд второго поколения: тот же протокол (опкод [7:4], операнд [3:0]), но 12 управляющих сигналов вместо 9. JZ и JN разведены по разным выходам, добавлены ACC_WE — разрешение записи в аккумулятор — и ImmOp — выбор непосредственного операнда. →
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. Позволяет видеть значение регистра в двоичном виде. →
Собрать схему самому →