Jump to content

    

Делитель частоты с дробным коэффициентом

Здравствуйте. Надо сделать делитель частоты, чтобы коэффициент деления был дробным.

 

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

Share this post


Link to post
Share on other sites
Здравствуйте. Надо сделать делитель частоты, чтобы коэффициент деления был дробным.

 

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

PLL с динамической настройкой частоты

 

Не подходит?

Share this post


Link to post
Share on other sites
PLL и

Динамическая настройка PLL

Не подходит?

Думал об этом. Почитал документацию к используемой серии ПЛИС (Xilinx Virtex - 5), и вроде как там нет такой возможности. Возможно,я не внимательно смотрел или что-то не так понял. Посмотрю еще раз.

 

 

Share this post


Link to post
Share on other sites
Думал об этом. Почитал документацию к используемой серии ПЛИС (Xilinx Virtex - 5), и вроде как там нет такой возможности. Возможно,я не внимательно смотрел или что-то не так понял. Посмотрю еще раз.

стр 58

http://www.xilinx.com/support/documentatio...uides/ug190.pdf

 

Еще можно попробовать так (документ старенький!) - во вложении, но я бы воспользовался динамической настройкой PLL

UnusualClockDeviders.pdf

Share this post


Link to post
Share on other sites

Приветствую!

 

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

 

Вариантов усложнить себе жизнь много - один из самых простых - каждый такт F1 суммируете в регистр шириной N бит константу K =<2^(N-1). Старший бит регистра будет выходом деленной частоты F2=F1*K/2^N.

 

Успехов! Rob.

 

Share this post


Link to post
Share on other sites

Если фазовая точность выходного сигнала не важна, то можно воспользоваться фазовым аккумулятором, вот тут нормально объясняется. Я обычно использую для тактирования UART-ов, чтобы не занимать PLL, но народ даже для генерации пиксельного клока и цветовой поднесущей на видеовыходе ухитряется использовать.

Share this post


Link to post
Share on other sites
Здравствуйте. Надо сделать делитель частоты, чтобы коэффициент деления был дробным.

 

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

Главный вопрос - для чего потом вам нужна эта частота? Есть несколько разных способов получить дробную частоту. Всё зависит от конкретных условий (соотношения частот, абсолютный значения частоты и для чего потом планируете её использовать). Самый распространённый способ получения такой частоты - NCO. Но в этом способе есть свои особенности.

 

Share this post


Link to post
Share on other sites
стр 58

http://www.xilinx.com/support/documentatio...uides/ug190.pdf

 

Еще можно попробовать так (документ старенький!) - во вложении, но я бы воспользовался динамической настройкой PLL

Спасибо, посмотрю.

 

 

Приветствую!

 

 

 

Вариантов усложнить себе жизнь много - один из самых простых - каждый такт F1 суммируете в регистр шириной N бит константу K =<2^(N-1). Старший бит регистра будет выходом деленной частоты F2=F1*K/2^N.

 

Успехов! Rob.

Спасибо, идея понятна.

 

 

Если фазовая точность выходного сигнала не важна, то можно воспользоваться фазовым аккумулятором, вот тут нормально объясняется. Я обычно использую для тактирования UART-ов, чтобы не занимать PLL, но народ даже для генерации пиксельного клока и цветовой поднесущей на видеовыходе ухитряется использовать.

Спасибо. Как я понял из описания по ссылке предложенный метод эквивалентен тому, что посоветовал RobFPGA.

 

Главный вопрос - для чего потом вам нужна эта частота? Есть несколько разных способов получить дробную частоту. Всё зависит от конкретных условий (соотношения частот, абсолютный значения частоты и для чего потом планируете её использовать). Самый распространённый способ получения такой частоты - NCO. Но в этом способе есть свои особенности.

По полученным тактовым сигналам производится чтение из памяти и модуляция.

 

Посмотрите здесь.

Спасибо.

 

Share this post


Link to post
Share on other sites

VslavX

 

А как хорошо Ваш метод в железе работает? Я сравниваю результаты в Моделсиме с калькулятором на сайте и при моделировании получаю результат слегка иной. То есть, у меня там еще некоторая стороняя логика есть, которая в итоге вычиляет константу для суммирования; и значение этой константы совпадает с вычисленным на сайте, но частота в итоге чуть больше получается. Или в среднем я все равно получу требуемую? Или ,если мне нужна большая точность при делении частоты, то стоит задуматься о других методах?

Edited by dak

Share this post


Link to post
Share on other sites
Рекомендую: Baud generator

Проект UART целиком .

Те же яйца, только в профиль. Кратко. Лаконично. Настраиваемо.

Спасибо.

 

Жаль, но я не знаю Верилог. По описанию вроде тоже самое,что я на VHDL сделал.

Edited by dak

Share this post


Link to post
Share on other sites
VslavX

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

Сайт не мой, поэтому что там в калькуляторе выдается - сложно сказать. А для генерации Baud_x16 в модуле UART оно вполне подходит и работает хорошо. На выходе будет небольшое дрожание фазы (в пределах периода опорной частоты), но для UART это неважно. Вот пример системы с таким UART-ом. Сейчас разрабатываю модуль видеозахвата для ретрокомпов, по прикидкам метод фазового аккумулятора тоже неплохо подходит для генерации пиксельной частоты.

 

Или ,если мне нужна большая точность при делении частоты, то стоит задуматься о других методах?

Смотря что понимать под точностью, если надо уменьшить jitter - то наращивать опорную частоту, если wander - то увеличивать разрядность сумматора.

 

Share this post


Link to post
Share on other sites
Сайт не мой, поэтому что там в калькуляторе выдается - сложно сказать. А для генерации Baud_x16 в модуле UART оно вполне подходит и работает хорошо. На выходе будет небольшое дрожание фазы (в пределах периода опорной частоты), но для UART это неважно. Вот пример системы с таким UART-ом. Сейчас разрабатываю модуль видеозахвата для ретрокомпов, по прикидкам метод фазового аккумулятора тоже неплохо подходит для генерации пиксельной частоты.

 

 

Смотря что понимать под точностью, если надо уменьшить jitter - то наращивать опорную частоту, если wander - то увеличивать разрядность сумматора.

Спасибо.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this