VHDL برای اداره سیگنال های دارای چند راه انداز چند روش منحصر به فردی دارد. سیگنال های دارای چند راه انداز برای مدل سازی گذرگاه داده، گذرگاه های دوطرفه و غیره سودمند می باشد. مدل سازی درست این نوع از مدارها در VHDL به مفاهیم راه اندازهای سیگنال نیاز دارد. هر راه انداز VHDL یک مشارکت کننده در مقدار کل یک سیگنال است.

 

learning VHDL

مقادیر تمام راه اندازهای یک سیگنال مقداری را برای یک سیگنال مشخص می کنند. تفکیک تمام مشارکت کننده ها در یک مقدار سیگنال به کمک تابع تفکیک (resolution function) انجام می شود. تابع تفکیک تابعی است که طراح می نویسد و با تغییر مقدار راه انداز یک سیگنال فراخوانی می شود.

 

ایجاد راه انداز

راه اندازهای با دستورات انتساب سیگنال ایجاد می شوند. هر دستور انتساب سیگنال همزمان در یک معماری، برای هر انتساب سیگنال یک راه انداز تولید می کند. بنابراین، انتساب های سیگنال چندگانه، چند راه انداز برای یک سیگنال تولید می کنند. معماری زیر را در نظر بگیرید:

 

سیگنال a از دو منبع b و c راه اندازی می شود. هر دستور انتساب سیگنال همزمان یک راه انداز برای سیگنال a ایجاد می کند. دستور نخست راه اندازی ایجاد می کند که حاوی سیگنال b با 10 نانوثانیه تاخیر است. دستور دوم راه انداز ایجاد می کند که مقدار سیگنال c را با 10 نانوثانیه تاخیر دارد.

چگونگی تفکیک این دو راه انداز به طراح واگذار می شود. طراحان VHDL نمی خواهند محدودیت های زبان به رفتار سیگنال اضافه شوند. سنتز مثال قبل c و b را یکی می کند.

 

مدل چند راه اندازی بد

مدل زیر در نگاه اول درست به نظر می رسد، اما کار مورد نظر کاربر را انجام نمی دهد. مدل مربوط به یک مالتی پلکسر 4 به 1 است:

 

این مدل هنگامی که a و b هر دو 0 باشند i0 ، و وقتی a=1 و b=0 باشد i1 را به q تخصیص می دهد و به همین ترتیب. در نگاه اول به نظر می رسد که مدل کار مورد نظر را انجام می دهد. با این وجود، هر تخصیص به سیگنال q راه انداز جدیدی برای سیگنال q ایجاد می کند. این مدل چهار راه انداز برای سیگنال q ایجاد می کند.

 

هر یک از راه اندازها مقدار یکی از ورودی های i0 ، i1 ، i2 ، i3 یا ‘0’ را راه اندازی می کند. مقدار راه اندازی شده به ورودی های a و b بستگی دارد. اگر a و b هر دو ‘0’ باشند، نخستین دستور تخصیص، مقدار i0 را در یکی از راه اندازهای q قرار می دهد. شرایط سه دستور دیگر فراهم نمی شود، بنابراین، مقدار ‘0’ را راه اندازی می کنند. توابع تفکیک خروجی مطلوب q را که مقدار i0 است پیش بینی می کنند.

 

روش بهتر برای نوشتن این مدل ایجاد فقط یک راه انداز برای q است، مانند: