Логика любой КЛС, реализующей некоторую логическую функцию, описывается оператором параллельного присвоения: Y <= not (X1 and X2) or (X3 X or X2);
Это соответствует асинхронной КЛС, в которой выход Y зависит только от информационных входов X1, X2, X3 (КЛС типа сумматор, асинхронные дешифратор и шифратор, схема выбора старшей "1" в коде и т. д.).
Асинхронные КЛС, имеющие, кроме информационных, адресные входы, определяющие выбор той или иной комбинации значений информационных входов (например, мультиплексор, демультиплексор и т. д.), а также синхронные КЛС следует описывать как PROCESS, который должен быть чувствительным ко всем входным сигналам, что задается параметрами процесса. Например, логическая схема мультиплексора может иметь такое VHDL-описание: process (A1,A2,D0,D1,D2,D3) begin -- & -- операция конкатенации CASE (A1&A2) -- => -- операция следования WHEN "00" => Y<=D0; WHEN "01" => Y<=D1; WHEN "10" => Y<=D2; WHEN "11" => Y<=D3; end case; end process;
Условие синхронизации КЛС в VHDL-описании задается условным оператором IF..THEN..ELSE.., при этом все выходные сигналы КЛС должны быть определены полностью (не по умолчанию) всякий раз, когда процесс активизируется, т. е. альтернатива ELSE обязательна. Так, описанию process (A,B,C) begin IF C=1 THEN Y <= A; ELSE Y <= B; end IF; end process; соответствует схема на рис. 5. Если же некоторый сигнал не присваивается (отсутствует ветвь ELSE в операторе IF), то подразумевается сохранение его старого состояния, что соответствует наличию в схеме элемента памяти типа триггера-защелки или прозрачного триггера (рис. 6): process (C,D) begin IF C=1 THEN Q <= D; end IF; end process;
Системы VHDL-синтеза.