std_logic
có chức năng phân giải
Không chỉ std_logic
có trạng thái hữu ích hơn ngoài 1
và 0
, nó cũng có chức năng phân giải được xác định.
Hàm phân giải là một khái niệm ngôn ngữ VHDL. Đây là một hàm được liên kết với một loại và nó xác định điều gì sẽ xảy ra khi nhiều giá trị của loại đó được áp dụng cho một tín hiệu. Cú pháp là:
SUBTYPE std_logic IS resolved std_ulogic;
nơi std_ulogic
là chưa được giải quyết (và do đó ít nhiều hữu ích) phiên bản của std_logic
.
Đặc biệt, điều này ngụ ý những điều tốt đẹp như 0
và 1
dẫn đến 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;
Điều này có ý nghĩa trực quan, vì chúng tôi hiểu X
là trạng thái nơi nhiều giá trị không tương thích được áp dụng cho một dây.
std_logic
cũng biết cách giải quyết mọi cặp tín hiệu đầu vào có thể khác theo một bảng có trên LRM.
bit
mặt khác, không có chức năng phân giải và nếu chúng ta đã sử dụng nó trong ví dụ trên, nó sẽ dẫn đến lỗi mô phỏng trên GHDL 0,34.
Các giá trị có thể std_logic
là một lựa chọn tốt vì chúng được chuẩn hóa bởi IEEE 1164 và xử lý nhiều trường hợp sử dụng phổ biến.