Всем привет.
Я недавно начал заниматься DSP и вот мне поставили задачу. Сделать систему которая сдвигает сигнал от 5 до 100 Гц на 90 градусов.
Дано: Частота самлинга ADC 47кГц. На входе известно что будет только одна частота (с шумом ессесно) от 5 до 100 Гц. Нужно сдвинуть эту частоту на 90 убрать шум и выдать в DAC. Таких каналов должно быть 220 штук. Алгоритм(ы) должен быть готов через два месяца, а реализация в железе к концу августа (прототип).
Как это сделать: 1. Использовать Хильберт преобразование. Но его можно реализовать или с хорошей амплитудной характеристикой либо с фазавой. Фазовая важней. Сделал up-sampling сигнала после ADC в 2 раза (потому как на 100 Гц сказывает групповая задержка). Но не добавлял 0, а дублирую значения. И прогоняю через фильтр. На выходе down-sampling в 2 раза. Из за up-sampling-а на выходе сигнал с высокочастотным шумом. Убирается довольно просто. Далее приходится корректировать аплитуду сигнала. Аплитуда линейно зависит от частоты. По этому делаю down-sampling в 20 раз выходного сигнала для FFT. FFT делается по 512 точкам. Нахожу частоту и получаю коэфициент на который нужно домножить выходной сигнал что бы уровнь равнялся входному. И еще приходится сдвигать выходной сигнал по уровню. На сколько дает первый коэффициент FFT. Все это написано на MatLab и вроде как работает. Что здесь не устраивает: требуется много памяти учитывая что 220 каналов.
2. Использовать интегратор. Ситуация в точности такая-же как и в первом случае. Или я что-то не так делаю. Но этот вопрос изучается.
3. Идеальным было бы генерировать самим синусоиду. Но тогда надо знать: частоту, амплитуду и фазу входного сигнала. Как это все узнать? FFT->частота. Найти фазу пока не получается (имеется ввиду простым способом). Можно конечно сделать как написал st256. Но реализация на первый взгляд кажется сложней чем в случае 1. Да и не получается почему-то. Иногда находит фазу правильно иногда нет. Или я не правильно реализовал алгоритм. Мне кажется проще прибавить cos(wt) к исходному сигналу и взять acos от результата. Это и даст фазу. Но я не волшебник я только учусь.
4. ?????
Буду благодарен любому совету куда грести Спасибо
|