تبدیل mfile متلب به کد VHDL

تبدیل mfile متلب به کد VHDL

آیا تا به حال از شما خواسته شده است که یک الگوریتم پردازشی توصیف شده با زبان C یا m. فایل متلب را در FPGA پیاده‌سازی کنید؟

اگر پاسخ شما به این سوال مثبت است، تماشای این برنامه ویدئویی را که در مورد تبدیل mfile متلب به کد VHDL است از دست ندهید.

در این برنامه، به شما نشان خواهم داد برای پیاده‌سازی و نوشتن کد VHDL یک الگوریتم پردازشی از روی یک برنامه به زبان C یا m. فایل متلب، چه نکاتی را باید در نظر بگیرید.

به این نکته تاکید می‌کنم که این برنامه در مورد روش‌های خودکار تبدیل mfile متلب به کد VHDL نیست و در آن به شما بینشی جدید ارائه خواهم کرد تا خودتان بتوانید کد VHDL معادل برنامه m. فایل متلب را به راحتی بنویسید.

به این نکته هم توجه کنید که در این برنامه، در مورد موضوعاتی مثل نحوه نمایش و پیاده‌سازی اعداد علامتدار در FPGA و یا نحوه پیاده‌سازی محاسبات اعشاری در FPGA صحبت نمی‌کنم و فقط در مورد نحوه تبدیل mfile متلب به کد VHDL برای پیاده‌سازی در FPGA صحبت خواهم کرد. البته نکاتی که گفته می‌شود می‌تواند برای زبان‌های دیگر برنامه‌نویسی مثل C هم به کار روند.

برای اینکه موضوع تبدیل mfile متلب به کد VHDL را بهتر متوجه شوید، یک مثال ساده اما کامل برای پیاده‌سازی یک الگوریتم پردازشی را به طور کامل توضیح خواهم داد.

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

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

به غیر از موضوع تبدیل mfile متلب به کد VHDL نکات بسیار مهم و کاربردی دیگری هم در این کد VHDL وجود دارد که پیشنهاد می‌کنم حتما آنها را یاد بگیرید و در پروژه‌هایتان استفاده کنید.

 

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

 

آیا برنامه ویدئویی تبدیل mfile متلب به کد VHDL برای شما مفید بود؟

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

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

12 پاسخ
  1. علی برزگر
    علی برزگر گفته:

    عالی بود. تشکر بابت تهیه و به اشتراک گذاری ویدیو . لطفا نحوه تهیه کد vhdl از بلوک های مطلب را نیزآموزش دهید.

    پاسخ
  2. neda
    neda گفته:

    سلام
    واقعاااااااا ممنونننننننمم..عالی بود..من مدتها بود دنبال این میگشتم…کسی نبود بهم یاد بده…حتی یادمه تو یه شرکتی برای کارشون باید اینو بلد میبودم…اون موقع بلد نبودم…حالا الان میدونم چیه…ممنونم…بازم منتظر ویدیوهای خوبتون هستیم

    پاسخ
  3. hanie
    hanie گفته:

    سلام
    اول واقعاً تشکر میکنم از مطالب خوب و آموزنده و تلاشی که در نشر آموخته هاتون دارید، قابل تقدیره 🙂
    راستش من یک چیزی رو متوجه نمیشم :
    الان شما توی این مثال داده ورودی رو بافر می کنید، پس یه کلاک تأخیر دارید یعنی یک کلاک بعد از آمدن هر داده مشخص، اون رو میتونید پردازش کنید.
    پس برای صحت عملیات نباید یک کلاک تأخیر ایجاد کنید توی شمارنده؟
    و اینکه accumulator سیگناله و مقداری که بهش تخصیص داده میشه سر کلاک بعدی قابل مشاهده است، توی کد مثال وقتی counter=10 باشه مقدار فعلی accumulaor مقدار مجموع ۹ داده قبل هست که سر کلاک بعدی داده دهم هم مجموعش به accumulator تخصیص داده میشه اما همین جا ی شرط هست که میاد مقدار accumulator رو بر ۸ تقسیم میکنه و میده به خروجی و accumulator رو صفر میکنه. یک جورایی به این سیگنال دوبار مقدار داده میشه و محاسبات مربوط به داده دهم از بین میره.
    راستش من این کدو نوشتم و سیمولیت کردم ولی داده دهم رو در محاسبات دخیل نمیکنه.
    ممکنه من اشتباه نوشتم یا چیزی اضافه کردم که در صحت جواب تأثیر میذاره.
    با تشکر از صبوری شما :))

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

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

      نکته‌ای که در ویدئو هم توضیح دادم این بود که در کد mfile متلب، مواردی وجود دارند که مربوط به پیاده‌سازی نیست و فقط برای نوشتن و مدلسازی کد متلب استفاده شده است.
      در عمل این سیستم با یک رشته بی‌نهایت دیتا مواجه است و اینکه ما در کد متلب آن را به دسته‌های ۱۰ تایی تقسیم کردیم، در عمل چنین دسته‌هایی وجود ندارد.
      بنابراین این مساله مقدار شمارنده در کدام مقدار ورودی ضرب می‌شود اهمیتی ندارد.
      در مورد accumulator هم مساله همین طور هست. ده مقدار متوالی با هم جمع می‌شوند اما اینکه از کجا شروع می‌شود مهم نیست.
      موفق باشید.

      پاسخ
  4. rezashavi
    rezashavi گفته:

    با عرض سلام خدمت استاد ثقفی
    در فایل ویدئویی “تبدیل m. فایل متلب به کد VHDL” مثالی ارائه نمودید که هر ۱۰ ورودی پیاپی را دریافت کرده و با استفاده از فرمولی یک خروجی به ازای آنها ارائه میدهد. من این مثال را در نرم افزار ISE وارد کردم. سپس یک فایل تست بنچ نیز برای آن آماده کردم. پس از شبیه سازی ملاحظه میشود به ازای هرگونه ورودی (چه اولین ورودی ۰ باشد و چه غیرصفر باشد) خروجی همواره مقدار صفر خواهد داشت. در این حالت اگر به جای شرط Data_in_int <= to_signed(0,14) در چک کردن منفی نبودن اعداد از شرط Data_in_int < to_signed(0,14) استفاده کنیم (یعنی مساوی را برداریم) پاسخ شبیه سازی درست میشود. هرچند نبود این مساوی از نظر محاسباتی و ریاضی تأثیری در نتیجه مطلوب ما ندارد، اما میخواستم بدانم علت این اتفاق از لحاظ زبان VHDL و پیاده سازی بر روی FPGA چیست؟ با تشکر و سپاس از حضرتعالی

    پاسخ

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

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *