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

LPC210x - Настоящий ли там PLL?

Да, допустим, будет иметь джиттер полтакта от частоты после умножителя (сотни мегагерц)- это критично?

 

Мне надо, чтобы фронты шевеления GPIO имели постоянный фазовый сдвиг относительно входной частоты (более-менее постоянный). Относительно той частоты, которая потом умножается.

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


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

Мне надо, чтобы фронты шевеления GPIO имели постоянный фазовый сдвиг относительно входной частоты (более-менее постоянный). Относительно той частоты, которая потом умножается.

Если не будет деления, а множитель на 4 то не вижу никаких причин, что-бы от реализации PLL чего-либо зависило. Кстати, судя по наличию нижней границы частоты, PLL там "аналоговый", но если Вам нужен LPC210x, то тестировать LPC23 некорректно - там явно другой PLL.

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


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

что-бы от реализации PLL чего-либо зависило.

 

Если там действительно PLL (ФАПЧ) - то все будет правильно. А вот если там словом PLL обозвано, например, АПЧ (без фазы), то (_*_).

 

Смущает то, что PLL у Atmel'а имеет внешний фильтр. Возможно - дань традиции или "ниасилили", но...

 

но если Вам нужен LPC210x, то тестировать LPC23 некорректно - там явно другой PLL.

 

Думаете? Частота генератора выше, а вот реализация врядли сильно отличается.

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


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

Дык глаз-диаграммы сигнала с шевелящегося пина (развертка засинхронизирована с частотой кварца) с накоплением в десяток миллисекунд будет вполне достаточно.

К своему стыду я не знаю что такое глазковая диаграмма, т.е. как ее грамотно получить (кнопки на моем осциллоскопе с соответствующей надписью нет, в инструкции тоже не нашел). Если сможете дать хорошую ссылку то постараюсь сделать. Опять же вопрос - будет ли заменой следующее измерение: синхронизируемся от кварца, развертываем период сигнала на весь экран и делаем накопление за некоторое время (до бесконечности)?

Соответственно на экране получим полосу определенной ширины формой повторяющей сигнал, и чем она уже тем меньше фазовый шум (надеюсь я правильно понимаю).

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


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

Соответственно на экране получим полосу определенной ширины формой повторяющей сигнал, и чем она уже тем меньше фазовый шум (надеюсь я правильно понимаю).

 

Дык это и есть глаз-диаграмма, грубо говоря.

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


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

Думаете? Частота генератора выше, а вот реализация врядли сильно отличается.

И минимальная опорная еще от 32KHz вместо 10MHz у LPC21xx. Cущественная разница. Вам нужен дополнительный простор для фантазий? Похоже, если пробовать, то Вам чего-то конкретно что-то LPC2106/01 требуется.

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


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

И минимальная опорная еще от 32KHz вместо 10MHz у LPC21xx.

 

Дополнительным делителем. Ладно, попробуем на 2378 и понадеемся, что в 210x/01 тоже самое. Должен же быть фарт в жизни, тем более, что путь для отступления есть :)

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


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

Дополнительным делителем.

Причем тут делитель? Минимум входной частоты от 32KHz вместо 10MHz. Совсем совсем другие условия работы ФАПЧ.

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


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

Причем тут делитель?

 

Ну я так мыслю, что это точно отдельным костылем обеспечивается (и дополнительными битами в делителе M-divider на рисунке 16 в UM10211 LPC23XX User Manual). Хотя, конечно, Вы правы - нужна другая постоянная фильтра. Если он там есть, кстати...

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


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

Если он там есть, кстати...

При этом у LPC23/4 есть встроенный генератор, т.е. какая никакая реактивность в потрохах реализована, а у 210x такого и близко нет... Если уж пробовать, то на реальном железе. Иначе просто кинте монетку ;)

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


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

Ну железа всякого и у меня много. Измерители того-же джитера имеются (правда под телекомуникации - 2048-8448-25776-34368 килобит)... Если на LPC21xx Могу, например, на олимексовcкой P2148 (без FAST GPIO) кварц -любой, попробовать.

А разве LPC2148 бывает без FastGPIO ?

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


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

А разве LPC2148 бывает без FastGPIO ?

Описался :( там сейчас запаян один и первых 2138 - без Fast

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


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

Дык это и есть глаз-диаграмма, грубо говоря.

Наверное я слишком опрометчиво предложил Вам помощь, но я постараюсь оправдать ожидания.

Итак что сейчас есть.

0. Запустить Ваш пример мне не удалось, наверное было моей ошибкой написать про IAR ибо не волоку в нем нифига

1. Попробовал сделать свой пример, пока вот такой (см. вложение) на WinARM (тоже волоку в нем слабо). Там настройки GPIO, PLL и MAM сделанные практически тупым копипастом с Вашего проекта, единственное не стал заморачиваться с подсаживанием IARовских дефайнов (после нехитрых манипуляций - закомментирования конструкции{ if трам пам пам; error "этот файл только для ЯРА" endif} - подсадить не удалось) поэтому наскоро сделал свои дефайны битов

3. Пока функция дрыганья ногами не размещена в ОЗУ (просто делал чтобы посмотреть будут-ли шевеления ногами и т. п.), сейчас буду разбираться как разместиь ее где нада с помощью WinARM.

Продолжение в следующем посте

#include 
#include 
#include "lpc23xx.h"

void StartPLL(void);
void GPIOinit(void);

int main(void){
     // MAM init
#define MODECTRL 0 //MODECTRL 1:0
#define CYCLES   0 //CYCLES 2:0
   MAMCR = 0;
   MAMTIM = 3< 40 MHz
   MAMCR = 2<
   StartPLL();
   GPIOinit();
   FIO2DIR = (1<<4)|(1<<3);
   while(1)
       FIO2PIN ^= (1<<4)|(1<<3);
   return 0;
}


void StartPLL(void)
{
#define OSCRANGE    4
#define OSCEN       5
#define OSCSTAT     6

#define PLLC        1
#define PLLE        0

#define CLKSRC      0

#define MSEL        0 //MSEL 14:0
#define NSEL        16 //NSEL23:16

#define PLLSTAT_PLLC 25
#define PLLSTAT_PLLE 24
#define PLOCK       26
#define PCLK_GPIO   2 //PCLK_GPIO 3:2

 // 1. Init OSC
 SCS &=~(1<  SCS |=(1<  // 2.  Wait for OSC ready
 while (!(SCS&(1<
 // 3. Disconnect PLL
 PLLCON &=~(1<  PLLFEED = 0xAA;
 PLLFEED = 0x55;
 // 4. Disable PLL
 PLLCON &=~(1<  PLLFEED = 0xAA;
 PLLFEED = 0x55;
 // 5. Select source clock for PLL
 CLKSRCSEL = (1<
 // 6. Set PLL settings 288 MHz (from 12MHz), Fpll=(2*12(M)*12MHz/1(N))
 PLLCFG = ((12-1)<<  PLLFEED = 0xAA;
 PLLFEED = 0x55;
 // 7. Enable PLL
 PLLCON |= (1<  PLLFEED = 0xAA;
 PLLFEED = 0x55;
 // 8. Wait for the PLL to achieve lock
 while(!(PLLSTAT&(1<
 // 9. Set clk divider settings
 CCLKCFG   = 6-1;            // 1/6 Fpll
 USBCLKCFG = 6-1;            // 1/6 Fpll - 48 MHz
 PCLKSEL0 = PCLKSEL1 = 0;    // other peripherals
 PCLKSEL1 |= 1<
 // 10. Connect the PLL
 PLLCON |= (1<  PLLFEED = 0xAA;
 PLLFEED = 0x55;
}

void GPIOinit(void)
{
#define GPIOM 0
#define IO0DIR (*(volatile unsigned long *)0xE0028008)
#define IO1DIR (*(volatile unsigned long *)0xE0028018)
 // Set to inputs
 IO0DIR  =\
 IO1DIR  =\
 FIO0DIR =\
 FIO1DIR =\
 FIO2DIR =\
 FIO3DIR =\
 FIO4DIR = 0;

 // Enable Fast GPIO0,1
 SCS |=1<
 // clear mask registers
 FIO0MASK =\
 FIO1MASK =\
 FIO2MASK =\
 FIO3MASK =\
 FIO4MASK = 0;

 // Reset all GPIO pins to default primary function
 PINSEL0 =\
 PINSEL1 =\
 PINSEL2 =\
 PINSEL3 =\
 PINSEL4 =\
 PINSEL5 =\
 PINSEL6 =\
 PINSEL7 =\
 PINSEL8 =\
 PINSEL9 =\
 PINSEL10= 0;
}

 

Теперь картинки (не знаю как загрузятся, поэтому номера называть не буду)

Легенда общая: желтый - сигнал с кварца (выход генератора контроллера)

зеленый - сигнал с P2.3

Правильно ли я понял технику измерений? Выскажите замечания, поправки, наставления на путь истинный :)

На одном из рисунков, где присутствует только сигнал с порта синхронизация велась от этого сигнала, приведен он только для оценки его формы и частоты.

Да не нравится мне что-то форма, но куда копать не знаю - помехи, кривая разводка платы, кривые измерения?

 

Да, в завершение.

Сейчас уже достаточно поздно, с работы выгоняют, поэтому завтра продолжу измерения, а пока посмотрю как в ОЗУ разместить функцию. В общем, второй этап измерений завтра ближе к вечеру.

post-38003-1247763512_thumb.png

post-38003-1247763520_thumb.png

post-38003-1247763526_thumb.png

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


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

Наверное я слишком опрометчиво предложил Вам помощь, но я постараюсь оправдать ожидания.

 

Все отлично, никакой опрометчивости.

 

Правильно ли я понял технику измерений?

 

Походу измерили Вы все верно. Первый рисунок (на котором 2 с копейками периодов кварца) на мой вопрос ответил - явно PLL.

 

Мусор похоже лезет через землю. Вам надо было земляные щупы осциллографа зацепить рядом с процессором. Но это уже не важно.

 

Нижний рисунок (на котором только ногодрыг) показывает, что гнусь справился с оптимизацией Common Subexpression Elimination - 9 тактов (?\frac{48MHz}{2*2.(6)MHz}) для приведенного кода соответствует LDR (3 такта), EOR (1 такт), STR (2 такта), B (3 такта) - ничего лишнего.

 

На чем можем и закончить. Благодарю за помощь, будете в Харькове - с меня пиво.

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


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

На чем можем и закончить.

 

Если не секрет, расскажите где нужна синхронность с тактовой частотой? Я держал в руках девайс в котором две AVR-ки тактировались одним генератором. Разработчики сказали, что это максимально увеличивает скорость обмена по SPI между процами. AVR и LPC конечно не одно и тоже, но раз нет никаких задержек по фазе, можно было бы затактировав два проца, использовать это для того же ускорения передачи по SPI(к примеру)? Или бред?

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


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

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

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

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

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

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

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

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

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

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