محاسبات علامتدار

پیاده‌سازی محاسبات علامتدار در FPGA

برای نمایش اعداد علامتدار و پیاده‌سازی محاسبات علامتدار در FPGA و به کمک زبان VHDL روش‌های مختلفی وجود دارد. در این برنامه ویدئویی، یک روش امتحان شده را که سال‌ها است در پروژه‌های بزرگ از آن استفاده کرده‌ام و البته توصیه مهندسان شرکت Xilinx هم است به شما آموزش می‌دهم.

آشنایی با روش صحیح نمایش اعداد علامتدار و انجام محاسبات علامتدار، قدم اول در مسیر یادگیری نحوه پیاده‌سازی الگوریتم‌های پردازش سیگنال دیجیتال با FPGA است. بسیار مهم است که شما درک صحیحی از یک سیستم دیجیتال علامتدار داشته باشید و همچنین بدانید چگونه باید چنین سیستمی را به کمک زبان VHDL در FPGAها پیاده‌سازی کرد.

برای آشنایی با زبان VHDL این برنامه ویدئویی را ببینید…

در این برنامه ویدئویی، ابتدا سه روش مرسوم برای نمایش اعداد علامتدار را مرور می‌کنم و سپس در مورد روش مناسب برای پیاده‌سازی که روش نمایش مکمل دو یا two’s complement است شرح می‌دهم.

سیستم نمایش مکمل دو دارای خصوصیات منحصر به فردی است که بعضی از آنها کمتر مورد توجه طراحان دیجیتال است. در این برنامه، سه خصوصیت مهم این سیستم را شرح می‌دهم و مثالی هم در مورد یکی از خصوصیات مهم اما کمتر شناخته شده سیستم نمایش مکمل دو ارائه می‌کنم.

در ادامه این برنامه، روش استاندارد و امتحان شده‌ای را برای پیاده‌سازی محاسبات علامتدار در FPGA به شما آموزش خواهم داد و یک نمونه کد VHDL را هم به عنوان مثال بررسی خواهم کرد.

لینک دانلود (زمان: ۱۴ دقیقه — ۲۵ مگابایت)

 

آیا برنامه ویدئویی پیاده‌سازی محاسبات علامتدار در FPGA برای شما مفید بود؟

لطفا نظرتان را در مورد این برنامه در پایین همین پست با دیگران به اشتراک بگذارید. همچنین با فشردن هر کدام از دکمه‌های زیر و اشتراک‌گذاری این مطلب در شبکه‌های اجتماعی می‌توانید افراد بیشتری را در یادگیری این مطالب سهیم کنید.

کانال آموزش FPGA از صفر

11 پاسخ
  1. MONTGOMERY
    MONTGOMERY گفته:

    سلام و عرض خسته نباشید دارم خدمت استاد عزیزم جناب آقای ثقفی عزیز …
    استاد یک سوال میخواهیم ۱۸ عدد مختلف رو جمع کنیم و میدانیم جواب نهایی ۵ بیتی است .
    حال نکته اینجاست اعداد ما همگی ۷ بیتی هستند ، برای اینکار هر دوعدد ۷ بیتی را که جمع میکنیم حاصل را باید بریزیم در یک سیگنال ۸ بیتی و در ادامه هر دوسیگنال ۸ بیتی را که با هم جمع میکنیم باید بریزیم در یک سیگنال ۹ بیتی و به همین ترتیب که ادامه بدهیم جواب نهایی را باید بریزیم در یک سیگنال ۱۰ – ۱۱ بیتی درحالی که میدانیم جواب نهایی به ۵ بیت بیشتر نیاز ندارد . خوب حال سوال اینجاست کجا باید از درنظر گرفتن بیت اضافی صرفه جویی کنیم و اصلا تکنیکی که شما بیان کردید در ویدئو کجای کار مارا و چطور ساده میکند؟؟؟
    پیشاپیش از شما متشکرم

    پاسخ دادن
    • احمد ثقفی
      احمد ثقفی گفته:

      سلام، ممنون از شما.

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

      موفق باشید.

      پاسخ دادن
  2. مهدی
    مهدی گفته:

    با سلام و عرض تشکر از زحمت های شما
    مطالب جالبی میزارید و مخصوصا من از مقاله ۷ تکنیک پیشرفته کدنویسی خیلی لذت بردم. به نظر من مقاله ها خیلی آموزنده تره و مطالب سریعتر منتقل میشه
    یه سوال هم درباره پیاده سازی دارم: این که به نظر شما برای پیاده سازی پردازش سیگنال دیجیتال چه دلیلی داره که ما از کد VHDL استفاده کنیم؟ در حالی که با استفاده از System Generator خیلی گویا تر و بهینه تر میشه این سیستم ها رو پیاده کرد و به نظر من دیدن مسیر سیگنال، تاخیرها و خطاها خیلی راحت تره و دیباگ کردنش هم راحت تر انجام میشه

    پاسخ دادن
    • احمد ثقفی
      احمد ثقفی گفته:

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

      در مورد پیاده‌سازی الگوریتم‌های پردازش سیگنال با System Generator باید بگم که مساله “بهینه بودن” که اشاره کردید در عمل کاملا برعکسه. یعنی مداری که حاصل از کدنویسی یک پیاده‌ساز حرفه‌ای است بسیار بهینه‌تر از خروجی System Generator هست، هم از نظر سرعت و هم از نظر مقدار منابع مصرف شده در FPGA یا همان area.

      استفاده از ابزار System Generator فقط برای مدارات پردازشی کوچک، آن هم در صورتی که راه مناسبی برای پیاده‌سازی به کمک زبان توصیف سخت‌افزاری پیدا نکردید پیشنهاد می‌شود و در انجام پروژه‌های حرفه‌ای استفاده از آن بسیار محدود است.

      در هر صورت یادگیری و استفاده از آن ممکن است در بعضی موارد برای شما مفید باشد، اما فراموش نکنید آنچه باعث برتری شما در این حوزه می‌شود، تسلط به کدنویسی اصولی و استفاده درست از منابع سخت‌افزاری FPGA است.

      موفق باشید.

      پاسخ دادن
  3. امین
    امین گفته:

    سلام استاد
    با تشکر از اموزش محاسبات علامت دار
    لطفا آموزش بعدی رو درمورد استفاده از اعداد اعشاری در vhdl و fixed point و float point قرار بدید.
    و اینکه چه موقع بهتر است از کدوم استفاده بشه
    به نظرم یکی از مباحث مهم و ابتدایی در پیاده سازی الگوریتم های پردازشی باشه

    مرسی

    پاسخ دادن
  4. علی
    علی گفته:

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

    پاسخ دادن
    • احمد ثقفی
      احمد ثقفی گفته:

      سلام،

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

      موفق باشید.

      پاسخ دادن

تعقیب

  1. […] برنامه ویدئویی قبلی که در سایت منتشر کردم، شما را با نحوه پیاده‌سازی محاسبات علامتدار در FPGA آشنا کردم و در مورد نمایش اعداد علامتدار به روش مکمل دو […]

دیدگاه خود را ثبت کنید

خوشحال خواهم شد نظر شما را در مورد این پست بدانم.
ایمیل شما برای دیگران قابل مشاهده نخواهد بود.

پاسخ دهید

You have to agree to the comment policy.