Страница 1 из 1

Проектирование RRC для QPSK в MATLAB (Filter Designer)

Добавлено: 21 сен 2020, 11:55
igor_fpga
Добрый день!
Перед началом работы в этом направлении изучил Вашу статью http://ru.dsplib.org/content/signal_isi/signal_isi.html
После изучения понял, что RRC фильтр необходим и перешел к его реализации с помощью Filter Designer
В общем суть проблемы в следующем

Есть Filter Designer
FD.png
У него есть несколько параметров:
- Specify Order - порядок фильтра (в моем случае 118);
- Window - выбор окна (по умолчанию оставил Kaiser, у которого параметр Beta = 1)
- Fs - частота дискретизации (частота, на которой работает RRC, в моем случае - 1.6 МГц)
- Fc - частота среза (согласно Вашей статье, она должна быть в 2 раза меньше, чем скорость передачи информации Br, то есть в моем случае Br = 50 кбит/с, следовательно Fc = 25 кГц)
- Rolloff - параметр, позволяющий определить ширину полосы перехода. Например, Fc * Rolloff = Bandwidth. (25000 * 0.25 = 6250, то есть полоса перехода будет от 18750 Гц до 31250)

На этом параметры FD заканчиваются
При реализации данного фильтра я получаю следующую ИХ
Так как делаю модулятор QPSK на FPGA, то далее полученный фильтр переводится в Verilog код, компилируется и проходит этап симуляции в ModelSim, скриншот приложил

У меня ранее получалось то, что описано у Вас в статье для случая BPSK сигнала, то есть фильтр имел такой же отклик (синяя полоса на 3 и 4 графике на "Рисунок 15: Поясняющие осциллограммы BPSK модулятора"). Однако параметры этого фильтра я не сохранил, и после этого не могу вновь привести фильтр к виду, показанному на рисунке "Рисунок 15: Поясняющие осциллограммы BPSK модулятора".

Собственно говоря, вопрос - Где ошибся?

На втором рисунке (результате симуляции) видно, что фильтр "подает признаки жизни", однако обратив внимания на последовательность входных импульсов видно, что все же фильтр отрабатывает некорректно
MS.png
MS.png (11.48 КБ) 3677 просмотров
Заранее спасибо!

Re: Проектирование RRC для QPSK в MATLAB (Filter Designer)

Добавлено: 21 сен 2020, 12:26
Бахурин Сергей
Видимо с полосой фильтра какие-то проблемы. Явно по моделсим видно, что фильтр слишком узкополосный. Я рекомендую для начала сделать симуляцию в матлабе работы фильтра. Есть предополжение, что где-то samplerate фильтра не соответствует частоте клока FPGA или скорости битового потока (верхние импульсы на графике моделсима идут слишком часто и фильтр не успевает их отработать), но это догадки без симуляции сказать что-то определенное сложно.

Re: Проектирование RRC для QPSK в MATLAB (Filter Designer)

Добавлено: 21 сен 2020, 14:01
igor_fpga
Полоса, а также клок в порядке
То есть полоса выбрана из соображений по статье
Клок в порядке, потому что ранее получалось успешно запустить данный фильтр и он работал без трудностей

Проблема была решена путем увеличения коэффициента Beta для окна Kaiser до значения 10.
При таком окне происходит преобразование ИХ фильтра в ту, которая необходима для получения конечного результата. То есть окно "усекает" область боковых лепестков таким образом, что на моделировании мы видим результат такой же, как и на "Рисунок 15: Поясняющие осциллограммы BPSK модулятора".

В итоге все получилось и в конечном счете на выходе умножителей все сходится с требуемыми графиками