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

С чего всё началось: цель и задачи

Нашей ключевой задачей была отработка полного цикла проектирования: от математической модели и симуляции до генерации кода для FPGA (ПЛИС) — программируемой логической интегральной схемы, которая представляет собой универсальный микрочип, конфигурацию которого можно многократно менять под конкретную задачу, и проверки его на стенде. В начале мы сосредоточились на перспективных схемах модуляции, которые лягут в основу будущих систем связи.

Первый этап: строим виртуальную радиолинию

В Engee мы создали графические модели радиолиний с типами модуляции BPSK, QPSK, 8PSK и 16QAM. Все они были дополнены фильтрацией Найквиста — это стандарт для борьбы с межсимвольной интерференцией. Так выглядела наша тестовая модель:

Рисунок 1. Модель тестирования различных модуляций
Рисунок 1. Модель тестирования различных модуляций

Для каждой схемы мы построили и проанализировали:

  • Модуляционные созвездия — чтобы визуально оценить «качество» сигнала.

  • Графики BER (Bit Error Rate) — зависимость вероятности ошибки от отношения сигнал/шум, главную метрику любой системы связи.

  • Спектральные характеристики — чтобы понять, как сигнал ведёт себя в частотной области.

Рисунок 2. График спектра для всех модуляций
Рисунок 2. График спектра для всех модуляций
Рисунок 3. BER для модуляций и сопоставление его с теоретическими значениями
Рисунок 3. BER для модуляций и сопоставление его с теоретическими значениями

Результаты симуляций идеально совпали с теорией, что подтвердило корректность наших моделей. Касаемо BPSK, BER равен QPSK, небольшие отклонения от теории возможны и естественны. Проанализировав данные, для дальнейшей реализации мы выбрали QPSK как оптимальный баланс между помехоустойчивостью и спектральной эффективностью. Наша итоговая модель для генерации кода включала:

1.  Генератор данных.

2.  QPSK-модулятор.

3.  Фильтр Найквиста на передаче.

4.  Модель канала связи (с шумом).

5.  Фильтр Найквиста на приёме.

6.  QPSK-демодулятор.

7.  Счётчик ошибок (BER).

Особенностью системной модели стала техника синхронизации: мы реализовали алгоритм выбора оптимального момента дискретизации с помощью параметра Select_index (от 1 до 8), когда частота дискретизации в 8 раз выше тактовой.

Рисунок 4. Системная модель проекта
Рисунок 4. Системная модель проекта
Рисунок 5. Спектр сигнала для модели радиолинии с модуляцией QPSK
Рисунок 5. Спектр сигнала для модели радиолинии с модуляцией QPSK

Магия автоматизации: генерируем Verilog-код из графической модели

Следующим шагом была трансформация проверенной системной модели в модель, готовую к генерации аппаратного кода. Мы перешли к вычислениям с фиксированной точкой, что критично для реализации на ПЛИС, после чего финальная модель была расширена за счёт блока квадратурной модуляции, данный блок был необходим нам для тестирования итого проекта на ПЛИС.

Здесь нам очень пригодились возможности Engee по автоматизации:

  • Генерация кода из базовых блоков — мы не писали код вручную, а использовали готовые примитивы.

  • Пользовательские шаблоны — для кастомизации выходного кода под наши нужды.

  • Командное управление — это позволило автоматически создавать длинные цепочки однотипных операций.

Яркий пример — реализация КИХ-фильтра Найквиста. Вместо ручного рисования 80 однотипных звеньев, мы сгенерировали его автоматически, задав рассчитанные коэффициенты. Это не только сэкономило время, но и исключило человеческие ошибки.

Рисунок 6. Сравнение системной модели и модели под генерацию кода
Рисунок 6. Сравнение системной модели и модели под генерацию кода
Рисунок 7. Итоговая модель под генерацию кода
Рисунок 7. Итоговая модель под генерацию кода

Детальное сравнение поведения системной модели с плавающей точкой и модели для генерации кода с фиксированной точкой подтвердило их полную идентичность. Использование сигналов валидности в кодовой модели помогло избежать накопления данных, что сделало её выход даже «чище».

Испытания на прочность: всестороннее тестирование и верификация

Прежде чем заливать код на ПЛИС, мы устроили нашей модели настоящий «стресс-тест». Использовали несколько методов верификации:

1.  Прямое моделирование в Engee. Самый быстрый способ проверить функциональность.

2.  Симуляция сгенерированного Verilog-кода. Проверяем, что код ведёт себя так же, как модель.

3.  Использование Verilator. Этот инструмент создаёт из нашего Verilog-кода C-функцию, которую можно напрямую сравнить с исходной моделью Engee. Это мощный метод, не требующий написания дополнительных тестовых окружений.

Результаты тестов были безупречны:

  • Битовая ошибка (BER) равна нулю при отсутствии шума в канале (см. график ошибок и валидности).

  • Фильтры Найквиста идеально отработали одиночный импульс, их характеристики полностью соответствовали теории («корень из приподнятого косинуса»).

  • Квадратурный модулятор блестяще справился с переносом спектра с нулевой частоты на несущую.

Рисунок 8. Битовая ошибка
Рисунок 8. Битовая ошибка
Рисунок 9. Данные на выходе модулятора и фильтров
Рисунок 9. Данные на выходе модулятора и фильтров
Рисунок 10. Тестирование фильтров Найквиста
Рисунок 10. Тестирование фильтров Найквиста
Рисунок 11. Тестирование квадратурной модуляции
Рисунок 11. Тестирование квадратурной модуляции
Рисунок 12. Спектры сигналов на выходах блоков
Рисунок 12. Спектры сигналов на выходах блоков

Момент истины: запуск на реальной ПЛИС

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

Рисунок 18. Исходная битовая последовательность и квадратурные огибающие QPSK сигнала
Рисунок 18. Исходная битовая последовательность и квадратурные огибающие QPSK сигнала
Рисунок 19. Исходная битовая последовательность и сформированный QPSK сигнал на радиочастоте
Рисунок 19. Исходная битовая последовательность и сформированный QPSK сигнал на радиочастоте
Рисунок 20. Энергетический спектр QPSK сигнала
Рисунок 20. Энергетический спектр QPSK сигнала

Мы увидели четкие сигналы и правильные спектры. Теория, симуляция и «железо» сошлись в одной точке.

Итоги и выводы: на что способна связка «Engee + ваша команда»?

В качестве финального акта мы подвели итоги, оценив успех проекта по четырем ключевым критериям. Результаты говорят сами за себя.

Во-первых, среда блестяще справилась с реализацией функциональных узлов через графический интерфейс. Мы не только использовали готовые библиотечные элементы, но и с помощью Julia и C создали свои собственные компоненты — фильтры, модуляторы, генераторы сигналов, — которые затем были верифицированы и использованы для генерации кода для ПЛИС.

Во-вторых, была полностью подтверждена возможность всестороннего тестирования. Ключевым индикатором служила битовая ошибка (BER). Наши тесты показали как полное совпадение с теоретическими кривыми BER в условиях шума, так и нулевую ошибку на идеальном канале. Дополнительным плюсом стала встроенная отладка и две независимые методики верификации сгенерированного Verilog-кода.

Наконец, быстродействие моделирования оказалось на высоком уровне. Даже самая сложная модель проекта, содержащая свыше 1000 блоков, была промоделирована всего за 20 секунд, что подтверждает практическую пригодность инструмента для итеративной разработки.

Рисунок 19. Время выполнения модели
Рисунок 19. Время выполнения модели

По результатам проекта среда проектирования Engee продемонстрировала полную готовность к решению промышленных задач. Нам удалось пройти весь цикл:

  • От модельно-ориентированного проектирования и тестирования различных схем модуляции.

  • Через создание комплексной системы связи с синхронизацией.

  • До генерации верифицированного Verilog-кода и его успешного запуска на ПЛИС.

Главный вывод: Engee — это не прототип, а зрелый инструмент, который значительно ускоряет разработку сложных систем связи и ЦОС, позволяя инженерам сосредоточиться на алгоритмах, а не на рутинном кодировании. Полученные результаты позволяют с уверенностью рекомендовать его для использования в реальных проектах.

Спасибо за внимание! Если остались вопросы по деталям — welcome в комментарии.

Комментарии (0)