Опять на тему "нужна тактовая а её нет", и внутренний тактовый генератор ПЛИС недоступен.
https://electronix.ru/forum/index.php?s=&am...t&p=1476805Или если нужно создать импульс из фронта при отсутствии тактовой. (И это, наверно, даже более актуально).
Есть такой способ генерации тактового сигнала в ПЛИС - построить кольцевой генератор из кучи LUTов.
Вместо кучи LUTов можно применить встроенную в IOB задержку, получим простой тактовый генератор.
Пример для Altera:
Код
alt_iobuf
clk_iobuf
(
.i (~clk ),
.oe(1'b1 ),
.o (clk ),
.io(clk_pin)
);
И в qsf файле указываем задержку:
Код
// Use IOB delay
set_instance_assignment -name PAD_TO_CORE_DELAY 6 -to clk_pin
Разумеется, для указания задержки, нужно сначала прочитать даташит на конкретную ПЛИС, выяснить какие задержки встроены в IOB, и какие параметры им можно передавать.
Эту задержку можно применить для генерации одиночного импульса из фронта при отсутствии тактового сигнала, например - сгенерировать сигнал сброса.
Код
alt_iobuf
delay_iobuf
(
.i (delay_i ),
.oe(1'b1 ),
.o (delay_o ),
.io(delay_pin)
);
assign pulse = delay_i & ~delay_o;
Не забываем прочитать как, подумать какую и указать задержку в qsf файле:
Код
// Use IOB delay
set_instance_assignment -name PAD_TO_CORE_DELAY 6 -to delay_pin
Понятно, что в этом случае теряем один вывод ПЛИС, жертвы...
FPGA clock pulse generation IOB delay - это для поисковых машин