Здравствуйте товарищи форумчане.
Помогите пожалуйтса разрешить проблемку. Имеется 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:
Нажмите для просмотра прикрепленного файла
Вроде бы всё понятно: детектор фазы, фильтр, осциллятор и обратная связь. НО осциллятор (VCO) - внешний по отношению к FPGA. В других виденных мною решениях этот блок (VCO - Voltage Control Oscillator или NCO/DCO - Numerical/Digital Control Oscillator) тоже был или внешний, или основывается на принципе задержки сигнала в цепочке соединённых логических элементов (ring oscillato):
Нажмите для просмотра прикрепленного файла
Но по-моему такую штуку не очень то получится сделать в FPGA. Для этого нужно как-то учитыавть задержки индивидуальных LUT-ов и рутинга, и "зафиксировать" результат , чтобы он не менялся от раскладки к раскладке (partition? mapping constraints?).
Так вот собственно вопросы:
1. Правильно ли я вообще рассуждаю и в том ли направлении копаю?
2. Можно ли сделать DPLL только средствами FPGA, без использования внешних микросхем VCO/DCO.
3. Может можно как-то заставить работать встроенные DCM/PLL на более низких входных частотах?
Т.е. собственно главная задача это залочиться на входную частоту сэмплирования word_clock = (28KHz-200KHz) и сгенерировать сигнал с частотой x128 для индивидуальных битов в сэмпле.
Please help...