Всем привет! На прошлой неделе наша команда завершила крайне важный и интересный проект совместно с корпорацией «Комета». Мы с нуля разработали, протестировали и реализовали на реальной ПЛИС модель цифровой радиолинии, используя среду проектирования Engee. Если вы интересуетесь цифровой обработкой сигналов (ЦОС), модельно-ориентированным проектированием или просто хотите увидеть, как теория превращается в работающее «железо», — вам сюда!
С чего всё началось: цель и задачи
Нашей ключевой задачей была отработка полного цикла проектирования: от математической модели и симуляции до генерации кода для FPGA (ПЛИС) — программируемой логической интегральной схемы, которая представляет собой универсальный микрочип, конфигурацию которого можно многократно менять под конкретную задачу, и проверки его на стенде. В начале мы сосредоточились на перспективных схемах модуляции, которые лягут в основу будущих систем связи.
Первый этап: строим виртуальную радиолинию
В Engee мы создали графические модели радиолиний с типами модуляции BPSK, QPSK, 8PSK и 16QAM. Все они были дополнены фильтрацией Найквиста — это стандарт для борьбы с межсимвольной интерференцией. Так выглядела наша тестовая модель:

Для каждой схемы мы построили и проанализировали:
Модуляционные созвездия — чтобы визуально оценить «качество» сигнала.
Графики BER (Bit Error Rate) — зависимость вероятности ошибки от отношения сигнал/шум, главную метрику любой системы связи.
Спектральные характеристики — чтобы понять, как сигнал ведёт себя в частотной области.


Результаты симуляций идеально совпали с теорией, что подтвердило корректность наших моделей. Касаемо BPSK, BER равен QPSK, небольшие отклонения от теории возможны и естественны. Проанализировав данные, для дальнейшей реализации мы выбрали QPSK как оптимальный баланс между помехоустойчивостью и спектральной эффективностью. Наша итоговая модель для генерации кода включала:
1. Генератор данных.
2. QPSK-модулятор.
3. Фильтр Найквиста на передаче.
4. Модель канала связи (с шумом).
5. Фильтр Найквиста на приёме.
6. QPSK-демодулятор.
7. Счётчик ошибок (BER).
Особенностью системной модели стала техника синхронизации: мы реализовали алгоритм выбора оптимального момента дискретизации с помощью параметра Select_index (от 1 до 8), когда частота дискретизации в 8 раз выше тактовой.


Магия автоматизации: генерируем Verilog-код из графической модели
Следующим шагом была трансформация проверенной системной модели в модель, готовую к генерации аппаратного кода. Мы перешли к вычислениям с фиксированной точкой, что критично для реализации на ПЛИС, после чего финальная модель была расширена за счёт блока квадратурной модуляции, данный блок был необходим нам для тестирования итого проекта на ПЛИС.
Здесь нам очень пригодились возможности Engee по автоматизации:
Генерация кода из базовых блоков — мы не писали код вручную, а использовали готовые примитивы.
Пользовательские шаблоны — для кастомизации выходного кода под наши нужды.
Командное управление — это позволило автоматически создавать длинные цепочки однотипных операций.
Яркий пример — реализация КИХ-фильтра Найквиста. Вместо ручного рисования 80 однотипных звеньев, мы сгенерировали его автоматически, задав рассчитанные коэффициенты. Это не только сэкономило время, но и исключило человеческие ошибки.


Детальное сравнение поведения системной модели с плавающей точкой и модели для генерации кода с фиксированной точкой подтвердило их полную идентичность. Использование сигналов валидности в кодовой модели помогло избежать накопления данных, что сделало её выход даже «чище».
Испытания на прочность: всестороннее тестирование и верификация
Прежде чем заливать код на ПЛИС, мы устроили нашей модели настоящий «стресс-тест». Использовали несколько методов верификации:
1. Прямое моделирование в Engee. Самый быстрый способ проверить функциональность.
2. Симуляция сгенерированного Verilog-кода. Проверяем, что код ведёт себя так же, как модель.
3. Использование Verilator. Этот инструмент создаёт из нашего Verilog-кода C-функцию, которую можно напрямую сравнить с исходной моделью Engee. Это мощный метод, не требующий написания дополнительных тестовых окружений.
Результаты тестов были безупречны:
Битовая ошибка (BER) равна нулю при отсутствии шума в канале (см. график ошибок и валидности).
Фильтры Найквиста идеально отработали одиночный импульс, их характеристики полностью соответствовали теории («корень из приподнятого косинуса»).
Квадратурный модулятор блестяще справился с переносом спектра с нулевой частоты на несущую.





Момент истины: запуск на реальной ПЛИС
Финальный и самый волнительный этап — аппаратная реализация. Мы развернули нашу радиолинию на оценочной плате Cyclone II DSP Development Board (Altera EP2C70F672 FPGA). Сгенерированный в Engee Verilog-код был без замечаний скомпилирован в Quartus II, и конфигурационный файл был загружен в ПЗУ платы. И вот он, результат — осциллографы и анализаторы спектра показали, что наша система работает именно так, как и было задумано!



Мы увидели четкие сигналы и правильные спектры. Теория, симуляция и «железо» сошлись в одной точке.
Итоги и выводы: на что способна связка «Engee + ваша команда»?
В качестве финального акта мы подвели итоги, оценив успех проекта по четырем ключевым критериям. Результаты говорят сами за себя.
Во-первых, среда блестяще справилась с реализацией функциональных узлов через графический интерфейс. Мы не только использовали готовые библиотечные элементы, но и с помощью Julia и C создали свои собственные компоненты — фильтры, модуляторы, генераторы сигналов, — которые затем были верифицированы и использованы для генерации кода для ПЛИС.
Во-вторых, была полностью подтверждена возможность всестороннего тестирования. Ключевым индикатором служила битовая ошибка (BER). Наши тесты показали как полное совпадение с теоретическими кривыми BER в условиях шума, так и нулевую ошибку на идеальном канале. Дополнительным плюсом стала встроенная отладка и две независимые методики верификации сгенерированного Verilog-кода.
Наконец, быстродействие моделирования оказалось на высоком уровне. Даже самая сложная модель проекта, содержащая свыше 1000 блоков, была промоделирована всего за 20 секунд, что подтверждает практическую пригодность инструмента для итеративной разработки.

По результатам проекта среда проектирования Engee продемонстрировала полную готовность к решению промышленных задач. Нам удалось пройти весь цикл:
От модельно-ориентированного проектирования и тестирования различных схем модуляции.
Через создание комплексной системы связи с синхронизацией.
До генерации верифицированного Verilog-кода и его успешного запуска на ПЛИС.
Главный вывод: Engee — это не прототип, а зрелый инструмент, который значительно ускоряет разработку сложных систем связи и ЦОС, позволяя инженерам сосредоточиться на алгоритмах, а не на рутинном кодировании. Полученные результаты позволяют с уверенностью рекомендовать его для использования в реальных проектах.
Спасибо за внимание! Если остались вопросы по деталям — welcome в комментарии.