Цитата(Anton2 @ May 27 2014, 14:48)

По фронту clk_5Mhz начинается отсчет времени. Т.е. он инициирует начало отсчета. Например, нам нужно отсчитать 20 ns (с момента положительного фронта clk_5Mhz), а это 5 периодов сигнала clk_250Mhz.
просто это все можно сделать и с помощью тактовой частоты 250Mhz.
дискретность времени меньше и нет пересечения клоковых доменов, но разрадность счетчика больше ...
Как реализовывать Вам iosifk подсказал...
+
Цитата
Если надо считать "до константы", то меньше ресурсов будет тратиться, и работать будет быстрее, если перед началом счета эту константу загрузить, а потом считать до нуля... Особенно это влияет, если константа будет загружаться в какой-нибудь регистр, и потом будет сравниваться с состоянием счетчика. Так что лучше сразу привыкать вычислять время путем декрементов счетчика...
Т.е. основа это счетчик с предварительной загрузкой c компаратором, который при достижении счетчиком нуля остановит работу счетчика...
в результате получается примерно следующее описание:
Код
process (RSTn, CLK, load)
begin
if (RSTn = '0') then
COUNT_VALUE <= (others => '0');
elsif (CLK'event and CLK = '1') then
if (load = '1') then
COUNT_VALUE <= Number;
else
if COUNT_VALUE = "00000000" then
COUNT_VALUE <= COUNT_VALUE;
imp_time <= '0';
else
COUNT_VALUE <= COUNT_VALUE - 1;
imp_time <= '1';
end if; end if; end if;
end process;
COUNT <= COUNT_VALUE;