makar77 0 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба Очень долго бьюсь с реализацией на VHDL делителя частоты на дробные числа,у меня появилась задача разделить 60 МГц на 29,29. Может быть кто-нибудь поможет с решением данной проблемы.Заранее благодарю за ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yura-w 0 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба разделить 60 МГц на 29,29 если речь о 29.29МГц то такую точность не получить ( на VHDL, без аппаратной части - pll), если о 29.29кГц или 29.29Гц, то идея такая: пишите счетчик с тактовой частотой 60 МГц, разрядностью в зависимости от требуемой точности по частоте. Выходной частотой будет заведенное на частоту т-тригера значение счетчика (значение надо посчитать) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makar77 0 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба если речь о 29.29МГц то такую точность не получить ( на VHDL, без аппаратной части - pll), если о 29.29кГц или 29.29Гц, то идея такая: пишите счетчик с тактовой частотой 60 МГц, разрядностью в зависимости от требуемой точности по частоте. Выходной частотой будет заведенное на частоту т-тригера значение счетчика (значение надо посчитать) На самом деле мне надо из 60 МГц получить 2,048 МГц, т.е 60/29,29, применяется ПЛИС от ALTERA ACEX 1K пятидесятка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба На самом деле мне надо из 60 МГц получить 2,048 МГц, т.е 60/29,29, применяется ПЛИС от ALTERA ACEX 1K пятидесятка Если не секрет, зачем 2.048. Для какой задачи. Надо полагать, кристалл и генератор на 60 не Вы выбирали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yura-w 0 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба На самом деле мне надо из 60 МГц получить 2,048 МГц, т.е 60/29,29, применяется ПЛИС от ALTERA ACEX 1K пятидесятка уже 2,048 МГц? такую точность не получите, 60Мгц(16.667нс): 1. 16.667нс*29(значение счетчика) = 483.(3)нс., т.е 2.06896 Мгц 2. 16.667нс*30(значение счетчика) = 500нс., т.е 2.0 Мгц (в ALTERA ACEX, pll - нет, но есть различные входы частоты, при возможности можно добавить частоту кратную 2,048 МГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 8 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба уже 2,048 МГц? такую точность не получите Всё получит. Берём N разрядный сумматор на выходе сумматора ставим регистр, с выхода регистра подаём обратно на один из входов сумматора, на другой вход сумматора подаём константу К, старший разряд регистра наша чатота. f=fclk*K/2^N Чем больше N тем более мелкий шаг частоты генератора можно получить df=fclk/2^N, и соответственно точнее получить нужную частоту. K=f*2^N/fclk Называется это DDS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makar77 0 14 июня, 2008 Опубликовано 14 июня, 2008 (изменено) · Жалоба Если не секрет, зачем 2.048. Для какой задачи. Надо полагать, кристалл и генератор на 60 не Вы выбирали. Да, Вы правы кристалл и генератор я не выбирал,дали уже готовую схему в которой править уже ничего нельзя,т.е. применить другие генероиды не получится. А 2,048- это 64 000*32 из этого я потом получю 32000*32, 16000*32 и т.д. - такты для работы со скоростями 32Кбит/сек,16Кбит/сек и т.д по стыкам. Изменено 14 июня, 2008 пользователем Makarka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба Да, Вы правы кристалл и генератор я не выбирал,дали уже готовую схему в которой править уже ничего нельзя,т.е. применить другие генероиды не получится. А 2,048- это 64 000*32 из этого я потом получю 32000*32, 16000*32 и т.д. - такты для работы со скоростями 32Кбит/сек,16Кбит/сек и т.д по стыкам. 64кбод, 32кбод в старт стопном режиме? Типа ком порта? Не надо никакой кратности. Работайте на несущей 60 Мгц Параметром можно подобрать кратный этой частоте коэффициент пересчета. Необязательно прямо в центр бита попадать. Достаточно, чтобы до стопового бита полученнной частотой не выйти за рамки последнего бита в посылке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makar77 0 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба 64кбод, 32кбод в старт стопном режиме? Типа ком порта? Не надо никакой кратности. Работайте на несущей 60 Мгц Параметром можно подобрать кратный этой частоте коэффициент пересчета. Необязательно прямо в центр бита попадать. Достаточно, чтобы до стопового бита полученнной частотой не выйти за рамки последнего бита в посылке. Нет, надо работать по стыкам С1 и С2,к сожалению есть ГОСТ на эти стыки, если я не ошибаюсь,то на скорости 32 кБит/сек отклонение тактовой частоты должно быть где то 10 Гц Всё получит. Берём N разрядный сумматор на выходе сумматора ставим регистр, с выхода регистра подаём обратно на один из входов сумматора, на другой вход сумматора подаём константу К, старший разряд регистра наша чатота. f=fclk*K/2^N Чем больше N тем более мелкий шаг частоты генератора можно получить df=fclk/2^N, и соответственно точнее получить нужную частоту. K=f*2^N/fclk Называется это DDS. Спасибо большое за совет,но этот вариант я рассматривал уже.Там получается как бы средняя частота.Ну скорее всего так и приду к данному способу,просто пока ищу другие варианты :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 14 июня, 2008 Опубликовано 14 июня, 2008 · Жалоба Нет, надо работать по стыкам С1 и С2,к сожалению есть ГОСТ на эти стыки, если я не ошибаюсь,то на скорости 32 кБит/сек отклонение тактовой частоты должно быть где то 10 Гц Спасибо большое за совет,но этот вариант я рассматривал уже.Там получается как бы средняя частота.Ну скорее всего так и приду к данному способу,просто пока ищу другие варианты :) 32 кбит это длительность бита где то 30 мкс. Половина бита - 15 мкс. длительность периода клока 60 мгц - это 16 нс. Попадаем примерно в середину стартового бита. После приема последнего 8 бита смещение в ту или иную сторону 160 нс. При запасе в 15 мкс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 16 15 июня, 2008 Опубликовано 15 июня, 2008 · Жалоба Примерно такое же обсуждается в http://electronix.ru/forum/index.php?showtopic=48764 На эту тему есть статья может поможет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 8 15 июня, 2008 Опубликовано 15 июня, 2008 · Жалоба Нет, надо работать по стыкам С1 и С2,к сожалению есть ГОСТ на эти стыки, если я не ошибаюсь,то на скорости 32 кБит/сек отклонение тактовой частоты должно быть где то 10 Гц Спасибо большое за совет,но этот вариант я рассматривал уже.Там получается как бы средняя частота.Ну скорее всего так и приду к данному способу,просто пока ищу другие варианты :) Что ещё за средняя частота? С любой разумной точностью вы можете любую частоту получить без всяких "средних". Естесственно будет джиттер на период клока 60 МГц, но вы же понимаете что без аналоговых цепей в цифре от этого нельзя избавиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 15 июня, 2008 Опубликовано 15 июня, 2008 · Жалоба Нет, надо работать по стыкам С1 и С2,к сожалению есть ГОСТ на эти стыки, если я не ошибаюсь,то на скорости 32 кБит/сек отклонение тактовой частоты должно быть где то 10 Гц Вот набросал. Тестировать - людей нет. Может кто разбомбит. Буду признателен. Подставить в параиетры свои значения (достаточно для головного файла). И в тестбенче, если в моделсиме моделировать. (Работа на одной глобальной частоте) txd_rxd_232.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makar77 0 15 июня, 2008 Опубликовано 15 июня, 2008 · Жалоба Спасибо огромное всем за Вашу помощь!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться