Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 29

Тема: Качество сигнала SI5351

  1. #11
    По поводу вычисления коэффициентов. Возьмём пример для частоты кварца 27003000 Гц, выходной частоты 69200000 Гц.

    1. Делим 900000000 на выходную частоту 900000000 / 69200000 = 13,0057.....
    2. Полученное значение уменьшаем до ближайшего чётного числа. В данном примере - 12. Это коэффициент деления (КД) Multisynth.
    3. Умножаем выходную частоту на КД. Получаем частоту генератора с PLL: Fpll = 69200000 * 12 = 830400000.
    4. Получаем коэффициенты a и b для выполнения равенства: Fpll = Fxtal * (a + b/1048575). Где Fxtal - частота опорного кварца. a и b - целые числа.

    Fpll/Fxtal = 830400000 / 27003000 = 30.75213865....

    От полученного частного берем целую часть.Это a. В данном случае оно равно 30.
    Вычисляем b = 0.75213865 *1048575 =788673.8. Округляем до целых.

    Полученное значение КД Multisynth пакуется в регистры 42...49, значения a и b - в регистры 26...33.


  2. #12

    Регистрация
    10.11.2016
    Адрес
    Харьков
    Сообщений
    4,420
    вот мой вариант расчёта коэффициентов (спектр 10 МГц с ним показан выше).
    За основу был взят алгоритм расчёта антенного анализатора EU1KY.
    Что там менялось уже не помню, давно было дело.

    Код:
    void si5351_calc_info(uint32_t freq, struct si5351_pll_info* pi, struct si5351_msx_info* mi)
    {
        const uint32_t SI5351_PLL_VCO_MAX            = si5351_xtal * 36;
        const uint32_t SI5351_MULTISYNTH_MIN_FREQ    = si5351_xtal / 25;
        const uint32_t SI5351_MULTISYNTH_DIVBY4_FREQ = si5351_xtal * 6;
        const uint32_t SI5351_PLL_C_MAX              = 1048575;
        const uint32_t SI5351_PLL_B_MAX              = (SI5351_PLL_C_MAX-1);
    
        uint32_t a, b, c;
        uint64_t nom, den;
        double divpll, divms, fpll, k;
        uint8_t rdiv = SI5351_OUTPUT_CLK_DIV_1;
        bool div4 = false;
    
        if (freq >= ((si5351_xtal * 9) >> 1))
        {
            //Use output multisynth constant divider = 4, 
            //calculate PLL feedback multisynth to set desired frequency
            if (freq >= SI5351_MULTISYNTH_DIVBY4_FREQ)
                divms = 4.0;
            else
                divms = 6.0;
            divpll = (freq / ((double)si5351_xtal)) * divms;
            //Calculate a, b, c (pll feedback multisynth parameters)
            a = (uint32_t)floor(divpll);
            b = 0;
            c = 1;
            k = divpll - a;
            nom = (uint64_t)(k * 0x6FFFFFFFFFFFFFFFull);
            den = 0x6FFFFFFFFFFFFFFFull;
            rational_best_approximation(nom, den, SI5351_PLL_B_MAX, SI5351_PLL_C_MAX, &b, &c);
            fpll = si5351_xtal * ((double)a + (double)b / (double)c);
        }
        else
        {
            //Set PLL to maximum frequency, calculate output multisynth divider
            
            //Handle frequencies below 1 MHz
            if (freq < (SI5351_MULTISYNTH_MIN_FREQ / 64))
                rdiv = SI5351_OUTPUT_CLK_DIV_128;
            else if (freq < (SI5351_MULTISYNTH_MIN_FREQ / 32))
                rdiv = SI5351_OUTPUT_CLK_DIV_64;
            else if (freq < (SI5351_MULTISYNTH_MIN_FREQ / 16))
                rdiv = SI5351_OUTPUT_CLK_DIV_32;
            else if (freq < (SI5351_MULTISYNTH_MIN_FREQ / 8))
                rdiv = SI5351_OUTPUT_CLK_DIV_16;
            else if (freq < (SI5351_MULTISYNTH_MIN_FREQ / 4))
                rdiv = SI5351_OUTPUT_CLK_DIV_8;
            else if (freq < (SI5351_MULTISYNTH_MIN_FREQ / 2))
                rdiv = SI5351_OUTPUT_CLK_DIV_4;
            else if (freq < (SI5351_MULTISYNTH_MIN_FREQ))
                rdiv = SI5351_OUTPUT_CLK_DIV_2;
    
    
            divpll = ((double)SI5351_PLL_VCO_MAX) / ((double)si5351_xtal);
            //Calculate a, b, c (pll feedback multisynth parameters)
            a = (uint32_t)floor(divpll);
            b = 0;
            c = 1;
            k = divpll - a;
            nom = (uint64_t)(k * 0x6FFFFFFFFFFFFFFFull);
            den = 0x6FFFFFFFFFFFFFFFull;
            rational_best_approximation(nom, den, SI5351_PLL_B_MAX, SI5351_PLL_C_MAX, &b, &c);
            fpll = si5351_xtal * ((double)a + (double)b / (double)c);
            divms = fpll / (double)(freq * (1 << rdiv) * (div4 ? 4:1));
        }
        pi->a = a;
        pi->b = b;
        pi->c = c;
    
    
        // Calculate a, b, c (output multisynth parameters) from divms calculated above
        b = 0;
        c = 1;
        if (divms == 4.0)
        {
            a = 4; //MS divider is integer
        }
        else if (divms == 6.0)
        {
            a = 6; //MS divider is integer
        }
        else
        {
            //MS divider is fractional
            a = (uint32_t)floor(divms);
            k = divms - a;
            nom = (uint64_t)(k * 0x6FFFFFFFFFFFFFFFull);
            den = 0x6FFFFFFFFFFFFFFFull;
            rational_best_approximation(nom, den, SI5351_PLL_B_MAX, SI5351_PLL_C_MAX, &b, &c);
        }
        mi->a = a;
        mi->b = b;
        mi->c = c;
        mi->rdiv = rdiv;
        mi->divby4 = div4;
    }
    
    //
    // http://en.wikipedia.org/wiki/Continued_fraction
    //
    void rational_best_approximation(
        uint64_t given_numerator, uint64_t given_denominator,
        uint32_t max_numerator, uint32_t max_denominator,
        uint32_t *best_numerator, uint32_t *best_denominator)
    {
        uint64_t n, d, n0, d0, n1, d1;
        n = given_numerator;
        d = given_denominator;
        n0 = d1 = 0;
        n1 = d0 = 1;
        for (;;)
        {
            uint64_t t, a;
            if ((n1 > max_numerator) || (d1 > max_denominator))
            {
                n1 = n0;
                d1 = d0;
                break;
            }
            if (d == 0)
                break;
            t = d;
            a = n / d;
            d = n % d;
            n = t;
            t = n0 + a * n1;
            n0 = n1;
            n1 = t;
            t = d0 + a * d1;
            d0 = d1;
            d1 = t;
        }
        *best_numerator = (uint32_t)n1;
        *best_denominator = (uint32_t)d1;
    }

  3. #13
    Цитата Сообщение от sgk Посмотреть сообщение
    Если можно, то картинки для частот в районе 3,5 МГц для сравнения с ламповыми ГПД.
    Сергей, картинки постараюсь выложить завтра. Правда, моя техника пока не позволяет смотреть ниже - 70 дБ от максимума.
    Насколько понимаю, интересует ближняя зона?
    В данный момент не располагаю временем для более точных измерений, т.к. уезжаю в отпуск.
    После отпуска достану с чердака HIQSDR и приёмник прямого преобразования (с SI570 в качестве гетеродина) и внешнюю звуковую карту.
    С этой техникой думаю, поточнее результаты будут.

  4. #14

    Регистрация
    10.11.2016
    Адрес
    Харьков
    Сообщений
    4,420
    помоемому чистота сигнала si5351 выше крыши для любительских трансиверов. Гармоники только фильтром отрезать нужно. Спуры на уровне -80 дБц получаются (при правильной разводке, нагрузке и монтаже естественно).
    Если нужно чище, тогда si570, но для любительских конструкций, это имхо уже перебор.

  5. #15
    Цитата Сообщение от alex_m Посмотреть сообщение
    Гармоники только фильтром отрезать нужно.
    Почему необходимо фильтровать гармоники? Ведь при использовании в качестве гетеродина смесителя, гармоники всё равно возникнут на нелинейностях смесителя. Вопрос не обязательно к Вам.

  6. #16
    По поводу вычисления коэффициентов. Возьмём пример для частоты кварца 27003000 Гц, выходной частоты 69200000 Гц.
    Выход делим кратно частоте, а герцы подстраиваем двигая частоту ГУНА который на 900МГц по даташиту должен работать.
    Я правильно понял?
    Кстати у Юрия в антенном анализаторе хорошие библиотеки по SI5351.
    Зри в корень

  7. #17

    Регистрация
    10.11.2016
    Адрес
    Харьков
    Сообщений
    4,420
    Цитата Сообщение от Vlad9 Посмотреть сообщение
    Кстати у Юрия в антенном анализаторе хорошие библиотеки по SI5351.
    код, что я выше привёл - это и есть на основе алгоритма расчёта Юрия в антенном анализаторе, только у него там мелкие неточности были из-за чего при отличии частоты кварца от ровно 27 МГц, коэффициенты немного неточно считались. Я это дело почистил и отделил код расчёта от записи регистров.

  8. #18
    Цитата Сообщение от Vlad9 Посмотреть сообщение
    Выход делим кратно частоте, а герцы подстраиваем двигая частоту ГУНА который на 900МГц по даташиту должен работать.
    Я правильно понял?
    Да, правильно. Частота ГУНа может находиться в пределах 600...900 МГц.

    На текущий момент уже много наработок по программированию "сишки".
    При отсутствии возможности/желания/времени можно ими пользоваться как стандартной библиотекой, не вникая в суть алгоритма.
    Например, при использовании кода Андрея (******) код управления "сишкой" вынесен в отдельные модули (файлы).
    Достаточно их прицепить и из основного модуля вызывать функцию setfreq(freq1,freq2, freq3).

  9. #19

    Регистрация
    10.11.2016
    Адрес
    Харьков
    Сообщений
    4,420
    Цитата Сообщение от RXDX Посмотреть сообщение
    Да, правильно. Частота ГУНа может находиться в пределах 600...900 МГц.
    частоту PLL можно задавать в гораздо более широких пределах, но работоспособность будет зависеть от параметров мультисинта.


  10. #20
    Картинки приема сигнала приёмником SDRPlay RSP1A.
    Источником является генератор на SI5351A из состава Network Analyzer ******.
    В прошивке включен только выход СLK0.

    Помимо основной частоты, на спектре присутствуют выбросы (спуры) минус (45..65) дБ от максимума. Это выбросы скорее всего, являются фантомными. Приёмник имеет зеркальные каналы. Одним словом, вещь в себе. Другими средствами подтвердить наличие выбросов не удалось. При перестройке частоты приёмника выбросы ведут себя другим образом, чем основной сигнал. Единственно, в чём есть уверенность - это "горбы" плюс-минус 50 кГц по уровню -70 дБ.

    Подчеркну, что с используется встроенный генератор опорной частоты с внешним кварцем 27 МГц типа "лодочка". Питание SI5351A по USB через стабилизатор AMS1117-3.3. Приёмник также питается по USB. То есть, никаких мер класса "State of Art" принято не было.

    Конечно, сетап далёк от идеала. Но и он показывает, что по уровню - (60...70) дБ проблем нет.

    Для частот 3.5 и 39 МГц сделаны картинки в ближней зоне, насколько это возможно.

    Нажмите на изображение для увеличения. 

Название:	3500_1.jpg 
Просмотров:	336 
Размер:	107.2 Кб 
ID:	302190Нажмите на изображение для увеличения. 

Название:	5200.jpg 
Просмотров:	241 
Размер:	165.0 Кб 
ID:	302191Нажмите на изображение для увеличения. 

Название:	10900.jpg 
Просмотров:	207 
Размер:	174.5 Кб 
ID:	302192Нажмите на изображение для увеличения. 

Название:	12600.jpg 
Просмотров:	213 
Размер:	171.3 Кб 
ID:	302193Нажмите на изображение для увеличения. 

Название:	16090.jpg 
Просмотров:	204 
Размер:	171.9 Кб 
ID:	302194Нажмите на изображение для увеличения. 

Название:	25000_1.jpg 
Просмотров:	194 
Размер:	161.7 Кб 
ID:	302195Нажмите на изображение для увеличения. 

Название:	39000.jpg 
Просмотров:	183 
Размер:	159.7 Кб 
ID:	302196Нажмите на изображение для увеличения. 

Название:	39000_1.jpg 
Просмотров:	245 
Размер:	102.0 Кб 
ID:	302197
    Последний раз редактировалось RXDX; 12.12.2018 в 11:56.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Качество сигнала(модуляции?) коммерческих радиостанций в УКВ
    от ink740 в разделе Темы не вошедшие в другие разделы форума
    Ответов: 24
    Последнее сообщение: 14.03.2019, 23:30
  2. Применение SI5351
    от Валерий в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 6
    Последнее сообщение: 05.12.2018, 21:04
  3. Ответов: 28
    Последнее сообщение: 04.05.2008, 00:57
  4. Как повысить качество сигнала синтезатора?
    от OM_PETER в разделе Технический кабинет
    Ответов: 14
    Последнее сообщение: 18.10.2006, 18:50
  5. Частота гетеродина относительно входного сигнала и качество
    от Наставник в разделе Технический кабинет
    Ответов: 6
    Последнее сообщение: 04.05.2005, 18:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •