|
|
  |
Pulse Shaping Filter, Правильно ли понимаю? |
|
|
|
Aug 12 2008, 05:49
|
Местный
  
Группа: Свой
Сообщений: 467
Регистрация: 7-06-06
Пользователь №: 17 829

|
Здравствуйте! Хотелось бы узнать работу PSF(Pulse Shaping Filter). В модеме 8PSK в моём случае используется PSF преподнятый косинус. Не могу точно понять как он работает. В книге К.Феер "Беспроводная цифровая связь" написано, что подавая импульсы на PSF преподнятого косинуса, на выходе получаем отклик - импульсную характеристику. Это понятно, но конкретно в модеме тоже нужно модулировать несущую такими же откликами(импульсной характеристикой), или просто обычные импульсы(NRZ) пропускаем через этот PSF, а потом этим резльтатом модулируем несущие в квадратурных каналах? Спасибо.
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 12 2008, 06:32
|
Местный
  
Группа: Свой
Сообщений: 467
Регистрация: 7-06-06
Пользователь №: 17 829

|
Цитата(MKS @ Aug 12 2008, 10:06)  Подаете на приподнятый косинус +-1, а в зависимости от частоты среза фильтра оставшийся символьный интервал добиваете необходимым кол-вом нулей 0. Например если частота среза 0.5 от частоты Найквиста то добавляем один 0. Т.е. всё таки просто последовательность импульсов и соответствующее количество нулей между ними. А модуляция фазы несущих за счёт чего происходит? Ведь должна быть разная амплитуда на выходе PSF, чтобы получить 8PSK? Или я не так понимаю?
|
|
|
|
|
Aug 12 2008, 07:01
|
Местный
  
Группа: Свой
Сообщений: 467
Регистрация: 7-06-06
Пользователь №: 17 829

|
Цитата(petrov @ Aug 12 2008, 10:51)  Конечно дельта-импульсами на символьном интервале, вы же хотите приподнятый косинус получить а не произведение приподнятого косинуса с частотной характеристикой прямоугольного импульса. У вас так же должен быть преобразователь входных данных в координаты точек PSK, за счёт этого и будет фазовая модуляция. Только ещё на передаче у вас должен быть корень из приподнятого косинуса, и на приёме сответственно будет согласованный корень из приподнятого косинуса. Полосовой фильтр на выходе идеального квадратурного модулятора не нужен. А можно подрнобнее о преобразователе точек в PSK? Т.е. мне нужно найти такое соотношение между входными данными данными на PSF, чтобы сумма промодулированных сигналов давала нужную фазу. Где можно почитать об этом преобразователе? Т.е. всё таки за счёт амплитуды получаем готовый модулированный сигнал.
|
|
|
|
|
Aug 12 2008, 07:03
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(Политех @ Aug 12 2008, 09:32)  Т.е. всё таки просто последовательность импульсов и соответствующее количество нулей между ними. А модуляция фазы несущих за счёт чего происходит? Ведь должна быть разная амплитуда на выходе PSF, чтобы получить 8PSK? Или я не так понимаю? То что у Вас на схеме обозначено SRC может быть либо аналоговым ФНЧ, либо его цифровым эквивалентом, преобразующим форму импульса чтобы сузить спектр и уменьшить внеполосные излучения. Приподнятый косинус это одна из самых простых реализаций ФНЧ в цифре. Реально Вам надо перемножить битовые импульсы с коэффициентами. Т.е. каждый битовый импульс будет выглядеть как "колокол" с амплитудой соответствующей его коду. В простейшем случае достаточно 8-16 уровней обкатки этого импульса. Надеюсь понятно объяснил.
--------------------
|
|
|
|
|
Aug 12 2008, 07:26
|
Местный
  
Группа: Свой
Сообщений: 467
Регистрация: 7-06-06
Пользователь №: 17 829

|
Цитата(petrov @ Aug 12 2008, 11:08)  Это просто таблица в которой входные данные адресуют координаты I,Q точек созвездия, положение точки и задаёт фазу, в книжках просто рисуют созвездие и нумеруют точки. Спасибо! С этим разобрался. Цитата(alexkok @ Aug 12 2008, 11:03)  То что у Вас на схеме обозначено SRC может быть либо аналоговым ФНЧ, либо его цифровым эквивалентом, преобразующим форму импульса чтобы сузить спектр и уменьшить внеполосные излучения. Приподнятый косинус это одна из самых простых реализаций ФНЧ в цифре. Реально Вам надо перемножить битовые импульсы с коэффициентами. Т.е. каждый битовый импульс будет выглядеть как "колокол" с амплитудой соответствующей его коду. В простейшем случае достаточно 8-16 уровней обкатки этого импульса. Надеюсь понятно объяснил. Не ясно, что такое - "В простейшем случае достаточно 8-16 уровней обкатки этого импульса." Будьте добры, объясните пожалуйста. Имеется в виду порядок фильтра?
|
|
|
|
|
Aug 12 2008, 16:55
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(Политех @ Aug 12 2008, 10:26)  Не ясно, что такое - "В простейшем случае достаточно 8-16 уровней обкатки этого импульса." Будьте добры, объясните пожалуйста. Имеется в виду порядок фильтра? Это относится к разрядности коэффициентов и разрядности ЦАП формирующего битовые отсчеты и их обкатку. Проще всего, чтобы хорошо понять это, найти программу расчета цифровых фильтров и менять в ней вид окна, число и разрядность коэффициентов. По уровню боковых лестков фильтра будет наглядно все видно. Порядок фильтра примерно такой же.
--------------------
|
|
|
|
|
Aug 13 2008, 06:41
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(Политех @ Aug 13 2008, 07:25)  В матлабе поэкспериментировал с функциями. Вот что получилось. Верхний рисунок - импульсная характеристика. Нижний - реакция фильта при подаче на него трёх последовательных единиц (1 1 1) с символьной скоростью. Теперь я так понимаю такими импульсами и модулируются квадратурные несущие: косинус и синус. В общем да, но в реальных системах, работающих в эфире или с частотным уплотнением, есть есть требование к уровню помех в соседнем канале. Например для КВ диапазона это -40дБ, насколько помню. Чтобы это требование обеспечить, используют цифровые фильтры для модулирующих сигналов. Подавать просто единицы и нули на вход модулятора нельзя. Уровень боковых лепестков этого фильтра должен быть соответствующим. Цитата Естественно что что они должны подаваться в нужном соотношении(после последовательно параллельного преобразователя который отражает группы из трёх бит в координаты векторов). После фильтра ставится ЦАП и перемножается в аналоговом виде. Неправильно, на ЦАП подаются отсчеты уже прошедшие фильтрацию цифровым фильтром. В реальном времени это делать ни к чему, обычно все просчитывается заранее и записывается в ПЗУ. За один битовый отсчет нужно выбрать из ПЗУ и подать на ЦАП число отсчетов равное порядку фильтра. Поэтому удобнее выбирать порядок как степень двух. Цитата Только не понимаю, если у меня подаётся два одинаковых импульса(+1) на каждый канал, то после модуляции должна быть фаза в 45 градусов, но тогда и амплитудная модуляция будет присутствовать, так как не могу же сделать я амплитуды импульсов 0.707... . Почему не можете? Все это можно учесть и выбирать для такой комбинации соответствующие части прошивок. Здесь лежат ссылки на программы расчета цифровых фильторов. Я из них пользовался только FilterExpress, работает.
--------------------
|
|
|
|
|
Aug 13 2008, 07:08
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Политех @ Aug 13 2008, 08:25)  Естественно что что они должны подаваться в нужном соотношении(после последовательно параллельного преобразователя который отражает группы из трёх бит в координаты векторов). После фильтра ставится ЦАП и перемножается в аналоговом виде. Только не понимаю, если у меня подаётся два одинаковых импульса(+1) на каждый канал, то после модуляции должна быть фаза в 45 градусов, но тогда и амплитудная модуляция будет присутствовать, так как не могу же сделать я амплитуды импульсов 0.707... . А что это за координата такая (1,1), нету в 8PSK такой точки, на выходе таблицы у вас должно быть как раз (0.707, 0.707) для 45 градусов.
|
|
|
|
|
Aug 13 2008, 07:24
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(MKS @ Aug 12 2008, 10:06)  Подаете на приподнятый косинус +-1, а в зависимости от частоты среза фильтра оставшийся символьный интервал добиваете необходимым кол-вом нулей 0. Например если частота среза 0.5 от частоты Найквиста то добавляем один 0. Если оставшийся символьный интервал добиваете нулями, то косинус должен быть не приподнятый а обычный Цитата(alexkok @ Aug 13 2008, 10:41)  Неправильно, на ЦАП подаются отсчеты уже прошедшие фильтрацию цифровым фильтром. В реальном времени это делать ни к чему, обычно все просчитывается заранее и записывается в ПЗУ. За один битовый отсчет нужно выбрать из ПЗУ и подать на ЦАП число отсчетов равное порядку фильтра. Поэтому удобнее выбирать порядок как степень двух. Не могли бы подкинуть ссылочку, где можно почитать, как заранее просчитать выход фильтра и разместить его в ПЗУ. Интересует структура ПЗУ и алгоритм выбора, а то в моем представлении ПЗУ уж очень большое получается.
|
|
|
|
|
Aug 13 2008, 07:50
|
Местный
  
Группа: Свой
Сообщений: 467
Регистрация: 7-06-06
Пользователь №: 17 829

|
Цитата(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) - рисуем.
|
|
|
|
|
Aug 13 2008, 08:25
|
Местный
  
Группа: Свой
Сообщений: 467
Регистрация: 7-06-06
Пользователь №: 17 829

|
Цитата(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, но в вызове функции они стоят на нужном месте. Посмотрите внимательнее. Насколько могут пересекаться соседние символы? Если боковыми липестками пересекаются?
|
|
|
|
|
Aug 13 2008, 09:11
|
Местный
  
Группа: Свой
Сообщений: 467
Регистрация: 7-06-06
Пользователь №: 17 829

|
Цитата(petrov @ Aug 13 2008, 12:49)  А почему символьная частота вдруг стала fs/6?
Вообще советую вам симулинк, всё гораздо нагляднее. Извиняюсь, это пробовал как будет выглядеть. Конечно пробовал и просто fs.
|
|
|
|
|
Aug 13 2008, 16:53
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(Политех @ Aug 13 2008, 10:50)  Понял. Спасибо. Это я уже промоделировал в Матлабе с использованием фильтра. Правда сейчас у меня почему то отклики налазят друг на друга, странно - слишком растянутая импульсная характеристика получилась(ширина её при порядке равном 9 выходит около 0.4 мс), хотя параметры выбрал из стандарта: коэффициент сглаживания = 0.6. Частота симвовлов 10500 Гц, период соот-но 0.095 мс. По поводу Матлаба ничего сказать не могу, не пользуюсь. Но частота отсчетов должна быть больше символьной в N раз, где N - порядок фильтра.
--------------------
|
|
|
|
|
Aug 13 2008, 19:54
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(petrov @ Aug 13 2008, 22:00)  Никак не связан порядок фильтра с частотой отсчётов. Смотря что понимать под порядком фильтра. Для FIR фильтра порядок это число коэффициентов и частота отсчетов не может быть меньше чем символьная частота умноженная на число коэффициентов. Больше - может.
--------------------
|
|
|
|
|
Aug 14 2008, 06:14
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(petrov @ Aug 14 2008, 08:54)  Ерунда какая-то... Допустим символьная частота 1, 8 отсчётов на символ, т е частота отсчётов 8, коэффициентов 200, вот меньше запросто. Ну и промоделируйте какой уровень боковых лепестков будет в соседнем канале для обсуждаемого случая: символьная частота - 10кГц, т.е. полоса канала 25кГц, тип фильтра - приподнятый косинус, плюс Ваши условия. Что будет за этой полосой? Я навскидку оцениваю в - 15..-18дБ.
--------------------
|
|
|
|
|
Aug 14 2008, 06:30
|

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(petrov @ Aug 13 2008, 14:34)  Это не так. Фильтр с АЧХ приподнятого косинуса имеет импульсную характеристику обладающую тем свойством что она равна нулю в точках отстоящих от максимума на интервалы кратные символьному, и только. Если мы хотим получить импульсы с такими свойствами то естественно должны возбуждать фильтр последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал, чтобы собственно получить импульс. Если же мы возбуждаем приподнятый косинус прямоугольными импульсами то соответственно получаем импульсы которые равны свёртке прямоугольного импульса и импульса приподнятого косинуса, которые ессно свойством отсутствия межсимвольной интерференции не обладают, поэтому нужен корректирующий фильтр обратный синк. Кстати, у меня функция NUM = RCOSINE(Fd, Fs) создаёт КИХ фильтр длиной 3 символа. Т.е. при возбуждении его последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал межсимвольная интерференция в точках отстоящих от максимума на интервалы кратные символьному действительно отсутствует. Но между ними она присутствует и в этих точках есть влияние символа на два соседних. Насколько данное влияние полезно или вредно по вашему?
|
|
|
|
|
Aug 14 2008, 07:00
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(alexkok @ Aug 14 2008, 10:14)  Что будет за этой полосой? На 200/8=25 символьных интервалов будет отклик от каждого символа распространяться, на вскидку более 60 дБ будет подавление за пределами основного лепестка. Цитата(_4afc_ @ Aug 14 2008, 10:30)  Кстати, у меня функция NUM = RCOSINE(Fd, Fs) создаёт КИХ фильтр длиной 3 символа. Т.е. при возбуждении его последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал межсимвольная интерференция в точках отстоящих от максимума на интервалы кратные символьному действительно отсутствует. Но между ними она присутствует и в этих точках есть влияние символа на два соседних. Насколько данное влияние полезно или вредно по вашему? Прокиса почитайте. Так и должно быть. Чем меньше коэффициент ската тем больше будут всплески на интервалах между моментами синхронизации и например джиттер синхронизации будет соответственно больший вклад вносить.
|
|
|
|
|
Aug 14 2008, 07:08
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(petrov @ Aug 14 2008, 09:56)  На 200/8=25 символьных интервалов будет отклик от каждого символа распространяться, на вскидку более 60 дБ будет подавление за пределами основного лепестка. А какая полоса этого фильтра будет и что при этом от полезного сигнала останется? Мы похоже обсуждаем разные случаи, я возбудитель передатчика (см. пост №1), а Вы приемник.
--------------------
|
|
|
|
|
Aug 14 2008, 07:23
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Aug 13 2008, 14:34)  Это не так. Фильтр с АЧХ приподнятого косинуса имеет импульсную характеристику обладающую тем свойством что она равна нулю в точках отстоящих от максимума на интервалы кратные символьному, и только. Если мы хотим получить импульсы с такими свойствами то естественно должны возбуждать фильтр последовательностью дельта-импульсов отстоящими друг от друга на символьный интервал, чтобы собственно получить импульс. Если же мы возбуждаем приподнятый косинус прямоугольными импульсами то соответственно получаем импульсы которые равны свёртке прямоугольного импульса и импульса приподнятого косинуса, которые ессно свойством отсутствия межсимвольной интерференции не обладают, поэтому нужен корректирующий фильтр обратный синк. Да, Вы правы. Посмотрел в книжке. Такой фильтр действительно называется не косинусным, а приподнятым косинусом, хотя никакого подъема выше 0 дБ, в его АЧХ нет. А я то по серости своей его косинусным называл
|
|
|
|
|
Aug 14 2008, 16:54
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(petrov @ Aug 14 2008, 10:23)  Полоса основного лепестка для коэффициента ската 0.6 и имвольной частоты 1 будет 1.6, не будет межсимвольной интерференции и при памяти фильтра на 25 символов будет ОЧЕНЬ хорошее подавление боковых лепестков. И не имеет значеня передатчик это или приёмник. Я привык использовать для полосы доли частоты Найквиста и мне не понятно как Вы считаете. Можете объяснить или дать название книги где это описано?
--------------------
|
|
|
|
|
Aug 15 2008, 05:15
|
Местный
  
Группа: Свой
Сообщений: 467
Регистрация: 7-06-06
Пользователь №: 17 829

|
В общем вот что я получил. 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;
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 15 2008, 05:56
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(petrov @ Aug 14 2008, 10:23)  Полоса основного лепестка для коэффициента ската 0.6 и имвольной частоты 1 будет 1.6, не будет межсимвольной интерференции и при памяти фильтра на 25 символов будет ОЧЕНЬ хорошее подавление боковых лепестков. Ширина полосы фильтра при этом будет в 20 раз уже полосы сигнала, подавление боковых полос самого сигнала будет тоже где-то - 60дБ от уровня несущей, т. е. на уровне шумов передатчика. В матлабе оно может и будет работать, а в железе нет. Цитата И не имеет значеня передатчик это или приёмник. Вот это точно.  Цитата(Политех @ Aug 15 2008, 08:15)  fd = 10*fs Советую увеличить fd до 32*fs как минимум.
Сообщение отредактировал alexkok - Aug 15 2008, 05:57
--------------------
|
|
|
|
|
Aug 15 2008, 06:35
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(alexkok @ Aug 15 2008, 09:56)  Ширина полосы фильтра при этом будет в 20 раз уже полосы сигнала, подавление боковых полос самого сигнала будет тоже где-то - 60дБ от уровня несущей, т. е. на уровне шумов передатчика. В матлабе оно может и будет работать, а в железе нет. Интересно почему это уже будет в 20 раз?!!! Цитата(alexkok @ Aug 15 2008, 09:56)  Советую увеличить fd до 32*fs как минимум. 32 многовато  , да 10 тоже, достаточно будет fd = (2..4)*fs
--------------------
ну не художники мы...
|
|
|
|
|
Aug 15 2008, 06:52
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(Политех @ Aug 15 2008, 09:31)  Мне кажется всё-таки полоса сигнала(на картинке) широкой. Как такой сигнал с таким спектром втиснется после модуляции в канал в 25 кГц? Или я не прав. Но если сужать импльсный отклик, то соотв-нно расширяется спектр, и наоборот(в этом случае получаем символьную интерференцию). 25кГц это моё предположение, какая у Вас задача я не знаю. Цитата(alex_os @ Aug 15 2008, 09:35)  Интересно почему это уже будет в 20 раз?!!! Полоса и фильтра и сигнала (символа) обратно пропорциональна длине фильтра или сигнала. А соотношение длительностей, которое предложил petrov - 8 и 200 и дает соотношение полос около двадцати. Если Вы насчет точности оценки возмущаетесь  то более точно в 16 раз.
--------------------
|
|
|
|
|
Aug 15 2008, 07:01
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(alexkok @ Aug 15 2008, 10:52)  25кГц это моё предположение, какая у Вас задача я не знаю. Полоса и фильтра и сигнала (символа) обратно пропорциональна длине фильтра или сигнала. А соотношение длительностей, которое предложил petrov - 8 и 200 и дает соотношение полос около двадцати. Если Вы насчет точности оценки возмущаетесь  то более точно в 16 раз. Ну не писали бы в ерунды, сбиваете только Политеха, запустите fdatool в матлабе и рассчитайте несколько фильтров с импульсной приподнятого косинуса, и меняйте только количество коэффициентов.
|
|
|
|
|
Aug 15 2008, 07:39
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Политех @ Aug 15 2008, 10:31)  Мне кажется всё-таки полоса сигнала(на картинке) широкой. Как такой сигнал с таким спектром втиснется после модуляции в канал в 25 кГц? Или я не прав. Но если сужать импльсный отклик, то соотв-нно расширяется спектр, и наоборот(в этом случае получаем символьную интерференцию). Фильтр длинее сделайте и будет Вам счастье. Например вот так b = hamming(141)'.*firrcos(140, 1/20, 0.6, 1, 'rolloff', 'sqrt'); 1/20 = fs/fd/2.
--------------------
ну не художники мы...
|
|
|
|
|
Aug 15 2008, 08:42
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Похоже люди не могут договориться как посчитать фильтр. Предлагаю несложный алгоритм. 1. Вам нужно знать частоту следования символов, назовем ее fs. 2. Выберите количество полных символов, укладывющихся в длине вашего фильтра, исходя из необходимого подавления. Например 32. Назовем его n (для нашего случая n=32, хотя можно и 16, 17, .... и т.д.). 3. Определите необходимую частоту дискретизации (fd) сигнала на выходе вашего фильтра. Причем значение лучше выбирать так, чтобы fd = i*fs, где i - целое число. Очевидно, что i не может быть меньше 4 (Да, здесь я уже чувствую, что сейчас меня будут ругать, говорить, что можно в принципе и 3. В приниципе можно, но не нужно  ). А вообще частота дискретизации выбирается из условий, в которые включаются тип АЦП, какой фильтр на выходе ЦАП вы можете сделать, собираетесь ли вы сажать на ПЧ в цифре или нет, ну и т.д. Очевидно, что чем выше частота дискретизации, тем дальше будут отодвинуты алиасы на выходе ЦАП, и тем легче от них отфильтроваться. 4. Определяем число коэффициентов фильтра как произведение k = i * n; 5. Выберите коэффициент скругления, исходя из допустимой максимальной ширины спектра сигнала. При этом учтите, что чем меньше коэффициент скругления, тем уже спектр, то тем больше пик-фактор мощности получаемого сигнала. 6. Запускаем FDATOOL в матлабе, выбираем приподнятый косинус, устанавливаем коэффициент скругления, порядок фильтра. Выбираем нормированную частоту. Устанавливаем полосу пропускания, равную 1/i. Выбираем требуемое окно (хорошие результаты дает окно хэмминга). Жмем кнопку "Desing filter" и... вуаля.... Наслаждаемся результатом. Подаем на этот фильтр отсчеты цифрового сигнала, не забывая между каждым из них вставить i-1 нулей, и получаем отличный спектр на выходе.
|
|
|
|
|
Aug 15 2008, 09:19
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Михаил_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. В приниципе можно, но не нужно  ). Например для коэффициента ската 0.2 по котельникуву будет достаточно 1.2 отсчёта на символ. Цитата(Михаил_K @ Aug 15 2008, 12:42)  5. Выберите коэффициент скругления, исходя из допустимой максимальной ширины спектра сигнала. При этом учтите, что чем меньше коэффициент скругления, тем уже спектр, то тем больше пик-фактор мощности получаемого сигнала. Надо исходить ещё из того что при меньших коэффициентах скатах сильнее влияет джиттер символьной синхронизации, хуже работают методы синхронизации на основе выделения гармоники символьной, сильнее влияют частотные искажения канала и т. д. Цитата(Михаил_K @ Aug 15 2008, 12:42)  выбираем приподнятый косинус Наверное всё же корень из приподнятого косинуса, в приподнятом косинусе смысла нету поскольку он разделён между приёмником и передатчиком. Цитата(Михаил_K @ Aug 15 2008, 12:42)  Выбираем требуемое окно (хорошие результаты дает окно хэмминга). Не забываем что окно портит приподнятый косинус т е вносит межсимвольную интерференцию, а также дополнительно расширяет основной лепесток. Поэтому в коэффициент ската и количество коэффициентов нужно вносить коррективы чтобы расширение и межсимвольные были приемлемыми.
|
|
|
|
|
Aug 15 2008, 09:36
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(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)  Не забываем что окно портит приподнятый косинус т е вносит межсимвольную интерференцию, а также дополнительно расширяет основной лепесток. Поэтому в коэффициент ската и количество коэффициентов нужно вносить коррективы чтобы расширение и межсимвольные были приемлемыми. Конечно. Но это уже следующая ступень квалификации
|
|
|
|
|
Aug 15 2008, 10:40
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Aug 15 2008, 13:58)  Дело тут не в кварцевом генераторе, пусть он вообще идеальный, просто символьная синхронизация из-за конечного времени усреднения будет иметь джиттер выборки отсчёта, и для меньшего коэффициента ската на приёме точки созвездия будут больший разброс иметь при том же времени усреднения символьного синхронизатора. Да, конечно. Теоретически. Практически я этого никогда не замечал. Влияние различных шумов, которые имеют место в реальном сигнале очевидно перевешивает. Да и сделать петлю ФАПЧ по тактовой с хорошими шумами тоже не проблема, особенно для созвездий с небольшим количеством точек. Так что при определении коэффициента ската все-таки нужно пользоваться другими соображениями. Например маской спектра, указнной в нормативных документах.
|
|
|
|
|
Aug 15 2008, 12:41
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(des00 @ Aug 15 2008, 15:29)  у меня SQRT(RRC) 64 го порядка на 8*Fверхнее занимает 4 M4K блока + немножко логики. Ссылку дать не могу, делал все самостоятельно. Там не сложно.
PS. это фильтр для обоих I и Q каналов, правда для одного канала все равно будет 4 M4K блока Расшифруйте плиз 4 M4K. Не понял. И потом, в фильтре всего 65 коэффициетов??
|
|
|
|
|
Aug 15 2008, 16:29
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(des00 @ Aug 15 2008, 17:37)  M4K это блочная память альтер, 1 M4K = 4096 битов (если не считать дополнительные биты четности).
У меня в фильтре с приподнятым косинусом и коэффициентом скругления 1.28, 64 коэффициента, с разрядностью 18 бит.
этого мне достаточно, для формирования спектра с подавлением вне полосы не менее 60дБ. Какой коэффициент интерполяции и какая разрядность сигнала на выходе? Какой вид модуляции используется. Я правильно понимаю, что для всех возможных вариантов цифрового сигнала, число которых 64/Ki (где Ki - коэффициент интерполяции) были просчитаны выходы фильтра и записаны в память?
|
|
|
|
|
Aug 18 2008, 06:52
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(des00 @ Aug 17 2008, 10:15)  я же уже писал, спектр данных Fверхнее, фильтр работает на 8*Fверхнее. Т.е. интерполяция в 8 раз. Выход 18 бит. Данный фильтр у меня работает в режиме формирования спектра QPSK/QAM16. понимаете абсолютно правильно, так и было сделано. Извините но большего сказать не могу, по голове настучат.  Жаль конечно. Но может кто другой меня поправит, потому-что я не понимаю. Если интерполяция в 8 раз, то значит всего на входе фильтра возможно 2^(64/8) = 256 варинатов. Учитывая что формируется еще и сигнал QAM16, значит в два раза больше, т.е. 512. Интерполяция в 8 раз, значит для каждого варианта 8 отсчетов сигнала на выход. Т.е. 512*8 = 4096 ячеек памяти необходимо. Если сигнал на выходе 18 разрядов, то значит вы должны были использовать 18 блоков 4 килобитной памяти, а не 4. Вот этого я и не понимаю.
|
|
|
|
|
Aug 18 2008, 16:52
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Михаил_K @ Aug 18 2008, 10:52)  Жаль конечно. Но может кто другой меня поправит, потому-что я не понимаю.
Если интерполяция в 8 раз, то значит всего на входе фильтра возможно 2^(64/8) = 256 варинатов. Учитывая что формируется еще и сигнал QAM16, значит в два раза больше, т.е. 512. Интерполяция в 8 раз, значит для каждого варианта 8 отсчетов сигнала на выход. Т.е. 512*8 = 4096 ячеек памяти необходимо. Если сигнал на выходе 18 разрядов, то значит вы должны были использовать 18 блоков 4 килобитной памяти, а не 4. Вот этого я и не понимаю. Там конечно же используется несколько обращений в память и ещё внешние арифметические операции. Полифазный фильтр 8 фаз по 8 символов в линии задержки. Требуется 8 256*16 блоков, если один из битов адреса 1 то соответствующий отсчёт просуммирован в ячейке памяти, если 0 то соответственно нулевой вклад в ячейку просуммирован. Так как импульсная характеристика симметрична то достаточно 4 256*16 блоков, потребуется соответственно в два раза больше обращений, половина обращений с адресом с обратным порядком битов. Для 16 QAM 4 обращения в блок для вычисления выходного отсчёта, например сначала символы с координатой 1, для них в соответствующих позициях адреса 1 для других символов 0, выход памяти накпливаем, затем символы -1, в соответствующих позициях адреса 1 для остальных символов 0, выход памяти накапливаем с обратным знаком, затем символы с координатой 3, выход памяти накапливаем с умножением на 3, затем символы с координатой -3, выход памяти накапливаем с умножением на -3, всё получили один выходной отсчёт. И так для всех выходных отсчётов с соответствующим им блоком памяти. Используется также двухпортовость памяти и т. п.
|
|
|
|
|
Aug 19 2008, 09:22
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Aug 18 2008, 20:52)  Там конечно же используется несколько обращений в память и ещё внешние арифметические операции.
Полифазный фильтр 8 фаз по 8 символов в линии задержки. Требуется 8 256*16 блоков, если один из битов адреса 1 то соответствующий отсчёт просуммирован в ячейке памяти, если 0 то соответственно нулевой вклад в ячейку просуммирован. Так как импульсная характеристика симметрична то достаточно 4 256*16 блоков, потребуется соответственно в два раза больше обращений, половина обращений с адресом с обратным порядком битов. Для 16 QAM 4 обращения в блок для вычисления выходного отсчёта, например сначала символы с координатой 1, для них в соответствующих позициях адреса 1 для других символов 0, выход памяти накпливаем, затем символы -1, в соответствующих позициях адреса 1 для остальных символов 0, выход памяти накапливаем с обратным знаком, затем символы с координатой 3, выход памяти накапливаем с умножением на 3, затем символы с координатой -3, выход памяти накапливаем с умножением на -3, всё получили один выходной отсчёт. И так для всех выходных отсчётов с соответствующим им блоком памяти. Используется также двухпортовость памяти и т. п. Ну несколько обращений в память - это конечно хорошо, но к сожалению, как правило, такой роскоши нет. Приходится работать на максимальных частотах. В последнем моем модеме, например, частота дискретизации сигнала повышалась до 200 МГц, при том что ПЛИС на такой частоте уже на работет. Работал на 100 МГц. Но упомянув внешние арифметические операции, вы натолкнули меня на другую мысль. Ведь весь фильтр можно разбить на части. Тогда объем памяти будет меньше. Например, в вышеуказанном случае, можно фильтр разбить на 4 части. Тогд получаем в каждой части 2 двухбитных коэффициента, т.е. 4 бита адреса, плюс еще 3 бита адреса на фазы. Итого 7. Сигнал 18 бит. Всего нужно (2^7)*18 = 2304 бита. Т.е. 1 4килобитный блок. Дальше делаем все четыре части аналогично, и просто складываем выходы всех 4х блоков. Кстати двухпортовость памяти несомненно используется, вот только правильное ее использование видится как с одного порта формируем канал I, с другого Q
|
|
|
|
|
Aug 19 2008, 11:32
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Aug 19 2008, 15:26)  Ну как же меняет ещё как, и полифазная структура остаётся, для обсуждаемого фильтра думаю даже 200 МГц достижимы, в него входят простые элементы работающие на частоте более 200 МГц + конвейеризация. Тогда поделитесь секретом, как получить частоту дискретизации сигнала 200 МГц, если для получения каждого отсчета нужно несколько обращений к памяти. С учетом приведенной ниже цитаты из даташита Block SelectRAM Switching Characteristics Clock CLK to DOUT output TBCKO 2.65 ns, Max
|
|
|
|
|
Aug 19 2008, 12:09
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Aug 19 2008, 15:49)  Она даже слишком быстрая, все 4 блока памяти работают параллельно, в каждом вычисляется по 2 отсчёта на одном порту, на один отсчёт 4 выборки требуется для 16 QAM. Таким образом получаем 8 отсчётов и с выхода всех блоков собираем уже с частотой 200 МГц + плюс простые арифметические операции, память тоже работает на 200 Мгц. Второй порт всех блоков для другого квадратурного канала. Если я Вас правильно понял, вы предлагаете просто другое перераспределение памяти. Дальше требуется мультиплексор, который будет выбирать текущий отсчет, ну или регистр сдвига. Плюс аккумуляторы со сбросом. Да, такой варинат иммет право на существование. Правда мне разделение фильтра кажется более простым решением (с точки зрения осмысления), хотя сумматоров он наверное потребует большего количества. Хотя нет.... Вру. Сумматоров будет меньше. чтобы сложить n выходов ОЗУ нужно n-1 сумматоров. Ну общий смысл мне понятен. Как нибудь попробую. Сравню затраты ресурсов и потребление.
|
|
|
|
|
Aug 19 2008, 12:21
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Aug 19 2008, 16:12)  Да правильно. Про разделение не понял. Разделение - это я имел следующее. Например есть фильтр 32 * n коэффициентов, где n - коэффицент интерполяции (или число фаз). Очевидно, что просто в память напрямую его засунуть сложно. Но его можно представить как два отдельных фильтра с числом коэффициентов 16 * n, выходы которых складываются. Таким образом объем памяти уменьшается в 2^15 раз, за что приходится заплатить дополнительным сумматором. Каждый фильтр с числом коэффицентов 16*n можно также разбить и т.д. Если задуматься, легко получается алгоритм оптимального разбиения, с точки зрения ресурсозатрат.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|