Цитата(eteP @ May 17 2005, 21:35)
А не должно ли быть здесь
Код
process(clk)
begin
if rising_edge(clk) then
Q1 <= Q0;
Q2 <= Q1;
end if;
end process;
ce <= Q2 xor Q1;
в место rising_edge -> falling_edge?
Да, для реализации приведенной Вами временной диаграммы нужно falling_edge. Но по большому счету это не принципиально.

Цитата
Если использовать rising_edge то в функциональной симуляции показывает не верно, вернее не то что я хочу, но после роутинга все замечательно. А если использовать falling_edge и RUN завести на тригер, то везде показывает правильно.
Странно, оно должно быть везде неправильно.
Цитата
А где вы видите метастабильность трегеров в схеме от oval?
Там в сдвиговый регистр вдвигается значение входного сигнала, которое может нарушить время предварительной установки первого триггера -> перевести его в метастабильное состояние. Хотя, если верить производителям ПЛИС, вероятность этого очень мала.
Цитата
Сравнил две схемы после размещения и роутинга
Oval:
SLICEs - 2
Max. freq. - 113 MHz
Makc с rising_edge:
SLICEs - 4
Max. freq. - 454 MHz
Makc с falling_edge:
SLICEs - 4
Max. freq. - 607 MHz
забавно.
Да... Разница видна невооруженным взглядом.
Даже не думал, что может быть такой разрыв.