EdigE
← ЛЕНТА

Raspberry Pi Pico исполняет Z80 и сам считает Bell-202 AFSK

Сигнал с динамика радиостанции приходит на ADC0 Raspberry Pi Pico, а в обратную сторону плата выдаёт через PWM и RC-фильтр аудиотон для микрофонного входа. Тем же RP2040 Pocket Pico исполняет старую прошивку терминального контроллера Heathkit HK-21: внутри неё работает эмулятор Z80. Получилась компактная машина, где код из эпохи восьмибитных процессоров продолжает управлять packet radio, а цифровой модем вокруг него уже существует как DSP-задача современного MCU.

Это решение начинается с неприятного вопроса о ремонте старой архитектуры. В TNC десятилетиями накапливаются команды, состояния AX.25, поведение консоли, KISS-интерфейс, connected mode и персональная BBS. Переписывание такого стека под ARM требует воспроизвести массу мелочей, которые старые программы и операторы давно считают естественными. Автор Pocket Pico оставил эту логику на языке, который она уже понимает: загрузил оригинальную HK-21 firmware в среду Z80.

Под эмулятором остаётся вычислительная и протокольная личность старого TNC. Нижний слой заменён кодом RP2040: он модулирует и демодулирует Bell 202 AFSK со скоростью 1200 бод. Так старый стек видит знакомую машину, а наружу она разговаривает с современным трансивером через обычный звуковой интерфейс.

Старый процессор как контракт

Схема хорошо показывает, где именно проходит граница этой подмены. Передающий аудиосигнал рождается на PWM-выходе Pico, проходит RC-цепочку и подстроечник уровня RV1 перед входом MIC. Приёмное аудио приходит на ADC0 через защитную и смещающую обвязку. Линию PTT замыкает транзистор 2N3904. Специализированной микросхемы Bell-202 здесь нет, однако аналоговая часть никуда не исчезла: радиостанции всё ещё нужны уровни, развязка от опасных режимов входа и физический ключ передачи.

Старый процессор как контракт

Эмулятор в этом проекте полезен не ностальгией. Z80 оказывается контрактом между проверенной прошивкой и новой аппаратурой. Вместо восстановления каждого регистра, тайминга командного интерфейса и углового случая протокола в новом порте автор сохраняет исполняемый образ и меняет слой, который действительно зависит от железа: реализацию модема и ввод-вывод.

pfiliberti (KF7PSM), per schematic title block

Граница между эмуляцией и радиотрактом

На внешней стороне у Pocket Pico есть USB Serial и 3.3-вольтовый TTL Serial. DIP-переключатели распределяют console/PBBS и KISS между этими портами; для TTL KISS заявлены 115200 бит/с, 8N1. Это превращает плату в TNC, который можно подключать к старому packet-radio ПО, не заставляя ПК понимать внутренности RP2040.

Граница между эмуляцией и радиотрактом

Именно совмещение двух задач делает конструкцию красивой. RP2040 не просто запускает ретро-прошивку в изоляции: он должен успевать принимать аудио, выделять AFSK, передавать сформированные тоны и обслуживать интерфейсы, пока Z80-машина живёт своей командной жизнью. Архитектура разумно тратит вычислительные ресурсы MCU на сохранение бинарной совместимости там, где она ценна, и на программную обработку сигнала там, где прежний TNC требовал отдельного модемного железа.

Проект пока не даёт тех цифр, по которым судят именно радиомодем: нет опубликованных BER, чувствительности, допустимого частотного ухода, запаса по SNR, загрузки ядра или эфирного сравнения с исходным HK-21. Поэтому заявленную совместимость со старым софтом следует читать как цель и результат автора, а не как проверку всех программ и режимов. Но опубликованные схема, PCB и исходники уже доказывают главный ход: иногда самый короткий путь к живой старой системе лежит через маленький процессор, который согласился стать её прежним процессором.