آموزش اِف‌پی‌جی‌اِی از صفر
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
⚡️ کدام منابع سخت‌افزاری درون 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
⚡️ برقراری ارتباط به‌کمک پروتکل RS232 (قسمت اول)

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

🌀 می‌خواهیم بین Device 1 و Device 2، به‌کمک پروتکل RS232 انتقال دیتا انجام دهیم.

برای ایجاد پروتکل RS232 به سه خط انتقال نیاز داریم:

🟢 یک خط انتقال برای دریافت دیتا

🟢 یک خط انتقال برای ارسال دیتا

🟢 یک خط برای GND یا زمین

🌀 خط GND، برای هر دو طرف ارتباط مشترک است.

🌀 برای برقراری ارتباط RS232، باید در هر یک از Deviceها، یک ماژول فرستنده (Tx) و یک ماژول گیرنده (Rx) پیاده‌سازی کنیم.

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

🆔 @FPGA0
⚡️شمایی از یک packet مربوط به پروتکل RS232

🆔 @FPGA0
⚡️ برقراری ارتباط به‌کمک پروتکل RS232 (قسمت دوم)

🌀 در پست قبل، درباره خط‌های انتقال و ماژول‌های مورد نیاز برای پروتکل RS232 صحبت کردم.

🌀 مورد دیگری که در ارتباط RS232 باید به آن توجه کنیم، پکت RS232 است.

🌀 در پروتکل RS232، هر هشت بیت دیتا، در قالب یک پکت RS232 ارسال می‌شود.

🌀 پکت‌های RS232، یازده بیتی هستند.

🌀 شمایی از این packet را در شکل بالا مشاهده می‌کنید.

🌀 فرض کنید می‌خواهیم به‌کمک ماژول Tx حاضر در Device 1، دیتایی را به‌صورت سریال ارسال کنیم.

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

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

🌀 پس از این بیت، باید هشت بیت دیتا را قرار دهید.

🌀 سپس، باید بیتی به‌نام Parity Bit را قرار دهید.

🌀 بعد از بیت parity، بیت stop را داریم. این بیت، همیشه برابر با یک است.

🌀 کاربرد Stop Bit این است که دو پکت پشت سر هم را از یکدیگر جدا کند.

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

🆔 @FPGA0
⚡️ برقراری ارتباط به‌کمک پروتکل RS232 (قسمت سوم)

🌀 همان‌طور که در پست قبل گفتم، در پکت RS232، باید پس از دیتای هشت‌بیت، بیت Parity را قرار دهید.

🌀 این بیت، حاصل XOR تمام بیت‌های دیتا است.

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

🌀 در واقع، در ماژول گیرنده نیز حاصل XOR هشت بیت دیتا محاسبه می‌شود. سپس، حاصل XOR با Parity Bit مقایسه می‌شود.

🌀 اگر این مقدار برابر با Parity Bit بود، احتمالاً در پکت خطایی رخ نداده است.

🌀 اما اگر این مقدار، با Parity Bit متفاوت بود، در پکت خطا رخ داده است.

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

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

🆔 @FPGA0
⚡️ موقعیت شغلی جدید در غرب تهران...

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

1️⃣ متخصص کدنویسی VHDL به منظور پیاده‌سازی مدارات اینترفیسی در FPGA
2️⃣ متخصص الکترونیک مسلط به سخت‌افزار به منظور تست و رفع عیب

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

📭 help@faradandish.com

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

🆔 @FPGA0
⚡️ موقعیت شغلی جدید در شرق تهران...

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

تسلط به موارد زیر، امتیاز محسوب می‌شود:

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

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

آدرس: تهرانپارس، فلکه چهارم

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

📭 help@faradandish.com

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

🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۶
🎓 طراحی ماجول اینترفیس در FPGA

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

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

🌎 مقاله طراحی ماجول اینترفیس در FPGA

🆔 @FPGA0