FPGA, آموزش, توصیه شده, مقاله

آموزش FPGA قسمت پانزدهم: توصیف عناصر حافظه (بخش چهارم)

آموزش FPGA

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

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

اجازه بدهید ابتدا کد جلسه قبل را دوباره بازنویسی کنیم تا درباره آن بهتر بتوانیم توضیح بدهیم.

همانطور که از قسمت قبل می‌دانید، کد بالا توصیف ریست سنکرون است. اکنون قصد داریم که بررسی کنیم که ریست سنکرون با این نحوه کدنویسی به چه صورت در FPGA پیاده‌سازی می‌شود. به مدار زیر توجه کنید:

Reset in FPGA

مدار پیاده‌سازی شده بسیار ساده می‌باشد و یک فلیپ‌فلاپ می‌باشد که شما قبلا تقریبا همین مدار را دیده بودید اما الان یک چیز دیگر به نام ریست به همان فلیپ‌فلاپ اضافه شده است. عملکرد ریست را هم که از قسمت قبل می‌دانید و نیاز به هیچ توضیح اضافی نیست.

حال بیایید یک تغییر کوچک در کد بدهیم و ببینیم که چه اتفاقی در مداری که درون FPGA پیاده‌سازی می‌شود خواهد افتاد.

ما در کد بالا شرط زیر را نوشتیم:

اکنون قصد داریم فقط با یک تغییر کوچک همین یک خط کد را در کد اصلی به صورت زیر تغییر دهیم:

اگر توجه کنید فقط مقدار 1 را با مقدار 0 جایگزین کردیم، یعنی سیگنال ریست با مقدار 0 مقایسه می‌شود و هر موقع که ریست برابر 0 بود عمل موردنظر انجام می‌شود در صورتی که قبلا به این صورت بود که سیگنال ریست با مقدار 1 مقایسه می‌شد و هر موقع ریست برابر با 1 بود عمل موردنظر انجام می‌شد.

نهایتا کد ما به صورت زیر تغییر می‌کند:

باید یک بار دیگر مدار پیاده‌سازی شده در FPGA را درون نرم‌افزار ISE باز کنیم تا ببینیم با یک تغییر کوچک در کد، چه تغییری در سخت‌افزار به وجود آمده است!

به مدار زیر توجه کنید:

Reset in FPGA

همانطور که مشاهده می‌کنید یک تغییر بسیار کوچک در مدار پیاده‌سازی شده به وجود آمده است، این تغییر کوچک، اضافه شدن یک گیت نات به مدار قبلی است. اما دلیل این موضوع چیست؟ دلیل این موضوع چیزی نیست به جز توضیح کلی زیر:

ریست فلیپ‌فلاپ‌های، FPGAهای شرکت Xilinx با مقدار 1 منطقی عمل می‌کند (ریست می‌شود)، حال اگر شما سیگنال ریست را در شرطی با مقدار 0 منطقی مقایسه کنید، یک گیت قبل از ریست FPGA قرار خواهد گرفت تا این عمل به درستی صورت بپذیرد.

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

همانطور که می‌دانید گیت‌های منطقی می‌توانند در حد نانو ثانیه تاخیر ایجاد کنند (در تکنولوژی‌های مختلف این مقدار می‌تواند متفاوت باشد) یعنی مثلا 1 نانو ثانیه طول خواهد کشید تا مقدار سیگنال، از ورودی یک گیت به خروجی همان گیت منتقل شود. پس وجود هر گیت منطقی یا به طور کلی یک مدار ترکیبی بین مدارات ترتیبی می‌تواند عامل محدودکننده سرعت باشد.

وقتی سیگنال ریست را با مقدار 0 مقایسه می‌کنیم دقیقا همین اتفاق رخ می‌دهد، و یک گیت نات که خود یک مدار ترکیبی می‌باشد قبل از ورودی ریست فلیپ‌فلاپ قرار می‌گیرد که همین تغییر کوچک باعث کاهش سرعت مدار خواهد شد.

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

شاید با خودتان فکر کنید که مگر یک گیت نات تا چه اندازه می‌تواند سرعت مدار را کاهش دهد که تا این حد مته به خشخاش می‌گذاریم و می‌گوییم که از انجام این کارها باید به شدت اجتناب ورزید؟

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

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

به علاوه در نظر بگیرید که با رعایت کردن این نکات تا چه اندازه می‌توانیم در مصرف منابع درونی FPGA صرفه‌جویی کنیم و همچنین مدار بهینه‌تر و با قابلیت اطمینان بیشتری داشته باشیم.

با مواردی از این قبیل که می‌توانند سرعت مدار را کاهش دهند یا منابعی زیادی از FPGA مصرف کنند، در روند این مجموعه آموزشی آشنا خواهیم شد.

به طور کلی رعایت کردن موارد ذکر شده سه مورد زیر را نتیجه خواهد داد:

  • سرعت بالاتر
  • صرفه‌جویی در استفاده از منابع درونی FPGA
  • قابلیت اطمینان بیشتر و بهینه‌گی مدار

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

در قسمت شانزدهم دوباره در رابطه با موضوع ریست صحبت خواهیم کرد و دوباره نکاتی جدید را به شما آموزش خواهیم داد، پس با ما همراه باشید.


انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.  همکاری با سیسوگ

 

نوشته های مشابه

پاسخی بگذارید

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

2 دیدگاه