Разделитель шины (Splitter)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| IN | bus8 | 8-битная шина |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Bit0 | bit | Бит 0 (младший, вес 1) |
| Bit1 | bit | Бит 1 (вес 2) |
| Bit2 | bit | Бит 2 (вес 4) |
| Bit3 | bit | Бит 3 (вес 8) |
| Bit4 | bit | Бит 4 (вес 16) |
| Bit5 | bit | Бит 5 (вес 32) |
| Bit6 | bit | Бит 6 (вес 64) |
| Bit7 | bit | Бит 7 (старший, вес 128) |
Логика работы
Шина — это восемь проводов, упакованных в один жгут. Удобно таскать байт целиком, но иногда с каждым проводом нужно работать поодиночке — и тут помогает Splitter. Это как разъём-гребёнка: входной жгут раскладывается на восемь отдельных проводков, и каждый бит байта становится самостоятельным сигналом.
Главное свойство: у каждого выходного провода есть вес, равный весу бита. Bit0 — младший бит (вес 1), Bit1 — вес 2, и так далее до Bit7 со весом 128. Подай на вход 10101010 (170) — и единицы появятся на Bit7, Bit5, Bit3 и Bit1. Сложи веса этих битов: 128 + 32 + 8 + 2 = 170. Splitter ничего не «заменяет» — он просто показывает, из чего собран байт.
Нюанс: это чистая коммутация, внутри нет ни одного вентиля, и Splitter не может ничего вычислить или испортить. Опасность только одна — перепутать веса. Если провод, который должен идти на Bit0, подключить к Bit7, значение изменится в 128 раз: 00000001 (1) превратится в 10000000 (128).
Примеры
| Вход (dec) | Вход (bin) | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
|---|---|---|---|---|---|---|---|---|---|
| 170 | 10101010 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
| 15 | 00001111 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| 128 | 10000000 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 200 | 11001000 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
Последняя строка — типичная задача из процессора: из байта команды 200 (11001000) старшие четыре бита дают код операции 12, а младшие — операнд 8.
Применение
На уровне 8 Splitter работает в паре с Maker: он разбирает шины A и B на отдельные биты, чтобы их складывала цепочка Full Adder, а собранные биты суммы Maker возвращает в шину. В процессоре его главная роль — разбор команды: байт из ROM делится на старшие четыре бита (код операции) и младшие четыре (операнд), которые расходятся по декодеру.
Конкретные приёмы: проверка чётности — достаточно одного младшего бита с Bit0; чтение геймпада — каждая кнопка занимает свой бит шины, и Splitter выводит их на отдельные схемы; снятие флагов и управляющих сигналов для визуальной отладки через LED8 или Display. Везде, где байту нужно «вскрытие», начинается оно со Splitter.
Смежные компоненты
Статьи по теме
Частые вопросы
Зачем разбивать шину на биты?
Чтобы взять отдельные биты байта — например, проверить младший бит или подать биты на разные входы.
Как получить код операции из байта команды?
Splitter раскладывает байт, биты 4–7 собираются через Maker в код операции, а биты 0–3 — в операнд. Именно так питается декодер команд процессора.
Что будет, если перепутать веса битов?
Число исказится: сигнал, поданный на Bit7 вместо Bit0, изменит значение в 128 раз — 00000001 (1) станет 10000000 (128). Всегда сверяй вес бита перед подключением.