اطلاعیه

Collapse
No announcement yet.

Real operand is not supported in this context.

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    Real operand is not supported in this context.

    با سلام

    من برنامه ای نوشتم که هیچ syntax error ای نداره ولی در مرحله سنتز خطای

    زیر تولید می گردد:

    Real operand is not supported in this context.

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

    می خورند

    برای همین چیزی به عنوان پکیج بیشاپ وجود داره که تو اینترنت هست

    ولی طریقه استفاده ازش رو نمیدونم.

    کسی میتونه به من کمک کنه!!!

    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.

    #2
    پاسخ : Real operand is not supported in this context.

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

    در کل وقتی می خواید با اعداد اعشاری در سیستم های دیجیتال کار کنید باید برای خودتون یه قرارداد بگذارید. مثلاً فرض کنید که اعداد 16 بیتی هستند شامل 1 بیت علامت، 7 بیت برای قسمت صحیح و 10 بیت برای قسمت اعشاری. به این شیوه میگن Fixed-Point. یعنی مشخصه که ممیز عدد از کدام بیت شروع میشه و جای ممیز همیشه ثابته. یه جور دیگه هم میشه قرارداد کرد و اون اینکه اعداد رو به صورت پایه ضرب در 2 به توان یه عدد صحیح نشون بدیم. به این شیوه میگن Floating-Point.
    هر کدوم از این دو روش معایب و مزایایی دارن و بسته به کاری که میخوایم انجام بدیم از یکی استفاده می کنیم. مثلاً اعداد و محاسبات به صورت fixed-point حجم کمتری از سیلیکن(منظور منابع داخلی FPGA) اشغال می کنه و سرعت انجام محاسبات بیشتره. در عوض رنج(محدوده) اعداد کم هست. مثلاً تو مثال بالا که زدم، از 127- تا 127 رو بیشتر نمیشه نشون داد( با دقت 1/1024). اما روش floating point رنج بیشتری از اعداد رو پوشش میده ولی در عوض حجم بیشتری اشغال میکنه و سرعت کمتری داره.

    به عنوان نکته آخر باید بگم که چون تو سیستم های دیجیتال فعلی، سرعت پردازش اطلاعات و حجم حافظه و منابع محاسباتی خیلی مهمه. معمولاً از fixed-point استفاده میشه. دردسرش اینجاست که قبل از شروع طراحی سیستم با نرم افزار(منظورم گذاشتن بلوک های جمع کننده، ضرب کننده و ... مثلاً در ISE است) باید محدوده اعداد رو در تک تک نقاط و ورودی خروجی های بلوک ها بدونی و طبق اون برای هر بخش طرح قرار داد خاصی رو مد نظر بگیری.


    بازم اگه سوالی بود درخدمتم

    دیدگاه

    لطفا صبر کنید...
    X