Задача
Измерить частоту входного сигнала подсчётом его импульсов за интервал открытого окна.
Тип схемы и среда
Последовательная схема: синхронизатор входа, детект фронта, счётчик, выходной регистр-защёлка.
Алгоритм работы
Пока окно gate открыто, каждый фронт входа увеличивает счётчик. По сигналу latch результат защёлкивается в выходной регистр, счётчик сбрасывается при закрытом окне.
Код на AHDL
% Проект 30: частотомер (счёт импульсов за окно) % SUBDESIGN ahdl_30_chastotomer ( clk, clrn : INPUT; fin : INPUT; gate : INPUT; % окно измерения % latch : INPUT; % защёлкнуть результат % result[15..0] : OUTPUT; ) VARIABLE cnt[15..0] : DFF; reg[15..0] : DFF; fs[1..0] : DFF; fp : DFF; BEGIN cnt[].clk = clk; cnt[].clrn = clrn; reg[].clk = clk; reg[].clrn = clrn; fs[].clk = clk; fs[].clrn = clrn; fp.clk = clk; fp.clrn = clrn; fs[].d = (fs[0].q, fin); fp.d = fs[1].q; IF !gate THEN cnt[].d = 0; ELSIF fs[1].q & !fp.q THEN cnt[].d = cnt[].q + 1; ELSE cnt[].d = cnt[].q; END IF; IF latch THEN reg[].d = cnt[].q; ELSE reg[].d = reg[].q; END IF; result[] = reg[].q; END;
Пояснения
Точность метода прямого счёта растёт с длиной окна и частотой. Для низких частот измеряют период, а не частоту.
Инструменты и справочники по теме
📦 help-user.ru — скупка и ремонт компьютерной техники. Продать ноутбук, ПК, комплектующие — help-user.ru.
Что дальше
Скачайте ahdl_30_chastotomer.tdf, создайте проект в MAX+PLUS II или Quartus,
назначьте выводы под свою плату и скомпилируйте. Остальные 49 разработок — в
разделе проектов на AHDL.