Перейти к содержанию
    

Нужно для себя сделать универсальный синтезатор 100 MHz - 2 GHz , почитал доку на 2326 полоса 0,1 МГц- 2,8ГГц . Надеюсь хватит с запасом по верхней частоте .

 

Возникла проблема с пересчетом для данного pll lmx2326 . Глянул ДШ на нее но не совсем понятно

 

К примеру есть формула пересчета

 

fvco = [(P x B) + A] x fosc/R // частота ГУНа считается по формуле

 

B: Preset divide ratio of binary 13-bit programmable counter (3 to 8191) \\ что выставляется здесь

 

A: Preset divide ratio of binary 5-bit swallow counter (0 £ A £ 31; A £ B for LMX2326) \\ что выставляется здесь

 

fosc: Частота опорного генератора к примеру 10 МГц

 

R: Preset divide ratio of binary 14-bit programmable reference counter (3 to 16383) предделитель утановки частоты

 

P: Preset modulus of dual modulus prescaler // LMX2326; P = 32

 

 

Частота гуна = [(32x8191)+31] x 10000000/3 = 262 143 x 3333333.3 = 873 810 000 Это получается унас частота ГУНа , но почему то линнейного пересчета вкурить не могу . :( .

 

Буду рад пинку в нужную сторону

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Буду рад пинку в нужную сторону

Я бы находил приближение fvco/fosc с помощью цепных дробей. Формулы, правда, не помню. Поищите.

 

 

Как только Вы нашли целые числитель и знаменатель дроби, удовлетворяющей требуемой погрешности, решайте дальше соотношение для числителя и наслаждайтесь гигагерцами :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выбираете шаг перестройки. Это будет Fref. Рассчитываете R: R = Fosc / Fref.

 

Находите коэф. деления N нужной вам частоты: N = Fvco / Fref.

 

5 младших бит получившегося числа будет А. Следующие 13 будут B.

 

P = 2^5 = 32, те самые 5 бит A. Все число N = P * B + A

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Частота гуна = [(32x8191)+31] x 10000000/3 = 262 143 x 3333333.3 = 873 810 000 Это получается унас частота ГУНа , но почему то линейного пересчета вкурить не могу. Буду рад пинку в нужную сторону

Ну, получите. Частота гуна у вас 873 810 000 000 или вгрубе 873 ГГц.

 

Стоит частоту сравнения выбрать поменьше, скажем fREF/10000=10 кГц, тогда при А=0, В=6250, Р=32 fГУН=2 000 000 кГц

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>Выбираете шаг перестройки. Это будет Fref. Рассчитываете R: R = Fosc / Fref.

 

К примеру у меня опорник ( Fosc) будет 10,240 МГц (как делают многие), шаг сетки (Fref) 5 кГц считаем

10240 / 5 = 2048 DEC -> 0x800 hex

R = 0x800

 

>>Находите коэф. деления N нужной вам частоты: N = Fvco / Fref.

 

Нужно получить частоту ГУНа (Fvco) 100 МГц 100000 / 5 = 20000 dec -> 0x4E20 hex

 

>>5 младших бит получившегося числа будет А. Следующие 13 будут B.

 

0x4E20 = 0b 0100 1110 001 0 0000

B A

A = 0 0000

B = 010 0111 0001 = 625 dec = 0x271

 

>>P = 2^5 = 32, те самые 5 бит A. Все число N = P * B + A

 

P = 32

N = 32 * 625 + 0 = 20000 dec = 0x4E20

 

С этим понятно , теперь идем к выводу информации в LMX2316/26

 

R = 0x800 его мы заносим в 14-BIT PROGRAMMABLE REFERENCE DIVIDER RATIO (R COUNTER)

 

Посылка первый 21 бит

 

биты 1 2 - контрольные биты = 0 , биты 1 2 3 4 5 6 7 8 9 10 11 12 13 14 = R COUNTER = в данном случае 0х800 ,

 

биты 15 16 17 18 должны быть 0 в нормальном режиме ,

 

бит 19 MSB не понятно 0 или 1 писать в него .

 

Затем посылка следующих 21 бит

 

 

биты 1 2 - контрольные биты = 0 , биты 1 2 3 4 5 = А и тоже = 0 , биты 6 7 8 9 10 11 12 13 14 15 16 17 18 = числу В = 0 0010 0111 0001 (добавляем 2 нуля в старшие разряды )

 

бит 19 MSB не понятно 0 или 1 писать в него .

 

 

В принципе вот такой расчет вывел из предложения выше , спасибо за подсказку , теперь надо проверить это на железе , и остается вопрос правильно ли все я понял и MSB не понятно 0 или 1 писать в него ? .

 

out_lmx:                               

                mov     r29, r19
                rcall   out_byte
                mov     r29, r20
                rcall   out_byte
                mov     r29, r21
                rcall   out_byte
                nop
                nop
                nop
                sbi     PORTB,CE
                sbi     PORTB,CE
                nop
                nop
                cbi     PORTB,CE
                cbi     PORTB,CE
                nop
                nop
                ret




out_byte:                                           
                ldi     r28, 8
otb:                                
                clc
                rol     r29
                brcc    dat_0
                sbi     PORTB,DAT
                rjmp    pulse

dat_0:                                 
                cbi     PORTB,DAT
pulse:                                
                nop
                nop
                sbi     PORTB,CLOCK
                nop
                nop
                cbi     PORTB,CLOCK
                nop
                nop
                dec     r28
                brne   otb
                ret

 

Вот так вот получилось в плане вывода .

Изменено пользователем Павлик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот так вот получилось в плане вывода

Учтите, выводить нужно 21 бит, а не 24 как у вас, а СЕ=0 должно стоять перед началом вывода бит. Ну и команда CLC в принципе не нужна.

 

Перед началом работы не забудьте проинициализировать все необходимые биты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Учтите, выводить нужно 21 бит, а не 24 как у вас, а СЕ=0 должно стоять перед началом вывода бит.
Не обязательно. Защелкнутся последние 21 бит. Запись происходит по фронту CE, где будет срез - абсолютно не важно(картина 1.4). Я гружу LMX2332 обоими способами.

 

бит 19 MSB не понятно 0 или 1 писать в него .
Раздел 1.3.2. Если я правильно его понял - зависит от того, по каким критериям вы хотите оценивать факт захвата.
бит 19 MSB не понятно 0 или 1 писать в него .
А это зависит от вашей реализации захвата: будете использовать быстрый захват - записываете 1, ждете захвата, записываете 0. Не будете - записываете 0 сразу. Раздел 1.3.4.

И не забудьте прописать регистр F.

P.S. Я работал с LMX2332 и PMB2306. По вашему LMX2326 могу подсказать только то, что можно прочесть в даташите.

 

Да, и выводить можно сразу три байта в одном цикле:

LoadSynth:
	LDI		R20,19
LoadCycle:
	off(SYNTH_CLK)

	SBRC	R18,3		; if(Value & (1L << 18)
	on(SYNTH_DATA)
	SBRS	R18,3		; else
	off(SYNTH_DATA)

	on(SYNTH_CLK)
	LSL		R16
	ROL		R17		; Value <<= 1;
	ROL		R18
	DEC		R20
	BRNE	LoadCycle

	on(SYNTH_LOAD)
	off(SYNTH_LOAD)
	RET

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понял насчет количества бит , спасибо .

Сейчас поиграюсь с lmx2316 . 2326 увы нет пока , еще не приехали , о результатах отпишусь .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не обязательно. Защелкнутся последние 21 бит. Запись происходит по фронту CE, где будет срез - абсолютно не важно(картина 1.4)

Скорее всего можно выдвигать 24 бита, хотя я вот недавно столкнулся с цапом с последовательным вводом, где перезапись идёт либо по приходу 16 бит, либо по фронту LE.

 

Вы-то сами почему в своей программе выдвигаете 19 бит, а не 21? Считаете, что всё равно запишется куда надо (:-)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да все должно работать , смотрел схему и пробовал в действии от любительской р-станции 144 / 430 МГц там LMX2316 подключена на шину индикатора 1602 и еще 24С04 линия SDA там висит управление строба отдельно и все работает . Так что все свазанно верно .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы-то сами почему в своей программе выдвигаете 19 бит, а не 21? Считаете, что всё равно запишется куда надо (:-)?
Потому что в даташите указан размер регистров 19 бит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для LMX2306 получилось так , приедет образец 2326 , разберусь уже и с ним .

 

Частота опорного генератора 10000 кГц

 

расчитываем число для установки состояния ( R counter )

 

 

а) 10000 / 2,5 = 4000 -> 0x0FA0

 

Сдвигаем число в лево 2 раза для вывода в LMX2306

 

0x0FA0 = << 2 = 0x3E80

 

выводим первое значение

 

б) выходная частота ГУНа должна быть 20000 кГц

 

шаг сетки 2500 гц / 2,5 кГц

 

20000 / 2,5 = 8000 переводим его в хекс -> 0x1F40

 

Сдвигаем число в лево 2 раза для вывода в LMX2306

 

0x1F40 = << 2 = 0x7D00

 

выводим второе значение

 

в) инит LMX2306

 

устанавливаем контрольный бит С2 и контрольный бит поляризации F6

 

получается число 0х0082

 

выводим третье значение и все на этом посылка закончена

 

 

Спасибо всем , Сергей Борщ :a14:

 

Тема решена .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вернусь опять к своей теме , возник очень интерестный для меня вопрос.

 

Написал перекодировку частоты для вывода на ЖКИ , работает без проблем на микросхемах lmx2316 , а вот lmx2326 ни в какую не хочет работать :( , привожу схему включения ниже.

 

Подаю по 3 байта в 3 захода.

 

0x00, 0x40, 0x08 control bits 00

 

Частота ГУНа 400 МГц , Сетка 2,5кГц

 

0x09, 0xC4, 0x01 control bits 01

 

выбираем поляризацию настройки ГУНа битом 6 ( сдвинуто на 2 )

 

0x00, 0x00, 0x82 control bits 10

 

Вот в ступоре или микросхема дохлая попалась , или во мне проблема. Смущает еще то , что 2316 работает без проблем , а в даташите все что я перевел , особых отличий кроме диапазона частоты я не увидел.

 

Еще прикрепляю скан вывода данных из проца.

 

 

post-33716-1238252414_thumb.png

post-33716-1238252948_thumb.png

post-33716-1238253791_thumb.jpg

Изменено пользователем Павлик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот тут есть пример работы (с исходниками) - http://www.thegleam.com/ke5fx/synth.html

 

Или здесь - http://forum.cqham.ru/viewtopic.php?p=2741...d9c50120#274192

В аттачменте к тому сообщению файл lmx2306.c - работающий. Для lmx2316 и других - другое значение для учета прескалера пропишите в программе.

 

Ну и вообще - шаг 5 кГц на трех гигагерцах частоте пр частоте сравнения 5 кГц? А качество кого-нибудь интересует? Скорость перестройки? В статье John Miles описывается довольно распространенный сейчас принцип - с объяснениями зачем и почему так стоит делать.

 

Вот еще - работающий у меня проект прескалера к частотомеру - там используется LMX2306 + ATMega8

Канал rf программируется на деление в 24 раза и его выход подключается к многофункциональному выводу микросхемы.

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все это хорошо , но 2306 и 2316 и у меня прекрасно работают , меня интересует именно почему 2326 не работает , и где именно про прескаллер пишут не нашел в даташите , или 5 бит первых это и есть прескаллер ?

В Си я не силен , пишу на асме , с примеров мало чего понял .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...