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

آموزش 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
  • قابلیت اطمینان بیشتر و بهینه‌گی مدار

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

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

حمایت از سپهر

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

2 دیدگاه

  • آموزش FPGA قسمت شانزدهم: توصیف عناصر حافظه (بخش پنجم) - سیسوگ - Sisoog
    ۲۷ شهریور ۱۳۹۸

    […] قسمت پانزدهم از مجموعه آموزشی FPGA در مورد نحوه‌ی نوشتن ریست در […]

  • آموزش FPGA قسمت چهاردهم: توصیف عناصر حافظه (بخش سوم) - سیسوگ - Sisoog
    ۱۲ شهریور ۱۳۹۸

    […] از منابع درونی FPGA و … از جمله سوالاتی هستند که در قسمت پانزدهم جواب داده خواهند […]

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 1 سال پیش

درآمد زایی به سبک پینوکیو

ما مهندسین, بخصوص مهندسین برق و الکترونیک … علاقه خاصی به طراحی و ساختن داریم علاقه زیادی به تکنولوژی , بخصوص از...

Sisoog Os Sisoog Os
  • 3 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک