Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Pulse Shaping Filter
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2
petrov
Цитата(des00 @ Aug 17 2008, 10:15) *
Извините но большего сказать не могу, по голове настучат. :)


Секрет Полишенеля :)
des00
Цитата(petrov @ Aug 17 2008, 04:03) *
Секрет Полишенеля smile.gif


не хочу давать повода, нашей службе безопасности. Да и в договоре о неразглашении моя подпись все же стоит.
petrov
Цитата(des00 @ Aug 17 2008, 13:51) *
не хочу давать повода, нашей службе безопасности. Да и в договоре о неразглашении моя подпись все же стоит.


Какой ужас :)
Politeh
Ладно, разобрались.
Хотел ещё спросить, может кто-нибудь Спилкера качал с фтп "Цифровая спутниковая связь". Я скачал полностью, но не могу открыть в DJVU редакторе.Уже несколько верисий перепробовал. Может скажет кто, почему?
Михаил_K
Цитата(des00 @ Aug 17 2008, 10:15) *
я же уже писал, спектр данных Fверхнее, фильтр работает на 8*Fверхнее. Т.е. интерполяция в 8 раз. Выход 18 бит. Данный фильтр у меня работает в режиме формирования спектра QPSK/QAM16.

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

Извините но большего сказать не могу, по голове настучат. smile.gif


Жаль конечно. Но может кто другой меня поправит, потому-что я не понимаю.

Если интерполяция в 8 раз, то значит всего на входе фильтра возможно 2^(64/8) = 256 варинатов.
Учитывая что формируется еще и сигнал QAM16, значит в два раза больше, т.е. 512. Интерполяция в 8 раз, значит для каждого варианта 8 отсчетов сигнала на выход. Т.е. 512*8 = 4096 ячеек памяти необходимо. Если сигнал на выходе 18 разрядов, то значит вы должны были использовать 18 блоков 4 килобитной памяти, а не 4. Вот этого я и не понимаю.
petrov
Цитата(Михаил_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, всё получили один выходной отсчёт. И так для всех выходных отсчётов с соответствующим им блоком памяти. Используется также двухпортовость памяти и т. п.
Михаил_K
Цитата(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
smile.gif
petrov
Цитата(Михаил_K @ Aug 19 2008, 13:22) *
Ну несколько обращений в память - это конечно хорошо, но к сожалению, как правило, такой роскоши нет. Приходится работать на максимальных частотах. В последнем моем модеме, например, частота дискретизации сигнала повышалась до 200 МГц, при том что ПЛИС на такой частоте уже на работет. Работал на 100 МГц.


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

В том-то и дело, что зачастую отсчет выдавать нужно каждый такт системной частоты. И то что фильтр реализуется в полифазной структуре дела не меняет. Кстати, при реализации его на памяти, говорить о структуре уже становится затруднительно (мне так кажется).
petrov
Цитата(Михаил_K @ Aug 19 2008, 14:52) *
В том-то и дело, что зачастую отсчет выдавать нужно каждый такт системной частоты. И то что фильтр реализуется в полифазной структуре дела не меняет. Кстати, при реализации его на памяти, говорить о структуре уже становится затруднительно (мне так кажется).


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


Тогда поделитесь секретом, как получить частоту дискретизации сигнала 200 МГц, если для получения каждого отсчета нужно несколько обращений к памяти.

С учетом приведенной ниже цитаты из даташита

Block SelectRAM Switching Characteristics
Clock CLK to DOUT output TBCKO 2.65 ns, Max
petrov
Цитата(Михаил_K @ Aug 19 2008, 15:32) *
Тогда поделитесь секретом, как получить частоту дискретизации сигнала 200 МГц, если для получения каждого отсчета нужно несколько обращений к памяти.

С учетом приведенной ниже цитаты из даташита

Block SelectRAM Switching Characteristics
Clock CLK to DOUT output TBCKO 2.65 ns, Max


Она даже слишком быстрая, все 4 блока памяти работают параллельно, в каждом вычисляется по 2 отсчёта на одном порту, на один отсчёт 4 выборки требуется для 16 QAM. Таким образом получаем 8 отсчётов и с выхода всех блоков собираем уже с частотой 200 МГц + плюс простые арифметические операции, память тоже работает на 200 Мгц. Второй порт всех блоков для другого квадратурного канала.
Михаил_K
Цитата(petrov @ Aug 19 2008, 15:49) *
Она даже слишком быстрая, все 4 блока памяти работают параллельно, в каждом вычисляется по 2 отсчёта на одном порту, на один отсчёт 4 выборки требуется для 16 QAM. Таким образом получаем 8 отсчётов и с выхода всех блоков собираем уже с частотой 200 МГц + плюс простые арифметические операции, память тоже работает на 200 Мгц. Второй порт всех блоков для другого квадратурного канала.


Если я Вас правильно понял, вы предлагаете просто другое перераспределение памяти. Дальше требуется мультиплексор, который будет выбирать текущий отсчет, ну или регистр сдвига. Плюс аккумуляторы со сбросом. Да, такой варинат иммет право на существование.
Правда мне разделение фильтра кажется более простым решением (с точки зрения осмысления), хотя сумматоров он наверное потребует большего количества.
Хотя нет.... Вру. Сумматоров будет меньше. чтобы сложить n выходов ОЗУ нужно n-1 сумматоров.
Ну общий смысл мне понятен.
Как нибудь попробую. Сравню затраты ресурсов и потребление.
petrov
Цитата(Михаил_K @ Aug 19 2008, 16:09) *
Если я Вас правильно понял, вы предлагаете просто другое перераспределение памяти. Дальше требуется мультиплексор, который будет выбирать текущий отсчет, ну или регистр сдвига. Плюс аккумуляторы со сбросом. Да, такой варинат иммет право на существование.
Правда мне разделение фильтра кажется более простым решением (с точки зрения осмысления), хотя сумматоров он наверное потребует большего количества.


Да правильно. Про разделение не понял.
Михаил_K
Цитата(petrov @ Aug 19 2008, 16:12) *
Да правильно. Про разделение не понял.


Разделение - это я имел следующее.
Например есть фильтр 32 * n коэффициентов, где n - коэффицент интерполяции (или число фаз).
Очевидно, что просто в память напрямую его засунуть сложно. Но его можно представить как два отдельных фильтра с числом коэффициентов 16 * n, выходы которых складываются.
Таким образом объем памяти уменьшается в 2^15 раз, за что приходится заплатить дополнительным сумматором. Каждый фильтр с числом коэффицентов 16*n можно также разбить и т.д.

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

Если задуматься, легко получается алгоритм оптимального разбиения, с точки зрения ресурсозатрат.


Если только это использовать то на 4-х блоках 256*16 получится фильтр всего на 2 символа для 16 QAM и интерполяцией в 8 раз.
Михаил_K
Цитата(petrov @ Aug 19 2008, 17:14) *
Если только это использовать то на 4-х блоках 256*16 получится фильтр всего на 2 символа для 16 QAM и интерполяцией в 8 раз.


Смотрите пост 57
petrov
Цитата(Михаил_K @ Aug 19 2008, 19:36) *
Смотрите пост 57


И?

1 блок памяти 256*16 хватит на 4 отсчёта импульсной характеристики для 16 QAM:
log4(256)=4, при интерполяции в 8 раз 4-х блоков хватит на 2 символа. Что ещё следует из поста 57 что позволит при таком же количестве используемой памяти получить фильтр более чем на 2 символа?
Михаил_K
Цитата(petrov @ Aug 19 2008, 19:53) *
И?

1 блок памяти 256*16 хватит на 4 отсчёта импульсной характеристики для 16 QAM:
log4(256)=4, при интерполяции в 8 раз 4-х блоков хватит на 2 символа. Что ещё следует из поста 57 что позволит при таком же количестве используемой памяти получить фильтр более чем на 2 символа?


Видимо вы не поняли. Как будет время, может быть постараюсь нарисовать что-нибудь, чтобы было понятнее.
smile.gif
petrov
Цитата(Михаил_K @ Aug 20 2008, 10:41) *
Видимо вы не поняли. Как будет время, может быть постараюсь нарисовать что-нибудь, чтобы было понятнее.
:)


Не надо, дошло :)
Так действительно проще будет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.