|
Как сделать digital down conversion I/Q сигнала ? |
|
|
|
Aug 4 2013, 20:57
|
Группа: Новичок
Сообщений: 1
Регистрация: 4-08-13
Пользователь №: 77 795

|
Имеется I/Q сигнал полученный с SDR приёмника. Нужно получить сдвинутый по частоте I/Q сигнал. Вопрос как это сделать ?
|
|
|
|
|
Aug 14 2013, 08:12
|
Группа: Новичок
Сообщений: 7
Регистрация: 29-11-10
Из: Минск
Пользователь №: 61 249

|
Если конкретнее, то умножить на сигнал вида cos(2*pi*f/fd*n)+i*sin(2*pi*f/fd*n), где n=0,1,2... - номер точек, f - частота несущей, fd - частота дискретизации. Затем - НЧ фильтрация.
|
|
|
|
|
Sep 23 2013, 08:33
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(Corner @ Sep 20 2013, 22:13)  Если центр ПЧ лежит на Fs/4 результат идентичен. Практически АЦП и выполняет умножение с преобразованием в I/Q. Мдя, такой глупости даже не знаешь как и возразить-то... Результат, дорогой вы наш, будет идентичен только для частоты Fs/4. А АЦП в своем УВХ выполняет умножение на дельта-функцию. А люди, которые для получения I и Q c АЦП видимо не идиоты, раз все-таки ставят квадратурный смеситель, и потом 2 АЦП. Ну а если уж и оцифровываются на ПЧ одним АЦП, и делят выборки на четные и нечетные, то для получения I/Q зачем-то ставят еще либо преобразователь Гильберта. Видимо от темноты своей. Вы же их не просветили, что можно так не делать. Ресурсы понимаешь лишние тратят.
|
|
|
|
|
Sep 23 2013, 14:58
|

Профессионал
    
Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815

|
Цитата(thermit @ Sep 23 2013, 14:53)  Если f0=fd/4 вполне можно и 1 ацп обойтись. Для сноса в 0 придется результат оцифровки умножать на exp(-j*pi/2*(0:inf)) что является тривиальным умножением на последовательности 1 0 -1 0 ... для получения синфазной и 0 -1 0 1 ... квадратурной компонент. Ну а потом фнч естественно... Или взять четыре отсчета: А0, А1, А2, А3. Выровнять sin(x)/x; I=A0-A2; Q=A1-A3; И следом 2*КИХ до нужной полосы. А Гильберт пусть остается там где он есть. RIP
Сообщение отредактировал Corner - Sep 23 2013, 15:00
|
|
|
|
|
Sep 24 2013, 09:37
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(thermit @ Sep 23 2013, 14:53)  Если f0=fd/4 вполне можно и 1 ацп обойтись. Для сноса в 0 придется результат оцифровки умножать на exp(-j*pi/2*(0:inf)) что является тривиальным умножением на последовательности 1 0 -1 0 ... для получения синфазной и 0 -1 0 1 ... квадратурной компонент. Ну а потом фнч естественно... Совершенно верно. Но: 1. Это лишь частный случай 2. Квадратурные компоненты получаются после умножения, а не путем тупого разделения выборок на четные и нечетные! 3. Сначала производится умножение, а лишь потом фильтрация, и никак не наоборот! Цитата(Corner @ Sep 23 2013, 18:58)  I=A0-A2; Q=A1-A3; Сам-то понял, что написал?
|
|
|
|
|
Sep 25 2013, 11:19
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755

|
Цитата(Михаил_K @ Sep 25 2013, 14:59)  Забыли, что помимо этого, и того что центральная частота равна Fs/4, так еще и перед АЦП фильтр ПОЛОСОВОЙ должен быть, чтобы после прореживания фигню не получить. Очень такой частный случай получается. В жизни вот только не бывает таких.... Можете конкретизировать ожидаемую фигню? Upd: Хотя, если речь именно про вариант Corner'а, то да, скользящее среднее на 4 отсчета может и не отфильтровать нормально до прореживания.
Сообщение отредактировал KalashKS - Sep 25 2013, 11:36
|
|
|
|
|
Sep 25 2013, 11:37
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата Михаил_K: Забыли, что помимо этого, и того что центральная частота равна Fs/4, так еще и перед АЦП фильтр ПОЛОСОВОЙ должен быть, чтобы после прореживания фигню не получить. Очень такой частный случай получается. В жизни вот только не бывает таких.... Фильтр перед ацп должен быть в любом случае вне зависимости от частоты несущей. Другое дело, что пч и частота дискретизации могут быть выбраны так, что при оцифровке пч превратится в fd/4...
|
|
|
|
|
Sep 30 2013, 08:25
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755

|
Цитата(Corner @ Sep 28 2013, 13:34)  Если переда АЦП стоит фильтр, ограничивающий полосу до одной зоны Найквиста (не важно какой, лишь бы АЦП адекватно воспринимал такие частоты), то никакой "фигни" не будет. Просто надо перед вычитанием сделать коррекцию sin(x)/x. А то на краях зоны после вычитания сигнал уйдет в 0. Еще надо учесть что в зонах 2, 4... происходит инверсия боковой полосы, а в 1, 3... не происходит. У меня первый смеситель Flo-Frf поэтому я использую 3*Fs/4 середину ПЧ. Два раза инвертируя боковые полосы. У вас после скользящего среднего на 4 отсчета составляющие спектра давятся не более чем на 10 дБ, а наложение после прореживания происходит вообще на уровне -4 дБ. Ваша схема нормально работает только с очень узкополосными сигналами (полоса порядка пары процентов частоты дискретизации и наложения после прореживания не более -25 дБ).
|
|
|
|
|
Sep 30 2013, 14:56
|

Профессионал
    
Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815

|
Цитата(KalashKS @ Sep 30 2013, 12:25)  У вас после скользящего среднего на 4 отсчета составляющие спектра давятся не более чем на 10 дБ, а наложение после прореживания происходит вообще на уровне -4 дБ. Ваша схема нормально работает только с очень узкополосными сигналами (полоса порядка пары процентов частоты дискретизации и наложения после прореживания не более -25 дБ). Нет у меня скользящего среднего. Только прореживание на 4. При Fs=125 МГц ПЧ=93,75 МГц и цифровой полосе 31,25 МГц (аналоговый фильтр режет ~20 МГЦ полосу). Я получаю 4 фазы относительно частоты оцифровки 31,25: 0, 90, 180 и 270. Делаю коррекцию sin(x)/x и вычитаю 0-180 и 90-270. Получаю I и Q каждое с полосой 0... 15,625 МГц, но использую только 0... 7,8125 МГц. Остальное дорезаю с помощью БИХ. Общая полоса таким образом 15,625 МГц. Изоляция двух несущих OFDM (любых двух в ортогональной сетке) около 70 дБ. Полоса 12,5 % - далеко не единицы...
|
|
|
|
|
Sep 30 2013, 16:47
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755

|
Цитата(Corner @ Sep 30 2013, 18:56)  Нет у меня скользящего среднего. Только прореживание на 4. При Fs=125 МГц ПЧ=93,75 МГц и цифровой полосе 31,25 МГц (аналоговый фильтр режет ~20 МГЦ полосу). Я получаю 4 фазы относительно частоты оцифровки 31,25: 0, 90, 180 и 270. Делаю коррекцию sin(x)/x и вычитаю 0-180 и 90-270. Получаю I и Q каждое с полосой 0... 15,625 МГц, но использую только 0... 7,8125 МГц. Остальное дорезаю с помощью БИХ. Общая полоса таким образом 15,625 МГц. Изоляция двух несущих OFDM (любых двух в ортогональной сетке) около 70 дБ. Полоса 12,5 % - далеко не единицы... Ваши 0-180 и 90-270 математически эквивалентны домножению на комплексную экспоненту и последующему скользящему среднему на 4 отсчета. Набросал тут код в матлабе: CODE x=exp(1i*pi*(random('unid',2,53,100)-1)); data=cat(1,x(27:end,  ,zeros(256-53,100),x(1:26,  ); %распределение амплитуд по несущим data=ifft(data); data=cat(1,data(end-15:end,  ,data); %защитный интервал data=reshape(data,1,numel(data)); %реорганизация массива в последовательность отсчетов data=real(data.*exp(1i*pi/2*(0:length(data)-1))); %перенос на ПЧ y=data(1:4:end)-data(3:4:end)-1i*(data(2:4:end)-data(4:4:end)); %сброс на нулевую частоту y=(buffer(y,68)); %разделение на символы y=fft(y(5:end,  ); y=fftshift(y,1); y=y(7:59,  ; %выделение принятых амплитуд plot(-26:26,angle(y(:,1)./x(:,1))) %построение ФЧХ Код генерит OFDM сигнал на несущей 1/4 частоты дискретизации с соотношением параметров, близким к вашему, после чего сбрасывает его в ноль вашим методом. Наложения проявляются в виде рваной ФЧХ полученной системы. Про -4 дБ я, возможно погорячился, а вот указанные -11 дБ вполне себя проявляют. Ну и, как ожидалось, чем ближе к нулевой частоте, тем наложения меньше. Код простой, буду благодарен, если укажете мне мою ошибку.
|
|
|
|
|
Oct 8 2013, 16:20
|

Профессионал
    
Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815

|
Цитата(KalashKS @ Sep 30 2013, 20:47)  Ваши 0-180 и 90-270 математически эквивалентны домножению на комплексную экспоненту и последующему скользящему среднему на 4 отсчета. Набросал тут код в матлабе: CODE x=exp(1i*pi*(random('unid',2,53,100)-1)); data=cat(1,x(27:end,  ,zeros(256-53,100),x(1:26,  ); %распределение амплитуд по несущим data=ifft(data); data=cat(1,data(end-15:end,  ,data); %защитный интервал data=reshape(data,1,numel(data)); %реорганизация массива в последовательность отсчетов data=real(data.*exp(1i*pi/2*(0:length(data)-1))); %перенос на ПЧ y=data(1:4:end)-data(3:4:end)-1i*(data(2:4:end)-data(4:4:end)); %сброс на нулевую частоту y=(buffer(y,68)); %разделение на символы y=fft(y(5:end,  ); y=fftshift(y,1); y=y(7:59,  ; %выделение принятых амплитуд plot(-26:26,angle(y(:,1)./x(:,1))) %построение ФЧХ Код генерит OFDM сигнал на несущей 1/4 частоты дискретизации с соотношением параметров, близким к вашему, после чего сбрасывает его в ноль вашим методом. Наложения проявляются в виде рваной ФЧХ полученной системы. Про -4 дБ я, возможно погорячился, а вот указанные -11 дБ вполне себя проявляют. Ну и, как ожидалось, чем ближе к нулевой частоте, тем наложения меньше. Код простой, буду благодарен, если укажете мне мою ошибку. Я не собираюсь искать ошибку ибо -70 дБ намерено на живом устройстве методом пропуска поднесущей: убираем одну поднесущую и смотрим уровень помех в ее полосе. Причем эти -70 дБ рождает аналоговый тракт+АЦП.
|
|
|
|
|
Oct 9 2013, 07:52
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755

|
Цитата(Corner @ Oct 8 2013, 20:20)  Я не собираюсь искать ошибку ибо -70 дБ намерено на живом устройстве методом пропуска поднесущей: убираем одну поднесущую и смотрим уровень помех в ее полосе. Причем эти -70 дБ рождает аналоговый тракт+АЦП. Дело ваше.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|