[an error occurred while processing this directive]
|
Если хочется синхронно - то есть два пути.
Первое - подать на тактовый вход DFF'а, на D - единицу. И сбросить потом асинхронно когда нибудь. Но это не красиво. Более правильно (но и ресурсоемко) вот так:
dly_line[1..0]:dff;
dly_line[1]=dly_line[0];
dly_line[0]=input_signal;
dly_line[].clk=main_clock;if dly_line[]==1 then -- or dly_line[]==2 - posedge or negedge
-- or dly_line[0]<>dly_line[1] - any_edge-- пошло-поехало (один такт на один нужный перепад)
end if;
Смысл сей затеи таков, что, пропустив асинхронный входной сигнал через линию задержки, мы получили защиту от метастабильности, засинхронизировались с тактовой системы, и получили возможность отловить фронты. Можно, для пущей стабильности работы при асинхронном входном сигнале удлинить линию на 1 элемент, и проверять биты 2 и 1.
E-mail: info@telesys.ru