Язык AHDL


Создание счетчиков


Счетчики можно определить с помощью D триггеров (DFF и DFFE) и операторов If Then или с помощью функции lpm_counter.

Файл ahdlcnt.tdf, приведенный ниже, реализует 16-битный суммирующий счетчик с загрузкой, который можно сбросить в ноль.

SUBDESIGN ahdlcnt

(

   clk, load, ena, clr, d[15..0] : INPUT;

   q[15..0]                      : OUTPUT;

)

VARIABLE

   count[15..0]                  : DFF;

BEGIN

   count[].clk = clk;

   count[].clrn = !clr;

   IF load THEN



      count[].d = d[];

   ELSIF ena THEN

      count[].d = count[].q + 1;

   ELSE

      count[].d = count[].q;

   END IF;

   q[] = count[];

END;

В этом файле в разделе Variable

объявляется 16 триггеров с имена count0 по count15. Оператор If Then

определяет значение, которое загружается в триггеры на возрастающем фронте Clock.

Файл lpm_cnt.tdf, приведенный ниже, использует функцию lpm_counter для реализации той же функциональности, что и файл ahdlcnt.tdf.

INCLUDE "lpm_counter.inc";

SUBDESIGN lpm_cnt

(

   clk, load, ena, clr, d[15..0] : INPUT;

   q[15..0]                      : OUTPUT;

)

VARIABLE

   my_cntr: lpm_counter WITH (LPM_WIDTH=16);

BEGIN

   my_cntr.clock  = clk;

   my_cntr.aload  = load;

   my_cntr.cnt_en = ena;

   my_cntr.aclr   = clr;

   my_cntr.data[] = d[];

   q[] = my_cntr.q[];

END;



Содержание раздела