|
Digital PLL, детали реализации на FPGA |
|
|
|
Feb 28 2011, 10:33
|
Частый гость
 
Группа: Свой
Сообщений: 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...
|
|
|
|
|
 |
Ответов
|
Feb 28 2011, 12:51
|
Частый гость
 
Группа: Свой
Сообщений: 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).
|
|
|
|
Сообщений в этой теме
Vengin Digital PLL Feb 28 2011, 10:33 DmitryR Цитата(Vengin @ Feb 28 2011, 13:33) на вх... Feb 28 2011, 10:42 Lmx2315 Цитата(DmitryR @ Feb 28 2011, 13:42) Надо... Feb 28 2011, 11:19  DmitryR Цитата(Lmx2315 @ Feb 28 2011, 14:19) ..на... Feb 28 2011, 11:51 Vengin Цитата(DmitryR @ Feb 28 2011, 12:42) Надо... Feb 28 2011, 12:00  DmitryR Цитата(Vengin @ Feb 28 2011, 15:00) Данны... Feb 28 2011, 12:13  DmitryR Цитата(Vengin @ Feb 28 2011, 15:51) Есть,... Feb 28 2011, 13:26 Shtirlits Имея высокую частоту можно получить "битовую... Feb 28 2011, 12:59 stoker Цитата(Vengin @ Feb 28 2011, 13:33) 1. Пр... Feb 28 2011, 13:13 Vengin Цитата(stoker @ Feb 28 2011, 15:13) 2. Ду... Feb 28 2011, 14:23 Shtirlits Какая погрешность устроит?
Можно ли применять тако... Feb 28 2011, 15:00 stoker Цитата(Vengin @ Feb 28 2011, 17:23) Кстат... Feb 28 2011, 15:57 Vengin Цитата(stoker @ Feb 28 2011, 17:57) ...А ... Mar 1 2011, 13:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|