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และจัดการกับกรณีการใช้งานทั่วไปจำนวนมาก