استاندارد IEEE 1164 که با نام کامل Multivalue Logic System for VHDL Model Interoperability شناخته میشود، یک استاندارد فنی است که توسط مؤسسه مهندسان برق و الکترونیک (IEEE) در سال 1993 منتشر شد. این استاندارد، تعاریف مقادیر منطقی را برای استفاده در حوزه اتوماسیون طراحی الکترونیک (EDA) و بهویژه برای زبان توصیف سختافزار VHDL شرح میدهد.
تلاش برای استانداردسازی این سیستم، با اهدای نوع داده Synopsys MVL-9 صورت گرفت. نوع داده اصلی در این استاندارد (منطق استاندارد بدون تفکیک) شامل نُه حرف (literal) است. این سیستم مجموعهای کاربردی از مقادیر منطقی را ترویج داد که برای اکثر موقعیتهای مدلسازی در طراحیهای منطق CMOS مناسب هستند. برخی از این مقادیر کلیدی عبارتند از:
- 'Z': برای سهولت در مدلسازی بافرهای سهحالته (tri-state buffer).
- 'H' و 'L': برای نمایش درایوهای ضعیف که امکان پیادهسازی منطق سیمبندی شده AND (wired-AND) و OR (wired-OR) را فراهم میکنند.
- 'U': برای مقدار پیشفرض در تمام اعلانهای اشیاء، که امکان تشخیص آسان مقادیر مقداردهی نشده (uninitialized) در طول شبیهسازی و اصلاح آنها را در صورت نیاز فراهم میکند.
در VHDL، طراح سختافزار این مقادیر را از طریق دستورات کتابخانه زیر در دسترس قرار میدهد:
library IEEE;
use IEEE.std_logic_1164.all;
استفاده از مقادیر در شبیهسازی
استفاده از 'U' (نامعلوم)
بسیاری از ابزارهای شبیهسازی زبان توصیف سختافزار (HDL) مانند Verilog و VHDL، از مقدار نامعلوم (unknown) در طول شبیهسازی الکترونیک دیجیتال پشتیبانی میکنند. این مقدار نامعلوم میتواند ناشی از یک خطای طراحی باشد که طراح قبل از سنتز (synthesis) مدار واقعی، آن را اصلاح میکند. مقدار نامعلوم همچنین مقادیر حافظه مقداردهی نشده و ورودیهای مدار قبل از اعمال مقدار واقعی توسط شبیهسازی را نشان میدهد.
ابزارهای سنتز HDL معمولاً مدارهایی را تولید میکنند که تنها بر روی منطق دودویی عمل میکنند.
استفاده از '-' (اهمیت نمیدهم / Don't Care)
هنگام طراحی یک مدار دیجیتال، ممکن است برخی شرایط خارج از دامنه عملکرد مورد نظر مدار باشند. در این شرایط، طراح اهمیتی نمیدهد که تحت آن شرایط چه اتفاقی میافتد. همچنین ممکن است ورودیهای مدار توسط سیگنالهای دیگر پوشانده شوند، به طوری که مقدار آن ورودی هیچ تأثیری بر رفتار مدار نداشته باشد.
در چنین موقعیتهایی، استفاده از 'X' به عنوان نشانهای برای "اهمیت نمیدهم" (Don't Care) در جداول درستیسنجی مرسوم است، اما VHDL از '-' استفاده میکند. مقادیر "اهمیت نمیدهم" بهویژه در طراحی ماشین حالت (state machine) و سادهسازی نمودار کارنو (Karnaugh map) رایج هستند. مقادیر '-' درجه آزادی بیشتری به طراحی نهایی مدار میدهند و معمولاً منجر به مداری سادهتر و کوچکتر میشوند.
پس از تکمیل طراحی مدار و ساخت مدار واقعی، مقادیر '-' دیگر وجود نخواهند داشت. آنها به یک مقدار ملموس '0' یا '1' تبدیل خواهند شد، اما بسته به بهینهسازی نهایی طراحی، میتوانند هر کدام باشند.
استفاده از 'Z' (امپدانس بالا / High Impedance)
برخی از دستگاههای دیجیتال از نوعی منطق سهحالته در خروجیهای خود پشتیبانی میکنند. این سه حالت شامل "0"، "1" و "Z" است.
منطق سهحالته (که گاهی tristate logic نامیده میشود)، علاوه بر حالتهای معمول حقیقی و باطل، یک حالت سوم یعنی امپدانس بالا (یا حالت خاموش) را دارد که خروجی منطقی را بهطور مؤثر قطع میکند. این ویژگی روشی مؤثر برای اتصال چندین خروجی منطقی به یک ورودی واحد فراهم میکند، جایی که همه خروجیها به جز یکی در حالت امپدانس بالا قرار میگیرند و به خروجی باقیمانده اجازه میدهند تا در حالت دودویی عادی عمل کند. این قابلیت معمولاً برای اتصال بانکهای حافظه کامپیوتر و دستگاههای مشابه به یک گذرگاه داده مشترک استفاده میشود؛ تعداد زیادی از دستگاهها میتوانند بر روی یک کانال ارتباطی کار کنند، فقط کافی است اطمینان حاصل شود که در هر زمان فقط یکی فعال است.
در حالی که خروجیها میتوانند یکی از سه حالت را داشته باشند، ورودیها فقط قادر به تشخیص دو حالت هستند. اگرچه میتوان استدلال کرد که حالت امپدانس بالا بهطور مؤثری "نامعلوم" است، اما در اکثر الکترونیکها هیچ تمهیدی برای تفسیر حالت امپدانس بالا به عنوان یک حالت مجزا وجود ندارد. ورودیها فقط "0" و "1" را تشخیص میدهند.
هنگامی که یک ورودی دیجیتال متصل باقی میماند، مقدار دیجیتالی که توسط ورودی تفسیر میشود به نوع فناوری مورد استفاده بستگی دارد. فناوری TTL بهطور قابل اعتمادی به حالت "1" پیشفرض میکند. از سوی دیگر، فناوری CMOS حالت قبلی مشاهده شده در آن ورودی را بهطور موقت حفظ میکند (به دلیل ظرفیت ورودی گیت). با گذشت زمان، جریان نشتی باعث میشود ورودی CMOS در جهتی تصادفی حرکت کند و احتمالاً وضعیت ورودی را تغییر دهد. ورودیهای متصل نشده در دستگاههای CMOS میتوانند نویز جذب کنند، باعث نوسان شوند، جریان تغذیه بهطور چشمگیری افزایش یابد (crowbar power) یا دستگاه ممکن است کاملاً از کار بیفتد.
استاندارد IEEE 1164 با ارائه این مقادیر منطقی متنوع، ابزاری قدرتمند در اختیار طراحان سختافزار قرار میدهد تا بتوانند مدلهای دقیقتر و منعطفتری برای مدارهای دیجیتال خود ایجاد کنند.