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





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









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









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






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

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

صفحه 2 از 6 نخست 123456 آخرین
نمایش نتایج: از 11 به 20 از 56
  1. #11
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    برای مقدار دهی این رجیستر یا همون Latch، باید یک متغییر دیگه این متغییر رو پدیت کنه، برای این کار اون رجیستر ممکنه عدد و یا هر داده ای رو ذخیره کرده باشه و ما به صورت بیتی یا همون باینری میخوایم روی پایه ها عددمون رو داشته باشیم، برای اینکار هم چندین روش وجود داره، یکیش اینه که عددتون رو به صورت Integer تعریف کنید، هر عمل ریاضی که لازمه انجام بدید، بعد با استفاده از فانکشن to_unsigned عددتون رو به یک UNSIGNED تبدیل کنید، در آخر هم هر بیت UNSIGNED رو در هر بیت STD_LOGIC ها بریزید.
    میشه راههای دیگه رو هم بگید

    آخه داده های من هم حقیقی هستند و هم میتونند منفی باشند :smile:
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  2. #12
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl

    نقل قول نوشته اصلی توسط electronics
    میشه راههای دیگه رو هم بگید

    آخه داده های من هم حقیقی هستند و هم میتونند منفی باشند :smile:
    برای مقادیر منفی هم این روش درسته، کافیه Integer range -128 to 127 در نظر بگیرید، برای تبدیلش به 0 تا 255 کافیه عدد اول رو به اضافه 128 بکنید و حاصلش رو در یک Integer range 0 to 255 بریزید، آخر سر عدد دوم رو به UNSIGNED تبدیل کنید و به خروجی بدید. برای مقادیر اعشاری هم باید اول دقت لازم رو تعیین کنید، مثلا دقت تا دو رقم اعشار، اونوقت همه نمونه های اولیه رو در 100 ضرب کنید تا از حالت اعشاری خارج شن و بشه در Integer قرار بگیرن، بعد اگر فقط قسمت Integer عدد حقیقیتون رو خواستید، عدد آخر رو تقسیم بر 100 میکنید، و اگر دو رقم اعشاریش رو خواستید، بخش Integer عدد حقیقیتون رو در 100 ضرب کرده و از عدد آخر کم میکنید.
    همونطور که میدونید، Cos زاویه، عددیست بین 1+ و 1-، برای استفاده از Cos در FPGA یکی از روشها روش زیره که با 3 رقم اعشار Cos زاویه Teta رو حساب میکنه، در حقیقت عددی بین 1000+ و 1000- میده که اگه کاربر اون دقت رو لازم نداشته باشه میتونه اون دقت رو حذف کنه.

    --On Cyclone-II Starter Kit
    --Author: Amir Shahram Hematian
    --Date&Time: 2010/Nov/19 11:32

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.numeric_std.all;

    entity Cos is
    port (
    COS_TETA : IN INTEGER RANGE 0 TO 359;
    COS_OUTPUT : OUT INTEGER RANGE -1000 TO 1000
    );
    end Cos;


    architecture Cos_Function of Cos is
    type Cos_Table_Type is array(0 to 359) of integer range -1000 to 1000;
    constant Cos_Table : Cos_Table_Type := (
    1000,
    1000,
    999,
    999,
    998,
    996,
    995,
    993,
    990,
    988,
    985,
    982,
    978,
    974,
    970,
    966,
    961,
    956,
    951,
    946,
    940,
    934,
    927,
    921,
    914,
    906,
    899,
    891,
    883,
    875,
    866,
    857,
    848,
    839,
    829,
    819,
    809,
    799,
    788,
    777,
    766,
    755,
    743,
    731,
    719,
    707,
    695,
    682,
    669,
    656,
    643,
    629,
    616,
    602,
    588,
    574,
    559,
    545,
    530,
    515,
    500,
    485,
    469,
    454,
    438,
    423,
    407,
    391,
    375,
    358,
    342,
    326,
    309,
    292,
    276,
    259,
    242,
    225,
    208,
    191,
    174,
    156,
    139,
    122,
    105,
    87,
    70,
    52,
    35,
    17,
    0,
    -17,
    -35,
    -52,
    -70,
    -87,
    -105,
    -122,
    -139,
    -156,
    -174,
    -191,
    -208,
    -225,
    -242,
    -259,
    -276,
    -292,
    -309,
    -326,
    -342,
    -358,
    -375,
    -391,
    -407,
    -423,
    -438,
    -454,
    -469,
    -485,
    -500,
    -515,
    -530,
    -545,
    -559,
    -574,
    -588,
    -602,
    -616,
    -629,
    -643,
    -656,
    -669,
    -682,
    -695,
    -707,
    -719,
    -731,
    -743,
    -755,
    -766,
    -777,
    -788,
    -799,
    -809,
    -819,
    -829,
    -839,
    -848,
    -857,
    -866,
    -875,
    -883,
    -891,
    -899,
    -906,
    -914,
    -921,
    -927,
    -934,
    -940,
    -946,
    -951,
    -956,
    -961,
    -966,
    -970,
    -974,
    -978,
    -982,
    -985,
    -988,
    -990,
    -993,
    -995,
    -996,
    -998,
    -999,
    -999,
    -1000,
    -1000,
    -1000,
    -999,
    -999,
    -998,
    -996,
    -995,
    -993,
    -990,
    -988,
    -985,
    -982,
    -978,
    -974,
    -970,
    -966,
    -961,
    -956,
    -951,
    -946,
    -940,
    -934,
    -927,
    -921,
    -914,
    -906,
    -899,
    -891,
    -883,
    -875,
    -866,
    -857,
    -848,
    -839,
    -829,
    -819,
    -809,
    -799,
    -788,
    -777,
    -766,
    -755,
    -743,
    -731,
    -719,
    -707,
    -695,
    -682,
    -669,
    -656,
    -643,
    -629,
    -616,
    -602,
    -588,
    -574,
    -559,
    -545,
    -530,
    -515,
    -500,
    -485,
    -469,
    -454,
    -438,
    -423,
    -407,
    -391,
    -375,
    -358,
    -342,
    -326,
    -309,
    -292,
    -276,
    -259,
    -242,
    -225,
    -208,
    -191,
    -174,
    -156,
    -139,
    -122,
    -105,
    -87,
    -70,
    -52,
    -35,
    -17,
    0,
    17,
    35,
    52,
    70,
    87,
    105,
    122,
    139,
    156,
    174,
    191,
    208,
    225,
    242,
    259,
    276,
    292,
    309,
    326,
    342,
    358,
    375,
    391,
    407,
    423,
    438,
    454,
    469,
    485,
    500,
    515,
    530,
    545,
    559,
    574,
    588,
    602,
    616,
    629,
    643,
    656,
    669,
    682,
    695,
    707,
    719,
    731,
    743,
    755,
    766,
    777,
    788,
    799,
    809,
    819,
    829,
    839,
    848,
    857,
    866,
    875,
    883,
    891,
    899,
    906,
    914,
    921,
    927,
    934,
    940,
    946,
    951,
    956,
    961,
    966,
    970,
    974,
    978,
    982,
    985,
    988,
    990,
    993,
    995,
    996,
    998,
    999,
    999,
    1000

    );
    begin

    COS_OUTPUT <= Cos_Table(COS_TETA);

    end Cos_Function;

    اسمایل، تومورو ویل بی وُرس
  3. #13
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    سلام

    من قسمت زیر رو نفهمیدم

    برای مقادیر منفی هم این روش درسته، کافیه Integer range -128 to 127 در نظر بگیرید، برای تبدیلش به 0 تا 255 کافیه عدد اول رو به اضافه 128 بکنید و حاصلش رو در یک Integer range 0 to 255 بریزید، آخر سر عدد دوم رو به UNSIGNED تبدیل کنید و به خروجی بدید
    و دیگه اینکه اون تابع to_unsigned رو اگر میشه قرار بدید

    با عرض معذرت و تشکر
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  4. #14
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl

    نقل قول نوشته اصلی توسط electronics
    سلام

    من قسمت زیر رو نفهمیدم

    و دیگه اینکه اون تابع to_unsigned رو اگر میشه قرار بدید

    با عرض معذرت و تشکر
    سلام،
    خواهش میکنم،
    در جواب بخش اول، دو متغییر، اولی علامت دار و دومی بدون علامت از جنس Integer تعریف میکنید، برای تبدیل رنج عدد 128- تا 127 و دادن اون به DAC باید عددتون بین 0 تا 255 باشه، یعنی بدون علامت، پس متغییر علامت دار رو به اضافه 128 میکنید و در متغییر بدون علامت ذخیره میکنید، در جواب بخش دوم، حالا برای اینکه عدد Integer رو بخ پایه ها بدین کافیه:

    SEVEN_SEGMENT_1_OUT(0) = to_unsigned(uInt, 8)(0);
    که uInt به این صورت تعریف میشه:
    uInt : IN INTEGER RANGE 0 TO 255;
    و در توضیح فانکشن to_unsigned ، متغییر رو که به فانکشن میدین باید تعیین کنید که این عدد رو میخواین به چند بیت تبدیل کنید، اینجا ما 8 بیت میخوایم، در بخش بعدی هم باید بیت به بیت تعیین کنیم کدوم بیت از متغییر UNSIGNED به کدوم بیت از متغییر STDLOGIC میره.
    اسمایل، تومورو ویل بی وُرس
  5. #15
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    سلام دوباره

    شما میدونید چه طور فرکانس یک اسیلاتور رو میشه پایین آورد؟

    منظورم کد VHDL هستش؟

    با تشکر
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  6. #16
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl

    نقل قول نوشته اصلی توسط electronics
    سلام دوباره

    شما میدونید چه طور فرکانس یک اسیلاتور رو میشه پایین آورد؟

    منظورم کد VHDL هستش؟

    با تشکر
    سلام،
    اگه منظورتون این هستش که یک کلاک رو از یک اوسیلاتور بگیرید و اون رو کاهش بدید و بعد استفاده کنید، بهترین روش DCO هستش( Digitally Controlled Oscillator) ، هم قابلیت اختلاف فاز رو بهتون میده و هم تغییر در فرکانس رو، تعداد بیتهای شمارنده ای که به کار می برین هم دقتتون رو کم و زیاد میکنه.
    اسمایل، تومورو ویل بی وُرس
  7. #17
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    Digitally Controlled Oscillator
    منظورتون از این عبارت همون شمارنده است؟

    چون من این عبارت رو نفهمیدم!!


    چون مثلا من میخوام همون اعدادی که در ابتدای این تاپیک بحثش شد رو( که هنوز نتونستم پیاده اش کنم!! ) روی

    LCD نشون بدم برای نوشتن روی lcd نیاز به کلاک دارم ( نمیدونم با چه فرکانسی!!) در حالی که کریستال من

    40MHZ هستش و برای این منظور کلاک به مراتب پایین تری نیازه ولی چه جوری؟

    از اینکه راهنمایی میکنین ممنونم.


    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  8. #18
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl


    منظورتون از این عبارت همون شمارنده است؟
    از شمارنده استفاده میکنه ولی به معنی شمارنده نیست، نوعی اوسیلاتور هست که یک کلاک ثابت رو میگیره و هر کلاک دلخواه پایین تر از کلاک اصلی رو میده.


    چون مثلا من میخوام همون اعدادی که در ابتدای این تاپیک بحثش شد رو( که هنوز نتونستم پیاده اش کنم!! ) روی

    LCD نشون بدم برای نوشتن روی lcd نیاز به کلاک دارم ( نمیدونم با چه فرکانسی!!) در حالی که کریستال من

    40MHZ هستش و برای این منظور کلاک به مراتب پایین تری نیازه ولی چه جوری؟
    برای اینکار، میتونید از همون تکنیکی استفاده کنید که برای PWM استفاده میشه، یعنی یک شمارنده میسازید که با کلاک 40 مگ بشمره، حالا اگه مثلا کلاک 1 هرتز لازم دارین کافیه شمارنده تا عدد 40 میلیون بشمره، هر موقع به این عدد رسید یک کلاک به ماژول LCD زده میشه و اینکار هر بار تکرار میشه، یادتون نره که شمارنده رو مساوی صفر قرار بدین، هر بار که به 40 میلیون رسید.

    از اینکه راهنمایی میکنین ممنونم.
    خواهش میکنم
    اسمایل، تومورو ویل بی وُرس
  9. #19
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    با سلام مجدد

    سوالی که دارم اینه که چه طور میشه یک کلاک رو از یک ورودی گرفت و لبه های بالا رونده اونو شمرد؟

    با تشکر فراوان
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  10. #20
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl

    نقل قول نوشته اصلی توسط electronics
    با سلام مجدد

    سوالی که دارم اینه که چه طور میشه یک کلاک رو از یک ورودی گرفت و لبه های بالا رونده اونو شمرد؟

    با تشکر فراوان
    process(CLOCK_IN)
    begin
    if rising_edge(CLOCK_IN) then
    --اینجا کدتون رو مینویسید--
    end if;
    end process;
    اسمایل، تومورو ویل بی وُرس
صفحه 2 از 6 نخست 123456 آخرین
نمایش نتایج: از 11 به 20 از 56

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

  1. یه سوال خیلی مبتدیانه در مورد VHDL
    توسط masoud58 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 5
    آخرين نوشته: 2015/04/03, 15:04
  2. سوال در مورد برنامه نويسي fpga با زبان vhdl
    توسط ajapyy در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 11
    آخرين نوشته: 2013/02/23, 00:15
  3. سوال در مورد VHDL
    توسط hamid256 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 1
    آخرين نوشته: 2010/12/07, 10:12
  4. یه سوال فنی VHDL
    توسط nimooly در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 8
    آخرين نوشته: 2010/11/06, 20:46
  5. سوال در مورد vhdl
    توسط 8423067 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 3
    آخرين نوشته: 2009/02/16, 17:14

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

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

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

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

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