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

از دلتاهای شبیه سازی برای تنظیم برخی از رویدادها در حین شبیه سازی استفاده می شود. به خصوص، رویدادهای با تاخیر صفر باید برای تولید نتایج پایدار مرتب شوند. اگر رویدادهای با تاخیر صفر به طور مناسب مرتب نشوند ممکن است در اجراهای مختلف شبیه سازی، نتایج متفاوت باشند.
Learn VHDL

با توجه به مدار شکل زیر، این مدار می تواند بخشی از یک طرح همزمانی در قطعه ی پیچیده ای باشد که مدل می شود. احتمالا قسمتی از مدار است که برای تولید ساعت فلیپ فلاپ D استفاده می شود.

 

Learn VHDL

 

مدار از یک معکوس کننده، یک گیت NAND و یک گیت AND راه انداز ورودی ساعت فلیپ فلاپ تشکیل می شود. گیت های AND و NAND برای کنترل ورودی ساعت فلیپ فلاپ استفاده می شوند.

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

با وقوع یک لبه پایین رونده روی سیگنال A خروجی معکوس کننده در لحظه 0 تغییر می کند. فرض می کنیم چنین رویدادی در زمان 10 نانوثانیه رخ دهد. خروجی معکوس کننده، (سیگنال B) برای نمایش مقدار ورودی جدید تغییر می کند. با تغییر سیگنال B ، گیت های AND و NAND دوباره ارزیابی می شوند.

 

برای این مثال، ورودی ساعت مقدار ثابت ‘1’ در نظر گرفته می شود. اگر گیت NAND ابتدا ارزیابی شود، مقدار جدید آن ‘0’ است.

وقتی گیت AND ارزیابی می شود، سیگنال های B و C به ترتیب ‘0’ و ‘1’ می باشند، بنابراین گیت AND مقدار جدید ‘0’ را پیش بینی می کند. اما اگر گیت AND ابتدا ارزیابی شود چه اتفاقی می افتد؟ گیت AND قبل از ارزیابی دوباره گیت NAND مقدار سیگنال های B و C را ‘1’ می بیند و مقدار جدید ‘1’ را پیش بینی می کند.

گیت NAND دوباره ارزیابی می شود و مقدار جدید آن ‘0’ محاسبه می شود. تغییر در خروجی گیت AND باعث ارزیابی مجدد گیت AND می شود. حال گیت AND مقدار B را ‘1’ و مقدار جدید سیگنال C را ‘0’ می بیند و یک ‘0’ در خروجی پیش بینی می کند.

هر دو مدار به مقدار یکسانی برای سیگنال D می رسند. با این وجود، وقتی گیت NAND ابتدا ارزیابی می شود، روی سیگنال D لبه بالارونده ای با پهنای دلتای یک رخ می دهد. این لبه بالا رونده می تواند بسته به نحوه مدل سازی فلیپ فلاپ، آن را تریگر کند.

 

نکته قابل توجه این است که بدون سازو کار همگام سازی دلتا، نتایج شبیه سازی به نحوه شکل گرفتن ساختارهای داده در شبیه سازی بستگی دارد. برای مثال ممکن است در نخستین بار کامپایل مدار، ابتدا گیت AND ارزیابی شود، اما هنگام کامپایل دوباره مدار ابتدا گیت NAND ارزیابی شود، بدیهی است که چنین نتایجی مطلوب نیست. شبیه سازی دلتاها مانع از بروز چنین رفتاری می شود.

 

حال می خواهیم همان مدار را با سازوکار تاخیر دلتای VHDL ارزیابی کنیم.

در طی نخستین دلتا در زمان 10 نانوثانیه، سیگنال A مقدار ‘0’ را می گیرد که باعث ارزیابی دوباره معکوس کننده با مقدار جدید می شود. معکوس کننده مقدار جدید سیگنال B را ‘1’ محاسبه می کند. این مقدار بی درنگ منتشر نمی شود، اما برای دلتای بعدی (دلتای 2) زمانبندی می شود.

سپس شبیه ساز اجرای دلتای زمانی 2 را شروع می کند. سیگنال B با مقدار ‘1’ به روز می شود، و گیت های AND و NAND دوباره ارزیابی می شوند. اکنون هر دو گیت مقدار جدیدشان را برای دلتای بعدی (دلتای3) زمانبندی می کنند.

وقتی دلتای 3 رخ می دهد، سیگنال D مقدار ‘1’ و سیگنال C مقدار ‘0’ را دریافت می کند. چون سیگنال C گیت AND را نیز راه اندازی می کند، گیت AND دوباره ارزیابی می شود و خروجی جدیدش را برای دلتای 4 زمانبندی می کند.

 

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

A <= b AFTER 0 ns;

کاربرد دیگر تاخیر دلتا هنگامی است که تاخیری مشخص نشده باشد. مثلا:

A <= b;

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

ENTITY reg IS
PORT ( a, clock : in bit
       d        : out bit);
END reg;

ARCHITECTURE test OF reg IS
   SIGNAL b, c : bit;
BEGIN
   B <= NOT(a);
   C <= NOT( clock AND b);
   D <= c AND b;
END test;

 

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