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





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









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









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






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

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

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

    یک سوال در مورد vhdl

    سلام دوستان

    من آرایه ای در VHDL تعریف کردم در قسمت package به صورت زیر:

    type u is array (0 to 1500) of real;

    بعد در داخل برنامه U را به صورت زیر مقدار دهی کردم:

    for i in 1 to N loop

    u(i) := 1.0;

    end loop;



    ولی هر چی اجرا می کنم خطای زیر رو می گیرم، کسی میدونه اشکال کار من کجاست؟ چون syntax error نداره!


    ERROR:HDLParsers:854: The expression can not be converted to type u

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

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

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

    من آرایه ای در VHDL تعریف کردم در قسمت package به صورت زیر:

    type u is array (0 to 1500) of real;

    بعد در داخل برنامه U را به صورت زیر مقدار دهی کردم:

    for i in 1 to N loop

    u(i) := 1.0;

    end loop;



    ولی هر چی اجرا می کنم خطای زیر رو می گیرم، کسی میدونه اشکال کار من کجاست؟ چون syntax error نداره!


    ERROR:HDLParsers:854: The expression can not be converted to type u
    سلام،
    عدد N باید Constant باشه و نباید تغییر پذیر باشه. در ضمن عضو اول آرایه رو هم از دست دادین. مشکل اصلی هم سر اینه که خود تایپ رو نوشتین، در صورتی که باید متغییری رو از نوع U تعریف کنید و اون رو در حلقه مقدار دهی کنید.
    اسمایل، تومورو ویل بی وُرس
  3. #3
    2008/01/01
    111
    0

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

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

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

    نقل قول نوشته اصلی توسط electronics
    یعنی باید یک متغییر از نوع آرایه تعریف کنم؟

    type u is array (0 to 1500) of real;
    variable myArray : u;
    اسمایل، تومورو ویل بی وُرس
  5. #5
    2008/01/01
    111
    0

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

    حالا سوالی دیگر؟

    دنباله ای از اعداد داخل یک حلقه for ایجاد شده

    می خواهیم این عددها(این عددها یک شکل موج رو تخمین می زنند) را روی اسکوپ نشون بدیم. یک دونه dac0800 هم روی برد FPGA

    موجود هست.

    حالا چطور این اعداد می تونند به خارج منتقل بشوند چون FPGA فقط صفر و یک توی خروجی میده؟

    با تشکر

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

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

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

    دنباله ای از اعداد داخل یک حلقه for ایجاد شده

    می خواهیم این عددها(این عددها یک شکل موج رو تخمین می زنند) را روی اسکوپ نشون بدیم. یک دونه dac0800 هم روی برد FPGA

    موجود هست.

    حالا چطور این اعداد می تونند به خارج منتقل بشوند چون FPGA فقط صفر و یک توی خروجی میده؟

    با تشکر
    اگه درست متوجه شده باشم شما قصد دارید سیگنالی با استفاده از DAC به صورت آنالوگ ایجاد کنید که داده های دیجیتالی DAC رو میخواید از FPGA بگیرید.
    برای نمونه اگه DAC شما 8 بیتی هست(D0 تا D7) باید 8 پایه FPGA رو به صورت output تعریف کنید که به پایههای داده DAC وصل باشن.
    اون اطلاعات شکل موج رو که گفتین هم که در یک آرایه هست، میمونه سمپل ریتتون که اون رو کلاک ورودی به ماژولتون تعیین میکنه( کلاک ورودی به پروسسی که قراره مثلا اطلاعات آرایه رو روی لبه بالا رونده کلاک، روی خروجی قرار بده، خروجی هم که به DAC وصله).

    این کدی که براتون میذارم مبدل عدد ده دهی به کد BCD هست که برای نمایشگرهای 7Segment به کار میره، همین رو میتونید تبدیل کنید به چیزی که میخواید، البته کمی تغییرات لازم داره، مثلا این مدار ترکیبیه و چیزی که شما لازم دارین مدار ترتیبیه، یعنی کلاک لازم داره تا اعداد رو دونه دونه بده بیرون، میشه همین رو هم استفاده کرد و در بخش ورودی این مدار، ورودی رو (همون ایندکس آرایه) به ترتیب داد، با کلاک مجزا.

    --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 L7SEG_Controller is
    port (
    DIGIT_1_IN,
    DIGIT_2_IN,
    DIGIT_3_IN,
    DIGIT_4_IN : in integer range 0 to 15;
    SEVEN_SEGMENT_1_OUT,
    SEVEN_SEGMENT_2_OUT,
    SEVEN_SEGMENT_3_OUT,
    SEVEN_SEGMENT_4_OUT : out STD_LOGIC_VECTOR (6 downto 0)
    );
    end L7SEG_Controller;


    architecture L7SEG_Controller_Function of L7SEG_Controller is
    type Stream is array(0 to 15) of STD_LOGIC_VECTOR(7 downto 0);
    constant Seven_Segment_Data_Stream : Stream := ( x"40",
    x"F9",
    x"A4",
    x"B0",
    x"99",
    x"92",
    x"02",
    x"F8",
    x"00",
    x"10",
    x"08",
    x"03",
    x"46",
    x"21",
    x"06",
    x"0E"
    begin
    SEVEN_SEGMENT_1_OUT(0) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(0);
    SEVEN_SEGMENT_1_OUT(1) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(1);
    SEVEN_SEGMENT_1_OUT(2) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(2);
    SEVEN_SEGMENT_1_OUT(3) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(3);
    SEVEN_SEGMENT_1_OUT(4) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(4);
    SEVEN_SEGMENT_1_OUT(5) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(5);
    SEVEN_SEGMENT_1_OUT(6) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(6);

    SEVEN_SEGMENT_2_OUT(0) <= Seven_Segment_Data_Stream(DIGIT_2_IN)(0);
    SEVEN_SEGMENT_2_OUT(1) <= Seven_Segment_Data_Stream(DIGIT_2_IN)(1);
    SEVEN_SEGMENT_2_OUT(2) <= Seven_Segment_Data_Stream(DIGIT_2_IN)(2);
    SEVEN_SEGMENT_2_OUT(3) <= Seven_Segment_Data_Stream(DIGIT_2_IN)(3);
    SEVEN_SEGMENT_2_OUT(4) <= Seven_Segment_Data_Stream(DIGIT_2_IN)(4);
    SEVEN_SEGMENT_2_OUT(5) <= Seven_Segment_Data_Stream(DIGIT_2_IN)(5);
    SEVEN_SEGMENT_2_OUT(6) <= Seven_Segment_Data_Stream(DIGIT_2_IN)(6);

    SEVEN_SEGMENT_3_OUT(0) <= Seven_Segment_Data_Stream(DIGIT_3_IN)(0);
    SEVEN_SEGMENT_3_OUT(1) <= Seven_Segment_Data_Stream(DIGIT_3_IN)(1);
    SEVEN_SEGMENT_3_OUT(2) <= Seven_Segment_Data_Stream(DIGIT_3_IN)(2);
    SEVEN_SEGMENT_3_OUT(3) <= Seven_Segment_Data_Stream(DIGIT_3_IN)(3);
    SEVEN_SEGMENT_3_OUT(4) <= Seven_Segment_Data_Stream(DIGIT_3_IN)(4);
    SEVEN_SEGMENT_3_OUT(5) <= Seven_Segment_Data_Stream(DIGIT_3_IN)(5);
    SEVEN_SEGMENT_3_OUT(6) <= Seven_Segment_Data_Stream(DIGIT_3_IN)(6);

    SEVEN_SEGMENT_4_OUT(0) <= Seven_Segment_Data_Stream(DIGIT_4_IN)(0);
    SEVEN_SEGMENT_4_OUT(1) <= Seven_Segment_Data_Stream(DIGIT_4_IN)(1);
    SEVEN_SEGMENT_4_OUT(2) <= Seven_Segment_Data_Stream(DIGIT_4_IN)(2);
    SEVEN_SEGMENT_4_OUT(3) <= Seven_Segment_Data_Stream(DIGIT_4_IN)(3);
    SEVEN_SEGMENT_4_OUT(4) <= Seven_Segment_Data_Stream(DIGIT_4_IN)(4);
    SEVEN_SEGMENT_4_OUT(5) <= Seven_Segment_Data_Stream(DIGIT_4_IN)(5);
    SEVEN_SEGMENT_4_OUT(6) <= Seven_Segment_Data_Stream(DIGIT_4_IN)(6);

    end L7SEG_Controller_Function;

    موفق باشید.
    اسمایل، تومورو ویل بی وُرس
  7. #7
    2008/01/01
    111
    0

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

    ببخشید دوست عزیز

    کلیات برنامه شما را متوجه شدم

    فقط؟

    در قسمتی که عدد دهدهی به BCD تبدیل میشه سوال دارم؟

    constant Seven_Segment_Data_Stream : Stream := ( x"40",
    x"F9",
    x"A4",
    x"B0",
    x"99",
    x"92",
    x"02",
    x"F8",
    x"00",
    x"10",
    x"08",
    x"03",
    x"46",
    x"21",
    x"06",
    x"0E"
    begin
    SEVEN_SEGMENT_1_OUT(0) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(0);
    واینکه جمله زیر را برای بنده توضیح بدید(البته اگر امکان داره)

    Seven_Segment_Data_Stream(DIGIT_1_IN)(0)

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

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

    نقل قول نوشته اصلی توسط electronics
    ببخشید دوست عزیز

    کلیات برنامه شما را متوجه شدم

    فقط؟

    در قسمتی که عدد دهدهی به BCD تبدیل میشه سوال دارم؟

    واینکه جمله زیر را برای بنده توضیح بدید(البته اگر امکان داره)

    Seven_Segment_Data_Stream(DIGIT_1_IN)(0)

    از لطف شما دوست خوبم متشکرم
    - Seven_Segment_Data_Stream که آرایه داده هاست که اعداد BCD رو نگه میداره.

    - DIGIT_1_IN ایندکس آرایه هست که تعیین میکنه کدوم عدد BCD باید در خروجی ظاهر بشه، مثلا برای عدد 0 عضو اول یعنی 0x40 باید به خروجی بره، البته این کد Low Active هست، یعنی هر بیتی که در عدد 0x40 صفر است در 7segment روشنه و هر بیت 1 در 7segment خاموشه. مثلا اگر بخوام عدد 1390 رو روی 4 7segment نمایش بدم،
    DIGIT_1_IN = 1
    DIGIT_2_IN = 3
    DIGIT_3_IN = 9
    DIGIT_4_IN = 0
    که DIGIT_1_IN به عضو دوم در آرایه اشاره میکنه.

    - در بخش آخر هم باید عضو انتخابی به صورت بیت به بیت به پایه های FPGA بره، پس باید اونها رو با هر ترتیبی که مورد نظرم هست به خروجی بدم، اینجا من ترتیب ارزش بیتها رو اینطور در نظر گرفتم، بیت 0 کمترین ارزش رو داره و بیت 6 بیشترین ارزش.
    پس برای SEVEN_SEGMENT_1_OUT که خروجی هست و هر بیتش متصل به یک پایه میشه در تعریف بیرونیش، باید Bit order رعایت بشه،

    SEVEN_SEGMENT_1_OUT(0) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(0);
    SEVEN_SEGMENT_1_OUT(1) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(1);
    SEVEN_SEGMENT_1_OUT(2) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(2);
    SEVEN_SEGMENT_1_OUT(3) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(3);
    SEVEN_SEGMENT_1_OUT(4) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(4);
    SEVEN_SEGMENT_1_OUT(5) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(5);
    SEVEN_SEGMENT_1_OUT(6) <= Seven_Segment_Data_Stream(DIGIT_1_IN)(6);

    که Seven_Segment_Data_Stream(DIGIT_1_IN)(0 به بیت اول از عضوی اشاره میکنه که ایندکس DIGIT_1_IN اون رو انتخاب کرده. مثلا در مثال بالا که DIGIT_1_IN = 1 ، یعنی عضو دوم آرایه، اون بیت برابر 1 است. در ضمن من تعداد بیتهای عضو هر آرایه رو از 0 تا 7 در نظر گرفنم تا بتونم به صورت x"40 اعداد رو بنویسم، یعنی به صورت هگز.
    اسمایل، تومورو ویل بی وُرس
  9. #9
    2008/01/01
    111
    0

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

    سلام

    یعنی در واقع برای اینکه من یک عدد دهدهی رو به صورت باینری تبدیل کنم نیازی به دستور خاصی نیست و می تونم اون عدد رو بیت به بیت

    به پایه های مورد نظر خروجی بدم.

    درسته؟

    ولی از کجا بدونم هر عدد چند بیته؟ چون مهم اینه که هر عدد با مقدار 255(128- تا 128) نرمالیزه بشه چون DAC 0800 فقط 8 تا ورودی داره

    در واقع من به دنبال دستوری هستم که یک عدد حقیقی رو به آرایه ای از بیت ها (8 بیت) تبدیل کنه. تابتونم بیت ها رو تک تک و به ترتیب

    ارزش به مبدل dac بدم.

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

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

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

    یعنی در واقع برای اینکه من یک عدد دهدهی رو به صورت باینری تبدیل کنم نیازی به دستور خاصی نیست و می تونم اون عدد رو بیت به بیت

    به پایه های مورد نظر خروجی بدم.

    درسته؟

    ولی از کجا بدونم هر عدد چند بیته؟ چون مهم اینه که هر عدد با مقدار 255(128- تا 128) نرمالیزه بشه چون DAC 0800 فقط 8 تا ورودی داره

    در واقع من به دنبال دستوری هستم که یک عدد حقیقی رو به آرایه ای از بیت ها (8 بیت) تبدیل کنه. تابتونم بیت ها رو تک تک و به ترتیب

    ارزش به مبدل dac بدم.

    خیلی ممنون از راهنمایی شما
    سلام،
    در مورد تبدیل عدد ده دهی به باینری که قابل اتصال به پایه ها باشن باید چند کار انجام بشه، اولین و مهمترینش Latch هست که عددتون رو روی پایه ها نگه داره، این کار رو با STD_LOGIC_VECTOR انجام میدین، وقتی متغییری رو از این جنس در کدتون نعریف میکنید و در PinPlanner مشخص میکنید که هر بیت این متغییر به کدوم پایه متصل هست، خود Synthesizer به صورت خودکار براش D-FF میذاره که نقش همون Latch رو بازی میکنه، البته اگه با کلاک مقدار میگیره.
    حالا برای مقدار دهی این رجیستر یا همون Latch، باید یک متغییر دیگه این متغییر رو پدیت کنه، برای این کار اون رجیستر ممکنه عدد و یا هر داده ای رو ذخیره کرده باشه و ما به صورت بیتی یا همون باینری میخوایم روی پایه ها عددمون رو داشته باشیم، برای اینکار هم چندین روش وجود داره، یکیش اینه که عددتون رو به صورت Integer تعریف کنید، هر عمل ریاضی که لازمه انجام بدید، بعد با استفاده از فانکشن to_unsigned عددتون رو به یک UNSIGNED تبدیل کنید، در آخر هم هر بیت UNSIGNED رو در هر بیت STD_LOGIC ها بریزید.
    اسمایل، تومورو ویل بی وُرس
صفحه 1 از 6 123456 آخرین
نمایش نتایج: از 1 به 10 از 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)

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

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