|
|
  |
Квадратурный смеситель и постоянная составляющая |
|
|
|
Jul 6 2015, 10:28
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Почему косинус и синус у Вас выбирается со значительно большей точностью, чем входные данные? Я бы взял те же 16 бит. А вот после умножения бы оставил все 32 бита и все их пользовал бы в фильтре, и только после фильтра округлял бы. При умножении 16 бит на 26 бит и последующем округлении до 18 бит Вы ни при каких обстоятельствах не будете использовать значения синусов больше 18+2 бит. В то же время, выбрасывать что-то после умножения на осциллирующую функцию, а потом усреднять (Ваш фильтр) то у Вас будут накапливаться ошибки от того, что большие и маленькие числа с разным знаком складываются. Про точность представления синуса вы тут совершенно правы, 26 бит действительно перебор. Большая разрядность скорее важна на шине управления частотой для задания очень маленького и точного шага перестройки частоты (делал 24 бита на управление и 16 бит на собственно сами синус/косинус, шаг был доли Гц). После умножения нет никакой надобности оставлять полную разрядность, т.к. динамический диапазон гармонического сигнала задаёте вы, нужно поставить соответственно в полную шкалу, тогда можно все 16 бит после перемножения отбросить. В случае комплексного смесителя там ещё дальше будет сложение, это ещё +1 бит. Тогда у такого смесителя на входе 16 бит, на выходе - 17 бит. И вот их уже скармливать фильтру. Никаких потерь и ошибок, о которых вы говорите, в данном случае не будет.
|
|
|
|
|
Jul 6 2015, 10:46
|
ʕʘ̅͜ʘ̅ʔ
    
Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691

|
Точность описания сигнала гетеродина определяется требованиями к избирательности по соседнему каналу и/или к блокированию Пример дизайна NCO для гетеродина: фазовый аккумулятор: 32 бита LUT: 4096x18 на выходе: 22 бита макс уровень внеполосных составляющих: ~-116-117 dBc Цитата(iiv @ Jul 6 2015, 11:25)  Почему косинус и синус у Вас выбирается со значительно большей точностью, чем входные данные?
|
|
|
|
|
Jul 6 2015, 10:57
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата да, но фильтром Вы интегрируете осциллирующую функцию, среднее значение которой близко к 0, и отбрасывать после умножения биты очень опасно. Вы можете объяснить в чём тут опасность с точки зрения арифметических ошибок и сигнал-шума? Всякий рост разрядности должен быть обоснован, а брать с запасом "на всякий случай" не очень хороший подход. Почему растёт разрядность на фильтрах, я понимаю. А зачем её ростить здесь? Если есть опасения после окргуления получить постоянку, которую фильтр низких частот конечно раздует (за счёт интегрирования), то достаточно сделать арифметическое округление и проблемы не будет. Цитата Точность описания сигнала гетеродина определяется требованиями к избирательности по соседнему каналу Вы имеете в виду в случае передатчика? В приёмнике же избирательность определяется фильтрами.
|
|
|
|
|
Jul 6 2015, 11:06
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Я имею в виду приемник. Соседний или блокирующий канал снесется spur'oм прямо в рабочий на BB. А ведь и правда, не сообразил сразу.. )
|
|
|
|
|
Jul 6 2015, 11:18
|

Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 8-02-15
Из: Санкт-Петербург
Пользователь №: 85 020

|
Цитата(serjj @ Jul 6 2015, 13:28)  Большая разрядность скорее важна на шине управления частотой для задания очень маленького и точного шага перестройки частоты Именно по этому она и выбрана такой большой. Цитата(serjj @ Jul 6 2015, 13:28)  Тогда у такого смесителя на входе 16 бит, на выходе - 17 бит. И вот их уже скармливать фильтру. Никаких потерь и ошибок, о которых вы говорите, в данном случае не будет. В текущей версии прошивки я именно так и сделал.
|
|
|
|
|
Jul 6 2015, 11:21
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Цитата(serjj @ Jul 6 2015, 16:57)  Вы можете объяснить в чём тут опасность с точки зрения арифметических ошибок и сигнал-шума? я в гетеродинах не разбираюсь, но, давайте рассмотрим такой пример. Возьмите несколько периодов синуса на равномерной сетке. Умножьте их на целое и округлите. Посчитайте сумму. Она будет или 0, или кратна числу периодов. Умножьте на большую целую константу, результат не изменится. Итого, имеем, что ошибка интегрирования будет обратной от этой целой константы (то бишь нашей точности после умножения), умноженной на число периодов, которые влезли в окно интегрирования. Соответственно и битность всех операций надо бы выбирать исходя из этих соображений.
|
|
|
|
|
Jul 6 2015, 11:32
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Возьмите несколько периодов синуса на равномерной сетке. Умножьте их на целое и округлите. Посчитайте сумму. Она будет или 0, или кратна числу периодов. Умножьте на большую целую константу, результат не изменится. Вы говорите об ошибке округления видимо. Во первых её можно избежать, если в NCO предусмотреть правильное арифметическое округление. Но даже если его нет, то прибегнем к математике: с постоянной составляющей сигнал с гетеродина (квадратура re например) есть c + cos(wt), где c - 1 бит (ошибка окргуления это 1 бит, если не было интегирования этой самой ошибки, случай NCO), cos(wt) - N бит. Теперь умножим сигнал s на наш гетеродин x = s*(c + cos(wt)) = s*c + s*cos(wt). А теперь отбросим N бит. Что получится? Первый компонент "уйдёт" в случае, если N >= WIDTH_IN. Вот вам и критерий )
Сообщение отредактировал serjj - Jul 6 2015, 11:33
|
|
|
|
|
Jul 6 2015, 11:40
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Цитата(Fat Robot @ Jul 6 2015, 16:46)  Точность описания сигнала гетеродина определяется требованиями к избирательности по соседнему каналу и/или к блокированию с точностью задания самой частоты - я полностью согласен. А вот с битностью синуса - не понимаю. Давайте рассмотрим такой пример, пусть исходная функция - суть синус с частотой омега, + случайный шум s порядка -16 бит (точность входных). Пусть мы имеем сгенеренный гетеродинный синус с той же частотой и некоторой новой заданной точностью r. Результат точного интегрирования будет \int (sin(omega*t)+s)*(sin(omega*t)+r) dt = \int sin(omega*t)^2 dt + \int sin(omega*t)*(s+r) dt + \int s+r dt тогда ошибка интегрирования будет определяться нормой шума s или r, причем то, что больше, то и будет эту ошибку определять. Посему я продолжаю не понимать зачем брать больше 16 бит при генерации синуса, и, если кто доступно и математически меня сможет переубедить, буду очень благодарен.
|
|
|
|
|
Jul 6 2015, 11:53
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата тогда ошибка интегрирования будет определяться нормой шума s или r, причем то, что больше, то и будет эту ошибку определять. Посему я продолжаю не понимать зачем брать больше 16 бит при генерации синуса, и, если кто доступно и математически меня сможет переубедить, буду очень благодарен. Пожалуйста, другой пример. После гетеродина со смещением сигнал x = s*c + s*cos(w*t). Допустим мы не делаем усечение разрядности и тащим такой сигнал на наш фильтр-интегратор. s*c << s*cos(w*t) с одной стороны (думаю в доказательстве это не нуждается) и s*c - ВЧ компонент, тогда как s*cos(w*t) - НЧ -- с другой стороны. Тоже думаю логично т.к. s - сигнал на несущей, а c - константа (это некоторое постоянное смещение, т.к. другому шуму там просто неоткуда взяться, шум фазы модулирует синус и имеет совершенно другое воздействие на сигнал, если вдоваться в подробности). Отсюда видно, что наш фильтр-интегратор, являющийся ФНЧ просто отфильтрует эту ВЧ компоненту, которая добавляется к НЧ сигналу после гетеродинирования.
|
|
|
|
|
Jul 6 2015, 11:58
|
ʕʘ̅͜ʘ̅ʔ
    
Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691

|
Желаем принимать полезный сигнал на частоте  На частоте  присутствует сигнал помехи, превышающий по мощности полезный принимаемый сигнал )+B{\times}sin((\omega_0+{\Delta}{\omega})t + n(t))) сигнал идеального гетеродина ) Сигнал "шумного" гетеродина. Шум упрощенный - единственная спектральная составляющая на частоте  . +C{\times}sin((\omega_0+{\Delta}{\omega})t)) Цитата(iiv @ Jul 6 2015, 12:40) 
|
|
|
|
|
Jul 6 2015, 12:09
|
ʕʘ̅͜ʘ̅ʔ
    
Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691

|
В реальности шум квантования NCO (для фазы, LUT addr и sin/cos) будет причудливо распределен во всей полосе. Здесь и например здесь подробнее Точность-битность влияет на  в этом упрощенном описании с единственной "вредной" гармоникой. И, как следствие, на то минимальное отношение  , которое не будет приводить к существенному ухудшению харакетристик приемной системы. Опять же упрощенно это и будет избирательностью по соседнему каналу и/или по блокированию. Т.е. есть сигнал в рабочем канале, а есть гораздо более сильный на отстройке  . В идеальном случае сигнал вне рабочей полосы не должен влиять на чувствительность. Но он, негодяй, влияет, в том числе и из-за собственных шумов гетеродина, т.е. из-за значения  . Если в ваших задачах отсутствуют сосредоточенные по полосе помехи, то ваши рассуждения верны. Цитата(iiv @ Jul 6 2015, 13:04)  как точность-битность вычисления синуса влияет на  ???
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|