реклама на сайте
подробности

 
 
> Digital PLL, детали реализации на FPGA
Vengin
сообщение Feb 28 2011, 10:33
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-02-07
Из: Беларусь, г. Минск
Пользователь №: 25 149



Здравствуйте товарищи форумчане.
Помогите пожалуйтса разрешить проблемку. Имеется FPGA Spartan6 (xc6slx100), на вход которой приходит word_clock = (28KHz-200KHz) - частота сэмплиролвания аудиоданных. Внутри FPGA необходимо залочиваться на этот сигнал и генерировать bit_clock = word_clock*128, т.е. частоту индивидуальных битов в сэмлпах. По сути классический PLL - Phase Locked Loop. Вроде бы ничего сложного. Берём внутренний PLL настраиваем как надо и готово. Но сразу же возникают нюансы. В Spartan6 для DCM минимальная входная частота 0,5Mhz, для PLL - 19MHz. Т.е. этот вариант отпадает, т.к. диапазон частот входного сигнала 28KHz-200KHz.
Я тогда начал гуглить в сторону Digital PLL, т.е. фактически имплементации PLL на FPGA. Вроде бы даже накопал те же application notes от Xilinx: xapp854 "Digital Phase-Locked Loop (DPLL)", xapp250 "Clock and Data Recovery with Coded Data Streams". Вот структурная схемка DPLL из xapp854:
[attachment=53823:DPLL_xapp854.png]

Вроде бы всё понятно: детектор фазы, фильтр, осциллятор и обратная связь. НО осциллятор (VCO) - внешний по отношению к FPGA. В других виденных мною решениях этот блок (VCO - Voltage Control Oscillator или NCO/DCO - Numerical/Digital Control Oscillator) тоже был или внешний, или основывается на принципе задержки сигнала в цепочке соединённых логических элементов (ring oscillato):
[attachment=53824:DCO.png]
Но по-моему такую штуку не очень то получится сделать в FPGA. Для этого нужно как-то учитыавть задержки индивидуальных LUT-ов и рутинга, и "зафиксировать" результат , чтобы он не менялся от раскладки к раскладке (partition? mapping constraints?).

Так вот собственно вопросы:
1. Правильно ли я вообще рассуждаю и в том ли направлении копаю?
2. Можно ли сделать DPLL только средствами FPGA, без использования внешних микросхем VCO/DCO.
3. Может можно как-то заставить работать встроенные DCM/PLL на более низких входных частотах?

Т.е. собственно главная задача это залочиться на входную частоту сэмплирования word_clock = (28KHz-200KHz) и сгенерировать сигнал с частотой x128 для индивидуальных битов в сэмпле.

Please help...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shtirlits
сообщение Feb 28 2011, 12:11
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



А на плате еще какие-то источники клока есть?
Go to the top of the page
 
+Quote Post
Vengin
сообщение Feb 28 2011, 12:51
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-02-07
Из: Беларусь, г. Минск
Пользователь №: 25 149



Цитата(Shtirlits @ Feb 28 2011, 14:11) *
А на плате еще какие-то источники клока есть?
Есть, несколько разных: 22.579 MHz (44.1KHz*512), 24.576MHz (48KHz*512), 62.208MHz, 125MHz. Но я не совсем понимаю к чему вы клоните.

Цитата(DmitryR)
Еще интереснее. А буфер у вас на запись какой частотой тактируется, раз ему на вход данные приходят последовательно?
На запись тактируется частотой 125 MHz (физическая частота входдного потока). Но это не столь важно. Запись и чтение разделены во времени (ping-pong) и в разных клоковых доменах. Важно что дальше их нужно обрабатвыать по вышеуказанной схеме (bit_clok = word_clock*128).
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 12:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016