Обращение к примитивам и параметризуемым функциям
При обращении к примитивам не требуется указание ссылки на библиотечный файл (include «имя.inc») и указание параметров.
Можно выделить два основных типа вызова:
1. Непосредственное обращение
Существует два варианта непосредственного обращения:
1.1. В логической секции на месте входных сигналов примитива или функции указываются сигналы, описанные в секциях subdesign и variable:
My_out_Dtrig = DFF ( data_in, clock, reset, set );
Out_FF[7..0] = lpm_ff(dataRG[], clock) WITH(LPM_WIDTH = 8) RETURNS(.q[]);
1.2. В логической секции входным сигналам примитива или функции (.входной сигнал вызываемого элемента = сигнал) присваиваются сигналы, описанные в секциях subdesign и variable:
My_out_Dtrig = DFF ( .clrn = reset, .clk = clock, .D = data_in, .prn = set );
Out_FF[7..0] = lpm_ff(.data[] = dataRG[], .clock = clock) WITH(LPM_WIDTH = 8) RETURNS(.q[]);
2. Использование элемента как переменной
Пример:
Variable
Dtrig :DFF;
REG :lpm_ff () WITH (LPM_WIDTH = 8);
Begin
-
-- обращение к D триггеру
Dtrig.D = Data;
Dtrig.clk = clock;
Dtrig.(prn, clrn) = ( set, reset );
Out_Dtrig = Dtrig.q;
-- обращение к lpm_ff
REG..data[] = dataRG[];
REG..clock = clock;
out_RG[] = REG..q[];
End;
При объявлении мегафункции как переменной необходимо указать используемые параметры.
Основные операторы
Оператор IF THEN Оператор If Then содержит список операторов, выполняемых в том случае, если булевское выражение, расположенное между ключевыми словами IF и THEN, принимает истинное значение . IF a[] == b[] THEN c[8..1] = H "77"; addr[3..1] = f[3..1].q; f[].d = addr[] + 1; ELSIF g3 $ g4 THEN f[].d = addr[]; ELSE d = VCC; END IF;
|
Оператор CASE Оператор Case определяет список альтернативных вариантов, которые могут быть активизированы в зависимости от значения переменной, группы или выражения, следующего за ключевым словом CASE. CASE f[].q IS WHEN H"00" => addr[] = 0; s = a & b; WHEN H"01" => count[].d = count[].q + 1; WHEN H"02", H"03", H"04" => f[3..0].d = addr[4..1]; WHEN OTHERS => f[].d = f[].q; END CASE;
|
|||||||||||||||||||||||||||||||||||
Оператор TRUTH TABLE Оператор Truth Table используется для определения комбинационной логики или для определения поведения автоматов. В таблицах истинности, используемых в AHDL каждая строка таблицы состоит из комбинации входных значений и соответствующих этой комбинации выходных значений. Эти выходные значения могут использоваться как обратные связи для определения переходов автоматов из одного состояния в другое, а также его выходов.
|