|
Преднамеренное изменение тактовой частоты МК |
|
|
|
Mar 12 2009, 18:44
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Народ, вот такой вопрос. Будет ли нормально работать МК, если тактовая частота будет меняться в некоторых пределах, скажем, 20%? Хороший вопрос. В даташитах по этому поводу сказано, что не более чем на 2% от цикла к циклу. Как это согласуется с уверениями о полностью статическом дизайне - я не понимаю. Предлагаю этот вопрос задать Атмелу. Кто напишет на вменяемом английском туда запрос? Потому что я за собой замечаю, что пишу явную ахинею - в языковом смысле. Хуже Гоги, торгующего шаурмой  Цитата =GM= Профессионал Group: Свой Posts: 1 122 Joined: 22-06-06 From: Oxford, UK Member No.: 18 282 Бугага. Вот кто напишет
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 12 2009, 18:50
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(_dem @ Mar 12 2009, 18:34)  Подача частоты с внешнего генератора? Ну да. У меня оформились две идеи по использованию. Одна из них - программный high speed USB 12 МГц. Цитата(Rst7 @ Mar 12 2009, 18:44)  Бугага. Вот кто напишет  Чёрт, даже в голову не приходило, мне проще позвонить и спросить...если они отвечают по телефону.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 12 2009, 18:59
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Rst7 @ Mar 12 2009, 21:44)  Хороший вопрос. В даташитах по этому поводу сказано, что не более чем на 2% от цикла к циклу. ... В описании на те процессоры, у которых есть регистр XDIV (ATmega64...), написано, что после изменения тактовой частоты (записи в XDIV) нужно выполнить 8 NOP-ов. Иначе команды могут неправильно воспринятся. Отсюда можно предположить, что там какая-то проблемма с конвейерами...
|
|
|
|
|
Mar 12 2009, 22:33
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(galjoen @ Mar 12 2009, 18:59)  В описании на те процессоры, у которых есть регистр XDIV (ATmega64...), написано, что после изменения тактовой частоты (записи в XDIV) нужно выполнить 8 NOP-ов. Иначе команды могут неправильно восприняться. Отсюда можно предположить, что там какая-то проблема с конвейерами... Мне кажется, тут другое, при смене коэффициента деления может возникнуть короткий импульс в цепи клока, отсюда одна или несколько команд не считаются или считаются неправильно. Мой же вопрос не о подаче глитчей в цепь клока, а об изменении периода клока, скажем, была частота 5 МГц, соответственно высокий и низкий уровень были по 100 нс, и вдруг после низкого уровня идёт высокий длиной 80 нс, т.е. изменилась частота клока. Ну, это в пределе, а в реале должно быть более плавно.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 13 2009, 06:54
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Как быстро установится внутренний RC генератор при изменении содержимого OSCCAL? Поставьте эксперимент. Скорее всего - в следующем такте. Кстати, на изменение OSCCAL тоже наложено ограничение в +-2% частоты за раз. Только вот.... Помнится мне одна фигня.... Щас гляну.... Неа... Погорячился я с ограничением на OSCCAL. Нету. Да и в "AVR053: Calibration of the internal RC oscillator" в полный рост бинарный поиск. Т.е. значение OSCCAL за раз может измениться аж на четверть диапазона. При этом, после записи в OSCCAL нового значения стоит 2 NOP'а.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 13 2009, 10:50
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(galjoen @ Mar 12 2009, 23:31)  Если дело обстояло бы так, то всего 2-х NOP-ов было бы достаточно, а там именно 8. И не 64, как было бы в худшем случае. И кстати почему тогда бы NOP не мог бы воспринятся/считаться неправильно? А в описании написано, что NOP-ы точно правильно воспримутся 1) Как я понимаю, там стоит предделитель клока на 2-129, ну вот и надо его весь заполнить перед новым использованием. А то может получиться так, что в хвосте регистра остались все единицы и первый же фронт приведет к смене фазы клока. 2) Здесь нопы выступают как бы безопасной программной задержкой. По нопу делается холостая операция, что значит, правильно или неправильно воспримутся? Если будет глитч, ноп просто не прочитается, ну и ничего страшного, от нопа не ждут никакого действия. Страшнее будет, если реальная команда не исполнится, или, если команда двухсловная, вы пропускаете первую половину команды и попадаете на вторую половину команды...
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 22 2009, 22:55
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Да не то, что забил... Полазил по описаниям, так и есть, как вы сказали, т.е. допускается плюс-минус 2% от такта к такту, далее там говорится "изменение частоты более чем на 2% может привести к непредсказуемому поведению, поэтому требуется держать МК в ресете во время смены клока".
Ну и в связи с этим, неохота мне задавать вопрос в атмеловской поддержке, чтобы нарваться на такой очевидный ответ, и прослыть ugly customer (жутким субъектом) (:-). Комизм ещё и в том, что они не поймут, что частоту качать на 20% нужно для создания ФАПЧ на самом микроконтроллере, это выходит за рамки их разумения.
Ну да ладно, я решил задачу по-другому, теперь могу принимать данные с USB аппаратно с помощью SPI, проц 50% времени свободен.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 23 2009, 07:00
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Цитата(Rst7 @ Mar 23 2009, 09:25)  А Вы его не так задайте. Вы спросите - "как согласуется утверждение о полностью статическом дизайне на первой странице и требование +-2%? Могу ли я, согласно первого утверждения тактировать МК от кнопки?"  Сдаётся мне, полностью согласуется. Беглый взгляд на временнЫе диаграммы в любом DS показывает, что для внутренней синхронизации используются не только основная частота CLKcpu, но и её "версии" с различной задержкой, т.е. выполнение команд по времени разбито на части, гораздо меньшие периода входного синхросигнала. Поэтому при резком изменении Fclk возможна ситуация, когда последовательность появления фронтов/спадов внутренних сигналов МК будет нарушена и, например, МК попытается прочитать данные до того, как устаканится адрес, "хвост" команды обгонит "голову". ИМХО, для создания этих задержек используются RC-цепи. Ну, а при медленном изменении тактовой частоты, границы между внутренними синхросигналами не расползаются, и все работает ОК.
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
|
Mar 23 2009, 08:05
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Цитата(Rst7 @ Mar 23 2009, 10:04)  Да ну? Где-же Вы это "бегло увидели"? Ну да! Например в DS на Мегу128: Figure 7 Single Cycle ALU Operation, Figure10 On-chip Data Sram Access Cycles Figure13 External Data Memory Cycles Figure156 External Memory Timing У меня, конечно глаз - не осциллограф, но всё-же ...
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
|
Mar 23 2009, 10:04
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(Nanobyte @ Mar 23 2009, 10:00)  Сдаётся мне, полностью согласуется. Беглый взгляд на временнЫе диаграммы в любом DS показывает, что для внутренней синхронизации используются не только основная частота CLKcpu, но и её "версии" с различной задержкой, т.е. выполнение команд по времени разбито на части, гораздо меньшие периода входного синхросигнала. Поэтому при резком изменении Fclk возможна ситуация, когда последовательность появления фронтов/спадов внутренних сигналов МК будет нарушена и, например, МК попытается прочитать данные до того, как устаканится адрес, "хвост" команды обгонит "голову". ИМХО, для создания этих задержек используются RC-цепи. Если так, то задержки фиксированны и "хвост" успевает закончится до начала "головы" при максимальной тактовой. А вот если дополнительные синхросигналы образуются за счёт умножения тактовой каким-нибудь PLL-ем, то да. Причём и в случае резкого понижения тактовой PLL может слетать. Хотя тогда вопрос "могу ли я тактировать кнопкой" особенно интересен. Аж руки зачесались попробовать минимальную тактовую... времени нету пока.
|
|
|
|
|
Mar 23 2009, 10:17
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Rst7 @ Mar 23 2009, 06:25)  Вы спросите - "как согласуется утверждение о полностью статическом дизайне на первой странице и требование +-2%? Могу ли я, согласно первого утверждения тактировать МК от кнопки?" В принципе это два разных вопроса, не совсем понятно, как вы их связываете друг с другом, но на оба вопроса есть ответ в дейташите. 1) Пмсм под полностью статическим дизайном у них, у атмельцев, подразумевается, что ВСЕ регистры проца не динамические, а статические. Отсюда следует, что теоретически тактовая частота начинается от нуля, что ОТРАЖЕНО в описании. И вы можете тактировать МК от кнопки, раз в год (31 июля) тактируя свой аппарат, правда, такое нафик никому не нужно, но теоретически допустимо. 2) На второй вопрос, какова допустимая скорость изменения периода клока, дан чёткий ответ: плюс-минус 2% от одного клока до другого, если больше, то будьте добры поставить проц в состояние ресет. Почему так - непонятно, но ответ есть.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 23 2009, 10:28
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Особенно интересен момент старта из глубокой спячки всего за 6 тактов. PLL, говорите? Слишком уж частота среза фильтра в обратной связи должна быть высокая... Аж такая, что и фильтра не надо  А, значит, и PLL так себе получается... Цитата В принципе это два разных вопроса, не совсем понятно, как вы их связываете друг с другом Полностью статический дизайн подразумевает, что ограничивается только период CLK (мин. значение), время нахождения его в состоянии 0 и в состоянии 1 (тоже мин. значение). В сторону максимума - любое. Это и записано в Clock Characteristics/External Clock Drive. Но еще эти 2%... Вот тут уже совсем непонятно.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 24 2009, 14:08
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(МП41 @ Mar 24 2009, 16:48)  А я помню ещё на заре появления AVR было сказано, что за счёт внутреннего умножителя на 6 удалось достигнуть 1MIPS=1МГц, в отличии от 51-го ядра. Вероятно, это эффект "ложной памяти". Такого - никогда и никто (производитель, в смысле - выдумки "популяризаторов" не в счет) не заявлял. С самого начала утверждалось: ---- The AVR pre-fetches an instruction during the previous instruction execution and then executes in a single clock cycle. In other CISC- and RISC-like architectures, the external oscillator clock is divided down (by as much as 12 times) to the traditional internal execution cycle. The AVR enhanced RISC microcontrollers execute an instruction in a single clock cycle and are the first true RISC machines in the 8-bit market. ----
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|