24 مرداد, 1400

اینترفیس پریفرال‌ها با FPGA

اینترفیس چیست؟

پریفرال چیست و چگونه با FPGA اینترفیس می‌شود؟

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

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

More...

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

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

حوزه‌های کاری در پیاده‌سازی با FPGA

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

به طور کلی در پیاده‌سازی با FPGA دو حوزه کاری مختلف زیر وجود دارد:

  • پیاده‌سازی الگوریتم‌های پردازش سیگنال با FPGA
  • پیاده‌سازی مدارات کنترلی و اینترفیس

در حوزه "پیاده‌سازی الگوریتم‌های پردازش سیگنال با FPGA"، شما روش‌های پیاده‌سازی بهینه هر نوع الگوریتم پردازش سیگنال در FPGA را یاد می‌گیرید و عملا برای پیاده‌سازی پروژه‌ها استفاده می‌کنید.

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

اما در حوزه "پیاده‌سازی مدارات کنترلی و اینترفیس"، شما با روش‌های پیاده‌سازی بهینه مدارات اینترفیسی و بخش‌های کنترلی سیستم‌های دیجیتال آشنا می‌شوید.

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

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

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

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

اینترفیس چیست؟

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

برای اینکه بخواهیم جمله بالا را واضح‌تر بیان کنیم تا مفهوم برایتان ملموس‌تر شود، ابتدا به شکل زیر دقت کنید:

اینترفیس بین FPGA و یک قطعه جانبی (پریفرال)

اینترفیس بین FPGA و یک قطعه جانبی (پریفرال)

فرض کنید بر روی برد، یک FPGA و یک مبدل دیجیتال به آنالوگ (DAC) داریم.

همانطور که به احتمال زیاد می‌دانید DAC تراشه‌ای است که یک سیگنال دیجیتال را در ورودی خود دریافت کرده و معادل آنالوگ این سیگنال دیجیتال را در خروجی ایجاد می‌کند.

اکنون اگر شما قصد کنترل این تراشه توسط FPGA را داشته باشید، قاعدتا باید این تراشه را به FPGA متصل کرده یا به عبارتی دیگر اینترفیس کنید.

برای انجام اینترفیس، نیاز است که ورودی-خروجی‌های مرتبط با DAC را به تعدادی از ورودی-خروجی‌های FPGA متصل کنید.

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

برای تکمیل اینترفیس نیاز است که شما مداری را در FPGA پیاده‌سازی کنید که وظیفه این مدار، کنترل کردن DAC است.

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

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

منظور از پریفرال، همان قطعه جانبی است که می‌خواهیم به FPGA متصل کنیم. مثلا، در مثال بالا DAC یک پریفرال است.

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

یک سوال که پیش می‌آید این است که مبنای طراحی مدار درون FPGA چیست؟

مبنای اصلی طراحی این مدار، دیتاشیت مربوط به پریفرالی است که می‌خواهیم آن را با FPGA اینترفیس کنیم.

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

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

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

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

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

نقشه راه پیاده‌سازی اینترفیس پریفرال‌ها با FPGA

نقشه راه پیاده‌سازی اینترفیس با FPGA

نقشه راه پیاده‌سازی اینترفیس با FPGA

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

آشنایی با مفاهیم

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

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

بررسی دیتاشیت

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

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

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

استخراج پارامترها

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

طراحی ماجول

این مرحله هم یکی از مهم‌ترین مراحل پیاده‌سازی است؛ چون طرح کلی آن چیزی که قرار است در نهایت پیاده‌سازی شود را در این مرحله ایجاد می‌کنیم.

بنابراین باید با دقت، نیازهای ماجول را سنجیده و تمام جزئیات آن را بر روی یک کاغذ طراحی کرد.

پیاده‌سازی ماجول

پس از اینکه ماجول را بر روی کاغذ طراحی کردیم، وقت آن است که وارد یکی از نرم‌افزارهای پیاده‌سازی مثل ISE یا Vivado شویم و به کمک کدنویسی با استفاده از زبان VHDL و احتمالا استفاده از بعضی از IPها، ماجول موردنظر خودمان را پیاده‌سازی کنیم.

تهیه سناریوهای تست

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

این مرحله هم بسیار مهم است و نیازمند این است که ابتدا کمی فکر کنیم و ببینیم با چه سناریوهایی می‌توانیم صحت عملکرد مدار را تست کنیم.

تست عملی و تجمیع

تست عملی به این معنا است که مدار را هنگامی که به صورت عملی و بر روی FPGA در حال کار است تست کنیم.

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

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

تا اینجا شما با هفت مرحله‌ای که در نقشه راه پیاده‌سازی قرار داشت، آشنا شدید.

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

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

بنابراین اجازه دهید یک بار دیگر این مرحله را با جزئیات بیشتری توضیح دهیم و راه‌کارهایی را برای پیش‌برد هر چه بهتر این مرحله ارائه نماییم.

نحوه بررسی دیتاشیت و استخراج پارامترهای لازم

در دیتاشیت هر پریفرالی، تمام اطلاعات مربوط به آن پریفرال وجود دارد.

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

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

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

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

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

سپس این سوالات را در جایی یادداشت کنید و در حین مطالعه نیز به آنها توجه داشته باشید.

این یک تکنیک بسیار عالی است که به شما کمک می‌کند بتوانید راحت‌تر اطلاعات مورد نیازتان را از میان انبوه اطلاعات موجود در دیتاشیت به دست بیاورید.

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

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

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

  • پروتکل ارتباط با این تراشه و timing آن چیست؟
  • کدام استاندارهای IO در این پریفرال استفاده شده است؟
  • نحوه انجام تنظیمات تراشه (در صورت وجود) چیست؟
  • کدام پایه‌های IO در پروژه من مورد نیاز است؟

سوالات بالا، چهار سوال کلی و مهم هستند که قبل از خواندن دیتاشیت پریفرال، باید از خود بپرسید و سپس در دیتاشیت پریفرال موردنظر به دنبال پاسخ آنها باشید.

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

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

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

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

سعی می‌کنیم در یک مقاله جداگانه، راهکارها و تکنیک‌های بسیار کاربردی را برای مرحله طراحی ماجول ارائه دهیم تا در مرحله پیاده‌سازی ماجول، یک ماجول بهینه را پیاده‌سازی کنید.

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

شاید به این موضوعات نیز علاقه داشته باشید:

  • سلام
    خیلی ممنونم . مقاله خوبی بود و بصورت خیلی منظم و حرفه ای مراحل کاری لازم برای ایجاد یک اینترفیس را توضیح داده بود.

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    ۷ تکنیک پیشرفته کدنویسی برای FPGA

    >