عکس پیش‌فرض نوشته

VHDL یک زبان توصیف سخت افزار است که برای توصیف سخت افزار از سطوح انتزاع تا پیاده سازی فیزیکی استفاده می شود.

VHDL حاصل کار وزارت دفاع آمریکا در دهه ۷۰ و اوایل دهه ۸۰ میلادی می باشد.
آموزش برنامه نویسی VHDL

مدل سازی رفتاری

دستورانتساب سیگنال اصلی ترین شکل مدل سازی رفتاری در VHDL است. مثال زیر یک دستور انتساب سیگنال است:

a <= b ;

 

دستور فوق به اینصورت خوانده می شود: a مقدار b را می گیرد. با این دستور مقدار فعلی سیگنال b به سیگنال a تخصیص می یابد. هرگاه مقدار سیگنال b تغییر کند این دستور اجرا می شود. سیگنال b در لیست حساسیت این دستور است. وقتی مقدار سیگنالی در لیست حساسیت دستور انتساب سیگنال تغییر کند، دستور اجرا می شود. اگر نتایج اجرا مقدار جدیدی متفاوت از مقدار فعلی سیگنال باشد، یک رویداد برای سیگنال هدف زمانبندی می شود. اگر نتیجه اجرای همان مقدار باشد، رویدادی زمانبندی نمی شود اما همچنان یک تراکنش تولید می شود. همیشه با ارزیابی یک مدل یک مدل تولید می شود، اما فقط تغییرات مقدار سیگنال باعث زمانبندی رویدادها می شوند.

مثال زیر نحوه معرفی یک تاخیر غیر صفر برای دستور را نشان می دهد:

a <= b sfter 10 ns;

 

دستور فوق به این صورت خوانده می شود: پس از سپری شدن 10 نانوثانیه a مقدار b را می گیرد.

هر دو دستور قبلی دستورات انتساب سیگنال همزمان می باشند. هر دو دستور به تغییرات مقدار سیگنال b حساس می باشند. هر جا که مقدار b تغییر کند، این دستورات اجرا شده و مقدار جدید به سیگنال a تخصیص می یابد.

یک گیت AND ساده را می توان با استفاده از یک دستور انتساب سیگنال همزمان به صورت زیر مدل کرد:

 

ENTITY and2 IS
        PORT ( a,b :IN BIT);
                C : OUT BIT );
END and2;

ARCHITECHURE and2_behav OF and2 IS
BEGIN
        C <= a AND b AFTER 5 ns;

 

 

گیت AND دو ورودی a و b و یک خروجی c دارد. هر زمان که مقدار a یا b تغییر کند مقدار جدیدی به c تخصیص می یابد. اگر a برابر با ‘0’ باشد و b از ‘1’ به ‘0’ تغییر کند، خروجی c تغییر نمی کند. اگر مقدار خروجی تغییر کند، تراکنشی رخ می دهد که باعث زمانبندی رویدادی روی سیگنال c می شود، در غیر این صورت فقط یک تراکنش روی سیگنال c رخ می دهد.

واحد طراحی موجودیت، درگاه های گیت and2 را توصیف می کند که دو ورودی a و b و نیز یک خروجی c می باشند.

 

معماری and2_behav یک دستور انتساب سیگنال همزمان برای موجودیت and2 دارد. باتوجه به اینکه عبارت محاسبه کننده ی مقدار c حاوی مقادیر سیگنال های a و b است، این دستور به هردو سیگنال حساس است.

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

 

 

مثال دیگر از مدل سازی رفتاری که انتساب سیگنال پیچیده تری را نشان می دهد و مفهوم همزمانی را با جزئیات بیشتری بیان می کند.

این مدل یک مالتی پلکسر چهار ورودی است. مدل رفتاری mux به صورت زیر است:

 

 

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;

ENTITY mux4 IS
PORT ( i0 , i1 , i2 , i3 , a , b : IN std_logic;
                               q : OUT std_logic);

END mux4;

ARCHITECTURE mux4 OF mux4 IS
SIGNAL se1 : INTEGER;
BIGIN
WITH se1 SELECT
Q <= i0 AFTER 10 ns WHEN 0;
     I1 AFTER 10 ns WHEN 1;
     I2 AFTER 10 ns WHEN 2;
     I3 AFTER 10 ns WHEN 3;
    ‘x’ AFTER 10 ns WHEN OTHERS;

Se1 <= 0 WHEN a = ‘0’ AND b = ‘0’ ELSE
       1 WHEN a = ‘1’ AND b = ‘0’ ELSE
       2 WHEN a = ‘0’ AND b = ‘1’ ELSE
       3 WHEN a = ‘1’ AND b = ‘1’ ELSE
       4;
END mux4;

 

موجودیت این مدل شش درگاه ورودی و یک درگاه خروجی دارد.

چهار درگاه ورودی (I3 , I2 , I1 , I0 ) سیگنال هایی را نشان می دهند که به سیگنال خروجی q تخصیص خواهد یافت.

فقط یکی از سیگنال ها براساس مقدار دو سیگنال ورودی a و b به سیگنال خروجی q تخصیص می یابد.

 

برای پیاده سازی عملکرد توصیف شده قبلی از یک دستور انتساب سیگنال شرطی و یک انتساب سیگنال انتخابی استفاده می کنیم.

دستور دوم در این مثال یک دستور انتساب سیگنال شرطی است. این دستور برمبنای شرطهایی که برای هر دستور ارزیابی می شوند، مقداری را به یک سیگنال هدف تخصیص می دهند.

شرطهای دستور WHEN در هر لحظه یکی و به طور متوالی اجرا می شوند تا شرطهای یک دستور صدق کنند.

نخستین دستوری که با شرایط تطبیق داشته باشد مقداری را به سیگنال هدف تخصیص می دهد.

 

در این مثال سیگنال هدف سیگنال محلی se1 است. بسته به مقادیر سیگنال های a و b مقادیر 0 تا 4 به se1 تخصیص می یابد.

اگر چند شرط درست باشند، نخستین دستوری که تطبیق دارد تخصیص را انجام داده و از مقادیر دیگر دستورهای منطبق چشم پوشی می شود.

دستور نخست، انتساب سیگنال انتخابی نامیده می شود و از بین چند گزینه، مقدار صحیح را برای تخصیص به سیگنال هدف انتخاب می کند. سیگنال هدف در این مثال سیگنال q است.

 

عبارت (مقدار سیگنال se1 در این مثال) ارزیابی می شود و دستوری که مطابق با مقدار عبارت است مقدار ورودی را به سیگنال هدف تخصیص می دهد. تمام مقادیر ممکن عبارت بایستی یک انتخاب منطبق در انتساب سیگنال انتخابی داشته باشند (یا باید یک بخش OTHERS وجود داشته باشد).

 

هر یک از سیگنال های ورودی را می توان بسته به مقادیر دو ورودی انتخاب a و b به خروجی تخصیص داد. اگر مقادیر a یا b نامعلوم باشند، آخرین مقدار، یعنی ‘X’ به خروجی q تخصیص می یابد. در این مثال، وقتی یکی از ورودی های انتخاب مقداری نامعلوم دارد، مقدار خروجی نامعلوم می شود.

 

از ظاهر مدل mux چنین به نظر می رسد که به شکل نوشته شده کار نخواهد کرد. به نظر می رسد مقدار سیگنال se1 پیش از محاسبه آن استفاده می شود. از تصور از آنجا بوجود می آید که در عمل دومین دستور معماری مقدار se1 را محاسبه می کند. با این وجود، به دلیل مفهوم همزمانی، مدل به همان صورتی که نوشته شده کار می کند.

 

دستور دوم به سیگنال های a و b حساس است. هر زمان که مقدار a یا b تغییر کند، دستور دوم اجرا شده و سیگنال se1 به روز می شود. دستور نخست به سیگنال se1 حساس است. هرگاه مقدار se1 تغییر کند، نخستین انتساب سیگنال اجرا می شود.

 

این آموزش بیش از ۳ سال قبل ارسال شده و اکنون در لیست به‌روزرسانی‌های سایت قرار دارد. اگر پیشنهاد یا انتقادی برای بهبود آموزش دارید، خوشحال می‌شیم به ما اطلاع بدهید.