Как стать автором
Поиск
Написать публикацию
Обновить
47.9

Отладка *

Поиск и устранение ошибок в коде

Сначала показывать
Порог рейтинга

DIY-плата AD/DA для DSP-задач на ARM+FPGA: зачем я её собрал

В мире встроенных систем и цифровой обработки сигналов (DSP) ключ к быстрому прототипированию и надёжной отладке лежит через собственный инструмент — аппаратную платформу, точно отвечающую вашим задачам. Моя цель — отработать цепочку «аналог ↔ цифра ↔ FPGA ↔ ARM» в реальном времени, без лишних звеньев и оговорок. Именно поэтому я спроектировал собственную отладочную DIY-плату AD/DA с программируемым генератором тактовой частоты.

Если вы сталкивались с ограничениям доступных на рынке отладочных плат или ищете универсальный стенд для экспериментов с цифровой обработкой сигналов, этот опыт будет вам полезен.

Плата выполнена в формате "Arduino" (?) и служит модулем для быстрой интеграции в платформы ARM+FPGA (Zynq-7000 или аналогичные) через стандартный 40-контактный разъём KLS.

Плата AD/DA
Плата AD/DA

В основу конструкции легла классическая SDR-структура: трансформаторы, АЦП, программируемый тактовый генератор, буфер тактового сигнала, ЦАП и интерфейсные сигналы на разъём KLS.

1. Аналого-цифровой преобразователь: AD9283

  • 8-битный одноканальный АЦП с параллельным CMOS-интерфейсом.

  • Частота преобразования до 100 MSPS.

  • Сигнал PWRDWN и шина данных подаются с разъёма KLS.

  • Вход с внешнего SMA через трансформатор дает дифференциальный сигнал для высокого SNR.

2. Тактовый генератор и буфер: Si514 & Si53306

  • Программируемый кварцевый генератор Si514 формирует опорную частоту.

  • Тактовый буфер Si53306 распределяет сигнал на АЦП, ЦАП и FPGA.

3. Цифро-аналоговый преобразователь: AD9744

  • 14-битный одноканальный ЦАП с параллельным CMOS-интерфейсом.

  • Частота преобразования до 210 MSPS.

  • Сигнал SLEEP и шина данных подаются с разъёма KLS.

  • Выход через трансформатор возвращает аналоговый сигнал на внешний SMA-коннектор.

Зачем и для чего: практические сценарии использования этой отладочной платы

  1. Формирование и анализ сигналов

  • Создания многокомпонентных тестовых сигналов (модуляции AM/FM, chirp-сигналов) для оценки пропускной способности и реактивности FPGA-ядра.

  • Тестирования и калибровки входных трактов при различных уровнях амплитуды и частоты.

  • Генерации шумовых или псевдослучайных сигналов для проверки устойчивости DSP-алгоритмов.

2. Отладка алгоритмов цифровой обработки в реальном времени

  • Нужно прототипировать алгоритмы цифровой обработки данных непосредственно на связке ARM+FPGA и видеть результат «на лету».

  • Использование платы в образовательных целях: для обучения студентов или коллег практикам embedded-разработки и современной цифровой обработки сигналов.

  • Реализация и проверка в HDL алгоритмов, например, вейвлет-преобразования для анализа сигнала и выделения его локальных особенностей.

3. Сравнительное исследование реальной производительности ARM и FPGA-ядер

  • FPGA-ядро: пропускная способность HDL-модулей FIR/IIR, вейвлет-анализ, дизайн HLS-функций.

  • Сбор и визуализация метрик (latency, throughput, resource utilization) через ARM-API и JTAG-интерфейс FPGA.

  • ARM-ядро: замеры FFT-блока, фильтров в Linux-окружении.

Заключение

Эта AD/DA-плата для ARM+FPGA обеспечивает точность, скорость и гибкость, необходимые как для исследований DSP-алгоритмов, так и для промышленных встраиваемых и исследовательских проектов.

Присоединяйтесь к https://t.me/dsp_labs — там выходят реальные бенчмарки, исходники и советы по оптимизации DSP-алгоритмов на ARM/FPGA платформах!

Теги:
+11
Комментарии11

А ты такой холодный: представим технологии Rust-дебаггеров в виде айсберга

На верхушке айсберга видим технологии DWARF, PTRACE и ELF, а внизу — набор более редких технологий. 

Сегодня будем говорить только о верхушке. Хорошая новость: чтобы понять большинство возможностей дебаггера, достаточно иметь представление об этих трех технологиях:

PTRACE — системный вызов, который позволяет одному процессу (tracer) управлять и исследовать другой процесс (tracee).  

ELF (Executable and Linkable Format) — формат исполняемых двоичных файлов. 

DWARF (Debugging With Arbitrary Record Formats) — стандарт, описывающий формат .debug_xxx секций в ELF.

Что касается «подводных» технологий, упомянутых на картинке: применяя закон Парето, можно смело сказать что 80% знаний необходимы, чтобы реализовать только 20% функционала (и не самого важного). Но если хотите узнать о них больше, напишите в комментариях.

Подробнее о PTRACE, ELF и DWARF, а также о функциях, которые они реализуют в отладчиках на Rust, читайте в статье.

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

Впечатлился случайно найденным ресурсом и убил час, чтобы(, несмотря на кривое юзабилити,) найти оглавление. Вот оно:

https://opendsa-server.cs.vt.edu/home/books
(Sample OpenDSA eTextbooks)

Это один из (потенциально многих) несвязанных инстансов открытого движка для прохождения курсов по Computer Science и создания новых. Крутая его фишка: визуализация алгоритмов, структур данных и концепций, таких как стили вызовов функций - ещё и с упражнениями для закрепления.

Контента бездна, рекомендую прокликать ссылки.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

[Отладка] git bisect

Сегодня хочу рассказать об инструменте Git, который может очень помочь при отладке. Этот инструмент называется git bisect.

Возможно, ты уже сталкивался с ситуацией, когда нужно выяснить, после какого изменения в коде проекта появилась ошибка. Перебирать все коммиты вручную — не самое приятное занятие. Особенно, если ошибка была допущена давно. Именно здесь на помощь приходит git bisect.

Принцип работы git bisect основан на методе бинарного поиска. Тебе лишь нужно указать «хороший» коммит, в котором ошибка точно отсутствует, и «плохой» коммит, в котором ошибка уже есть. Git bisect автоматически проведет тебя через процесс бинарного поиска между этими двумя точками, поможет постепенно сузить круг «подозреваемых» и найти коммит, начиная с которого стал проявляться баг.

Использование git bisect начинается с запуска команды git bisect start, после чего ты помечаешь известные «хороший» и «плохой» коммиты соответствующими командами. Git затем предложит тебе проверить определенный коммит, и ты сообщишь, есть ли в нем данная ошибка. Процесс повторяется, пока не будет найден коммит, который послужил причиной появления бага.

Ссылка на доку здесь.

А тут мой тг-канал со свежими новостями из мира мобильной разработки.

Теги:
Всего голосов 13: ↑10 и ↓3+7
Комментарии1

Состоялся релиз отладчика GDB 14.1 (первый выпуск серии 14.x, ветка 14.0 использовалась для разработки). GDB поддерживает отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).

Ключевые улучшения в проекте:

  • кодовая база переведена на использование стандарта C++17. Для сборки GDB теперь необходим компилятор, поддерживающий C++17 (как минимум GCC 9);

  • в индекс добавлена информация о функции main, что позволяет ускорить запуск при использовании с некоторыми большими исполняемыми файлами;

  • прекращена поддержка ОС AIX 4.x, 5.x и 6.x (в качестве минимально поддерживаемой версии AIX заявлен выпуск 7.1);

  • добавлена начальная встроенная поддержка протокола DAP (Debugger Adapter Protocol);

  • добавлена поддержка переменной окружения NO_COLOR;

  • добавлена начальная поддержка целочисленных типов размером больше 64 битов;

  • внесены улучшения в Python API;

  • добавлена поддержка точек остановки, привязанных к отдельным объектам отладки (при отладке нескольких процессов);

  • добавлена функция "$_shell" для запуска команды в командной оболочке и возвращения результата;

  • улучшена поддержка архитектуры AArch64. Добавлена поддержка расширений SME (Scalable Matrix Extension) и SME2;

  • улучшена поддержка языка Ada и спецификации Ada 2022.

Источник: OpenNET.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0