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

ژنریک ها سازوکارهای عمومی ارسال اطلاعات به یک موجودیت می باشند. این اطلاعات می توانند از انواع مجاز در VHDL باشند.

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

learning VHDL

از ژنریک ها برای ارسال انواع تعریف شده توسط کاربر، از جمله اطلاعاتی مانند ظرفیت خازنی و مقاومت بار نیز استفاده می شود. پارامترهای سنتز از قبیل پهنای مسیر داده، پهنای سیگنال و غیره را نیز می توان از طریق ژنریک ها ارسال کرد.

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

داده های ارسالی به یک نمونه داده های ایستا می باشند. پس از تشریح دقیق جزئیات مدل (پیوند دادن به شبیه ساز)، داده ها در طی شبیه سازی تغییر نمی کنند.

ژنریک ها نمی توانند اطلاعات را در حین اجرای شبیه سازی تخصیص دهند. اطلاعات ژنریک های ارسال شده به یک نمونه قطعه یا یک بلوک می تواند نتایج شبیه سازی را تغییر دهند. اما نتایج نمی توانند ژنریک ها را تغییر دهند.

در پایین مثالی از یک موجودیت برای یک گیت AND ارائه شده که سه ژنریک به آن مربوط شده است:

 

ENTITY and2 IS
GENERIC(rise, fall : TIME; load : INTEGER);
PORT( a, b : IN BIT;
         c : OUT BIT);
END and2

 

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

 

ARCHITECTURE load_dependent OF and2 IS
    SIGNAL internal : BIT;
BEGIN
    Internal <= a AND b;
        c <= internal AFTER (rise + (load * 2 ns)) WHEN internal = ‘1’
    ELSE internal AFTER (fall + (load * 3 ns));
END load_dependent;

 

معماری برای ذخیره a و b یک سیگنال محلی به نام internal اعلان می کند. بکارگیری مقادیر از پیش محاسبه شده در نمونه های چندگانه روش بسیار کارآمدی برای مدلسازیست.

مقادیر ژنریک های rise ، fall و load را دستور نمونه سازی قطعه ارسال می کند. حال بخشی از مدل را بررسی می کنیم که قطعاتی از نوع AND2 را در مدلی دیگر نمونه سازی می کند:

 

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY test IS
GENERIC(rise, fall : TIME; load : INTEGER);
PORT ( ina, inb, inc, ind : IN std_logic;
               OUT1, OUT2 : OUT std_logic);
END test;


ARCHITECTURE test_arch OF test IS
   COMPONENT AND2
   GENERIC(rise, fall : TIME; load : INTEGER);
   PORT ( a, b : IN std_logic;
          c : OUT std_logic);
END COMPONENT;
BEGIN
   U1 : AND2 GENERIC MAP(10 ns, 12 ns, 3 )
   PORT MAP (ina, inb, out1 );
   U2 : AND2 GENERIC MAP(9 ns, 11 ns, 5 )
   PORT MAP (inc, ind, out2 );
END test_arch;

 

دستور معماری نخست قطعات مورد استفاده در مدل را اعلان می کند.

در این مثال، قطعه AND2 اعلان شده است. سپس، بدنه دستور معماری دو دستور نمونه سازی برای قطعات U1 و U2 دارد. درگاه a قطعه U1 به سیگنال ina ، درگاه b به سیگنال inb و درگاه c به سیگنال out1 تصویر شده اند. به همان ترتیب، قطعه U2 به سیگنال های inc ، ind و out2 تصویر شده است.

مقادیر ژنریک های rise ، fall و load نمونه U1 به ترتیب به 10 و 12 و 3 نانو ثانیه تصویر شده اند. مقادیر این ژنریک ها برای U2 نیز به ترتیب به 9 و 11 و 5 نانوثانیه تصویر شده اند.

همچنین ژنریک ها می توانند مقادیر پیش فرض داشته باشند که با نگاشت مقادیر واقعی به ژنریک ها خنثی می شوند. مثال بعدی دو نمونه از قطعه AND2 را نشان می دهد.

در نمونه U1 ، مقادیر واقعی به ژنریک ها تصویر شده و در شبیه سازی استفاده می شوند، در نمونه U2 مقداری به نمونه تصویر نمی شود و اگر مقادیر پیش فرض مشخص باشند از آنها برای کنترل رفتار شبیه سازی استفاده می شود، در غیر این صورت خطایی رخ می دهد.

 

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY test IS
GERERIC(rise, fall : TIME;
   load : INTEGER);
   PORT ( ina, inb, inc, ind : IN std_logic;
   out1, out2 : OUT std_logic);
END test;


ARCHITECTURE test_arch OF test IS
COMPONENT and2
GENERIC(rise, fall : TIME := 10 ns;
   load : INTEGER := 0);
   PORT ( a, b : IN std_logic;
             c : OUT std_logic);
END COMPONENT;
BEGIN
   U1 : and2 GENERIC MAP(10 ns, 12 ns, 3 )
   PORT MAP (ina, inb, out1);
   U2 : and2 PORT MAP (inc, ind, out2);
END test_arch;

 

همان طور که مشاهده شد، ژنریک ها کاربرد زیادی دارند. کاربرد ژنریک ها فقط با قوه ابتکار نویسنده مدل محدود می شود.

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