pavel-pervomaysk 0 20 февраля, 2009 Опубликовано 20 февраля, 2009 · Жалоба Нужно для себя сделать универсальный синтезатор 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 Это получается унас частота ГУНа , но почему то линнейного пересчета вкурить не могу . :( . Буду рад пинку в нужную сторону Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 20 февраля, 2009 Опубликовано 20 февраля, 2009 · Жалоба Буду рад пинку в нужную сторону Я бы находил приближение fvco/fosc с помощью цепных дробей. Формулы, правда, не помню. Поищите. Как только Вы нашли целые числитель и знаменатель дроби, удовлетворяющей требуемой погрешности, решайте дальше соотношение для числителя и наслаждайтесь гигагерцами :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 133 20 февраля, 2009 Опубликовано 20 февраля, 2009 · Жалоба Выбираете шаг перестройки. Это будет Fref. Рассчитываете R: R = Fosc / Fref. Находите коэф. деления N нужной вам частоты: N = Fvco / Fref. 5 младших бит получившегося числа будет А. Следующие 13 будут B. P = 2^5 = 32, те самые 5 бит A. Все число N = P * B + A Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 20 февраля, 2009 Опубликовано 20 февраля, 2009 · Жалоба Частота гуна = [(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 кГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 20 февраля, 2009 Опубликовано 20 февраля, 2009 (изменено) · Жалоба >>Выбираете шаг перестройки. Это будет 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 Вот так вот получилось в плане вывода . Изменено 20 февраля, 2009 пользователем Павлик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 20 февраля, 2009 Опубликовано 20 февраля, 2009 · Жалоба Вот так вот получилось в плане вывода Учтите, выводить нужно 21 бит, а не 24 как у вас, а СЕ=0 должно стоять перед началом вывода бит. Ну и команда CLC в принципе не нужна. Перед началом работы не забудьте проинициализировать все необходимые биты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 133 20 февраля, 2009 Опубликовано 20 февраля, 2009 · Жалоба Учтите, выводить нужно 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 20 февраля, 2009 Опубликовано 20 февраля, 2009 · Жалоба Понял насчет количества бит , спасибо . Сейчас поиграюсь с lmx2316 . 2326 увы нет пока , еще не приехали , о результатах отпишусь . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 20 февраля, 2009 Опубликовано 20 февраля, 2009 · Жалоба Не обязательно. Защелкнутся последние 21 бит. Запись происходит по фронту CE, где будет срез - абсолютно не важно(картина 1.4) Скорее всего можно выдвигать 24 бита, хотя я вот недавно столкнулся с цапом с последовательным вводом, где перезапись идёт либо по приходу 16 бит, либо по фронту LE. Вы-то сами почему в своей программе выдвигаете 19 бит, а не 21? Считаете, что всё равно запишется куда надо (:-)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 21 февраля, 2009 Опубликовано 21 февраля, 2009 · Жалоба Да все должно работать , смотрел схему и пробовал в действии от любительской р-станции 144 / 430 МГц там LMX2316 подключена на шину индикатора 1602 и еще 24С04 линия SDA там висит управление строба отдельно и все работает . Так что все свазанно верно . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 133 21 февраля, 2009 Опубликовано 21 февраля, 2009 · Жалоба Вы-то сами почему в своей программе выдвигаете 19 бит, а не 21? Считаете, что всё равно запишется куда надо (:-)?Потому что в даташите указан размер регистров 19 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 21 февраля, 2009 Опубликовано 21 февраля, 2009 · Жалоба Для 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: Тема решена . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 28 марта, 2009 Опубликовано 28 марта, 2009 (изменено) · Жалоба Вернусь опять к своей теме , возник очень интерестный для меня вопрос. Написал перекодировку частоты для вывода на ЖКИ , работает без проблем на микросхемах 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 работает без проблем , а в даташите все что я перевел , особых отличий кроме диапазона частоты я не увидел. Еще прикрепляю скан вывода данных из проца. Изменено 28 марта, 2009 пользователем Павлик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 28 марта, 2009 Опубликовано 28 марта, 2009 (изменено) · Жалоба Вот тут есть пример работы (с исходниками) - 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 раза и его выход подключается к многофункциональному выводу микросхемы. Изменено 28 марта, 2009 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 28 марта, 2009 Опубликовано 28 марта, 2009 · Жалоба Все это хорошо , но 2306 и 2316 и у меня прекрасно работают , меня интересует именно почему 2326 не работает , и где именно про прескаллер пишут не нашел в даташите , или 5 бит первых это и есть прескаллер ? В Си я не силен , пишу на асме , с примеров мало чего понял . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться