ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 2 از 2
  1. #1
    2007/08/02
    1,297
    795

    ساخت تابع در vhdl

    سلام
    توی آموزش هائی که توی اینترنت هست خیلی چیز هارو ننوشتند از جمله ساخت تابع
    مثلا من یک قسمتی درست میکنم برای تقسیم فرکانس و درست کردن تاخیر
    حالا میخام هر جا که خاستم از این تابع استفاده کنم ولی بلد نیستم کسی هست که راهنمائی کنه ؟؟؟ oo:
    بر دوستان رفته چه افسوس میخوری
    ما هم مگر جواز اقامت گرفته ایم
  2. #2
    2010/11/27
    تهران
    107
    0

    پاسخ : ساخت تابع در vhdl

    تعریف و استفاده از توابع داخل VHDL خیلی سادست. تابع مورد نظر رو باید در قسمت Architecture و قبل از begin تعریف کنی. ورودی های تابع فقط باید از نوع Input باشن. خروجی تابع با Return مشخص میشه. برای مثال اینجا یک تابع ساده ی تبدیل Binary به BCD رو قرار میدم:
    function to_bcd ( bin : std_logic_vector(7 downto 0) ) return std_logic_vector is
    variable i : integer:=0;
    variable bcd : std_logic_vector(11 downto 0) := (others => '0'
    variable bint : std_logic_vector(7 downto 0) := bin;

    begin
    for i in 0 to 7 loop -- repeating 8 times.
    bcd(11 downto 1) := bcd(10 downto 0); --shifting the bits.
    bcd(0) := bint(7);
    bint(7 downto 1) := bint(6 downto 0);
    bint(0) :='0';


    if(i < 7 and bcd(3 downto 0) > "0100&quot then --add 3 if BCD digit is greater than 4.
    bcd(3 downto 0) := bcd(3 downto 0) + "0011";
    end if;

    if(i < 7 and bcd(7 downto 4) > "0100&quot then --add 3 if BCD digit is greater than 4.
    bcd(7 downto 4) := bcd(7 downto 4) + "0011";
    end if;

    if(i < 7 and bcd(11 downto 8) > "0100&quot then --add 3 if BCD digit is greater than 4.
    bcd(11 downto 8) := bcd(11 downto 8) + "0011";
    end if;


    end loop;
    return bcd;
    end to_bcd;
    این تابع یک عدد 8 بیتی باینری رو دریافت کرده و در خروجی یک عدد BCD سه رقمی (4 بیت برای هر رقم) معادل با عدد باینری برای نمایش در سون سگمنت میده.
    اسم تابع to_bcd هستش که شما انتخاب می کنید.
    اسم ورودی (یا ورودی ها) bin هستش که شما نام و نوع اون رو انتخاب می کنید ( در اینجا std_logic_vector(7 downto 0))
    بعد از تعریف ورودی (ورودی ها) باید نوع خروجی مشخص بشه: در اینجا std_logic_vector که بعد از return آورده شده. و در آخر خط اول با is به استقبال بقیه قسمت ها میریم.
    متغیرهای مورد نیاز رو قبل از Begin تعریف کنید و پس از Begin عملیات لازم رو انجام بدین.
    در انتها متغیری رو که می خواین به عنوان خروجی تابع برگردانده بشه و نوعشو در ابتدا مشخص کردین با return برگردونید. در اینجا return bcd;
    تابع رو با end name; به پایان برسونید. (نام تابعname=)
    تمام این کد ها باید در قسمت architecture و قبل از begin نوشته بشه.
    حالا در هر قسمت که نیاز به فراخوانی تابع دارین خیلی راحت می تونین مثل زیر تایع رو استفاده کنید:
    فرض کنید 12 پین به عنوان خروجی در ابتدای پروژه تعریف شده و 8 بیت نیز به عنوان ورودی داریم:
    Binary : in std_logic_vector(7 downto 0);
    BCD_Out : out std_logic_vector(11 downto 0);
    حالا می خواهیم ورودی Binary توسط تابع to_bcd به BCD_Out منتقل بشه:
    BCD_Out <= to_bcd(Binary);
    به همین راحتی!
    البته بعضی ها می گن بهتره فراخوانی تابع رو داخل process هم قرار بدی:
    Process(Clock)
    Begin
    If(rising_edge(Clock) ) then
    BCD_Out <= to_bcd(Binary);
    End if;
    End process;
    ----------------------------
    برای تقسیم فرکانس و درست کردن تاخیر یک counter درست کن. استفاده از تابع معقول نیست.
    موفق باشی.
نمایش نتایج: از 1 به 2 از 2

موضوعات مشابه

  1. پاسخ: 1
    آخرين نوشته: 2015/10/25, 14:03
  2. نحوه سنتز تابع در VHDL
    توسط compeng در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 0
    آخرين نوشته: 2012/09/12, 16:00
  3. ساخت کتابخانه در vhdl
    توسط mahemorad در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 1
    آخرين نوشته: 2011/12/21, 18:31
  4. ساخت تابع.............
    توسط eslamieh در انجمن میکروکنترلرهای AVR
    پاسخ: 0
    آخرين نوشته: 2009/01/21, 17:20
  5. Asic Vhdl Basic Ans Lab_Vhdl Examples_microprocessor (VHDL)desingn
    توسط امیرعلی بلورچیان در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 0
    آخرين نوشته: 2007/01/03, 23:10

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •