Зачем вообще переходить на последовательную передачу
Передавать 4-битное (или более широкое) слово по нескольким отдельным проводам вполне нормально на одной плате, но становится дорого и ненадёжно на любом реальном расстоянии. Последовательная связь вместо этого передаёт то же самое слово по одному биту за раз по одному проводу, обменивая провода на время, — именно для этого и создан регистр сдвига.
Обрамление слова стартовым и стоповым битами
У приёмника нет самостоятельного способа узнать, когда начинается новое слово, поэтому кадр UART оборачивает данные метками: линия в состоянии покоя держится на 1, стартовый бит (единственный 0) объявляет, что дальше пойдут данные, биты данных сдвигаются наружу по одному за такт, а стоповый бит (1) отмечает конец и возвращает линию в состояние покоя. Детектор фронта, следящий за переходом с 1 на 0 на линии покоя, — это ровно то, что сообщает приёмнику о приходе стартового бита.
Передатчик и приёмник
Передатчик хранит слово в регистре и выдаёт его биты на провод по одному за такт, добавляя стартовый и стоповый биты по краям. Из деталей Boolflow удобнее всего сделать это счётчиком, который перебирает входы выбора мультиплексора MUX4: REG4 даёт четыре бита данных, а счётчик выбирает, какой из них попадёт на выход в этом такте. Приёмник работает в обратную сторону: детектор фронта ловит стартовый бит, небольшой счётчик отсчитывает нужное число тактов, пока каждый бит данных вдвигается через вход SI блока SHIFT4 (регистра с последовательным входом и параллельным выходом), и по завершении счёта собранное слово считывается параллельно с выходов Q0–Q3. Новый бит всегда входит в Q0, поэтому первый пришедший бит оказывается в Q3.
Попробуйте сами
Соберите передатчик в редакторе схем из REG4 с записанным словом (сначала подайте на его вход такта отдельный импульс), MUX4, входы I0–I3 которого идут от REG4, и CNT4, чьи выходы Q0 и Q1 управляют входами выбора S0 и S1 мультиплексора. Подключите к выходу MUX4 элемент PROBE и запустите CLOCK: слово выходит по одному биту за такт, младшим битом вперёд. Затем подайте этот провод на вход SI блока SHIFT4 с тем же CLOCK — через четыре такта его выходы снова содержат слово, но в обратном порядке: бит 0 оказывается в Q3.