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

Нужна помощь по делителям частоты на VHDL

Очень долго бьюсь с реализацией на VHDL делителя частоты на дробные числа,у меня появилась задача разделить 60 МГц на 29,29. Может быть кто-нибудь поможет с решением данной проблемы.Заранее благодарю за ответ.

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


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

разделить 60 МГц на 29,29

если речь о 29.29МГц то такую точность не получить ( на VHDL, без аппаратной части - pll),

если о 29.29кГц или 29.29Гц, то идея такая:

пишите счетчик с тактовой частотой 60 МГц, разрядностью в зависимости от требуемой точности по частоте. Выходной частотой будет заведенное на частоту т-тригера значение счетчика (значение надо посчитать)

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


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

если речь о 29.29МГц то такую точность не получить ( на VHDL, без аппаратной части - pll),

если о 29.29кГц или 29.29Гц, то идея такая:

пишите счетчик с тактовой частотой 60 МГц, разрядностью в зависимости от требуемой точности по частоте. Выходной частотой будет заведенное на частоту т-тригера значение счетчика (значение надо посчитать)

 

 

На самом деле мне надо из 60 МГц получить 2,048 МГц, т.е 60/29,29, применяется ПЛИС от ALTERA ACEX 1K пятидесятка

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


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

На самом деле мне надо из 60 МГц получить 2,048 МГц, т.е 60/29,29, применяется ПЛИС от ALTERA ACEX 1K пятидесятка

 

Если не секрет, зачем 2.048. Для какой задачи. Надо полагать, кристалл и генератор на 60 не Вы выбирали.

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


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

На самом деле мне надо из 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 МГц

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


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

уже 2,048 МГц?

такую точность не получите

 

Всё получит.

 

Берём N разрядный сумматор на выходе сумматора ставим регистр, с выхода регистра подаём обратно на один из входов сумматора, на другой вход сумматора подаём константу К, старший разряд регистра наша чатота. f=fclk*K/2^N Чем больше N тем более мелкий шаг частоты генератора можно получить df=fclk/2^N, и соответственно точнее получить нужную частоту.

K=f*2^N/fclk

 

Называется это DDS.

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


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

Если не секрет, зачем 2.048. Для какой задачи. Надо полагать, кристалл и генератор на 60 не Вы выбирали.

 

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

А 2,048- это 64 000*32 из этого я потом получю 32000*32, 16000*32 и т.д. - такты для работы со скоростями 32Кбит/сек,16Кбит/сек и т.д по стыкам.

Изменено пользователем Makarka

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


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

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

А 2,048- это 64 000*32 из этого я потом получю 32000*32, 16000*32 и т.д. - такты для работы со скоростями 32Кбит/сек,16Кбит/сек и т.д по стыкам.

 

64кбод, 32кбод в старт стопном режиме? Типа ком порта?

Не надо никакой кратности. Работайте на несущей 60 Мгц Параметром можно подобрать кратный этой частоте коэффициент пересчета. Необязательно прямо в центр бита попадать. Достаточно, чтобы до стопового бита полученнной частотой не выйти за рамки последнего бита в посылке.

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


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

64кбод, 32кбод в старт стопном режиме? Типа ком порта?

Не надо никакой кратности. Работайте на несущей 60 Мгц Параметром можно подобрать кратный этой частоте коэффициент пересчета. Необязательно прямо в центр бита попадать. Достаточно, чтобы до стопового бита полученнной частотой не выйти за рамки последнего бита в посылке.

 

Нет, надо работать по стыкам С1 и С2,к сожалению есть ГОСТ на эти стыки, если я не ошибаюсь,то на скорости 32 кБит/сек отклонение тактовой частоты должно быть где то 10 Гц

 

Всё получит.

 

Берём N разрядный сумматор на выходе сумматора ставим регистр, с выхода регистра подаём обратно на один из входов сумматора, на другой вход сумматора подаём константу К, старший разряд регистра наша чатота. f=fclk*K/2^N Чем больше N тем более мелкий шаг частоты генератора можно получить df=fclk/2^N, и соответственно точнее получить нужную частоту.

K=f*2^N/fclk

 

Называется это DDS.

 

Спасибо большое за совет,но этот вариант я рассматривал уже.Там получается как бы средняя частота.Ну скорее всего так и приду к данному способу,просто пока ищу другие варианты :)

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


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

Нет, надо работать по стыкам С1 и С2,к сожалению есть ГОСТ на эти стыки, если я не ошибаюсь,то на скорости 32 кБит/сек отклонение тактовой частоты должно быть где то 10 Гц

Спасибо большое за совет,но этот вариант я рассматривал уже.Там получается как бы средняя частота.Ну скорее всего так и приду к данному способу,просто пока ищу другие варианты :)

 

32 кбит это длительность бита где то 30 мкс. Половина бита - 15 мкс.

длительность периода клока 60 мгц - это 16 нс.

Попадаем примерно в середину стартового бита. После приема последнего 8 бита смещение в ту или иную сторону 160 нс. При запасе в 15 мкс.

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


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

Примерно такое же обсуждается в

 

http://electronix.ru/forum/index.php?showtopic=48764

 

На эту тему есть статья может поможет

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


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

Нет, надо работать по стыкам С1 и С2,к сожалению есть ГОСТ на эти стыки, если я не ошибаюсь,то на скорости 32 кБит/сек отклонение тактовой частоты должно быть где то 10 Гц

Спасибо большое за совет,но этот вариант я рассматривал уже.Там получается как бы средняя частота.Ну скорее всего так и приду к данному способу,просто пока ищу другие варианты :)

 

Что ещё за средняя частота? С любой разумной точностью вы можете любую частоту получить без всяких "средних". Естесственно будет джиттер на период клока 60 МГц, но вы же понимаете что без аналоговых цепей в цифре от этого нельзя избавиться.

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


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

Нет, надо работать по стыкам С1 и С2,к сожалению есть ГОСТ на эти стыки, если я не ошибаюсь,то на скорости 32 кБит/сек отклонение тактовой частоты должно быть где то 10 Гц

 

Вот набросал. Тестировать - людей нет. Может кто разбомбит. Буду признателен.

Подставить в параиетры свои значения (достаточно для головного файла).

И в тестбенче, если в моделсиме моделировать.

(Работа на одной глобальной частоте)

txd_rxd_232.zip

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


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

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

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

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

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

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

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

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

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

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