Цитата(Andr2I @ Jan 13 2007, 21:23)

Цитата
Я бы Вам посоветовал взять все же большую тактовую частоту и сделать ЛЗ на сдвиговом регистре, а вот внутри такта более мелкий шаг реализовывать через задержки в элементах.
Именно так и думаю сделать. Но циклон тихоходный (8) и больше 200-250 МГц Квартус начинает ругаться. Можно попытаться повысить частоту на локальной шине сдвигового регистра, но много это не даст (как мне кажется).
Имхо на сдвиговом регистре получите 300-400 Мгц, правда зависит от длины - как только выйдите за пределы 1 LAB, тотчас возрастут задержки роутинга.
Цитата
Тоже думал в этом направлении, но...
1) На выход идет однократный импульс, а не частота.
2) Если попытаться использовать сдвиг тактовой частоты на 90 градусов для сдвигового регистра, то тут тоже не очень хорошо - у циклоновской PLL только три выхода, а альтеровский "коммутатор" позволяет делать выбор тактового сигнала только от двух выходов PLL. Если взять два регистра и тактировать один по спаду, другой по фронту + коммутировать два сдвинутых на 90 градусов clk, то вроде получается, но объединение выходных сигналов на lcell, опять может здорово все испортить. Но где-то 1,5 нс наверное вытяну.
Я имел в виду вот что: на плл получаете 2 частоты, сдвинутые на 90 градусов, а в триггерах используете или clk или !clk. Делаете длинный сдвиговый регистр, который тактируете какой-либо частотой (переключать динамически тактовые входы нельзя), а в конце ставите 4 триггера, каждый из которых тактируете своей сдвинутой частотой. А на самом выходе мультиплексор 4->1. Если предположить, что задержки в каждой ветви мультиплексора будут одинаковы (что очевидно неверно), то можно получить шаг F/4.
В этой схеме непонятно, как аккуратно избегать метастабильности на входе. Ставить 2 триггера, тактируемые сдвинутой частотой, чтобы не загрубить шаг?
Вопрос: а чем лучше для такой задачи xilinx?
PS Сейчас еще один метод в голову пришел ("статистический"):
1. Делаете цепочку lcell как хотели, с мультиплексором на выходе.
2. На один вход подключаете несколько таких цепочек, их выходы объединяете через мультиплексор на итоговый выход.
3. Бросаете это в кристалл, синтезируете и смотрите задержки от входа до выхода при разных значениях адресов мультиплексоров - и пытаетесь подобрать значения задержек через равные шаги. Получаете таблицу соответствия задержки адресам мультиплексоров и используете ее при управлении ЛЗ снаружи кристалла, или ставите перед адресными входами мультиплексоров RAM, в которую заносите полученную таблицу, ну а адрес RAM будет определять нужную задержку в некоторых единицах.