std_logic
має функцію роздільної здатності
Мало того, що std_logic
є більш корисні стану , крім 1
і 0
, він також має функцію дозволу визначена.
Функція роздільної здатності - це концепція мови VHDL. Це функція, яка пов'язана з типом, і вона визначає, що відбувається, коли до одного сигналу застосовано кілька значень цього типу. Синтаксис:
SUBTYPE std_logic IS resolved std_ulogic;
де std_ulogic
є невирішеною (і, отже, набагато менш корисною) версією std_logic
.
Зокрема, це передбачає приємні речі, як, наприклад, 0
і 1
призводить до X
:
library ieee;
use ieee.std_logic_1164.all;
entity std_logic_tb is
end std_logic_tb;
architecture behav of std_logic_tb is
signal s0 : std_logic;
begin
s0 <= '0';
s0 <= '1';
process
begin
wait for 1 ns;
assert s0 = 'X';
wait;
end process;
end behav;
Це має інтуїтивний сенс, оскільки ми розуміємо, X
що це стан, коли до одного проводу застосовується кілька несумісних значень.
std_logic
також знає, як розв’язати всі інші можливі пари вхідних сигналів відповідно до таблиці, представленої на LRM.
bit
з іншого боку, не має функції роздільної здатності, і якби ми використовували її на наведеному вище прикладі, це призведе до помилки моделювання на GHDL 0,34.
Можливі значення std_logic
є хорошим вибором, оскільки вони стандартизовані IEEE 1164 і стосуються багатьох випадків поширеного використання.