آموزش اِف‌پی‌جی‌اِی از صفر
3.37K subscribers
520 photos
14 videos
10 files
517 links
آموزش قدم به قدم طراحی دیجیتال به کمک FPGA

🌎 آموزشگاه فراد اندیش
www.FaradAndish.com
☎️ ۴۲۴۳۹۹۰۰
ایمیل سایت:
help@faradandish.com

📌 لینک اولین پست کانال:
https://t.me/fpga0/22
Download Telegram
⚡️ موقعیت شغلی جدید در غرب تهران...

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

1️⃣ پیاده‌ساز مدارات اینترفیسی مبتنی بر FPGA
2️⃣ پیاده‌ساز الگوریتم‌های پردازش سیگنال در FPGA

❇️ اگر فکر می‌کنید مهارت و علاقه شما حداقل با یکی از موارد بالا تطبیق دارد، لطفا رزومه‌تان را به ایمیل زیر ارسال کنید:

📭 help@faradandish.com

☎️ رزومه شما به شرکت مورد نظر ارسال خواهد شد و آنها پس از بررسی، در صورت نیاز با شما تماس خواهند گرفت.

🆔 @FPGA0
⚡️ نحوه عملکرد حلقه for در زبان VHDL (قسمت اول)

🔷 حتماً تاکنون به دفعات از حلقه for در برنامه‌نویسی استفاده کرده‌اید.

🔷 احتمالاً، کمتر برنامه‌ای را سراغ دارید که آن را بدون استفاده از حلقه for نوشته باشید.

اما حلقه for در زبان‌های توصیف سخت‌افزاری، همچون زبان VHDL، به چه صورت عمل می‌کند؟

آیا نحوه عملکرد حلقه for در زبان VHDL همانند زبان‌های برنامه‌نویسی است؟

❇️ نحوه عملکرد حلقه for در زبان‌های برنامه‌نویسی:

🔷 نمونه‌ای از ساختار حلقه for در زبان‌های برنامه‌نویسی را در زیر مشاهده می‌کنید؛ این کد به زبان C نوشته شده است:

for (i = 0; i < 10; i++) {
A = A + B*i;
}

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

🔷 در واقع، ما در این فرمول، یک Accumulator به نام A تولید کرده‌ایم که در هر تکرار حلقه for، مقدار قبلی A را با حاصل‌ضرب رجیستر B در مقدار i جمع می‌کند و دوباره به رجیستر A منتقل می‌کند؛ در هر تکرار حلقه، مقدار A مدام بزرگ و بزرگ‌تر می‌شود.

❇️ نحوه عملکرد حلقه for در زبان توصیف سخت‌افزاری VHDL

🔷 در زبان VHDL نیز ساختاری به‌نام حلقه for وجود دارد؛ اما کاربرد آن با آنچه در کد بالا دیدیم کاملاً متفاوت است.

🔷 حلقه for در زبان VHDL، یک قابلیت برای کاهش حجم کد است.

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

ادامه دارد...

🆔 @FPGA0
⚡️ نحوه عملکرد حلقه for در زبان VHDL (قسمت دوم)

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

🔷 فرض کنید در بخشی از کدتان ارجاع‌هایی مانند ارجاع‌های کد زیر داشته باشید:

B(2) <= A(0);
B(3) <= A(1);
B(4) <= A(2);
B(5) <= A(3);

آیا می‌توانید در کد بالا، یک الگوی تکراری مشخص پیدا کنید؟

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

🔷 اندیس‌ها نیز با یک الگوی مشخص تغییر می‌کنند؛ در هر خط، اندیس سیگنال B، دو واحد کوچکتر از اندیس سیگنال A است.

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

for I in 0 to 3 loop
B(I+2) <= A(I);
end loop;

🔷 اکنون اگر مقادیر I را از صفر تا سه جاگذاری کنیم، دقیقاً کدی معادل با کد قبلی خواهیم داشت.

🌀 فرض کنید به‌جای داشتن چهار ارجاع، چهل ارجاع‌ در کد داشتیم. در این صورت، حتماً می‌توانید حدس بزنید که استفاده از حلقه for چقدر کد ما را کوتاه‌تر و خواناتر می‌‌کرد.

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

در مقاله "نحوه عملکرد حلقه for در زبان VHDL به همراه ۲ مثال کاربردی" در سایت فراداندیش، به‌کمک حلقه for، یک شیفت‌رجیستر و یک خط تاخیر (delay line) که هر دو از پرکاربردترین بلوک‌ها در مدارات دیجیتال هستند را پیاده‌سازی کرده‌ام.

🆔 @FPGA0
⚡️ بهتر است در پیاده‌سازی‌ها از منابع عمومی FPGA استفاده کنیم یا منابع اختصاصی؟ (قسمت اول)

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

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

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

https://t.me/fpga0/977

https://t.me/fpga0/978

https://t.me/fpga0/980

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

1️⃣ منابع سخت‌‌افزاری عمومی
2️⃣ منابع سخت‌‌افزاری اختصاصی

🔷 منابع عمومی، شامل Look-Up Tableها (LUTها) و فلیپ‌فلاپ‌‌‌ها هستند؛ در واقع، اکثر منابع سخت‌‌افزاری درون FPGA را این دو منبع تشکیل داده‌اند.

🔹 در عمل، شما به‌کمک Look-Up Table و فلیپ‌فلاپ می‌‌توانید هر نوع سخت‌‌افزاری را پیاده‌‌سازی کنید.

🔷 اما منابع سخت‌‌افزاری اختصاصی یا Dedicated، شامل منابعی است که برای یک کاربرد خاص از قبل ساخته شده‌اند.

🔹 برای مثال، ضرب‌کننده (بلوک DSP48)، حافظه‌های بلوکی، شیفت‌رجیسترها (SRLها) و بلوک DCM (مربوط به کلاک) از منابع اختصاصی FPGA هستند.

ادامه دارد...

🆔 @FPGA0
⚡️ بهتر است در پیاده‌سازی‌ها از منابع عمومی FPGA استفاده کنیم یا منابع اختصاصی؟ (قسمت دوم)

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

اما به سوال اصلی‌مان بازگردیم؛ برای پیاده‌سازی یک مدار دیجیتال در FPGA، بهتر است از منابع عمومی FPGA استفاده کنیم یا منابع اختصاصی؟

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

اما دلیل این موضوع چیست؟

🔷 با به‌کارگیری حداکثری منابع اختصاصی، می‌توانید از مزایای زیر بهره‌مند شوید:

🌀 سرعت بیشتر مدار
🌀 اشغال حجم سخت‌افزاری کمتر
🌀 توان مصرفی کمتر

در واقع، منابع اختصاصی از سرعت بسیار بیشتری نسبت به منابع عمومی برخوردارند.

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

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

✳️ بنابراین، اگر در قسمتی از مدار امکان استفاده از منابع اختصاصی وجود دارد حتما از آن استفاده کنید.

🔷 در پست بعد، نحوه به‌کارگیری منابع اختصاصی FPGA را آموزش خواهم داد.

🆔 @FPGA0
⚡️ چگونه می‌توان از منابع اختصاصی FPGA در پیاده‌سازی‌ها استفاده کرد؟

🔷 به‌طور کلی، منابع سخت‌‌افزاری موجود در FPGA به دو گروه تقسیم می‌‌شوند:

🌀 منابع سخت‌‌افزاری عمومی
🌀 منابع سخت‌‌افزاری اختصاصی

منابع عمومی، شامل Look-Up Tableها و فلیپ‌فلاپ‌‌‌ها هستند که به‌کمک آن‌ها می‌توان هر نوع مداری را در FPGA پیاده‌سازی کرد.

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

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

🔷 به دو روش می‌توانید منابع اختصاصی را در مداری که در FPGA پیاده‌سازی می‌کنید به‌کار بگیرید:

1️⃣ روش ضمنی
2️⃣ روش مستقیم

🔷 در روش ضمنی یا inference، نحوه کدنویسی شما به نرم‌‌افزار سنتز نشان می‌‌دهد که برای پیاده‌سازی مدار باید از منابع اختصاصی استفاده کند.

🔷 در روش مستقیم یا instant کردن، شما منبع سخت‌افزاری اختصاصی مورد نظرتان را مستقیماً در کد instant می‌‌کنید.

اما روش ضمنی بهتر است یا روش مستقیم؟

در پست بعد، به این سوال پاسخ خواهم داد.

ادامه دارد...

🆔 @FPGA0
⚡️ برای استفاده از منابع اختصاصی FPGA، روش مستقیم بهتر است یا روش ضمنی؟

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

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

اما استفاده از کدام روش بهتر است؟

استفاده از روش ضمنی بهتر است؛ زیرا با استفاده از این روش، اصطلاحاً کد شما portable می‌شود.

اما این موضوع به چه معناست؟

🔷 وقتی که شما یک منبع اختصاصی را به‌صورت مستقیم به‌کار می‌برید، فقط آن نرم‌‌افزار سنتز خاص، آن instant را خواهد شناخت.

🔷 از طرف دیگر، اگر از ورژن دیگری از همان نرم‌افزار سنتز استفاده کنید، ممکن است instant شما برای نرم‌افزار قابل شناسایی نباشد.

بنابراین، تا جای ممکن از روش ضمنی استفاده کنید تا یک کد portable داشته باشید و بر روی هر نرم‌افزار سنتز و هر ورژنی، به درستی شناسایی شود.

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

⚡️ البته توجه داشته باشید که امکان استفاده از برخی منابع به روش ضمنی وجود ندارد.

در پست بعد، این منابع را معرفی خواهم کرد.

🆔 @FPGA0
⚡️ کدام منابع سخت‌افزاری درون FPGA را نمی‌توان به‌صورت ضمنی پیاده‌سازی کرد؟

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

🔷 برای مثال، استفاد از بلوک DCM، به روش ضمنی امکان پذیر نیست.

🌀 به‌منظور یادآوری، بلوک DCM بلوکی است که یک سیگنال کلاک را به‌عنوان ورودی دریافت می‌کند و می‌تواند در خروجی، سیگنال یا سیگنال‌های کلاکی با فرکانس‌های متفاوت تولید کند.

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

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

همچنین، توصیه شرکت Xilinx این است که برخی از منابع را حتماً instant کنید.

🔷 حافظه‌های بلوکی (Block RAM) بزرگ از این نوع منابع سخت‌افزاری هستند.

🔷 البته می‌توان حافظه‌های بلوکی را به روش ضمنی نیز به‌کار گرفت؛ اما توصیه شرکت Xilinx این است که برای استفاده از آن‌ها، به‌خصوص وقتی سایز حافظه بزرگ است، حتماً از روش مستقیم استفاده کنید.

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

🌀 بافرهای کلاک، بافرهای سخت‌‌افزاری هستند که در مسیر سیگنال‌های کلاک‌ قرار می‌‌گیرند؛ در واقع، سیگنال‌های کلاک حتماً باید از این بافرها عبور کنند.

🆔 @FPGA0
⚡️ آیا برای پیاده‌سازی الگوریتم‌های پردازش سیگنال نیاز به آشنایی با این الگوریتم‌ها دارید؟

🔷 خوشبختانه شما برای پیاده‌سازی الگوریتم‌های پردازش سیگنال نیاز به آشنایی با ماهیت این الگوریتم‌ها ندارید.

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

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

1️⃣ بلوک‌های محاسبات اصلی؛ شامل عملگرهای اصلی مانند جمع، ضرب، تقسیم و تفریق

2️⃣ بلوک‌های توابع خاص؛ مانند sin ،cos و رادیکال

3️⃣ بلوک‌های پردازشی پایه؛ مثل فیلتر و FFT

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

🔷 برای پیاده‌سازی توابع خاص می‌توانید از IPهایی که در نرم‌افزار ISE وجود دارد استفاده کنید.

🔷 می‌توانید تنظیمات این IPها را انجام داده و آن‌ها را در کدتان instant کنید.

در ارتباط با پیاده‌سازی بلوک‌های پردازشی پایه (فیلتر و FFT) بهتر است یک دید سیستمی نسبت به آن‌ها داشته باشید.

🔷 در پست‌های بعد، به بلوک‌های پردازشی پایه می‌پردازم.

🆔 @FPGA0
⚡️ چگونه بین یک قطعه دیجیتال و FPGA ارتباط برقرار کنیم؟

🔷 اصطلاحاً، به ایجاد ارتباط بین یک قطعه دیجیتال و FPGA، اینترفیس (interface) می‌گویند.

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

🔷 برای مثال، اتصال یک مبدل دیجیتال به آنالوگ (DAC) به FPGA را در نظر بگیرید.

🔹 ما باید پایه‌های ورودی-خروجی (I/O) قطعه DAC را به‌طرز مناسبی به پایه‌های I/O مربوط به FPGA متصل کنیم.

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

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

به این ترتیب، می‌توانیم تمهیدات لازم، برای ارتباط دو تراشه را فراهم کنیم.

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

🆔 @FPGA0
⚡️ نقشه راه پیاده‌سازی اینترفیس با FPGA

🔷 برای ایجاد ارتباط بین FPGA و قطعات جانبی (مانند ADC)، باید مراحلی را به‌صورت گام به گام طی کنید.

1️⃣ آشنایی با مفاهیم

🔷 اولین مرحله، آشنایی با مفاهیم است؛ شما باید یک دانش عمومی نسبت به تراشه‌ای که قصد اتصال آن به FPGA را دارید داشته باشید.

🔷 برای مثال، برای اتصال یک مبدل آنالوگ به دیجیتال (ADC) به FPGA، باید با مفاهیمی چون فرکانس نمونه‌برداری، رزولوشن ADC، خطای ADC و ... آشنا باشید.

2️⃣ بررسی دیتاشیت

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

3️⃣ استخراج پارامترها

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

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

4️⃣ طراحی ماژول

🔷 در این مرحله، می‌توانید طرحی که برای اتصال دو قطعه در ذهن دارید را به روی کاغذ منتقل کنید.

5️⃣ پیاده‌سازی ماژول

🔷 سپس، طرحتان را به‌کمک یک زبان HDL، در نرم‌افزار ISE یا Vivado پیاده‌سازی کنید.

6️⃣ تهیه سناریوی تست

🔷 برای تست مدار، باید سناریویی را در نظر بگیرید که به شما این اطمینان را بدهد که مدارتان در تمامی شرایط، به‌درستی کار می‌کند.

7️⃣ تست عملی و تجمیع

🔷 احتمالاً در مرحله طراحی، مدار را در قالب چند ماژول طراحی کرده‌اید.

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

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

🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۵
🎓 ۷ گام پیاده‌سازی الگوریتم‌های پردازش سیگنال در FPGA

📚 نوشته فاطمه مشاک

📥 در سایت فراد اندیش بخوانید 👇👇👇👇

🌎 https://bit.ly/7ProcessSteps
⚡️ چگونه دیتاشیت یک قطعه را به‌صورت هوشمندانه مطالعه کنیم؟

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

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

❇️ سوالات احتمالی می‌توانند شامل موارد زیر باشند:

پروتکل ارتباط با این تراشه چیست؟

زمان‌بندی (Timing) این پروتکل به چه صورت است؟

کدام استانداردهای I/O در این تراشه استفاده شده است؟

کدام پایه‌های I/O در پروژه من موردنیاز است؟

نحوه انجام تنظیمات تراشه به چه صورت است؟

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

🆔 @FPGA0
⚡️ موقعیت شغلی جدید: طراح بردهای مدار چاپی فرکانس بالا‌‎...

🔹 شرکت کاوش داده پردازان سفیر، فعال در حوزه ساخت تجهیزات شبکه، جهت توسعه تیم R&D خود به دنبال فردی با مهارت زیر است:

1️⃣ تبحر در طراحی بردهای مدارچاپی فرکانس بالا و کار با نرم‌افزار آلتیوم دیزاینر به صورت حرفه‌ای

❇️ اگر فکر می‌کنید مهارت و علاقه شما با نیازمندی این شرکت تطابق دارد، لطفا رزومه‌تان را به ایمیل زیر ارسال کنید:

📭 help@faradandish.com

☎️ رزومه شما به شرکت مورد نظر ارسال خواهد شد و آنها پس از بررسی، در صورت نیاز با شما تماس خواهند گرفت.

🔺 این موقعیت شغلی به صورت تمام‌وقت است و شرکت در شرق تهران واقع شده است.

🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۶
🎓 اینترفیس پریفرال‌ها با FPGA چگونه انجام می‌شود؟

📚 نوشته کامین جلیلی

📥 در سایت فراد اندیش بخوانید 👇👇👇👇

🌎 https://bit.ly/InterfaceSteps
⚡️ پروتکل‌های ارتباطی پایه در پیاده‌سازی دیجیتال

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

🌀 پرکاربردترین این پروتکل‌ها عبارتند از:
🟢 RS232

🟢 SPI

🟢 I2C

❇️ پروتکل RS232

🔷 پروتکل RS232، دیتا را به‌صورت سریال و آسنکرون منتقل می‌کند.

کاربرد این پروتکل در انتقال دیتا در فواصل متوسط اما با سرعت کم است.

❇️ پروتکل SPI

🔷 پروتکل SPI، دیتا را به‌صورت سریال و سنکرون منتقل می‌کند.

کاربرد این پروتکل در انتقال دیتا در فواصل بسیار نزدیک و سرعت‌های نسبتاً زیاد است.

❇️ پروتکل I2C

🔷 این پروتکل، دیتا را به‌صورت سریال و سنکرون منتقل می‌کند.

کاربرد آن در انتقال دیتا در فواصل بسیار نزدیک و سرعت‌های نسبتاً زیاد است.

🆔 @FPGA0
⚡️ انتقال داده به‌صورت آسنکرون و سنکرون

🌀 منظور از انتقال داده به‌صورت آسنکرون این است که برای انتقال دیتا، خط کلاکی وجود ندارد.

🌀در واقع، دیتا سنکرون و همزمان با یک کلاک نیست، بلکه مستقلاً ارسال می‌شود و به روش‌هایی، در گیرنده دریافت می‌شود.

برای مثال، پروتکل RS232 از جمله پروتکل‌های آسنکرون است.

🌀 اما منظور از سنکرون بودن این است که به‌همرا دیتا، یک سیگنال کلاک نیز برای گیرنده ارسال می‌شود.

🌀 گیرنده به‌کمک سیگنال کلاک می‌تواند دیتا را به‌نحو مناسبی نمونه‌برداری کند.

🌀 معمولاً لبه بالارونده سیگنال کلاکی که ارسال می‌شود، محل نمونه‌برداری بیت‌های دیتا است.

برای مثال، پروتکل SPI و I2C از جمله پروتکل‌های سنکرون هستند.

🆔 @FPGA0
✴️ پاسخ به ۶ سوال در مورد ۳ پیشنهاد ویژه تعطیلات تابستان

1️⃣ این ۳ پیشنهاد دقیقا چه هستند؟

🔹 شرکت در دوره آنلاین طراحی دیجیتال با FPGA (تخفیف ۲۵%)
🔹 شرکت در دوره آنلاین پردازش سیگنال با FPGA (تخفیف ۲۵%)
🔹 ثبت‌نام همزمان در هر دو دوره آنلاین فوق (تخفیف ۳۵%)

2️⃣ بعد ثبت‌نام در دوره آنلاین، چه اتفاقی می‌افتد؟

🔹 به محض ثبت‌نام در دوره، شما به محتوای آموزشی جلسه اول دسترسی خواهید داشت.

3️⃣ ویدئوها چگونه در دسترس من قرار می‌گیرند؟

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

4️⃣ ویدئوهای جلسات بعدی کی قابل دسترسی هستند؟

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

5️⃣ چه پیش‌نیازی برای شرکت در دوره لازم است؟

🔹 برای دوره طراحی دیجیتال با FPGA: فقط آشنایی عمومی با مدارات منطقی
🔹 برای دوره پردازش سیگنال با FPGA: آشنایی نسبی با FPGA و زبان VHDL
🔺 هیچ نیازی به آشنایی با الگوریتم‌های پردازش سیگنال و حتی نرم‌افزار متلب نیست

6️⃣ هدایای این دوره، چطور به دست من می‌رسند؟

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

🎥 ویدئوی توضیحات کامل این ۳ پیشنهاد 👇

🌎 https://faradandish.com/summer-offer

🔺 مهلت استفاده از این ۳ پیشنهاد تا جمعه ۵ شهریور است.

🆔 @FPGA0
⚡️ پروتکل ارتباطی RS232

🌀 پروتکل RS232 یک پروتکل نسبتاً ساده و قدیمی است.

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

🌀 این پروتکل، دیتا را به‌صورت سریال و آسنکرون منتقل می‌کند.

کاربرد آن در انتقال دیتا در فواصل متوسط اما با سرعت کم است.

🌀 انتقال دیتا در پروتکل RS232 به‌صورت full duplex انجام می‌شود.

🌀 انتقال full duplex به این معنی است که همزمان می‌توانید دیتا را ارسال و دریافت کنید.

🆔 @FPGA0
⚡️ خط‌های انتقال و ماژول‌های مورد نیاز برای برقراری ارتباط به‌کمک پروتکل RS232

🆔 @FPGA0