Как стать автором
Обновить

Комментарии 15

Метод интересный, но есть ряд вопросов:
1) Вроде как различные клоковые блоки умеют сами компенсировать задержки выставляя фазу генерируемого клока в соответствии с фазой целевого в нужном месте. Про Xilinx сейчас не помню, а у альтеры в PLL прям опция была.
2) У DCM, насколько мне не изменяет память, весьма большой шаг подстройки фазы. А вот джиттер клока /в тех местах где стоит АЦП/ обычно весьма невелик. Скорее всего его постоянно будет колбасить вперед-назад, на каждом периоде принятия решения?
3) У некоторых микросхем во входных клоковых пинах нету триггеров — и тогда появится дилемма: то ли рассчитывать на такой метод подстройки и заведомо подавать клок на обычные пины то ли подавать на клоковые, но тогда возникают проблемы с размещением триггера где-то в окрестностях.
4) Опять-таки у альтеры на предыдущих циклонах нельзя подать клок на PLL с неклокового входа. Совсем нельзя ;)
1. Они не могут компенсировать задержку на входе микросхемы.
2. Да, обычно происходит сдвиг вперёд и назад.
3. Такие микросхемы мне не попадались. Но вот ситуации, когда я специально выношу триггер из IOB и размещаю его рядом — такое бывает.
4. Это вообще ужас. У Xilinx так можно делать.
Я не знаю, про какие Циклоны вы говорите,
но у Альтеры на любых поколениях Циклонов — от первого до пятого — клок на PLL можно подать с любого входа.
Открываем хэндбук на, к примеру 4 циклон, на картинке 5-1 на стр. 5-11 (73) и видим подключение к PLL только с dedicated clock inputs. Чтобы убедиться наверняка, читаем предложение (специально выделенное) «The general I/O pins cannot drive the PLL clock input pins» на стр. 5-18 (80). В пятом циклоне действительно клоковую структуру усложнили и можно подавать откуда угодно.
Да, в документе, на который Вы ссылаетесь, действительно есть такая фраза — «The general I/O pins cannot drive the PLL clock input pins». Однако…
Открыл прямо сейчас проект на Cyclone IV E, поменял подключенную к PLL ножку (dedicated) на другую — первую попавшуюся под руку. Скомпилировал — скомпилировалось без ошибок. Только варнинг добавился:
«Warning (15064): PLL „pll:PLL_INST|altpll:altpll_component|pll_altpll:auto_generated|pll1“ output port clk[1] feeds output pin „CLK_o~output“ via non-dedicated routing — jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance».
Вы сейчас вроде написали про вывод клока с PLL на выходной пин. А речь шла про подачу опорного клока на PLL.
Нет, я поменял именно входную ножку. Почему варнинг ссылается на выходную — я сам не понимаю.
Прошу прощения за дезинформацию. При смене ножки на первую попавшуюся я совершенно случайно попал на другую dedicated-ножку (бывают же совпадения!). Сейчас это заметил и перешёл на ножку, которая на самом деле не является выделенной — проект перестал синтезироваться с ошибкой «Error (176554): Can't place PLL „pll:PLL_INST|altpll:altpll_component|pll_altpll:auto_generated|pll1“ — I/O pin ARDY_i (port type INCLK of the PLL) is assigned to a location which is not connected to port type INCLK of any PLL on the device».

Так что Вы совершенно правы.
Есть рабочий вариант как обойти эту ошибку в любом семействе.
Поставьте примитивы lcell и затем global между пином и PLL
Пример с примитивами
lcell lcell (
.in (in_clk),
.out (out_lcell)
);

global global (
.in (out_lcell),
.out (in_pll)
);

Если бы все было так просто! Там физически нету такого соединения, которое бы шло из внутреннего интерконнекта на вход PLL.
Есть возможность каскадирования PLL, но для этого все равно надо чтоб клок попал на первую в ряду PLL. Там про это так написано: This input port is fed by a pin-driven dedicated GCLK, or through a clock control block if the clock control block is fed by an output from another PLL or a pin-driven dedicated GCLK. An internally generated global signal cannot drive the PLL.
Как они так умудрились сделать — черт их знает, загадка для меня…
Не вижу разницы между картинками ситуаций 2 и 3.
Спасибо. Исправил.
Что Вы подразумеваете под «ухудшает трассировку ПЛИС»?
В вашем случае расфазировка очень большая. О каком типе джиттера идет речь?
При описании тактового сигнала можно указать значение джиттера и это значение будет учитывать трассировщик. Чем больше значение джиттера, тем больший запас требуется для трассировки синхронной схемы. К узлу автоподстройки эта фраза прямого отношения не имеет.
Здесь видимо идет речь о периодическом джиттере. Для источников тактовых сигналов он на уровне пикосекунд и менее. Тот джиттер, который Вы описываете — следствие прохождения сигнала через ПЛИС?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории