Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как замерить задержку на триггерах
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
iiv
Всем привет,

очень надеюсь, что не сильно Вас всех замучил своими вопросами. Целый день читал мануалы, тестился, но так и не решил одну свою незадачку.

Есть два модуля

Код
module MyDelay(In, Out, InNext, OutNext, Do);
input In, OutNext, Do;
output Out, InNext;

assign Out=(Do)?In:OutNext;
assign InNext=(Do)?OutNext:In;

endmodule


module GenDelay(In, Out, Switch);
parameter K;
input In;
input Switch[0:K-1];
output Out;

wire       I[0:K-2], O[0:K-2], IO;

MyDelay MyDelay_module_Begin(.In(In), .Out(Out), .InNext(I[0]), .OutNext(O[0]), .Do(Switch[0]));
MyDelay MyDelay_module_End(.In(I[K-2]), .Out(O[K-2]), .InNext(IO), .OutNext(IO), .Do(Switch[K-1]));

generate
genvar i;
for(i=0; i<K-2; i++) begin : aaa
   MyDelay MyDelay_module(.In(I[i]), .Out(O[i]), .InNext(I[i+1]), .OutNext(O[i+1]), .Do(Switch[i+1]));
end
endgenerate
endmodule


которые я хочу использовать для организации задержки сигнала примерно таким образом:
Код
parameter K=16;
reg InputSignal;
wire DelayedSignal;
reg R[0:K-1]; // маска для задержки, вида 1...<L раз>...10...<K-L раз>...0, так что первые L единиц характеризуют задержку сигнала на L задержек по тригерам.
GenDelay #(.K(K)) GenDelay_module(.In(InputSignal), .Out(DelayedSignal), .Switch(R));


Скажите, пожалуйста, как квартусом измерить на сколько наносекунд у меня происходит задержка сигнала при разных L. Облазиил весь таймквест, пробовал считать задержки, но, похоже, кривые у меня руки, и ни как не получается это из квартуса выудить.

Посоветуйте, пожалуйста, куда смотреть!

Спасибо

ИИВ
Kuzmi4
2 iiv
Тригеров у вас не будет - будут луты.
Касательно ваших замеров - используйте report_path
iiv
Огромное Вам спасибо!!! Действительно, луты, и действительно, есть задержка. Причем, оказалось, один мой модуль дает примерно 0.3нс задержку на 4-ом циклоне!!!
des00
Цитата(iiv @ Jul 14 2011, 13:59) *
Причем, оказалось, один мой модуль дает примерно 0.3нс задержку на 4-ом циклоне!!!

а теперь нагрейте/охладите его, добавьте больше логики, чуть измените питание ядра и она поплывет.
iiv
Цитата(des00 @ Jul 15 2011, 09:56) *
а теперь нагрейте/охладите его, добавьте больше логики, чуть измените питание ядра и она поплывет.

Добрый день, des00,

спасибо за советы!

С нагрейте/охладите - согласен, правда надеюсь, что поплывет очень существенно, а с остальным, думаю, я знаю как бороться. У меня есть двухканальный осцылл с 1ГГц честным (не аппроксимационным самплингом), а с аппроксимационным, там примерно до 20ГГц можно получить результаты. На нем я получу величину начального рассогласования, запомню ее, а дизайн для плиски сделаю так, что он будет зачитывать извне величину сдвига и учитывать при вычислении самого сдвига.

Рассогласование пока надо менять не очень часто, примерно раз 10 в секунду, не чаще.

ИИВ
Kuzmi4
Цитата(iiv @ Jul 14 2011, 22:59) *
Огромное Вам спасибо!!! Действительно, луты, и действительно, есть задержка. Причем, оказалось, один мой модуль дает примерно 0.3нс задержку на 4-ом циклоне!!!

Можно было и в DS вычитать laughing.gif задержка на луте для С4 как раз равна примерно 300пс
iiv
Цитата(Kuzmi4 @ Jul 15 2011, 13:57) *
Можно было и в DS вычитать laughing.gif задержка на луте для С4 как раз равна примерно 300пс

Тут было важно убедиться, что у меня именно такая задержка и получается!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.