реклама на сайте
подробности

 
 
> Выбор разрядности на выходе фильтров
Artunique
сообщение May 27 2015, 08:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820




Добрый день. Реализую приемник прямого преобразования на ПЛИС. Сначала скидываю сигнал на ноль с помощью NCO, затем фильтрую CIC и FIR фильтрами. Что на вход каждого фильтра, что на выход, можно загонять сигнал любой разрядности. Как ее выбирать? исходя из чего? Динамический диапазон вроде обеспечил требуемый, а вот с избирательностью по соседнему каналу никак не получается. Получаемые значения очень сильно зависят от разрядности. Как ее грамотно выбрать? При учете того, что с АЦП идет 14 бит и на выходе FIR фильтра нужна конкретная разрядность 24 бита. Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
serjj
сообщение Jun 1 2015, 06:24
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Я бы добавил: на NCO тоже надо заложить увеличение разрядности не менее чем на 2.

С чем это связано? В моём понимание на смесителе (вы же имеете в виду не сам NCO а смеситель?) динамический диапазон никак не изменяется, т.к. сигнал от NCO идёт в полную шкалу, соответственно, если у нас с NCO сигнал, например, 16 бит, то на перемножение мы добавляем 16 бит, а после спокойно можем их отнять, ничего не потеряв. Вы предлагаете отнять не 16 а 14, правильно я понял? С чем это связано?
Цитата
В теории - да, в жизни - если в ПЛИСе есть место, почему бы не добавить системе помехоустойчивости?

Вы добавляете не помехоустойчивость а точность. Есть например приёмник. На тепловой шум отводится 6-8 разрядов, арифметический шум - 1 разряд. В таком случае очевидно, что тепловой шум много больше арифметического, следовательно арифметическим шумом можно принебречь и оптимальный приём будет работать как в учебнике. Добавляя разрядности, вы увеличиваете точность квантования теплового шума. Т.к. от этого сигнал-шум не поменяется, откуда взяться выигрышу в помехоустойчивости. Другое дело, если у вас рекурсивная схема, в ней 1 битный арифметический шум может вырасти и стать сравнимым или даже большим чем шум тепловой, снизив помехоустойчивость. Или другой пример - выделение сверхмалого сигнала на фоне большой помехи. Если выбрать малую разрядность, то в процессе обработки малый сигнал потеряется, т.к. в процессе выделения используется корреляционная обработка (т.е. фактически эквивалент возведению в квадрат, а это приведет к двукратному росту динамического диапазона, отбросив разрядность очень легко потерять слабый сигнал, который после возведение в квадрат станет еще слабее). С практической точки зрения разрядность все таки уменьшать стоит, но не более чем до разрядности умножителя ПЛИС.

Сообщение отредактировал serjj - Jun 1 2015, 06:27
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 1 2015, 07:22
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(serjj @ Jun 1 2015, 09:24) *
С чем это связано? В моём понимание на смесителе (вы же имеете в виду не сам NCO а смеситель?) динамический диапазон никак не изменяется, т.к. сигнал от NCO идёт в полную шкалу, соответственно, если у нас с NCO сигнал, например, 16 бит, то на перемножение мы добавляем 16 бит, а после спокойно можем их отнять, ничего не потеряв. Вы предлагаете отнять не 16 а 14, правильно я понял? С чем это связано?


Пр повороте вектора длина проекции может увеличиться. Т.е. если на входе ты закладываешься на максимальное значение в каждой квадратуре K, то на выходе надо иметь sqrt(2) * K
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 07:26
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 1 2015, 10:22) *
Пр повороте вектора длина проекции может увеличиться. Т.е. если на входе ты закладываешься на максимальное значение в каждой квадратуре K, то на выходе надо иметь sqrt(2) * K



Поясните пожалуйста про NCO. Я умножаю 14 бит с NCO на 14 бит с АЦП. И на выходе сколько бит можно оставить? 16? я правильно понял?


Сообщение отредактировал Artunique - Jun 2 2015, 07:26
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 07:54
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 10:26) *
Поясните пожалуйста про NCO. Я умножаю 14 бит с NCO на 14 бит с АЦП. И на выходе сколько бит можно оставить? 16? я правильно понял?


Вы про какой миксер? Я выше про комплексный писал.

Если комплексный, то на выходе для реальной части (мнимая аналогично):

s_re * m_re - s_im * m_im. При знаковом умножении 14 на 14 полчается 27 бит результата (28ой, самый старший разряд после перемножения можно отбросить, он тоже знаковый), при суммировании - всего 28. Итого (после вычитания)- 28 разрядов выхода в каждом квадратурном канале. Если считать, что на гетеродинном входе смесителя числа от -1 до 1, а на сигнальном - целые, то точка, разделяющая целую и дробную часть выхода смесителя будет после 13 разряда (15 старших - целая часть, затем 13 - дробная).

Если на сигнальном входе смесителя реальный сигнал то для действительной части выхода получаем s * m_re. Аналогично, на выходе 14 бит целой части и 13 дробной.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 08:23
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 10:54) *
Вы про какой миксер? Я выше про комплексный писал.

Если комплексный, то на выходе для реальной части (мнимая аналогично):

s_re * m_re - s_im * m_im. При знаковом умножении 14 на 14 полчается 27 бит результата (28ой, самый старший разряд после перемножения можно отбросить, он тоже знаковый), при суммировании - всего 28. Итого (после вычитания)- 28 разрядов выхода в каждом квадратурном канале. Если считать, что на гетеродинном входе смесителя числа от -1 до 1, а на сигнальном - целые, то точка, разделяющая целую и дробную часть выхода смесителя будет после 13 разряда (15 старших - целая часть, затем 13 - дробная).

Если на сигнальном входе смесителя реальный сигнал то для действительной части выхода получаем s * m_re. Аналогично, на выходе 14 бит целой части и 13 дробной.


с АЦП шина 14 бит с комплексными отсчетами идет на 2 одинаковых смесителя. В одном смесителе данные с АЦП умножаются на sin, в другом на cos.

Цитата(andyp @ Jun 2 2015, 10:54) *
Если считать, что на гетеродинном входе смесителя числа от -1 до 1, а на сигнальном - целые, то точка, разделяющая целую и дробную часть выхода смесителя будет после 13 разряда (15 старших - целая часть, затем 13 - дробная).


Поясните пожалуйста, как Вы это рассчитали.

Сообщение отредактировал Artunique - Jun 2 2015, 08:24
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 08:33
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 11:23) *
Поясните пожалуйста, как Вы это рассчитали.


out_re = s_re * m_re - s_im * m_im;
m_re = mr*2^-13; m_im = mi*2^-13
m_re, m_im - то, на что надо умножить (-1...+1), mi, mr - представление числа в памяти или регистрах

Для сигнального входа представление и само число совпадают.

out_re = (s_re*mr - s_im*mi) * 2(-13) - итого, у результата будет тоже 13 дробных разрядов

Сообщение отредактировал andyp - Jun 2 2015, 08:34
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 08:47
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 11:33) *
out_re = s_re * m_re - s_im * m_im;
m_re = mr*2^-13; m_im = mi*2^-13
m_re, m_im - то, на что надо умножить (-1...+1), mi, mr - представление числа в памяти или регистрах

Для сигнального входа представление и само число совпадают.

out_re = (s_re*mr - s_im*mi) * 2(-13) - итого, у результата будет тоже 13 дробных разрядов



Спасибо большое. Только все равно не пойму почему m_re = mr*2^-13; m_im = mi*2^-13. почему именно число 13?
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 09:08
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 11:47) *
Спасибо большое. Только все равно не пойму почему m_re = mr*2^-13; m_im = mi*2^-13. почему именно число 13?


Всего бит 14 (по условию), 1 бит - знак. Остальные 13 используются для хранения дробных бит значения синуса или косинуса из диапазона (-1..1). Это позволяет при заданной разрядности сохранить в регистре наибольшее количество значащих бит.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 10:08
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 12:08) *
Всего бит 14 (по условию), 1 бит - знак. Остальные 13 используются для хранения дробных бит значения синуса или косинуса из диапазона (-1..1). Это позволяет при заданной разрядности сохранить в регистре наибольшее количество значащих бит.


Понял, спасибо. В общем в итоге-то что? 15 старших бит оставляю, а остальное можно выкинуть?
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 10:26
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 13:08) *
Понял, спасибо. В общем в итоге-то что? 15 старших бит оставляю, а остальное можно выкинуть?


Если есть вещественный смеситель 14x14 (вход умножается на синус или косинус), то из 28 выходных можно отбросить один старший разряд (он повторяет знак) и 13 младших, где сидит дробная часть. Итого останется 14 разрядов.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 10:43
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 13:26) *
Если есть вещественный смеситель 14x14 (вход умножается на синус или косинус), то из 28 выходных можно отбросить один старший разряд (он повторяет знак) и 13 младших, где сидит дробная часть. Итого останется 14 разрядов.


Разобрался, спасибо. А еще вопрос про FIR фильтр. Если на выходе режу например 15 младших бит, то динамический диапазон вообще никакой. А если режу 5 старших и 10 младших, то картина лучше становится. Есть ли здесь правила какие-то?

Сообщение отредактировал Artunique - Jun 2 2015, 10:45
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 12:11
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 13:43) *
Разобрался, спасибо. А еще вопрос про FIR фильтр. Если на выходе режу например 15 младших бит, то динамический диапазон вообще никакой. А если режу 5 старших и 10 младших, то картина лучше становится. Есть ли здесь правила какие-то?


Максимум, на какой может разогнаться сигнал на выходе FIR равен сумме абсолютных величин отсчетов импульсной характеристики. log2 этой суммы даст максимальное увеличение разрядности на выходе. Если редкие переполнения допустимы и фильтр - ФНЧ, то можно оценить требуемое увеличение разрядности просто как сумму отсчетов ИХ (фактически, это коэффициент передачи фильтра на 0).
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 12:30
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 15:11) *
Максимум, на какой может разогнаться сигнал на выходе FIR равен сумме абсолютных величин отсчетов импульсной характеристики. log2 этой суммы даст максимальное увеличение разрядности на выходе. Если редкие переполнения допустимы и фильтр - ФНЧ, то можно оценить требуемое увеличение разрядности просто как сумму отсчетов ИХ (фактически, это коэффициент передачи фильтра на 0).



А еще в чем смысл производить децимацию в несколько этапов? В чем разница, поставлю я один фильтр с коэффициентом децимации 300 или поставлю два с коэффициентами 15 и 20?
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 13:18
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 15:30) *
А еще в чем смысл производить децимацию в несколько этапов? В чем разница, поставлю я один фильтр с коэффициентом децимации 300 или поставлю два с коэффициентами 15 и 20?


В количестве вычислениий, которые придется сделать. Это что, блитц из "Что? Где? Когда?" sm.gif)
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 13:32
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 16:18) *
В количестве вычислениий, которые придется сделать. Это что, блитц из "Что? Где? Когда?" sm.gif)



Нет, просто мало информации про это все. Приемник заработал, а вот избирательность хромает и непонятно что где крутить )
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 13:55
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 16:32) *
Нет, просто мало информации про это все. Приемник заработал, а вот избирательность хромает и непонятно что где крутить )


Избирательность по соседнему каналу Вашего приемника определяется фильтром, попробуйте загнать усиление АРУ на максимум и посмотреть на спектр того, что на выходе приемника. Должна быть АЧХ Вашего фильтра. Еще, как вариант, где-то что-то перегружается.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 14:06
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 16:55) *
Избирательность по соседнему каналу Вашего приемника определяется фильтром, попробуйте загнать усиление АРУ на максимум и посмотреть на спектр того, что на выходе приемника. Должна быть АЧХ Вашего фильтра. Еще, как вариант, где-то что-то перегружается.


Каким именно фильтром? В приемнике я изменил только часть, отвечающую за сброс на ноль несущей и процесс децимации. До этого стояла отдельная микросхема, все работало. Теперь я все это сделал в плис. Даже коэффициенты FIRа оставил прежними. Как я понимаю, дело исключительно в операциях с разрядами.
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 14:23
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 17:06) *
Каким именно фильтром? В приемнике я изменил только часть, отвечающую за сброс на ноль несущей и процесс децимации. До этого стояла отдельная микросхема, все работало. Теперь я все это сделал в плис. Даже коэффициенты FIRа оставил прежними. Как я понимаю, дело исключительно в операциях с разрядами.


FIR на последней стадии децимации. Все, что работает на более высоких частотах дискретизации - более широкополосно. Спектр шума на выходе приемника как раз и скажет, правильно ли работает FIR - на выходе должна быть его АЧХ, даже если что и перегружается до него. Если АЧХ нет, то перегруз происходит внутри этого фильтра.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 14:33
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 17:23) *
FIR на последней стадии децимации. Все, что работает на более высоких частотах дискретизации - более широкополосно. Спектр шума на выходе приемника как раз и скажет, правильно ли работает FIR - на выходе должна быть его АЧХ, даже если что и перегружается до него. Если АЧХ нет, то перегруз происходит внутри этого фильтра.


Как я посмотрю спектр на выходе FIR? Там же отсчеты валятся. Кроме как загонять их в регистры dsp и потом обрабатывать на компе никаких вариантов не придумывается 05.gif
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 15:21
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 17:33) *
Как я посмотрю спектр на выходе FIR? Там же отсчеты валятся. Кроме как загонять их в регистры dsp и потом обрабатывать на компе никаких вариантов не придумывается 05.gif


Ну да. Обычно так и делают. Если внутри FPGA есть доступные ресурсы, то можно всякую инструментовку для отладки FPGA поиспользовать, чтобы вытянуть отсчеты на PC - типа альтеровского ChipScope.

Ну и нечто для визуализации выхода приемника все равно потребуется, если будешь его сдавать. Как еще подтвердить его соответствие ТЗ?

Сообщение отредактировал andyp - Jun 2 2015, 15:35
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Artunique   Выбор разрядности на выходе фильтров   May 27 2015, 08:24
- - farbius   Цитата(Artunique @ May 27 2015, 11:24) Чт...   May 27 2015, 10:07
|- - Artunique   Цитата(farbius @ May 27 2015, 13:07) Разр...   May 27 2015, 10:16
|- - farbius   Цитата(Artunique @ May 27 2015, 13:16) Я ...   May 27 2015, 10:33
- - des00   считайте по эффектиной разрядности = разрядность н...   May 27 2015, 10:39
|- - Artunique   Цитата(des00 @ May 27 2015, 13:39) считай...   May 27 2015, 11:49
|- - des00   Цитата(Artunique @ May 27 2015, 18:49) Сп...   May 27 2015, 12:55
- - stealth-coder   Из собственного опыта: 1. Везде использовать матем...   May 28 2015, 18:49
- - serjj   ЦитатаВезде использовать математическое округление...   May 29 2015, 08:01
- - stealth-coder   Цитата(serjj @ May 29 2015, 11:01) Его ну...   May 29 2015, 17:26
- - Hose   Я бы добавил: на NCO тоже надо заложить увеличение...   May 30 2015, 05:25
|- - thermit   Цитата(Artunique @ Jun 2 2015, 10:26) Поя...   Jun 2 2015, 07:43
|- - Krys   Цитата(Artunique @ Jun 2 2015, 19:30) А е...   Aug 21 2015, 04:16
|- - Corner   Цитата(Krys @ Aug 21 2015, 07:16) Выигрыш...   Sep 20 2015, 21:21
|- - Krys   Цитата(Corner @ Sep 21 2015, 04:21) Более...   Oct 13 2015, 08:32
- - serjj   ЦитатаПр повороте вектора длина проекции может уве...   Jun 1 2015, 07:34
- - serjj   ЦитатаА еще вопрос про FIR фильтр. Если фильтр дел...   Jun 2 2015, 13:19
|- - Artunique   Цитата(serjj @ Jun 2 2015, 16:19) Если фи...   Jun 24 2015, 12:43
- - serjj   А вот тут то и начнётся самое интересное. В случае...   Jun 2 2015, 20:25


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 20:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.02169 секунд с 7
ELECTRONIX ©2004-2016