shamrel 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Приветствую! В системе есть тактовая частота Fclk = 200МГц. От этой частоты нужно тактировать АЦП, ЦАП и цепочки фильтров. Причем, частота выборки устанавливается из вне (передается параметр) и может быть любой из Fclk/N , где N -- целое число 16-битное число (включая 1). Как можно это сделать? Делитель на счетчике с загрузкой? Выход не будет синхронным с основной частотой, да и минимальный коэффициент деления 2, а нужно 1 (нет деления). Использовать перестраиваемый PLL? Сильно громоздко получается (в Altera), или может я не до конца разобрался как это сделать. Или смириться с асинхронностью схемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Приветствую! В системе есть тактовая частота Fclk = 200МГц. От этой частоты нужно тактировать АЦП, ЦАП и цепочки фильтров. Причем, частота выборки устанавливается из вне (передается параметр) и может быть любой из Fclk/N , где N -- целое число 16-битное число (включая 1). Как можно это сделать? Делитель на счетчике с загрузкой? Выход не будет синхронным с основной частотой, да и минимальный коэффициент деления 2, а нужно 1 (нет деления). Использовать перестраиваемый PLL? Сильно громоздко получается (в Altera), или может я не до конца разобрался как это сделать. Или смириться с асинхронностью схемы? Использовать поделённую в ПЛИС частоту для тактирования АЦП и ЦАП неправильно, тема неоднократно обсуждалась. Ставьте внешню целочисленную PLL и управляйте её настройками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Чтобы был делитель на 1 - просто добавь мультиплексор, который будет либо от счётчика, либо напрямую пускать клок. И выход счётчика естественно будет синхронным с основной частотой, если его тактировать ею же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima_spb 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Приветствую! В системе есть тактовая частота Fclk = 200МГц. От этой частоты нужно тактировать АЦП, ЦАП и цепочки фильтров. Причем, частота выборки устанавливается из вне (передается параметр) и может быть любой из Fclk/N , где N -- целое число 16-битное число (включая 1). Как можно это сделать? Делитель на счетчике с загрузкой? Выход не будет синхронным с основной частотой, да и минимальный коэффициент деления 2, а нужно 1 (нет деления). Использовать перестраиваемый PLL? Сильно громоздко получается (в Altera), или может я не до конца разобрался как это сделать. Или смириться с асинхронностью схемы? Я делал это достаточно просто. АЦП и ЦАП тактируются максимальной частотой, а содержимое регистров АЦП и ЦАП обнавляются с различной (программируемой) частотой. Т.о. такты я не трогаю - это глобальные цепи с постоянным с фиксированной частотой. Вот частота обновления входного (для АЦП) регистра и выходного (для ЦАП) регистра и задают период дискретизации. Нарисую времянки __/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__/'''\__ Fclk = 200МГц _/''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' CLOCK ENABLE для регистров АЦП и ЦАП для N = 1; __/''''''''\____/''''''''\____/''''''''\____/''''''''\____/''''''''\____/''''''''\____/''''''''\____/ CLOCK ENABLE для регистров АЦП и ЦАП для N = 2; __/''''''''\_________/''''''''\________/''''''''\________/''''''''\_________/''''''''\____ CLOCK ENABLE для регистров АЦП и ЦАП для N = 4; ПРАВДА ЭТО ВАМ НАВЕРНОЕ НЕ ПОДОЙДЕТ=)))) ТУТ ДЕЛИТЕЛЬ КРАТНЫЙ 2 Ставьте внешню целочисленную PLL и управляйте её настройками. ИМХО, это единственный надежный вариант. В ПЛИС системная частота должна быть постоянная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба В ПЛИС системная частота вовсе не обязана быть постоянной. Во встроенные PLL специально заложены возможности переконфигурации на лету, мультиплексоры и гейтеры клоковых сигналов. Просто с постоянной частотой значительно надёжнее и проще получается проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shamrel 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Vascom, имхо, мультиплексор внесет трудно прогнозируемую задержку. Особенно, если учесть, что исходные клоки (делитель 1) и клоки, после делителя (делитель на 2 и более) имеют всяко разную задержку. Да даже в идеале фаза будет смещена на 180. Dmitriyspb, спасибо! Что-то похожее крутилось в голове, но не могло сформироваться! Собственно, делитель не кратный 2, думаю, не составит труда сделать. Главное, что б на выходе длительность разрешающего импульса была равна периоду задающего такта. Внешний PLL -- наверное хорошо, но бюджет устройства крайне ограничен. Каждую лишнюю точку пайки считают. P.S.: Dmitriyspb, отдельное вам спасибо, за то, что показали как в ASCII на диаграмме единичку рисовать, а то я все символом 'T' :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба О задержках будет думать Timing Analyser при сборке. Ни каких проблем не возникнет, просто фазу PLL подвинет (если основной клок завести на PLL и от неё уже всё остальное делать, можно даже с делителем 1). То есть свой внешний клок 200МГц заводишь на PLL, с неё берёшь тоже 200МГц и с ним уже работаешь. Все задержки будут выровнены и выставлены как надо. Мультиплексоры тоже не обычные а специальные клоковые используешь. Я так не помню как примитив называется, но он точно есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima_spb 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Главное, что б на выходе длительность разрешающего импульса была равна периоду задающего такта. Если правильно сделаете формирователь импульсов, то все будет ровненько стоять То есть свой внешний клок 200МГц заводишь на PLL, с неё берёшь тоже 200МГц и с ним уже работаешь. Все задержки будут выровнены и выставлены как надо. Мультиплексоры тоже не обычные а специальные клоковые используешь. Я так не помню как примитив называется, но он точно есть. Не знаю про такой способ... Если это действительно можно, тогда хорошо. Но я бы так не стал делать Просто с постоянной частотой значительно надёжнее. Любое устройство должно работать надежно=)))))))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Не знаю про такой способ... Если это действительно можно, тогда хорошо. Но я бы так не стал делать Это единственный нормальный способ, если требуется от внешнего клока формировать ещё какие-то клоки, даже статически. PLL, подкручивая фазу, позволяет почти не заботиться о задержках клока от пина. Это сильно помогает разводить сложные проекты на высокой частоте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimidrol 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба И как обычно, никто не вспоминает, что ПЛИС для тактирования высокоскоростных АЦП является не лучшим решением ввиду большого джиттера их PLL. blackfin приводил графики деградации SNR и ENOB: http://electronix.ru/forum/index.php?showt...t&p=1389306 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima_spb 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Это единственный нормальный способ может быть И как обычно, никто не вспоминает, что ПЛИС для тактирования высокоскоростных АЦП является не лучшим решением ввиду большого джиттера их PLL. blackfin приводил графики деградации SNR и ENOB: http://electronix.ru/forum/index.php?showt...t&p=1389306 Думаю, что дело говорит.... Где клоки, там надо быть внимательнее=))) 200 МГц не мало Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anton1990 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Приветствую! В системе есть тактовая частота Fclk = 200МГц. От этой частоты нужно тактировать АЦП, ЦАП и цепочки фильтров. Причем, частота выборки устанавливается из вне (передается параметр) и может быть любой из Fclk/N , где N -- целое число 16-битное число (включая 1). Как можно это сделать? Делитель на счетчике с загрузкой? Выход не будет синхронным с основной частотой, да и минимальный коэффициент деления 2, а нужно 1 (нет деления). Использовать перестраиваемый PLL? Сильно громоздко получается (в Altera), или может я не до конца разобрался как это сделать. Или смириться с асинхронностью схемы? У меня примерно такая же ситуация. Такт делиться на 1/2/4/8/16/32 на счетчике и все это идет на управляемый мультиплексор (m16_1) выход которого используется для ТАКТИРОВАНИЯ всей схемы. Максимальная входная частота 200 МГц. Все работает. НО ЭТО КРАЙНЕ НЕПРАВИЛЬНО. Но как говориться: Если нельзя, но очень хочется, то можно. Хочу заметить что проект серийный и проблем от ПЛИС к ПЛИС нет. Но на этапе разработки конечно геморройно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AJIEKCEu 0 14 января, 2016 Опубликовано 14 января, 2016 · Жалоба Я не совсем понимаю схему (недостаточно данных), но если на АЦП клок заходит с плис то делаем следующую вещь: Опорный клок-> Делитель на целое число с учетом DDR триггера на выходе -> выходной DDRC триггер. Отсутствие PLL (и выходного триггера (обязательно расположенного в блоке ввода вывода, у Xilinx это называется iob, у Altera возможно по-другому) даст более качественную выходную частоту нежели с PLL (хотя наверное чуть-чуть хуже, чем при использовании внешних компонентов). Использование DDR триггера позволит делить клок на числа некратные двойке. По идее должно быть сильно лучше чем с PLL. Насколько возможно отсутствие PLL - Не совсем понял из условий задачи. Ещё не совсем понял, как вы выбираете частоту дискретизации извне? У вас гарантированно только полезный сигнал приходит на АЦП? Уже отфильтрован внешними условиями/схемами? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 15 января, 2016 Опубликовано 15 января, 2016 · Жалоба Есть ещё вариант - АЦП и ЦАП работают на максимальной частоте 200МГц всегда, далее в ПЛИС реализуется целочисленный дециматор для сигналов с АЦП и соответственно целочисленный интерполятор в случае ЦАП. По цифровой части получается довольно громоздко и затратно, зато минимум хардверных изменений в плате. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shamrel 0 15 января, 2016 Опубликовано 15 января, 2016 · Жалоба Я не совсем понимаю схему (недостаточно данных), но если на АЦП клок заходит с плис то делаем следующую вещь: Опорный клок-> Делитель на целое число с учетом DDR триггера на выходе -> выходной DDRC триггер. Отсутствие PLL (и выходного триггера (обязательно расположенного в блоке ввода вывода, у Xilinx это называется iob, у Altera возможно по-другому) даст более качественную выходную частоту нежели с PLL (хотя наверное чуть-чуть хуже, чем при использовании внешних компонентов). Использование DDR триггера позволит делить клок на числа некратные двойке. По идее должно быть сильно лучше чем с PLL. Насколько возможно отсутствие PLL - Не совсем понял из условий задачи. Ещё не совсем понял, как вы выбираете частоту дискретизации извне? У вас гарантированно только полезный сигнал приходит на АЦП? Уже отфильтрован внешними условиями/схемами? Собственно, система такая. Есть 4 АЦП, каждый АЦП работает на 50МГц. Тактируется с ПЛИС (Altera). Частота АЦП неизменна. Внутри ПЛИС на каждый канал установлен дециматор CIC. После фильтра данные идут на мультиплексор. Выходы 4 каналов складываются в один большой FIFO. С другой стороны FIFO данные передаются в компьютер. Для работы CIC нужна опорная частота, которая будет определять коэффициент децимации, а по сути эквивалентную частоту дискретизации канала. Этот коэффициент децимации скидывается управляющей программой с компьютера. Таким образом, управление мультиплексоров должно выполнятся на частоте в 4 раза больше, чем частота CIC, и достигать максимума в 200МГц, когда децимация не требуется. На плату приходит 50МГц с внешнего генератора. В кристалле 2 PLL, одна используется для High speed USB, вторую планирую использовать для опроса АЦП. По поводу DDR триггера. Я не знаю как это реализовать. С ПЛИС работаю недавно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться