[an error occurred while processing this directive]
Что уж ты таких простых вещей не сообразиш...
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SSE 25 октября 2002 г. 02:45
В ответ на: Умножение частоты отправлено Teddy 23 октября 2002 г. 17:06

Да все так и должно быть.

Вот смотри: из 20 (идеально точных)МГц 500кГц получается делением на 40. Замечательно!
Но если твоя "умножаемая" частота такова, что результат должен быть (500кГц + 1Гц)? Твой измерительный счетчик насчитает только 39(чуть-чуть уже не хватит времени, чтобы "сосчитать" 40-й импульс).
Но ведь реально 20000/39 = 513 (без малого)!!! Т.е. в районе результата 500кГц твоя погрешность (максимальная) ДОЛЖНА достигать 13КИЛО!Гц.

А на 50кГц - будет сколько? Думаешь 1,3кГц? Отнюдь: 20000/399 = 50,125 , т.е. 125Гц всего.
На 5кГц (20000/3999) максимальная погрешность 1,25Гц всего.
И так далее.

Но такие умножители должны давать (тут ты прав) абсолютно точный результат независимо от величины входной (умножаемой) частоты. За счет чего это достигается? Да просто синхронизуют ДПКД входной последовательностью. Делают его так, чтобы он декрементировав записанное в него число (коеффициент деления) до нуля на ПОСЛЕДНЕМ интервале (в твоем случае - 100-м), в нуле вставал. А с приходом очередного активного фронта входной последовательности, запускался вновь. Тогда каждый ПОСЛЕДНИЙ интервал "умноженной" последовательности на периоде "умножаемой" будет всего лишь несколько длиннее остальных. Это "несколько" на низких частотах может быть совсем незаметно, а на высоких = "в разы"(!!!), в соответствие с вышеприведенным расчетом.
Фазовая ошибка в последнем случае будет огромной, Но!!! показания частотомера будут стоять колОм.

Обрати внимание: твои показания ниже 500кГц (495), а мой расчет говорит: должно быть выше (513). Это значит, что реально твой коэффициент деления ДПКД больше расчетного. Почему - вопрос отдельный (по всей видимости, ты лишний такт тратишь на обнуление измерительного счетчика с перезаписью его результата в регистр) Но это в принципе не страшно: просто последний интервал будет не длиннее остальных, а короче. Но ттолько до определенных пределов. В моем (идеальном) случае он может быть длиннее как угодно, без ограничений. А в твоем (N+1)- короче, пока не начнет сжирать соседние интервалы. Иными словами, с ростом умножаемой частоты, ты сначала будешь множить как надо, на 100, но поттом это 100 превратится в 99, потом - в 98, и так далее.

В твоем случае лишних 13кГц должны "сожрать" всего два интервала. Результат по частотомеру должен быть 498. А у тебя - 495. Значит твой РЕАЛЬНЫЙ коэффициент деления не N, и даже не (N+1), а (N+2)! Т.е. ты ДВА тактовых импульса тратишь на всяки разны накладные дела.

Так разберись с этим делом, скорректируй коэффициент пересчета ДПКД искусственно, с учетом твоих реальных накладных расходов тактовой частоты.

Но самый фатальный для тебя вывод: корректно умножить таким образом 5кГц на 100 при тактовой 20МГц НЕЛЬЗЯ вообще!!! Нужно 200МГц (ПОВЫШАТЬ надо, а не понижать!!).

Или использоватть ДПКД с ДРОБНЫМ коэффициентом деления :о)
Это более корректный способ. Сам посоображай :)
Даю наводку: попробуй размазать фазовую погрешность РАВНОМЕРНО по ВСЕМ интервалам, а не концентрировать ее в ПОСЛЕДНЕМ.
Тогда и 20-и хватит с избытком.
Задачка тривиальная.

ЗЫ. К ГУРУ от всяких хHDLей. Хороший пример, кстати: тот самый случай, когда СХЕМОТЕХНИКУ знать надо! :)))) И крайне полезны АСИНХРОННЫЕ операции, не в кварцевой сетке, а на задержках. Попытки решить проблему "чиста синхронна" ведут к росту накладных потребляемых ресурсов микросхемы, сравнимых с основной частью проекта.


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru