Видео в конце...
В прошлом выпуске мы рассмотрели пример весьма интересного испытательного стенда для исследования возможностей автоматизированного управления сверхлегких летательных аппаратов. Пришло время окончить наш стенд для исследования модулей, предназначенных для цифровой обработки сигнала (ЦОС).
Остановились мы на том, что в цепочке прохождения оцифрованных сигналов от модуля приема до модуля передачи кроме самой системы ЦОС необходимо вставить кольцевой буфер (FIFO). Такой буфер сгладит все проблемы, касающиеся задержек перед появлением готовых данных, также, при колебаниях скорости поступления данных это не даст захлебнуться ни одной из подсистем .
Немного тонкостей
Немного погружения в особенности разработанных ранее модулей не помешает. Модуль передачи данных по интерфейсу RS-232 содержит сигнальный выход rts (готовность к передаче).
В конце каждого фрейма, передаваемого по линии tx, выставляется высокий уровень rts. Но..., как уже сказано, это в происходит в конце фрейма и означает готовность к передаче.
Модуль асинхронного кольцевого буфера содержит тактовый вход на чтение данных RCLK.
Проблема этого экземпляра инженерного творчества в том, что некоторые внутренние узлы инициализируются этим входом и при начале работы не возникает низкого уровня сигнала empty ("пусто"), который покажет передатчику, что данные появились.
При моделировании отчетливо видно, что при поступлении данных (data_in), сопровождающееся тактовыми сигналами на запись (WCLK) и при отсутствии тактов на чтение (RCLK) сигнал empty не убирается. Сигнал на RCLK поступает c линии rts модуля отправки. Создается закольцованная проблема, которая решается костылями, на которых не хотелось бы сосредотачиваться. Кроме того, при опустошении буфера быстрым чтением опять выставляется сигнал empty, который не убирается без тактов от rts. Слишком много костылей) Однако, проект задышал.
Проводим эксперимент
В качестве подопытного модуля ЦОС выступает интегратор, который расположен между приемным модулем и FIFO, после буфера FIFO расположен передатчик, выводящий результат вычислений. Эти модули реализованы в ПЛИС на аппаратной платформе, связанной с хост-компьютером (ПК) через интерфейс передачи данных RS-232.
При соединении кабеля с компьютером драйвер обнаруживает переходник USB - RS-232 и создает устройство с именем COM4.
Программно отправляем на аппаратную платформу отсчеты сигнала вида 0x0001, ожидая увидеть на выходе сложение этих чисел на интеграторе. Каждый байт считанного сигнала выводим в консоль через запятую.
Если интерпретировать байты, как младшие и старшие части 16-битных отсчетов, то получаем последовательность:
0х0101, 0х0001, 0х0002, 0х0003, 0х0004 ...
Кроме первого отсчета все довольно закономерно, но этот самый первый - результат компромисса при создании костылей может быть отброшен программно в хост-компьютере.
После записи полученных данных в файл, просматриваем их в программе CoolEdit или любом похожем редакторе.
Вроде как победа, с чем всех сочувствующих зрителей и поздравляю) На рисунке выше та самая "рампа" на выходе интегратора при воздействии на него константой. На базе этой платформы мы и будем развиваться, создавая все более сложные системы автоматизации и обработки сигналов.
Поддержите статью лайком если понравилось и подпишитесь чтобы ничего не пропускать.
Также не обойдите вниманием канал на YouTube. Подписки и лайки будут приятным ответом от аудитории.