Цитата(Victor® @ Jun 21 2009, 18:21)

Не кажется Вам, что перемудрили?
Сравните полученный для FPGA Tco и требуемый Tsu...
Если Tclk - Tco > Tsu - то и не каких проблем быть не должно (Tclk - период тактовой)
Честно говоря, не понял вашего замечания. Не могли бы вы уточнить, что имелось в виду. Напомню, у меня есть данные и клок, клок должен быть сдвинут (задержан) относительно данных, я реализую это путем размещения выходного регистра данных в триггерах IO элементов ПЛИС, а клок тоже в таком же триггере IO элемента, но подаю его на вход данных (не на тактовый), а на тактовый вход этого триггера подаю вдвое более быстрый клок, сдвинутый на четверть периода основого клока (2.5 нс в моем случае). Таким образом, на выходе четко и гарантировано присутствуют данные с малым "перекосом" и клок, сдвинутый четко на указанную величину.
Цитата(Andr2I @ Jun 21 2009, 21:46)

Интересно, а чем плохо просто из PLL вытащить два клока 100 МГц и 100 МГц, сдвинутые на четверть периода. Первый тактирует выходные D-триггеры, а второй тупо наружу?
Или расчет строится на то, что при тактировании триггеров разными клоками компилятор разместит их в глобальных шинах и задержка там будет минимальна, т.е. лишенго сдвига по времени не будет (при условии одинаковых выходных триггеров и самое главное одинаковых нагрузочных емкостей)?
Такая мысль тоже посещала, но взяло сомнение насчет временных соотношений. Ведь в случае пропускания клока через триггер выходного элемента имеем четкое соотношение в виду жесткой связности клоков. А тут если просто на выход клок метнуть, кто гарантирует, что он выйдет с четкой задержкой относительно данных, протактированных вторым клоком (ловим-то ведь единицы и доли наносекунд)? Ведь у него совершенно другой путь наружу в отличие от варианта с тактированием клока другим - сдвинутым высокочастотным.
К тому же, преимуществ никаких все равно не видно - все та же возня с клоками - их надо два, надо сдвиг, т.е. все упирается в наличие соответсвующей аппаратной приблуды (PLL).
Цитата(Shtirlits @ Jun 22 2009, 06:30)

dxp, правильно вам quartus наругался, клок ходит по проводам, которые для данных предназначены. И неприятность этого заключается не только в разбеге фаз и зависимости от условий. Так как клок покидает глобальную сеть, P&R и STA начинают учитывать не только глобальную сеть клока, но и "отросток", который идет к выходным буфферам. В результате, в узких местах будет надублирована логика, что увеличит площадь, что еще ухудшит разводку и еще надублируется логика. Если действительно узко, CRC какой-нибудь.
Проблемы в целом, связанные с пусканием клока по цепям данных, мне понятны. Но ведь тут-то все же просто - вывели клок через триггер выходного элемента, какие тут могут быть проблемы с джиттером и прочим? Похоже, что квартус тут формально оценивает - раз вывели клок, получите предупреждение.
Цитата(Shtirlits @ Jun 22 2009, 06:30)

Чтобы избавиться от отростка при формировании выходного клока, можно применить трюк:
Что у вас есть - два клока с гарантированным PLL-ем сдвигом фаз и готовые констрейны о нем - о них заботятся quartus или ISE.
Предполагается, что сдвиг не слишком маленький, чтобы были трудности при передаче данных из регистра в регистр в разных доменах. На VHDL этого примерно так, а вы уложитесь в пару строк:
Код
...
process(fast_clk)
begin
if rising_edge(fast_clk) then
out_clk <= not (reg_f xor reg_r); -- тоже самое, что и закомментированная строка ниже
-- out_clk <= sys_clk
end if;
end process;
Это что, весь этот наворот только для того, чтобы вывести сигнал клока в разряд данных?

Цитата(Shtirlits @ Jun 22 2009, 06:30)

Частота умножается в два раза в PLL (DCM), выход подается на буффер глобальной сети клока и оттуда поступает к тактовым входам выходных буфферов и выходного клока, и данных. Выходной клок формируется как данные (смотри выше), а не берется с выхода PLL и тем более не проходит напрямую к ножке.
Неужели нету средств просто завести клок в сигналы данных? Ну, буфер какой-нить для этого использовать... Надо будет поэскпериментировать.