Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Pulse Shaping Filter
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2
Politeh
Здравствуйте!

Хотелось бы узнать работу PSF(Pulse Shaping Filter).

В модеме 8PSK в моём случае используется PSF преподнятый косинус. Не могу точно понять как он работает. В книге К.Феер "Беспроводная цифровая связь" написано, что подавая импульсы на PSF преподнятого косинуса, на выходе получаем отклик - импульсную характеристику. Это понятно, но конкретно в модеме тоже нужно модулировать несущую такими же откликами(импульсной характеристикой), или просто обычные импульсы(NRZ) пропускаем через этот PSF, а потом этим резльтатом модулируем несущие в квадратурных каналах?

Спасибо.
MKS
Подаете на приподнятый косинус +-1, а в зависимости от частоты среза фильтра оставшийся символьный интервал добиваете необходимым кол-вом нулей 0. Например если частота среза 0.5 от частоты Найквиста то добавляем один 0.
Politeh
Цитата(MKS @ Aug 12 2008, 10:06) *
Подаете на приподнятый косинус +-1, а в зависимости от частоты среза фильтра оставшийся символьный интервал добиваете необходимым кол-вом нулей 0. Например если частота среза 0.5 от частоты Найквиста то добавляем один 0.



Т.е. всё таки просто последовательность импульсов и соответствующее количество нулей между ними.
А модуляция фазы несущих за счёт чего происходит? Ведь должна быть разная амплитуда на выходе PSF, чтобы получить 8PSK? Или я не так понимаю?
petrov
Конечно дельта-импульсами на символьном интервале, вы же хотите приподнятый косинус получить а не произведение приподнятого косинуса с частотной характеристикой прямоугольного импульса. У вас так же должен быть преобразователь входных данных в координаты точек PSK, за счёт этого и будет фазовая модуляция. Только ещё на передаче у вас должен быть корень из приподнятого косинуса, и на приёме сответственно будет согласованный корень из приподнятого косинуса. Полосовой фильтр на выходе идеального квадратурного модулятора не нужен.
Politeh
Цитата(petrov @ Aug 12 2008, 10:51) *
Конечно дельта-импульсами на символьном интервале, вы же хотите приподнятый косинус получить а не произведение приподнятого косинуса с частотной характеристикой прямоугольного импульса. У вас так же должен быть преобразователь входных данных в координаты точек PSK, за счёт этого и будет фазовая модуляция. Только ещё на передаче у вас должен быть корень из приподнятого косинуса, и на приёме сответственно будет согласованный корень из приподнятого косинуса. Полосовой фильтр на выходе идеального квадратурного модулятора не нужен.


А можно подрнобнее о преобразователе точек в PSK? Т.е. мне нужно найти такое соотношение между входными данными данными на PSF, чтобы сумма промодулированных сигналов давала нужную фазу. Где можно почитать об этом преобразователе? Т.е. всё таки за счёт амплитуды получаем готовый модулированный сигнал.
alexkok
Цитата(Политех @ Aug 12 2008, 09:32) *
Т.е. всё таки просто последовательность импульсов и соответствующее количество нулей между ними.
А модуляция фазы несущих за счёт чего происходит? Ведь должна быть разная амплитуда на выходе PSF, чтобы получить 8PSK? Или я не так понимаю?

То что у Вас на схеме обозначено SRC может быть либо аналоговым ФНЧ, либо его цифровым эквивалентом, преобразующим форму импульса чтобы сузить спектр и уменьшить внеполосные излучения.
Приподнятый косинус это одна из самых простых реализаций ФНЧ в цифре.
Реально Вам надо перемножить битовые импульсы с коэффициентами. Т.е. каждый битовый импульс будет выглядеть как "колокол" с амплитудой соответствующей его коду. В простейшем случае достаточно 8-16 уровней обкатки этого импульса.
Надеюсь понятно объяснил.
petrov
Цитата(Политех @ Aug 12 2008, 11:01) *
А можно подрнобнее о преобразователе точек в PSK? Т.е. мне нужно найти такое соотношение между входными данными данными на PSF, чтобы сумма промодулированных сигналов давала нужную фазу. Где можно почитать об этом преобразователе?


Это просто таблица в которой входные данные адресуют координаты I,Q точек созвездия, положение точки и задаёт фазу, в книжках просто рисуют созвездие и нумеруют точки.
Politeh
Цитата(petrov @ Aug 12 2008, 11:08) *
Это просто таблица в которой входные данные адресуют координаты I,Q точек созвездия, положение точки и задаёт фазу, в книжках просто рисуют созвездие и нумеруют точки.


Спасибо! С этим разобрался.


Цитата(alexkok @ Aug 12 2008, 11:03) *
То что у Вас на схеме обозначено SRC может быть либо аналоговым ФНЧ, либо его цифровым эквивалентом, преобразующим форму импульса чтобы сузить спектр и уменьшить внеполосные излучения.
Приподнятый косинус это одна из самых простых реализаций ФНЧ в цифре.
Реально Вам надо перемножить битовые импульсы с коэффициентами. Т.е. каждый битовый импульс будет выглядеть как "колокол" с амплитудой соответствующей его коду. В простейшем случае достаточно 8-16 уровней обкатки этого импульса.
Надеюсь понятно объяснил.


Не ясно, что такое - "В простейшем случае достаточно 8-16 уровней обкатки этого импульса." Будьте добры, объясните пожалуйста. Имеется в виду порядок фильтра?
alexkok
Цитата(Политех @ Aug 12 2008, 10:26) *
Не ясно, что такое - "В простейшем случае достаточно 8-16 уровней обкатки этого импульса." Будьте добры, объясните пожалуйста. Имеется в виду порядок фильтра?

Это относится к разрядности коэффициентов и разрядности ЦАП формирующего битовые отсчеты и их обкатку. Проще всего, чтобы хорошо понять это, найти программу расчета цифровых фильтров и менять в ней вид окна, число и разрядность коэффициентов. По уровню боковых лестков фильтра будет наглядно все видно.
Порядок фильтра примерно такой же.
Politeh
В матлабе поэкспериментировал с функциями. Вот что получилось. Верхний рисунок - импульсная характеристика. Нижний - реакция фильта при подаче на него трёх последовательных единиц (1 1 1) с символьной скоростью. Теперь я так понимаю такими импульсами и модулируются квадратурные несущие: косинус и синус. Естественно что что они должны подаваться в нужном соотношении(после последовательно параллельного преобразователя который отражает группы из трёх бит в координаты векторов). После фильтра ставится ЦАП и перемножается в аналоговом виде. Только не понимаю, если у меня подаётся два одинаковых импульса(+1) на каждый канал, то после модуляции должна быть фаза в 45 градусов, но тогда и амплитудная модуляция будет присутствовать, так как не могу же сделать я амплитуды импульсов 0.707... .
alexkok
Цитата(Политех @ Aug 13 2008, 07:25) *
В матлабе поэкспериментировал с функциями. Вот что получилось. Верхний рисунок - импульсная характеристика. Нижний - реакция фильта при подаче на него трёх последовательных единиц (1 1 1) с символьной скоростью. Теперь я так понимаю такими импульсами и модулируются квадратурные несущие: косинус и синус.

В общем да, но в реальных системах, работающих в эфире или с частотным уплотнением, есть есть требование к уровню помех в соседнем канале. Например для КВ диапазона это -40дБ, насколько помню.
Чтобы это требование обеспечить, используют цифровые фильтры для модулирующих сигналов. Подавать просто единицы и нули на вход модулятора нельзя. Уровень боковых лепестков этого фильтра должен быть соответствующим.
Цитата
Естественно что что они должны подаваться в нужном соотношении(после последовательно параллельного преобразователя который отражает группы из трёх бит в координаты векторов). После фильтра ставится ЦАП и перемножается в аналоговом виде.

Неправильно, на ЦАП подаются отсчеты уже прошедшие фильтрацию цифровым фильтром. В реальном времени это делать ни к чему, обычно все просчитывается заранее и записывается в ПЗУ.
За один битовый отсчет нужно выбрать из ПЗУ и подать на ЦАП число отсчетов равное порядку фильтра. Поэтому удобнее выбирать порядок как степень двух.
Цитата
Только не понимаю, если у меня подаётся два одинаковых импульса(+1) на каждый канал, то после модуляции должна быть фаза в 45 градусов, но тогда и амплитудная модуляция будет присутствовать, так как не могу же сделать я амплитуды импульсов 0.707... .

Почему не можете?
Все это можно учесть и выбирать для такой комбинации соответствующие части прошивок.
Здесь лежат ссылки на программы расчета цифровых фильторов.
Я из них пользовался только FilterExpress, работает.
petrov
Цитата(Политех @ Aug 13 2008, 08:25) *
Естественно что что они должны подаваться в нужном соотношении(после последовательно параллельного преобразователя который отражает группы из трёх бит в координаты векторов). После фильтра ставится ЦАП и перемножается в аналоговом виде. Только не понимаю, если у меня подаётся два одинаковых импульса(+1) на каждый канал, то после модуляции должна быть фаза в 45 градусов, но тогда и амплитудная модуляция будет присутствовать, так как не могу же сделать я амплитуды импульсов 0.707... .


А что это за координата такая (1,1), нету в 8PSK такой точки, на выходе таблицы у вас должно быть как раз (0.707, 0.707) для 45 градусов.
Михаил_K
Цитата(MKS @ Aug 12 2008, 10:06) *
Подаете на приподнятый косинус +-1, а в зависимости от частоты среза фильтра оставшийся символьный интервал добиваете необходимым кол-вом нулей 0. Например если частота среза 0.5 от частоты Найквиста то добавляем один 0.


Если оставшийся символьный интервал добиваете нулями, то косинус должен быть не приподнятый а обычный smile.gif


Цитата(alexkok @ Aug 13 2008, 10:41) *
Неправильно, на ЦАП подаются отсчеты уже прошедшие фильтрацию цифровым фильтром. В реальном времени это делать ни к чему, обычно все просчитывается заранее и записывается в ПЗУ.
За один битовый отсчет нужно выбрать из ПЗУ и подать на ЦАП число отсчетов равное порядку фильтра. Поэтому удобнее выбирать порядок как степень двух.


Не могли бы подкинуть ссылочку, где можно почитать, как заранее просчитать выход фильтра и разместить его в ПЗУ. Интересует структура ПЗУ и алгоритм выбора, а то в моем представлении ПЗУ уж очень большое получается.
petrov
Цитата(Михаил_K @ Aug 13 2008, 11:24) *
Если оставшийся символьный интервал добиваете нулями, то косинус должен быть не приподнятый а обычный smile.gif


Это как?
MKS
Цитата(Михаил_K @ Aug 13 2008, 10:24) *
Если оставшийся символьный интервал добиваете нулями, то косинус должен быть не приподнятый а обычный smile.gif

Это вы о чем ?
Politeh
Цитата(petrov @ Aug 13 2008, 11:08) *
А что это за координата такая (1,1), нету в 8PSK такой точки, на выходе таблицы у вас должно быть как раз (0.707, 0.707) для 45 градусов.


Понял. Спасибо.


Цитата(alexkok @ Aug 13 2008, 10:41) *
В общем да, но в реальных системах, работающих в эфире или с частотным уплотнением, есть есть требование к уровню помех в соседнем канале. Например для КВ диапазона это -40дБ, насколько помню.
Чтобы это требование обеспечить, используют цифровые фильтры для модулирующих сигналов. Подавать просто единицы и нули на вход модулятора нельзя. Уровень боковых лепестков этого фильтра должен быть соответствующим.

Неправильно, на ЦАП подаются отсчеты уже прошедшие фильтрацию цифровым фильтром. В реальном времени это делать ни к чему, обычно все просчитывается заранее и записывается в ПЗУ.
За один битовый отсчет нужно выбрать из ПЗУ и подать на ЦАП число отсчетов равное порядку фильтра. Поэтому удобнее выбирать порядок как степень двух.

Почему не можете?
Все это можно учесть и выбирать для такой комбинации соответствующие части прошивок.
Здесь лежат ссылки на программы расчета цифровых фильторов.
Я из них пользовался только FilterExpress, работает.


Это я уже промоделировал в Матлабе с использованием фильтра. Правда сейчас у меня почему то отклики налазят друг на друга, странно - слишком растянутая импульсная характеристика получилась(ширина её при порядке равном 9 выходит около 0.4 мс), хотя параметры выбрал из стандарта: коэффициент сглаживания = 0.6. Частота симвовлов 10500 Гц, период соот-но 0.095 мс.

Вот код:

fs = 10500; - частота символов


Ts = 1/fs;

fd = 2*fs; - частота дискретизации

[num,den] = rcosine(fs,fd,'fir',0.6, 2); - расчет фильтра.
[H T]= impz(num); - импульсная хар-ка
T = T.*(1/fd); - ось времени
subplot(2,1,1)
stem(T, H) - рисуем
grid on;
% [A w] = freqz(num, den); - рисуем АЧХ
% subplot(2,1,2)
% w*fd;
% plot(w*fd/pi, 20*log10(abs(A)))
% ylim([-100 10])
% grid on


[y TT] = rcosflt([0.7 ,0.7],fs/6, fd,['filter', 'fir'],num); пропускаем два импульса по 0.7 через фильтр.
subplot(2,1,2)
stem(TT,y) - рисуем.
petrov
Неправильно параметры фильтра посчитаны.
NUM = RCOSINE(Fd, Fs) designs an FIR raised cosine filter to filter a
digital signal with the digital transfer sampling frequency Fd. The
filter sampling frequency is Fs.
Politeh
Цитата(petrov @ Aug 13 2008, 11:55) *
Неправильно параметры фильтра посчитаны.
NUM = RCOSINE(Fd, Fs) designs an FIR raised cosine filter to filter a
digital signal with the digital transfer sampling frequency Fd. The
filter sampling frequency is Fs.


У меня обозначения перепутаны Fs и Fd, но в вызове функции они стоят на нужном месте. Посмотрите внимательнее.
Насколько могут пересекаться соседние символы? Если боковыми липестками пересекаются?
petrov
Цитата(Политех @ Aug 13 2008, 12:25) *
[y TT] = rcosflt([0.7 ,0.7],fs/6, fd,['filter', 'fir'],num);


А почему символьная частота вдруг стала fs/6?

Вообще советую вам симулинк, всё гораздо нагляднее.
Politeh
Цитата(petrov @ Aug 13 2008, 12:49) *
А почему символьная частота вдруг стала fs/6?

Вообще советую вам симулинк, всё гораздо нагляднее.


Извиняюсь, это пробовал как будет выглядеть. Конечно пробовал и просто fs.
Михаил_K
Цитата(petrov @ Aug 13 2008, 11:25) *
Это как?


Приподнятый косинус используют для компенсации синка, если же вы подаете на вход фильтра дельта импульсы, то синка нет, следовательно и компенсировать нечего. Т.е. АЧХ фильтра - просто корень из косинуса.
petrov
Цитата(Михаил_K @ Aug 13 2008, 14:14) *
Приподнятый косинус используют для компенсации синка, если же вы подаете на вход фильтра дельта импульсы, то синка нет, следовательно и компенсировать нечего. Т.е. АЧХ фильтра - просто корень из косинуса.


Это не так. Фильтр с АЧХ приподнятого косинуса имеет импульсную характеристику обладающую тем свойством что она равна нулю в точках отстоящих от максимума на интервалы кратные символьному, и только. Если мы хотим получить импульсы с такими свойствами то естественно должны возбуждать фильтр последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал, чтобы собственно получить импульс. Если же мы возбуждаем приподнятый косинус прямоугольными импульсами то соответственно получаем импульсы которые равны свёртке прямоугольного импульса и импульса приподнятого косинуса, которые ессно свойством отсутствия межсимвольной интерференции не обладают, поэтому нужен корректирующий фильтр обратный синк.
alexkok
Цитата(Политех @ Aug 13 2008, 10:50) *
Понял. Спасибо.
Это я уже промоделировал в Матлабе с использованием фильтра. Правда сейчас у меня почему то отклики налазят друг на друга, странно - слишком растянутая импульсная характеристика получилась(ширина её при порядке равном 9 выходит около 0.4 мс), хотя параметры выбрал из стандарта: коэффициент сглаживания = 0.6. Частота симвовлов 10500 Гц, период соот-но 0.095 мс.

По поводу Матлаба ничего сказать не могу, не пользуюсь.
Но частота отсчетов должна быть больше символьной в N раз, где N - порядок фильтра.
petrov
Цитата(alexkok @ Aug 13 2008, 20:53) *
Но частота отсчетов должна быть больше символьной в N раз, где N - порядок фильтра.


Никак не связан порядок фильтра с частотой отсчётов.
alexkok
Цитата(petrov @ Aug 13 2008, 22:00) *
Никак не связан порядок фильтра с частотой отсчётов.

Смотря что понимать под порядком фильтра.
Для FIR фильтра порядок это число коэффициентов и частота отсчетов не может быть меньше чем символьная частота умноженная на число коэффициентов. Больше - может.
petrov
Цитата(alexkok @ Aug 13 2008, 23:54) *
Смотря что понимать под порядком фильтра.
Для FIR фильтра порядок это число коэффициентов и частота отсчетов не может быть меньше чем символьная частота умноженная на число коэффициентов. Больше - может.


Ерунда какая-то...
Допустим символьная частота 1, 8 отсчётов на символ, т е частота отсчётов 8, коэффициентов 200, вот меньше запросто.
alexkok
Цитата(petrov @ Aug 14 2008, 08:54) *
Ерунда какая-то...
Допустим символьная частота 1, 8 отсчётов на символ, т е частота отсчётов 8, коэффициентов 200, вот меньше запросто.

Ну и промоделируйте какой уровень боковых лепестков будет в соседнем канале для обсуждаемого случая:
символьная частота - 10кГц, т.е. полоса канала 25кГц,
тип фильтра - приподнятый косинус,
плюс Ваши условия.
Что будет за этой полосой?
Я навскидку оцениваю в - 15..-18дБ.
_4afc_
Цитата(petrov @ Aug 13 2008, 14:34) *
Это не так. Фильтр с АЧХ приподнятого косинуса имеет импульсную характеристику обладающую тем свойством что она равна нулю в точках отстоящих от максимума на интервалы кратные символьному, и только. Если мы хотим получить импульсы с такими свойствами то естественно должны возбуждать фильтр последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал, чтобы собственно получить импульс. Если же мы возбуждаем приподнятый косинус прямоугольными импульсами то соответственно получаем импульсы которые равны свёртке прямоугольного импульса и импульса приподнятого косинуса, которые ессно свойством отсутствия межсимвольной интерференции не обладают, поэтому нужен корректирующий фильтр обратный синк.


Кстати, у меня функция NUM = RCOSINE(Fd, Fs) создаёт КИХ фильтр длиной 3 символа. Т.е. при возбуждении его последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал межсимвольная интерференция в точках отстоящих от максимума на интервалы кратные символьному действительно отсутствует.
Но между ними она присутствует и в этих точках есть влияние символа на два соседних.
Насколько данное влияние полезно или вредно по вашему?
petrov
Цитата(alexkok @ Aug 14 2008, 10:14) *
Что будет за этой полосой?


На 200/8=25 символьных интервалов будет отклик от каждого символа распространяться, на вскидку более 60 дБ будет подавление за пределами основного лепестка.

Цитата(_4afc_ @ Aug 14 2008, 10:30) *
Кстати, у меня функция NUM = RCOSINE(Fd, Fs) создаёт КИХ фильтр длиной 3 символа. Т.е. при возбуждении его последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал межсимвольная интерференция в точках отстоящих от максимума на интервалы кратные символьному действительно отсутствует.
Но между ними она присутствует и в этих точках есть влияние символа на два соседних.
Насколько данное влияние полезно или вредно по вашему?


Прокиса почитайте. Так и должно быть. Чем меньше коэффициент ската тем больше будут всплески на интервалах между моментами синхронизации и например джиттер синхронизации будет соответственно больший вклад вносить.
alexkok
Цитата(petrov @ Aug 14 2008, 09:56) *
На 200/8=25 символьных интервалов будет отклик от каждого символа распространяться, на вскидку более 60 дБ будет подавление за пределами основного лепестка.

А какая полоса этого фильтра будет и что при этом от полезного сигнала останется?
Мы похоже обсуждаем разные случаи, я возбудитель передатчика (см. пост №1), а Вы приемник.
Михаил_K
Цитата(petrov @ Aug 13 2008, 14:34) *
Это не так. Фильтр с АЧХ приподнятого косинуса имеет импульсную характеристику обладающую тем свойством что она равна нулю в точках отстоящих от максимума на интервалы кратные символьному, и только. Если мы хотим получить импульсы с такими свойствами то естественно должны возбуждать фильтр последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал, чтобы собственно получить импульс. Если же мы возбуждаем приподнятый косинус прямоугольными импульсами то соответственно получаем импульсы которые равны свёртке прямоугольного импульса и импульса приподнятого косинуса, которые ессно свойством отсутствия межсимвольной интерференции не обладают, поэтому нужен корректирующий фильтр обратный синк.


Да, Вы правы. Посмотрел в книжке. Такой фильтр действительно называется не косинусным, а приподнятым косинусом, хотя никакого подъема выше 0 дБ, в его АЧХ нет. А я то по серости своей его косинусным называл
petrov
Цитата(alexkok @ Aug 14 2008, 11:08) *
А какая полоса этого фильтра будет и что при этом от полезного сигнала останется?
Мы похоже обсуждаем разные случаи, я возбудитель передатчика (см. пост №1), а Вы приемник.


Полоса основного лепестка для коэффициента ската 0.6 и имвольной частоты 1 будет 1.6, не будет межсимвольной интерференции и при памяти фильтра на 25 символов будет ОЧЕНЬ хорошее подавление боковых лепестков. И не имеет значеня передатчик это или приёмник.
alexkok
Цитата(petrov @ Aug 14 2008, 10:23) *
Полоса основного лепестка для коэффициента ската 0.6 и имвольной частоты 1 будет 1.6, не будет межсимвольной интерференции и при памяти фильтра на 25 символов будет ОЧЕНЬ хорошее подавление боковых лепестков. И не имеет значеня передатчик это или приёмник.

Я привык использовать для полосы доли частоты Найквиста и мне не понятно как Вы считаете.
Можете объяснить или дать название книги где это описано?
Politeh
В общем вот что я получил.

fs = 10500;
Ts = 1/fs;

fd = 10*fs
Td = 1/fd

[num,den] = rcosine(fs,fd,'fir', 0.6, 2); % 0.6 - коэффициет сглаживания, 2 - задержка в символах
[H T]= impz(num);
T = T.*Td;
subplot(3,1,1)

stem(T,H)
grid on;

% ==================================Спектр
[A w] = freqz(num, den);
subplot(3,1,2)
w*fd;
plot(w*fd/pi, 20*log10(abs(A)))
ylim([-100 10])
grid on
%=========================================

[y1 TT1] = rcosflt([1 0 0 0],fs, fd,['filter','fir'],num);
[y2 TT2] = rcosflt([0 1 0 0],fs, fd,['filter','fir'],num);
[y3 TT3] = rcosflt([0 0 1 0],fs, fd,['filter','fir'],num);
[y4 TT4] = rcosflt([0 0 0 -1],fs, fd,['filter','fir'],num);

[y5 TT5] = rcosflt([1 1 1 -1],fs, fd,['filter','fir'],num);
subplot(3,1,3)
stem(TT1,[y1 y2 y3 y4 y5], 'filled')
grid on;
alexkok
Цитата(petrov @ Aug 14 2008, 10:23) *
Полоса основного лепестка для коэффициента ската 0.6 и имвольной частоты 1 будет 1.6, не будет межсимвольной интерференции и при памяти фильтра на 25 символов будет ОЧЕНЬ хорошее подавление боковых лепестков.

Ширина полосы фильтра при этом будет в 20 раз уже полосы сигнала, подавление боковых полос самого сигнала будет тоже где-то - 60дБ от уровня несущей, т. е. на уровне шумов передатчика.
В матлабе оно может и будет работать, а в железе нет.
Цитата
И не имеет значеня передатчик это или приёмник.

Вот это точно. smile.gif

Цитата(Политех @ Aug 15 2008, 08:15) *
fd = 10*fs

Советую увеличить fd до 32*fs как минимум.
Politeh
Мне кажется всё-таки полоса сигнала(на картинке) широкой. Как такой сигнал с таким спектром втиснется после модуляции в канал в 25 кГц? Или я не прав. Но если сужать импльсный отклик, то соотв-нно расширяется спектр, и наоборот(в этом случае получаем символьную интерференцию).
alex_os
Цитата(alexkok @ Aug 15 2008, 09:56) *
Ширина полосы фильтра при этом будет в 20 раз уже полосы сигнала, подавление боковых полос самого сигнала будет тоже где-то - 60дБ от уровня несущей, т. е. на уровне шумов передатчика.
В матлабе оно может и будет работать, а в железе нет.

Интересно почему это уже будет в 20 раз?!!!

Цитата(alexkok @ Aug 15 2008, 09:56) *
Советую увеличить fd до 32*fs как минимум.

32 многовато smile.gif, да 10 тоже, достаточно будет fd = (2..4)*fs
alexkok
Цитата(Политех @ Aug 15 2008, 09:31) *
Мне кажется всё-таки полоса сигнала(на картинке) широкой. Как такой сигнал с таким спектром втиснется после модуляции в канал в 25 кГц? Или я не прав. Но если сужать импльсный отклик, то соотв-нно расширяется спектр, и наоборот(в этом случае получаем символьную интерференцию).

25кГц это моё предположение, какая у Вас задача я не знаю.

Цитата(alex_os @ Aug 15 2008, 09:35) *
Интересно почему это уже будет в 20 раз?!!!

Полоса и фильтра и сигнала (символа) обратно пропорциональна длине фильтра или сигнала.
А соотношение длительностей, которое предложил petrov - 8 и 200 и дает соотношение полос около двадцати. Если Вы насчет точности оценки возмущаетесь smile.gif то более точно в 16 раз.
petrov
Цитата(alexkok @ Aug 15 2008, 10:52) *
25кГц это моё предположение, какая у Вас задача я не знаю.
Полоса и фильтра и сигнала (символа) обратно пропорциональна длине фильтра или сигнала.
А соотношение длительностей, которое предложил petrov - 8 и 200 и дает соотношение полос около двадцати. Если Вы насчет точности оценки возмущаетесь smile.gif то более точно в 16 раз.


Ну не писали бы в ерунды, сбиваете только Политеха, запустите fdatool в матлабе и рассчитайте несколько фильтров с импульсной приподнятого косинуса, и меняйте только количество коэффициентов.
alex_os
Цитата(Политех @ Aug 15 2008, 10:31) *
Мне кажется всё-таки полоса сигнала(на картинке) широкой. Как такой сигнал с таким спектром втиснется после модуляции в канал в 25 кГц? Или я не прав. Но если сужать импльсный отклик, то соотв-нно расширяется спектр, и наоборот(в этом случае получаем символьную интерференцию).

Фильтр длинее сделайте и будет Вам счастье.
Например вот так
b = hamming(141)'.*firrcos(140, 1/20, 0.6, 1, 'rolloff', 'sqrt'); 1/20 = fs/fd/2.
Михаил_K
Похоже люди не могут договориться как посчитать фильтр.
Предлагаю несложный алгоритм.

1. Вам нужно знать частоту следования символов, назовем ее fs.
2. Выберите количество полных символов, укладывющихся в длине вашего фильтра, исходя из необходимого подавления. Например 32. Назовем его n (для нашего случая n=32, хотя можно и 16, 17, .... и т.д.).
3. Определите необходимую частоту дискретизации (fd) сигнала на выходе вашего фильтра. Причем значение лучше выбирать так, чтобы fd = i*fs, где i - целое число. Очевидно, что i не может быть меньше 4 (Да, здесь я уже чувствую, что сейчас меня будут ругать, говорить, что можно в принципе и 3. В приниципе можно, но не нужно smile.gif ). А вообще частота дискретизации выбирается из условий, в которые включаются тип АЦП, какой фильтр на выходе ЦАП вы можете сделать, собираетесь ли вы сажать на ПЧ в цифре или нет, ну и т.д. Очевидно, что чем выше частота дискретизации, тем дальше будут отодвинуты алиасы на выходе ЦАП, и тем легче от них отфильтроваться.
4. Определяем число коэффициентов фильтра как произведение k = i * n;
5. Выберите коэффициент скругления, исходя из допустимой максимальной ширины спектра сигнала. При этом учтите, что чем меньше коэффициент скругления, тем уже спектр, то тем больше пик-фактор мощности получаемого сигнала.
6. Запускаем FDATOOL в матлабе, выбираем приподнятый косинус, устанавливаем коэффициент скругления, порядок фильтра. Выбираем нормированную частоту. Устанавливаем полосу пропускания, равную 1/i. Выбираем требуемое окно (хорошие результаты дает окно хэмминга). Жмем кнопку "Desing filter" и... вуаля.... Наслаждаемся результатом. smile.gif

Подаем на этот фильтр отсчеты цифрового сигнала, не забывая между каждым из них вставить i-1 нулей, и получаем отличный спектр на выходе. smile.gif
petrov
Цитата(Михаил_K @ Aug 15 2008, 12:42) *
2. Выберите количество полных символов, укладывющихся в длине вашего фильтра, исходя из необходимого подавления. Например 32. Назовем его n (для нашего случая n=32, хотя можно и 16, 17, .... и т.д.).


Полных нет нужды.

Цитата(Михаил_K @ Aug 15 2008, 12:42) *
3. Определите необходимую частоту дискретизации (fd) сигнала на выходе вашего фильтра. Причем значение лучше выбирать так, чтобы fd = i*fs, где i - целое число. Очевидно, что i не может быть меньше 4 (Да, здесь я уже чувствую, что сейчас меня будут ругать, говорить, что можно в принципе и 3. В приниципе можно, но не нужно smile.gif ).


Например для коэффициента ската 0.2 по котельникуву будет достаточно 1.2 отсчёта на символ.

Цитата(Михаил_K @ Aug 15 2008, 12:42) *
5. Выберите коэффициент скругления, исходя из допустимой максимальной ширины спектра сигнала. При этом учтите, что чем меньше коэффициент скругления, тем уже спектр, то тем больше пик-фактор мощности получаемого сигнала.


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

Цитата(Михаил_K @ Aug 15 2008, 12:42) *
выбираем приподнятый косинус


Наверное всё же корень из приподнятого косинуса, в приподнятом косинусе смысла нету поскольку он разделён между приёмником и передатчиком.

Цитата(Михаил_K @ Aug 15 2008, 12:42) *
Выбираем требуемое окно (хорошие результаты дает окно хэмминга).


Не забываем что окно портит приподнятый косинус т е вносит межсимвольную интерференцию, а также дополнительно расширяет основной лепесток. Поэтому в коэффициент ската и количество коэффициентов нужно вносить коррективы чтобы расширение и межсимвольные были приемлемыми.
Михаил_K
Цитата(petrov @ Aug 15 2008, 13:19) *
Полных нет нужды.
Например для коэффициента ската 0.2 по котельникуву будет достаточно 1.2 отсчёта на символ.

Дело в том, что дробные значения будет тяжело реализовать аппаратно. Во первых простая полифазная структура не получиться, а во вторых, вы по 0.2 от нуля будете вставлять между цифровыми отсчетами??

Конечно, можно остановиться даже на 2.

Цитата(petrov @ Aug 15 2008, 13:19) *
Надо исходить ещё из того что при меньших коэффициентах скатах сильнее влияет джиттер символьной синхронизации, хуже работают методы синхронизации на основе выделения гармоники символьной, сильнее влияют частотные искажения канала и т. д.


Как показывает практика, увеличение пик-фактора является куда более значительным злом. Я кстати пользуюсь методами, основанными на выделении гармоники, и никогда проблем связанных с джиттером тактового генератора не сталкивался. Кварцевые генераторые имеют хорошие фазовые шумы (китайское барахло по 10 центов за мешок я конечно же не использую). А вот увеличение требований к линейности выходного усилителя, связанное с увеличением пик-фактора стоит больших денег.

Цитата(petrov @ Aug 15 2008, 13:19) *
Наверное всё же корень из приподнятого косинуса, в приподнятом косинусе смысла нету поскольку он разделён между приёмником и передатчиком.


Ну это что человек хочет получить. Если сделать передатчик, то да, а если просто фильтрануть сигнал и посмотреть какие межсимвольные получаются.....

Цитата(petrov @ Aug 15 2008, 13:19) *
Не забываем что окно портит приподнятый косинус т е вносит межсимвольную интерференцию, а также дополнительно расширяет основной лепесток. Поэтому в коэффициент ската и количество коэффициентов нужно вносить коррективы чтобы расширение и межсимвольные были приемлемыми.

Конечно. Но это уже следующая ступень квалификации smile.gif
petrov
Цитата(Михаил_K @ Aug 15 2008, 13:36) *
Как показывает практика, увеличение пик-фактора является куда более значительным злом. Я кстати пользуюсь методами, основанными на выделении гармоники, и никогда проблем связанных с джиттером тактового генератора не сталкивался. Кварцевые генераторые имеют хорошие фазовые шумы (китайское барахло по 10 центов за мешок я конечно же не использую).


Дело тут не в кварцевом генераторе, пусть он вообще идеальный, просто символьная синхронизация из-за конечного времени усреднения будет иметь джиттер выборки отсчёта, и для меньшего коэффициента ската на приёме точки созвездия будут больший разброс иметь при том же времени усреднения символьного синхронизатора.
Михаил_K
Цитата(petrov @ Aug 15 2008, 13:58) *
Дело тут не в кварцевом генераторе, пусть он вообще идеальный, просто символьная синхронизация из-за конечного времени усреднения будет иметь джиттер выборки отсчёта, и для меньшего коэффициента ската на приёме точки созвездия будут больший разброс иметь при том же времени усреднения символьного синхронизатора.


Да, конечно. Теоретически.
Практически я этого никогда не замечал. Влияние различных шумов, которые имеют место в реальном сигнале очевидно перевешивает. Да и сделать петлю ФАПЧ по тактовой с хорошими шумами тоже не проблема, особенно для созвездий с небольшим количеством точек.

Так что при определении коэффициента ската все-таки нужно пользоваться другими соображениями. Например маской спектра, указнной в нормативных документах.
des00
Цитата(Михаил_K @ Aug 13 2008, 02:24) *
Не могли бы подкинуть ссылочку, где можно почитать, как заранее просчитать выход фильтра и разместить его в ПЗУ. Интересует структура ПЗУ и алгоритм выбора, а то в моем представлении ПЗУ уж очень большое получается.


у меня SQRT(RRC) 64 го порядка на 8*Fверхнее занимает 4 M4K блока + немножко логики. Ссылку дать не могу, делал все самостоятельно. Там не сложно.

PS. это фильтр для обоих I и Q каналов, правда для одного канала все равно будет 4 M4K блока
Михаил_K
Цитата(des00 @ Aug 15 2008, 15:29) *
у меня SQRT(RRC) 64 го порядка на 8*Fверхнее занимает 4 M4K блока + немножко логики. Ссылку дать не могу, делал все самостоятельно. Там не сложно.

PS. это фильтр для обоих I и Q каналов, правда для одного канала все равно будет 4 M4K блока


Расшифруйте плиз 4 M4K. Не понял.
И потом, в фильтре всего 65 коэффициетов??
des00
Цитата(Михаил_K @ Aug 15 2008, 07:41) *
Расшифруйте плиз 4 M4K. Не понял.
И потом, в фильтре всего 65 коэффициетов??


M4K это блочная память альтер, 1 M4K = 4096 битов (если не считать дополнительные биты четности).

У меня в фильтре с приподнятым косинусом и коэффициентом скругления 1.28, 64 коэффициента, с разрядностью 18 бит.

этого мне достаточно, для формирования спектра с подавлением вне полосы не менее 60дБ.
Михаил_K
Цитата(des00 @ Aug 15 2008, 17:37) *
M4K это блочная память альтер, 1 M4K = 4096 битов (если не считать дополнительные биты четности).

У меня в фильтре с приподнятым косинусом и коэффициентом скругления 1.28, 64 коэффициента, с разрядностью 18 бит.

этого мне достаточно, для формирования спектра с подавлением вне полосы не менее 60дБ.



Какой коэффициент интерполяции и какая разрядность сигнала на выходе? Какой вид модуляции используется.

Я правильно понимаю, что для всех возможных вариантов цифрового сигнала, число которых 64/Ki (где Ki - коэффициент интерполяции) были просчитаны выходы фильтра и записаны в память?
des00
Цитата(Михаил_K @ Aug 15 2008, 11:29) *
Какой коэффициент интерполяции и какая разрядность сигнала на выходе? Какой вид модуляции используется.

Я правильно понимаю, что для всех возможных вариантов цифрового сигнала, число которых 64/Ki (где Ki - коэффициент интерполяции) были просчитаны выходы фильтра и записаны в память?


я же уже писал, спектр данных Fверхнее, фильтр работает на 8*Fверхнее. Т.е. интерполяция в 8 раз. Выход 18 бит. Данный фильтр у меня работает в режиме формирования спектра QPSK/QAM16.

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

Извините но большего сказать не могу, по голове настучат. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.