SDR radio

Аватара пользователя
Andreichk
Сообщения: 15
Зарегистрирован: 11 мар 2018, 19:58

SDR radio

Сообщение Andreichk » 11 мар 2018, 20:02

Привет народ !
Решил я на досуге собрать означенный прибор в связке с небольшой плисиной и потихоньку спрограмить себе приёмничек.
Собсно по теме имею следующий вопрос:
1. правильно ли вообще собрана схема, если нет, то как правильно?
2. правомерно ли соединение точек а и b на схеме, если на них показывает разное напряжение?
Спасибо заранее.
ссылки на даташиты тут:
http://cds.linear.com/docs/en/datasheet/640020f.pdf
http://www.ti.com/lit/ds/symlink/ads4245-ep.pdf
SDR1.JPG

Аватара пользователя
Andreichk
Сообщения: 15
Зарегистрирован: 11 мар 2018, 19:58

Re: SDR radio

Сообщение Andreichk » 13 мар 2018, 21:04

В общих чертах мой приёмник выглядит примерно вот так:
не нарисован ещё ТФТ дисплей и кнопки-нажималки для переключения всяких режимов, об этом позже.
собственно пока главный вопрос, все эти синусы и косинусы должны быть одной частоты, только сдвинутые на 90 градусов или частоты должны быть разными?
коэфициэнты FIR фильтров выдернуты из даташита на АЦП AD9689 https://www.mouser.com/ds/2/609/AD9689-1149165.pdf
там собственно весь СДР на одном кристалле, но цена капец какая кусачая. Оттуда же и квадратурный смеситель
SDR.JPG

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 702
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: SDR radio

Сообщение Бахурин Сергей » 13 мар 2018, 23:30

1) синусы и косинусы должны быть одной частоты
2) По поводу напряжений я не совсем понял вопрос. Если точки a и b замкнуть, то напряжение выровняется. Но его величина видимо будет зависеть от сопротивления VCM и Vocm . Вообще в даташите на LTC640 приводится другой ацп LTC2208, который как раз и выдает VCM 1.25В.

Аватара пользователя
Andreichk
Сообщения: 15
Зарегистрирован: 11 мар 2018, 19:58

Re: SDR radio

Сообщение Andreichk » 14 мар 2018, 18:20

спасибо за ответ, уточненние: синусы и косинусы ВСЕ должны быть одной частоты или для гетеродина одна частота , а для квадратурного смесителя - другая?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 702
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: SDR radio

Сообщение Бахурин Сергей » 14 мар 2018, 23:36

где написано на схеме "настройка" частота может быть одной, а на выходе HB1 может быть другой

Аватара пользователя
Andreichk
Сообщения: 15
Зарегистрирован: 11 мар 2018, 19:58

Re: SDR radio

Сообщение Andreichk » 15 мар 2018, 00:44

не знаю, насколько это правильно, но я сделал так:
CIC децимация на 32
далее все остальные ФИРы децимация на 2, соответственно параметры Input Sample rate такие:

3.7775
1.88875
0.944375
0.4721875
0.23609375
0.118046875

то есть самый последний ФИР выдаёт поток 118 кГц, который я уже в квадратурном смесителе обрабатываю.
тогда на этот самый квадратурный смеситель какая должна быть частота синусов косинусов? какая то одна фиксированная или нет? Мне кажется, 2 крутилки настройки частоты не совсем как-то правильно.... :roll:

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 702
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: SDR radio

Сообщение Бахурин Сергей » 15 мар 2018, 10:23

Ну почему же это нормальная практика. Первый смеситель работает на 122 МГц 16 бит nco имеет шаг по частоте 1.86 кГц . А такой же 16 битный nco при Fs=118 кГц имеет шаг 1.8 Гц для точной настройки и демодуляции

Аватара пользователя
Andreichk
Сообщения: 15
Зарегистрирован: 11 мар 2018, 19:58

Re: SDR radio

Сообщение Andreichk » 15 мар 2018, 19:08

а если всё же обходиться одной крутилкой с шагом напр.10Гц, и его же можно напр. кнопками с шагом напр. 1 или 2 кГц гонять,или ещё лучще просто переключать сразу на начало диапазона, что в принципе у меня уже реализовано, то тогда какую частоту подавать на квадратурный смеситель?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 702
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: SDR radio

Сообщение Бахурин Сергей » 16 мар 2018, 08:09

Ничего не понял из вашего вопроса

Аватара пользователя
Andreichk
Сообщения: 15
Зарегистрирован: 11 мар 2018, 19:58

Re: SDR radio

Сообщение Andreichk » 17 мар 2018, 02:42

сорри, я тут что то затупил.....
можно я другой вопрос задам, про квадратурный преобразователь. я схему подглядел в одной из ваших статей.
вобщем в коде он у меня так выглядит:
и собственно вопрос, битность сигналов и синусов\косинусов должна быть одинаковой ? какие последствия от того, что битность будет разной?

Код: Выделить всё

//============================================================================
//ФОРМИРОВАТЕЛЬ АНАЛИТИЧЕСКОГО СИГНАЛА НА ОСНОВЕ КВАДРАТУРНОГО ПРЕОБРАЗОВАТЕЛЯ
//============================================================================
wire signed [23:0]DOut_I;
wire signed [23:0]DOut_Q;
QUADRATUR_MIXER DIGITAL (
    .clk(clk), 
    .DATA_I(fir_data_I[23:0]), 
    .DATA_Q(fir_data_Q[23:0]), 
    .cosine(ncos[15:0]),
	 .sine(ncos[15:0]),
    .DATA_I_OUT(DOut_I), //25bit
    .DATA_Q_OUT(DOut_Q) //
    );

Код: Выделить всё

`timescale 1 ns / 1 ns
//============================================================================
//ФОРМИРОВАТЕЛЬ АНАЛИТИЧЕСКОГО СИГНАЛА НА ОСНОВЕ КВАДРАТУРНОГО ПРЕОБРАЗОВАТЕЛЯ
//============================================================================
module QUADRATUR_MIXER(
            input wire clk,
            input wire signed [22:0]DATA_I,
            input wire signed [22:0]DATA_Q,
			   input wire signed [22:0]cosine,
            input wire signed [22:0]sine,
           output wire signed [23:0]DATA_I_OUT,
           output wire signed [23:0]DATA_Q_OUT
);
//===================================================================
wire signed [22:0]I_cosine;
Mixer #(.WIDTH(23))mix_cos_I( //I * cos
	                      .clk(clk),
                         .ADC_Data(DATA_I[22:0]),
                         .DDS_Data(cosine[22:0]),    // input signed [WIDTH-1:0] 
                         .OUT_Mixer(I_cosine[22:0])  // output [19:0] 
);

wire signed [22:0]Q_sine;
Mixer #(.WIDTH(23))mix_sin_Q(// Q * sin
	                      .clk(clk),
                         .ADC_Data(DATA_Q[22:0]),
                         .DDS_Data(sine[22:0]),     // input signed [WIDTH-1:0] 
                         .OUT_Mixer(Q_sine[22:0])   // output [19:0] 
);
assign DATA_I_OUT = I_cosine + Q_sine;//A

//===================================================================
wire signed [22:0]Q_cosine;
Mixer #(.WIDTH(23))mix_cos_Q(// Q * cos
	                      .clk(clk),
                         .ADC_Data(DATA_Q[22:0]),
                         .DDS_Data(cosine[22:0]),    // input signed [WIDTH-1:0] 
                         .OUT_Mixer(Q_cosine[22:0])  // output [19:0] 
);

wire signed [22:0]M_I_sine;
Mixer #(.WIDTH(23))mix_sin_I( // I * -sin
	                      .clk(clk),
                         .ADC_Data(DATA_I[22:0]),
                         .DDS_Data(~sine[22:0]),     // input signed [WIDTH-1:0] 
                         .OUT_Mixer(M_I_sine[22:0])  // output [19:0] 
);
assign DATA_Q_OUT = Q_cosine + M_I_sine;//B

endmodule

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя