همانطور که در پست قبل دیدید، گاهی برای رعایت قوانین ارجاع در زبان VHDL، نیاز به تغییر عرض بیت رجیسترها داریم که برای این کار، از تابع resize استفاده میکنیم.
به نظر شما، تابع resize به چه صورت عمل میکند؟
به نظر شما، تابع resize به چه صورت عمل میکند؟
Anonymous Quiz
31%
این تابع صرفاً عرض بیت رجیستر را تغییر میدهد و مقدار آن را تغییر نمیدهد.
37%
اگر از تابع resize برای کاهش عرض بیت یک رجیستر استفاده کنیم، ممکن است مقدار آن تغییر کند.
33%
اگر از تابع resize برای تغییر عرض بیت یک عدد علامتدار استفاده کنیم، مقدار آن تغییر میکند.
⚡️ نحوهی عملکرد تابع resize در سناریوهای مختلف (قسمت دوم)
🔷 در پست قبل گفتم که برای رعایت قوانین ارجاع در زبان VHDL گاهی نیاز است که عرض بیت سیگنالها را تغییر دهیم که برای این کار از تابع resize استفاده میکنیم.
🔷 مسئلهی مهمی که وجود دارد این است که بسیاری از افراد حتی پس از سالها کار با زبان VHDL، اشراف دقیقی نسبت به اینکه تابع resize در حالتهای مختلف چگونه عمل میکند، ندارند.
🔷 در این پست، به همین مسئله، یعنی نحوهی عملکرد تابع resize در حالتهای مختلف میپردازم.
❇️ حالت اول: افزایش تعداد بیتهای یک سیگنال بدون علامت
🔷 فرض کنید میخواهیم سیگنال پنجبیتی با مقدار 10100 را به یک سیگنال هفتبیتی تبدیل کنیم؛ در این حالت، تابع resize بهصورت زیر عمل میکند:
10100
0010100
🔷 در واقع، این تابع تعداد دو صفر به سمت چپ عدد اضافه میکند. بنابراین، مقدار عدد تغییری نمیکند.
❇️ حالت دوم: کاهش تعداد بیتهای یک عدد بدون علامت
🔷 اکنون فرض کنید که میخواهیم سیگنال هفتبیتیبا مقدار 1001110 را به یک سیگنال پنجبیتی تبدیل کنیم؛ در این حالت، تابع resize بهصورت زیر عمل میکند:
1001110
01110
🔷 در این حالت، این تابع دو بیت از سمت چپ عدد حذف میکند!
🔷 همانطور که ملاحظه میکنید با این کار، مقدار عدد ممکن است تغییر کند و در محاسبات شما خطا ایجاد کند.
✅ بنابراین، باید به مسئلهی تغییر مقدار عدد توجه داشته باشید و اگر در کاربردی خاص، به کاهش بیت نیاز داشتید و این عملکرد مشکلی برای مدار شما ایجاد نمیکرد، میتوانید از تابع resize استفاده کنید.
❇️ حالت سوم: افزایش تعداد بیتهای یک عدد علامتدار
🔷 در این حالت، sign extension انجام میشود؛ یعنی تابع resize، علامت عدد را تکرار میکند. به این ترتیب، مقدار عدد تغییری نمیکند. مثلاً:
10100
1110100
❇️ حالت چهارم: کاهش تعداد بیتهای یک عدد علامتدار
در این حالت، تابع resize، از سمت چپ عدد، بیت علامت را کنار میگذارد و از بیتهای بعدی شروع به حذف میکند. مثلاً:
1001110
11110
در واقع، بیت علامت ثابت مانده است و از سمت چپ، دومین و سومین بیت حذف شدهاند.
✅ بنابراین، بسیار مهم است که عملکرد دقیق تابع resize در حالتهای مختلف را در ذهن داشته باشید تا در صورت نیاز، به نحو مناسبی از آن استفاده کنید.
🆔 @FPGA0
🔷 در پست قبل گفتم که برای رعایت قوانین ارجاع در زبان VHDL گاهی نیاز است که عرض بیت سیگنالها را تغییر دهیم که برای این کار از تابع resize استفاده میکنیم.
🔷 مسئلهی مهمی که وجود دارد این است که بسیاری از افراد حتی پس از سالها کار با زبان VHDL، اشراف دقیقی نسبت به اینکه تابع resize در حالتهای مختلف چگونه عمل میکند، ندارند.
🔷 در این پست، به همین مسئله، یعنی نحوهی عملکرد تابع resize در حالتهای مختلف میپردازم.
❇️ حالت اول: افزایش تعداد بیتهای یک سیگنال بدون علامت
🔷 فرض کنید میخواهیم سیگنال پنجبیتی با مقدار 10100 را به یک سیگنال هفتبیتی تبدیل کنیم؛ در این حالت، تابع resize بهصورت زیر عمل میکند:
10100
0010100
🔷 در واقع، این تابع تعداد دو صفر به سمت چپ عدد اضافه میکند. بنابراین، مقدار عدد تغییری نمیکند.
❇️ حالت دوم: کاهش تعداد بیتهای یک عدد بدون علامت
🔷 اکنون فرض کنید که میخواهیم سیگنال هفتبیتیبا مقدار 1001110 را به یک سیگنال پنجبیتی تبدیل کنیم؛ در این حالت، تابع resize بهصورت زیر عمل میکند:
1001110
01110
🔷 در این حالت، این تابع دو بیت از سمت چپ عدد حذف میکند!
🔷 همانطور که ملاحظه میکنید با این کار، مقدار عدد ممکن است تغییر کند و در محاسبات شما خطا ایجاد کند.
✅ بنابراین، باید به مسئلهی تغییر مقدار عدد توجه داشته باشید و اگر در کاربردی خاص، به کاهش بیت نیاز داشتید و این عملکرد مشکلی برای مدار شما ایجاد نمیکرد، میتوانید از تابع resize استفاده کنید.
❇️ حالت سوم: افزایش تعداد بیتهای یک عدد علامتدار
🔷 در این حالت، sign extension انجام میشود؛ یعنی تابع resize، علامت عدد را تکرار میکند. به این ترتیب، مقدار عدد تغییری نمیکند. مثلاً:
10100
1110100
❇️ حالت چهارم: کاهش تعداد بیتهای یک عدد علامتدار
در این حالت، تابع resize، از سمت چپ عدد، بیت علامت را کنار میگذارد و از بیتهای بعدی شروع به حذف میکند. مثلاً:
1001110
11110
در واقع، بیت علامت ثابت مانده است و از سمت چپ، دومین و سومین بیت حذف شدهاند.
✅ بنابراین، بسیار مهم است که عملکرد دقیق تابع resize در حالتهای مختلف را در ذهن داشته باشید تا در صورت نیاز، به نحو مناسبی از آن استفاده کنید.
🆔 @FPGA0
برای پیادهسازی کدامیک از مدارهای زیر در FPGA به استفاده از IP نیاز داریم؟
Anonymous Quiz
18%
ضرب دو رجیستر
73%
تقسیم دو رجیستر
6%
جمع دو رجیستر
4%
تفریق دو رجیستر
🔹 آیا میدانید در بعضی از کاربردهای خاص و حیاتی، تمهیداتی در سیستمهای دیجیتال در نظر گرفته میشود تا در صورت بروز خطا، سیستم بتواند به کار خود ادامه دهد؟
🔹 در این کتاب، مفهوم soft error در FPGAها معرفی میشود و توضیح داده میشود که چطور میتوان از آن در کاربردهای بسیار حساس مثل هوافضا استفاده کرد.
🔹 اثر سیگنالهای رادیویی شدید بر FPGAها میتواند منجر به بروز انواع خاصی از خطا در عملکرد FPGA شود. در این کتاب، با انواع تکنیکها برای مقابله با چنین خطاهایی آشنا میشوید.
🔹 در این کتاب، مفهوم soft error در FPGAها معرفی میشود و توضیح داده میشود که چطور میتوان از آن در کاربردهای بسیار حساس مثل هوافضا استفاده کرد.
🔹 اثر سیگنالهای رادیویی شدید بر FPGAها میتواند منجر به بروز انواع خاصی از خطا در عملکرد FPGA شود. در این کتاب، با انواع تکنیکها برای مقابله با چنین خطاهایی آشنا میشوید.
🆔 @FPGA0
📚 عنوان: FPGAs and Parallel Architectures for Aerospace Applications
👤 ویرایش کنندگان: F. Kastensmidt, P. Rech
📅 سال انتشار: 2016
🖨 ناشر: Springer
📥 لینک دانلود: https://goo.gl/GHKjcM
📚 عنوان: FPGAs and Parallel Architectures for Aerospace Applications
👤 ویرایش کنندگان: F. Kastensmidt, P. Rech
📅 سال انتشار: 2016
🖨 ناشر: Springer
📥 لینک دانلود: https://goo.gl/GHKjcM
⚡️ شرکتهای مهم تولید کننده FPGA در دنیا
🔷 در حال حاضر، شرکتهای مختلفی در دنیا تراشههای FPGA را تولید میکنند.
🔷 گرچه ماهیت تولیدات تمام این شرکتها مشابه است، اما هر کدام سعی میکنند با ارائهی محصولی که از نظر الکترونیکی خصوصیات مطلوبتری دارد، از دور رقابت خارج نشوند.
🔷 نکتهی مهم دیگر برای باقی ماندن در این بازار رقابت، ارائهی نرمافزارها و خدمات جانبی قویتر است که باعث ایجاد تفاوت قابل توجهی در جذب مشتریان شده است.
🔷 از شرکتهای مهم تولیدکنندهی تراشههای FPGA، میتوان به Xilinx ،Altera ،Lattice Semiconductor و Microsemi و QuickLogic اشاره کرد.
🔷 در میان این شرکتها، Xilinx و Altera بیشترین میزان فروش را در دنیا دارند.
✅ در ایران نیز اکثر شرکتهای فعال در زمینهی طراحی دیجیتال با FPGA، از محصولات یکی از دو شرکت Xilinx و Altera استفاده میکنند.
🔷 اگر شما با یکی از این محصولات آشنا شده و به طراحی با آن بپردازید و سپس روزی قصد طراحی با محصولات شرکتهای دیگر را داشته باشید، با فراگیری دو موضوع میتوانید این کار را انجام دهید:
🔹 اولاً، باید با معماری و منابع سختافزاری موجود در FPGA موردنظر آشنا شوید.
🔹 ثانیاً، باید با نرمافزارهای مخصوص آن شرکت آشنا شوید تا بتوانید مراحل مختلف طراحی را بهکمک FPGAهای آن انجام دهید.
✅ هر کدام از شرکتهای تولید کنندهی تراشههای FPGA دارای محصولات بسیار متنوعی هستند که بر مبنای نیازهای مختلف کاربران و طراحان تولید شده است.
✅ در زیر، محصولات اصلی شرکتهای Xilinx و Altera را مشاهده میکنید؛ هر کدام از این محصولات دارای نسخههای مختلفی است که تفاوت اصلی آنها در مقدار منابع دیجیتالی موجود در هر کدام است.
❇️ Xilinx: Spartan, Artix, Kintex, Virtex
❇️ Altera: Cyclone, MAX, Arria, Stratix
⚠️ چند سالی است که شرکت اینتل، شرکت آلترا را خریده است و محصولات این شرکت با نام Intel FPGAs عرضه میشوند.
🆔 @FPGA0
🔷 در حال حاضر، شرکتهای مختلفی در دنیا تراشههای FPGA را تولید میکنند.
🔷 گرچه ماهیت تولیدات تمام این شرکتها مشابه است، اما هر کدام سعی میکنند با ارائهی محصولی که از نظر الکترونیکی خصوصیات مطلوبتری دارد، از دور رقابت خارج نشوند.
🔷 نکتهی مهم دیگر برای باقی ماندن در این بازار رقابت، ارائهی نرمافزارها و خدمات جانبی قویتر است که باعث ایجاد تفاوت قابل توجهی در جذب مشتریان شده است.
🔷 از شرکتهای مهم تولیدکنندهی تراشههای FPGA، میتوان به Xilinx ،Altera ،Lattice Semiconductor و Microsemi و QuickLogic اشاره کرد.
🔷 در میان این شرکتها، Xilinx و Altera بیشترین میزان فروش را در دنیا دارند.
✅ در ایران نیز اکثر شرکتهای فعال در زمینهی طراحی دیجیتال با FPGA، از محصولات یکی از دو شرکت Xilinx و Altera استفاده میکنند.
🔷 اگر شما با یکی از این محصولات آشنا شده و به طراحی با آن بپردازید و سپس روزی قصد طراحی با محصولات شرکتهای دیگر را داشته باشید، با فراگیری دو موضوع میتوانید این کار را انجام دهید:
🔹 اولاً، باید با معماری و منابع سختافزاری موجود در FPGA موردنظر آشنا شوید.
🔹 ثانیاً، باید با نرمافزارهای مخصوص آن شرکت آشنا شوید تا بتوانید مراحل مختلف طراحی را بهکمک FPGAهای آن انجام دهید.
✅ هر کدام از شرکتهای تولید کنندهی تراشههای FPGA دارای محصولات بسیار متنوعی هستند که بر مبنای نیازهای مختلف کاربران و طراحان تولید شده است.
✅ در زیر، محصولات اصلی شرکتهای Xilinx و Altera را مشاهده میکنید؛ هر کدام از این محصولات دارای نسخههای مختلفی است که تفاوت اصلی آنها در مقدار منابع دیجیتالی موجود در هر کدام است.
❇️ Xilinx: Spartan, Artix, Kintex, Virtex
❇️ Altera: Cyclone, MAX, Arria, Stratix
⚠️ چند سالی است که شرکت اینتل، شرکت آلترا را خریده است و محصولات این شرکت با نام Intel FPGAs عرضه میشوند.
🆔 @FPGA0
همانطور که میدانید، پس از انجام پروژه، باید عملکرد مدار پیادهسازی شده روی FPGA را به مدیر یا کارفرما اثبات کرد. کدام روش به زمان کمتری نیاز دارد؟
Anonymous Quiz
41%
شبیهسازی رفتاری یا عملکردی
10%
شبیهسازی زمانی
49%
تست در حین اجرا
⚡️ چگونه یک مدار دیجیتال را برای FPGA توصیف کنیم؟ (قسمت اول)
🔷 مداری که در ذهن شما به عنوان طراح و پیادهساز دیجیتال وجود دارد باید به نحوی، برای FPGA توصیف شود.
🔷 این کار عملاً توسط نرمافزارهای مخصوصی که برای این هدف طراحی شدهاند انجام میشود.
❓ اما سوال اساسی که در ذهن بسیاری از افرادی که بهتازگی وارد دنیای پیادهسازی با FPGA شدهاند وجود دارد، این است که چطور طرح مدار دیجیتالی را که در ذهن دارند، برای نرمافزار پیادهسازی توصیف کنند.
در این مجموعه پست:
✅ نحوهی معرفی یک طرح دیجیتال را برای پردازندهها و FPGA با هم مقایسه میکنم.
✅ روشهای توصیف مدارات دیجیتال برای نرمافزارهای پیادهساز بر روی FPGA را به شما توضیح میدهم.
✅ همچنین، روش اصلی که در عمل و در پروژههای حرفهای از آن استفاده میشود را معرفی میکنم.
❇️ معرفی یک طرح دیجیتال برای پردازندهها:
🔷 وقتی با پردازنده کار میکنیم بهکمک دستورات برنامهنویسی که از پیش برای آن پردازنده تعریف شده است، میتوانیم یک الگوریتم را در آن پیادهسازی کنیم.
🔷 بنابراین، زبان برنامهنویسی در پردازندهها ابزاری است که بهکمک آن میتوانیم ایدهای که در ذهن داریم را به پردازنده معرفی کنیم.
❓ اما این موضوع در مورد FPGAها به چه صورت است؟
🔷 بهطور کلی، دو روش برای توصیف مدارات دیجیتال برای نرمافزارهای پیادهسازی وجود دارد:
1⃣ استفاده از شماتیک مدار
2⃣ استفاده از زبان توصیف سختافزاری (HDL)
🔷 در روش شماتیک مداری، شما بهکمک یک نرمافزار و بهکمک قطعات پایهی دیجیتالی میتوانید مدار را ترسیم و برای FPGA توصیف کنید.
🔹 بهطور مثال، میتوانید بهکمک گیتهای پایه، فلیپفلاپها، بلوکهای مالتیپلکسر، انکدر، دیکدر و ... مدارهای مختلف را برای FPGA رسم و توصیف کنید.
❎ گرچه به نظر میرسد این روش ساده است، اما در عمل کاربرد چندانی ندارد.
🔷 زیرا با این روش، مدیریت و ترسیم مدارهای بزرگ در نرمافزار تقریباً غیر ممکن است.
🔷 فرض کنید، میخواهید مداری را ترسیم کنید که از هزاران گیت و بلوکهای دیجیتالی تشکیل شده است.
✅ اولاً، ترسیم آن در صفحهی محدود مانیتور بسیار سخت است.
✅ ثانیاً، در صورت ترسیم شماتیک، اگر ایرادی در آن وجود داشته باشد یا اگر بخواهید تغییری در آن ایجاد کنید، این کار میتواند مشکل و تقریباً غیرممکن باشد.
✅ به همین دلیل، برای توصیف مدارهای بزرگ در FPGA، روش دیگری وجود دارد که استفاده از زبانهای توصیف سختافزاری است.
ادامه دارد...
🆔 @FPGA0
🔷 مداری که در ذهن شما به عنوان طراح و پیادهساز دیجیتال وجود دارد باید به نحوی، برای FPGA توصیف شود.
🔷 این کار عملاً توسط نرمافزارهای مخصوصی که برای این هدف طراحی شدهاند انجام میشود.
❓ اما سوال اساسی که در ذهن بسیاری از افرادی که بهتازگی وارد دنیای پیادهسازی با FPGA شدهاند وجود دارد، این است که چطور طرح مدار دیجیتالی را که در ذهن دارند، برای نرمافزار پیادهسازی توصیف کنند.
در این مجموعه پست:
✅ نحوهی معرفی یک طرح دیجیتال را برای پردازندهها و FPGA با هم مقایسه میکنم.
✅ روشهای توصیف مدارات دیجیتال برای نرمافزارهای پیادهساز بر روی FPGA را به شما توضیح میدهم.
✅ همچنین، روش اصلی که در عمل و در پروژههای حرفهای از آن استفاده میشود را معرفی میکنم.
❇️ معرفی یک طرح دیجیتال برای پردازندهها:
🔷 وقتی با پردازنده کار میکنیم بهکمک دستورات برنامهنویسی که از پیش برای آن پردازنده تعریف شده است، میتوانیم یک الگوریتم را در آن پیادهسازی کنیم.
🔷 بنابراین، زبان برنامهنویسی در پردازندهها ابزاری است که بهکمک آن میتوانیم ایدهای که در ذهن داریم را به پردازنده معرفی کنیم.
❓ اما این موضوع در مورد FPGAها به چه صورت است؟
🔷 بهطور کلی، دو روش برای توصیف مدارات دیجیتال برای نرمافزارهای پیادهسازی وجود دارد:
1⃣ استفاده از شماتیک مدار
2⃣ استفاده از زبان توصیف سختافزاری (HDL)
🔷 در روش شماتیک مداری، شما بهکمک یک نرمافزار و بهکمک قطعات پایهی دیجیتالی میتوانید مدار را ترسیم و برای FPGA توصیف کنید.
🔹 بهطور مثال، میتوانید بهکمک گیتهای پایه، فلیپفلاپها، بلوکهای مالتیپلکسر، انکدر، دیکدر و ... مدارهای مختلف را برای FPGA رسم و توصیف کنید.
❎ گرچه به نظر میرسد این روش ساده است، اما در عمل کاربرد چندانی ندارد.
🔷 زیرا با این روش، مدیریت و ترسیم مدارهای بزرگ در نرمافزار تقریباً غیر ممکن است.
🔷 فرض کنید، میخواهید مداری را ترسیم کنید که از هزاران گیت و بلوکهای دیجیتالی تشکیل شده است.
✅ اولاً، ترسیم آن در صفحهی محدود مانیتور بسیار سخت است.
✅ ثانیاً، در صورت ترسیم شماتیک، اگر ایرادی در آن وجود داشته باشد یا اگر بخواهید تغییری در آن ایجاد کنید، این کار میتواند مشکل و تقریباً غیرممکن باشد.
✅ به همین دلیل، برای توصیف مدارهای بزرگ در FPGA، روش دیگری وجود دارد که استفاده از زبانهای توصیف سختافزاری است.
ادامه دارد...
🆔 @FPGA0
⚡️ چگونه یک مدار دیجیتال را برای FPGA توصیف کنیم؟ (قسمت دوم)
🔷 در پست قبل، روش معرفی یک طرح دیجیتال برای پردازندهها را بیان کردم.
🔷 همچنین، مطالبی در رابطه با توصیف مدارات دیجیتال برای FPGA، بهروش شماتیک مدار ارائه شد.
✅ در این پست، در رابطه با توصیف مدارات دیجیتال بهکمک زبان توصیف سختافزاری توضیح خواهم داد.
❇️ توصیف مدارات دیجیتال بهکمک زبان توصیف سختافزاری (HDL) برای FPGA:
🔷 زبان توصیف سختافزار یا Hardware Description Language که به اختصار به آن HDL گفته میشود، زبانی است که در آن ساختارها و عباراتی وجود دارد که بهکمک آنها میتوانیم رفتار مدار دیجیتال را توصیف کنیم.
🔷 در واقع، زبان توصیف سختافزاری از دستورات تشکیل نشده است؛ چون دستورات مربوط به CPU هستند.
🔹 در FPGAها نه تنها CPU، بلکه در ابتدا، هیچ سختافزاری که توصیفکننده و ارائهکنندهی یک قابلیت مشخص باشد وجود ندارد.
✅ بنابراین، زبان توصیف سختافزاری زبانی نیست که از دستورات تشکیل شده باشد.
✅ بلکه در این زبان، ساختارها و عباراتی وجود دارند که اگرچه ممکن است شبیه دستورات برنامهنویسی باشند، ولی در عمل توصیفکنندهی سختافزار دیجیتال هستند.
🔆 اکنون مفهوم زبان سختافزاری را بهکمک یک مثال توضیح میدهم.
🔷 کدی که در زیر میبینید، یک ساختار شرطی if-then-else است که در اکثر زبانهای برنامهنویسی وجود دارد:
If c='0' then
F <= A;
else
F <= B;
end if;
🔷 فرض کنید که این کد، بخشی از یک کد به زبان C است که قرار است توسط یک پردازنده اجرا شود.
🔷 دستور if-then-else قبلاً برای CPU تعریف شده است و CPU در هنگام مواجه شدن با این دستور، با توجه به مقدار C مقدار A یا B را به F منتقل میکند.
🔷 به این ترتیب که اگر C مساوی صفر باشد، A به F منتقل میشود؛ در غیر این صورت، B به F منتقل میشود.
❓ اما اگر فرض کنیم این عبارات، توصیفکنندهی یک سختافزار دیجیتال هستند، چه سختافزاری را توصیف میکنند؟
✅ احتمالا درست خدس زدید! این عبارات، توصیفکنندهی یک مالتیپلکسر دو به یک هستند.
✅ در مالتیپلکسر دو به یک، با توجه به مقدار C، یکی از ورودیهای A یا B به خروجی F منتقل میشود.
🔷 همانطور که میبینید، این کد هم دقیقاً این مفهوم دیجیتال را معرفی و توصیف میکند.
✅ بنابراین، در این کد سختافزاری، دستوری برای اجرا در CPU وجود ندارد، بلکه یک ساختار یا یک توصیف از یک مدار سختافزاری دیجیتالی است.
🔷 با نوشتن این کد در نرمافزار پیادهسازی مانند ISE و انجام مراحل تولید کد پیکربندی (بیتفایل) و انتقال آن به FPGA، یک مدار مالتیپلکسر دو به یک در FPGA پیادهسازی میشود.
✅ زبانهای توصیف سختافزاری مختلفی در دنیا وجود دارند؛ زبانهای VHDL و Verilog از معروفترین و پرکاربردترین آنها هستند.
✅ اگرچه این دو زبان در ظاهر و ساختار تفاوتهایی دارند ولی بهکمک هر دو زبان میتوانید هر نوع مدار دیجیتالی را توصیف کنید و تفاوتی در قابلیتهای آنها وجود ندارد.
✳️ برای اطلاعات بیشتر از نحوهی پیدایش زبان VHDL و ساختار اصلی آن، مقالهی زیر از سایت فراداندیش را ببینید:
🌎 https://bit.ly/DescriptCircuit
🆔 @FPGA0
🔷 در پست قبل، روش معرفی یک طرح دیجیتال برای پردازندهها را بیان کردم.
🔷 همچنین، مطالبی در رابطه با توصیف مدارات دیجیتال برای FPGA، بهروش شماتیک مدار ارائه شد.
✅ در این پست، در رابطه با توصیف مدارات دیجیتال بهکمک زبان توصیف سختافزاری توضیح خواهم داد.
❇️ توصیف مدارات دیجیتال بهکمک زبان توصیف سختافزاری (HDL) برای FPGA:
🔷 زبان توصیف سختافزار یا Hardware Description Language که به اختصار به آن HDL گفته میشود، زبانی است که در آن ساختارها و عباراتی وجود دارد که بهکمک آنها میتوانیم رفتار مدار دیجیتال را توصیف کنیم.
🔷 در واقع، زبان توصیف سختافزاری از دستورات تشکیل نشده است؛ چون دستورات مربوط به CPU هستند.
🔹 در FPGAها نه تنها CPU، بلکه در ابتدا، هیچ سختافزاری که توصیفکننده و ارائهکنندهی یک قابلیت مشخص باشد وجود ندارد.
✅ بنابراین، زبان توصیف سختافزاری زبانی نیست که از دستورات تشکیل شده باشد.
✅ بلکه در این زبان، ساختارها و عباراتی وجود دارند که اگرچه ممکن است شبیه دستورات برنامهنویسی باشند، ولی در عمل توصیفکنندهی سختافزار دیجیتال هستند.
🔆 اکنون مفهوم زبان سختافزاری را بهکمک یک مثال توضیح میدهم.
🔷 کدی که در زیر میبینید، یک ساختار شرطی if-then-else است که در اکثر زبانهای برنامهنویسی وجود دارد:
If c='0' then
F <= A;
else
F <= B;
end if;
🔷 فرض کنید که این کد، بخشی از یک کد به زبان C است که قرار است توسط یک پردازنده اجرا شود.
🔷 دستور if-then-else قبلاً برای CPU تعریف شده است و CPU در هنگام مواجه شدن با این دستور، با توجه به مقدار C مقدار A یا B را به F منتقل میکند.
🔷 به این ترتیب که اگر C مساوی صفر باشد، A به F منتقل میشود؛ در غیر این صورت، B به F منتقل میشود.
❓ اما اگر فرض کنیم این عبارات، توصیفکنندهی یک سختافزار دیجیتال هستند، چه سختافزاری را توصیف میکنند؟
✅ احتمالا درست خدس زدید! این عبارات، توصیفکنندهی یک مالتیپلکسر دو به یک هستند.
✅ در مالتیپلکسر دو به یک، با توجه به مقدار C، یکی از ورودیهای A یا B به خروجی F منتقل میشود.
🔷 همانطور که میبینید، این کد هم دقیقاً این مفهوم دیجیتال را معرفی و توصیف میکند.
✅ بنابراین، در این کد سختافزاری، دستوری برای اجرا در CPU وجود ندارد، بلکه یک ساختار یا یک توصیف از یک مدار سختافزاری دیجیتالی است.
🔷 با نوشتن این کد در نرمافزار پیادهسازی مانند ISE و انجام مراحل تولید کد پیکربندی (بیتفایل) و انتقال آن به FPGA، یک مدار مالتیپلکسر دو به یک در FPGA پیادهسازی میشود.
✅ زبانهای توصیف سختافزاری مختلفی در دنیا وجود دارند؛ زبانهای VHDL و Verilog از معروفترین و پرکاربردترین آنها هستند.
✅ اگرچه این دو زبان در ظاهر و ساختار تفاوتهایی دارند ولی بهکمک هر دو زبان میتوانید هر نوع مدار دیجیتالی را توصیف کنید و تفاوتی در قابلیتهای آنها وجود ندارد.
✳️ برای اطلاعات بیشتر از نحوهی پیدایش زبان VHDL و ساختار اصلی آن، مقالهی زیر از سایت فراداندیش را ببینید:
🌎 https://bit.ly/DescriptCircuit
🆔 @FPGA0
❇️ سمینار آنلاین (رایگان)
⚡️ روش ۷-مرحلهای پیادهسازی هر نوع الگوریتم پردازش سیگنال در FPGA
♦️ ثبتنام رایگان 👇
🌏 https://faradandish.com/lp/signal-processing-webinar
🔺 این سمینار آنلاین روز چهارشنبه ۸ مرداد ساعت ۱۹ برگزار میشود.
🆔 @FPGA0
⚡️ روش ۷-مرحلهای پیادهسازی هر نوع الگوریتم پردازش سیگنال در FPGA
♦️ ثبتنام رایگان 👇
🌏 https://faradandish.com/lp/signal-processing-webinar
🔺 این سمینار آنلاین روز چهارشنبه ۸ مرداد ساعت ۱۹ برگزار میشود.
🆔 @FPGA0
برای افزایش سرعت مدار از کدام روش میتوان استفاده کرد؟
Anonymous Quiz
5%
رعایت الگوی استاندار کدنویسی
9%
پایپ لاین
6%
موازیسازی
79%
همه موارد
♨️ روشهای افزایش سرعت یک مدار دیجیتال را در مجموعه پست زیر مطالعه کنید:👇👇👇
https://t.me/fpga0/798
https://t.me/fpga0/799
https://t.me/fpga0/803
https://t.me/fpga0/805
🆔 @FPGA0
https://t.me/fpga0/798
https://t.me/fpga0/799
https://t.me/fpga0/803
https://t.me/fpga0/805
🆔 @FPGA0
❇️ هر مدار دیجیتالی از مجموعهای از مدارات کوچک و پایه تشکیل شده است
🔷 در میان این مدارات پایه، احتمالا پرکاربردترین آنها، شمارندهها هستند
🔷 شمارندهها آنقدر پرکاربرد هستند که بعید میدانم طرح دیجیتالی را بتوان بدون آنها ساخت
🔷 اما کاربردهای اصلی شمارندهها در مدارات دیجیتال چیست و چطور میتوان از آنها برای پیادهسازی در FPGA استفاده کرد؟
🔶 در جدیدترین مقاله سایت فراد اندیش که همکارم منتشر کردهاند، به طور مفصل در مورد این موضوع توضیح داده شده است 👇
🆔 @FPGA0
🔷 در میان این مدارات پایه، احتمالا پرکاربردترین آنها، شمارندهها هستند
🔷 شمارندهها آنقدر پرکاربرد هستند که بعید میدانم طرح دیجیتالی را بتوان بدون آنها ساخت
🔷 اما کاربردهای اصلی شمارندهها در مدارات دیجیتال چیست و چطور میتوان از آنها برای پیادهسازی در FPGA استفاده کرد؟
🔶 در جدیدترین مقاله سایت فراد اندیش که همکارم منتشر کردهاند، به طور مفصل در مورد این موضوع توضیح داده شده است 👇
🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۰
🎓 شمارنده چگونه میتواند مشکلات شما در پیادهسازی را حل کند؟
📚 نوشته فاطمه مشاک
📥 در سایت فراد اندیش بخوانید 👇👇👇👇
🌎 https://bit.ly/DigitalCounter
#مقاله۱۰
🎓 شمارنده چگونه میتواند مشکلات شما در پیادهسازی را حل کند؟
📚 نوشته فاطمه مشاک
📥 در سایت فراد اندیش بخوانید 👇👇👇👇
🌎 https://bit.ly/DigitalCounter
❇️ ۱۵ سال پیش در محل کار، با چالشی جدی برای پیادهسازی یک الگوریتم پردازش سیگنال ساده در FPGA رو به رو شدم
🔷 در آن موقع ادعا کردم که میتوانم این کار را به سادگی انجام دهم و همین چالش من را پیچیدهتر هم کرد!
🔷 بالاخره به هر زحمتی بود، آن پروژه ساده را انجام دادم اما...
🔷 من نیاز به روشی سیستمی داشتم که بتوانم الگوریتمهای بعدی را بدون مشکل و چالش جدی پیادهسازی کنم
🔷 علیرغم عدم دسترسی به منابع متنوع و مرتبط، به زحمت زیاد و بعد از چند سال توانستم سیستمی را ایجاد کنم که به من کمک میکرد در ۷ مرحله مشخص، هر نوع الگوریتم پردازش سیگنال را در FPGA پیادهسازی کنم.
🔷 در ۱۵ سال گذشته، دهها پروژه مهم صنعتی را به کمک همین روش با موفقیت مدیریت و پیادهسازی کردم و...
🔷 مطمئن هستم شما هم میتوانید از همین سیستم برای انجام پروژههای خودتان به راحتی استفاده کنید
🔷 به همین دلیل تصمیم گرفتم سمینار آنلاینی برگزار کنم و در آن تمام مراحل ۷ گانه پیادهسازی الگوریتمهای پردازش سیگنال در FPGA را به کمک یک مثال ساده برای شما تشریح کنم
🔶 اگر علاقمندید با این مهارت بسیار جذاب و پرکاربرد آشنا شوید، پیشنهاد میکنم همین حالا روی لینک زیر کلیک کنید و در این سمینار به صورت رایگان ثبتنام کنید:
🌏 https://faradandish.com/lp/signal-processing-webinar
♦️ این سمینار آنلاین، روز چهارشنبه ۸ مرداد ساعت ۷ بعد از ظهر برگزار میشود.
🆔 @FPGA0
🔷 در آن موقع ادعا کردم که میتوانم این کار را به سادگی انجام دهم و همین چالش من را پیچیدهتر هم کرد!
🔷 بالاخره به هر زحمتی بود، آن پروژه ساده را انجام دادم اما...
🔷 من نیاز به روشی سیستمی داشتم که بتوانم الگوریتمهای بعدی را بدون مشکل و چالش جدی پیادهسازی کنم
🔷 علیرغم عدم دسترسی به منابع متنوع و مرتبط، به زحمت زیاد و بعد از چند سال توانستم سیستمی را ایجاد کنم که به من کمک میکرد در ۷ مرحله مشخص، هر نوع الگوریتم پردازش سیگنال را در FPGA پیادهسازی کنم.
🔷 در ۱۵ سال گذشته، دهها پروژه مهم صنعتی را به کمک همین روش با موفقیت مدیریت و پیادهسازی کردم و...
🔷 مطمئن هستم شما هم میتوانید از همین سیستم برای انجام پروژههای خودتان به راحتی استفاده کنید
🔷 به همین دلیل تصمیم گرفتم سمینار آنلاینی برگزار کنم و در آن تمام مراحل ۷ گانه پیادهسازی الگوریتمهای پردازش سیگنال در FPGA را به کمک یک مثال ساده برای شما تشریح کنم
🔶 اگر علاقمندید با این مهارت بسیار جذاب و پرکاربرد آشنا شوید، پیشنهاد میکنم همین حالا روی لینک زیر کلیک کنید و در این سمینار به صورت رایگان ثبتنام کنید:
🌏 https://faradandish.com/lp/signal-processing-webinar
♦️ این سمینار آنلاین، روز چهارشنبه ۸ مرداد ساعت ۷ بعد از ظهر برگزار میشود.
🆔 @FPGA0
گروه مهندسی فراد اندیش
سمینار آنلاین ۷ گام پیادهسازی الگوریتمهای پردازش سیگنال با FPGA
در این سمینار آنلاین، با یک روش ۷-مرحلهای برای پیادهسازی انواع الگوریتمهای پردازشی در FPGA آشنا میشوید. (بدون نیازی به آشنایی با طراحی الگوریتمها)
❓ پاسخ به سه سوال در مورد سمینار آنلاین چهارشنبه ۸ مرداد...
1️⃣ آیا فیلم این سمینار را بعدا میتوانیم تهیه کنیم؟
☑️ خیر. این سمینار ضبط نمیشود و برای مشاهده آن باید در زمان گفته شده از طریق لینکی که بعد از ثبتنام به شما ارسال میشود به صورت آنلاین در آن شرکت کنید.
2️⃣ روش شرکت در این سمینار آنلاین چگونه است؟
☑️ بعد از ثبتنام رایگان در سمینار، ایمیلی به شما ارسال میشود که لینک ورود به سمینار در آن وجود دارد. فقط کافی است در زمان برگزاری سمینار، روی لینک کلیک کنید تا وارد سمینار آنلاین شوید.
3️⃣ آیا شرکت در این سمینار نیاز به پیشنیاز خاصی دارد؟
☑️ خیر. البته برای به کار گیری تکنیکهای پیادهسازی لازم است که آشنایی نسبی با FPGA داشته باشید ولی برای یادگیری مطالب سمینار نیاز به پیشنیازی نیست.
♦️ برای ثبتنام در سمینار آنلاین، روی لینک زیر کلیک کنید 👇
🌏 https://faradandish.com/lp/signal-processing-webinar
🆔 @FPGA0
1️⃣ آیا فیلم این سمینار را بعدا میتوانیم تهیه کنیم؟
☑️ خیر. این سمینار ضبط نمیشود و برای مشاهده آن باید در زمان گفته شده از طریق لینکی که بعد از ثبتنام به شما ارسال میشود به صورت آنلاین در آن شرکت کنید.
2️⃣ روش شرکت در این سمینار آنلاین چگونه است؟
☑️ بعد از ثبتنام رایگان در سمینار، ایمیلی به شما ارسال میشود که لینک ورود به سمینار در آن وجود دارد. فقط کافی است در زمان برگزاری سمینار، روی لینک کلیک کنید تا وارد سمینار آنلاین شوید.
3️⃣ آیا شرکت در این سمینار نیاز به پیشنیاز خاصی دارد؟
☑️ خیر. البته برای به کار گیری تکنیکهای پیادهسازی لازم است که آشنایی نسبی با FPGA داشته باشید ولی برای یادگیری مطالب سمینار نیاز به پیشنیازی نیست.
♦️ برای ثبتنام در سمینار آنلاین، روی لینک زیر کلیک کنید 👇
🌏 https://faradandish.com/lp/signal-processing-webinar
🆔 @FPGA0
⚡️ نحوهی پیدایش زبان VHDL و ساختار آن
🔷 نام VHDL، مخفف عبارت VHSIC Hardware Description Language است.
🔷 حرف V خود مخفف Very High Speed Integrated Circuit است.
✅ بنابراین، VHDL مخفف زبان توصیف سختافزاری مدارات مجتمع با سرعت بسیار زیاد است.
🔷 زبان VHDL ابتدا توسط وزارت دفاع آمریکا ابداع شد.
🔷 در آن زمان، هدف از ابداع این زبان، پیادهسازی یک سیستم دیجیتال نبود؛ بلکه قصد داشتند بهکمک آن، مداراتی که قبلاً پیادهسازی کرده بودند را مستندسازی کنند.
🔷 هدف دیگر، انجام مدلسازیهای مدارات دیجیتال بود.
🔷 اما بعدها، از این زبان برای پیادهسازی سیستمهای دیجیتال استفاده شد.
✅ نهایتاً، این زبان توسط سازمان IEEE استانداردسازی شد و زبان VHDL فعلی که ما در حال استفاده از آن هستیم، زبان استاندارد شده در سازمان IEEE است.
🔷 همانطور که در پست قبل گفتم، زبان VHDL یک زبان برنامهنویسی نیست؛ بلکه زبانی است که بهکمک آن میتوانیم یک طرح سختافزاری را توصیف کنیم.
🔷 بهطور کلی، میتوان یک مدار دیجیتال را به دو بخش تقسیم کرد:
1⃣ بخش پایهها، پینها یا پورتهای ورودی-خروجی
2⃣ بخش مدار داخلی
✅ هر کد VHDL نیز از دو بخش تشکیل شده است؛ بخش Entity و بخش Architecture
🔷 در اصطلاحِ VHDL، به پایهها یا پورتهای ورودی-خروجی مدار، Entity و به مدار داخلی Architecture گفته میشود.
🔷 در بخش Entity از کد، پورتهای مدار را تعریف میکنیم.
🔷 در واقع، ابتدا برای هر پورت نامی تعیین میکنیم.
🔷 سپس، مشخص میکنیم که آن پورت، ورودی، خروجی یا دو طرفه است.
🔷 پس از آن، نوع دادهای که میتوان درون پورت قرار گیرد را مشخص میکنیم.
✅ اما بخش اصلی یک کد VHDL، بخش Architecture است که یک مدار دیجیتال را در آن توصیف میکنیم.
✅ برای مطالعهی نکات اصلی زبان VHDL، به مجموعه مقالات زیر از سایت فراد اندیش مراجعه کنید:
🌎 http://bit.ly/VHDL-1
🌎 https://bit.ly/VHDL-2
🌎 https://bit.ly/VHDL-3
🌎 https://bit.ly/VHDL-4
🆔 @FPGA0
🔷 نام VHDL، مخفف عبارت VHSIC Hardware Description Language است.
🔷 حرف V خود مخفف Very High Speed Integrated Circuit است.
✅ بنابراین، VHDL مخفف زبان توصیف سختافزاری مدارات مجتمع با سرعت بسیار زیاد است.
🔷 زبان VHDL ابتدا توسط وزارت دفاع آمریکا ابداع شد.
🔷 در آن زمان، هدف از ابداع این زبان، پیادهسازی یک سیستم دیجیتال نبود؛ بلکه قصد داشتند بهکمک آن، مداراتی که قبلاً پیادهسازی کرده بودند را مستندسازی کنند.
🔷 هدف دیگر، انجام مدلسازیهای مدارات دیجیتال بود.
🔷 اما بعدها، از این زبان برای پیادهسازی سیستمهای دیجیتال استفاده شد.
✅ نهایتاً، این زبان توسط سازمان IEEE استانداردسازی شد و زبان VHDL فعلی که ما در حال استفاده از آن هستیم، زبان استاندارد شده در سازمان IEEE است.
🔷 همانطور که در پست قبل گفتم، زبان VHDL یک زبان برنامهنویسی نیست؛ بلکه زبانی است که بهکمک آن میتوانیم یک طرح سختافزاری را توصیف کنیم.
🔷 بهطور کلی، میتوان یک مدار دیجیتال را به دو بخش تقسیم کرد:
1⃣ بخش پایهها، پینها یا پورتهای ورودی-خروجی
2⃣ بخش مدار داخلی
✅ هر کد VHDL نیز از دو بخش تشکیل شده است؛ بخش Entity و بخش Architecture
🔷 در اصطلاحِ VHDL، به پایهها یا پورتهای ورودی-خروجی مدار، Entity و به مدار داخلی Architecture گفته میشود.
🔷 در بخش Entity از کد، پورتهای مدار را تعریف میکنیم.
🔷 در واقع، ابتدا برای هر پورت نامی تعیین میکنیم.
🔷 سپس، مشخص میکنیم که آن پورت، ورودی، خروجی یا دو طرفه است.
🔷 پس از آن، نوع دادهای که میتوان درون پورت قرار گیرد را مشخص میکنیم.
✅ اما بخش اصلی یک کد VHDL، بخش Architecture است که یک مدار دیجیتال را در آن توصیف میکنیم.
✅ برای مطالعهی نکات اصلی زبان VHDL، به مجموعه مقالات زیر از سایت فراد اندیش مراجعه کنید:
🌎 http://bit.ly/VHDL-1
🌎 https://bit.ly/VHDL-2
🌎 https://bit.ly/VHDL-3
🌎 https://bit.ly/VHDL-4
🆔 @FPGA0
❇️ برگزاری مجدد سمینار آنلاین...
⚡️ ۷ گام پیادهسازی الگوریتمهای پردازش سیگنال در FPGA
🔹 با توجه به عدم موفقیت بسیاری از ثبتنام کنندگان در سمینار آنلاین هفته پیش برای شرکت در آن، این سمینار آنلاین مجددا روز چهارشنبه ۱۵ مرداد تکرار خواهد شد.
♦️ ثبتنام رایگان 👇
🌏 https://faradandish.com/lp/signal-processing-webinar
🆔 @FPGA0
⚡️ ۷ گام پیادهسازی الگوریتمهای پردازش سیگنال در FPGA
🔹 با توجه به عدم موفقیت بسیاری از ثبتنام کنندگان در سمینار آنلاین هفته پیش برای شرکت در آن، این سمینار آنلاین مجددا روز چهارشنبه ۱۵ مرداد تکرار خواهد شد.
♦️ ثبتنام رایگان 👇
🌏 https://faradandish.com/lp/signal-processing-webinar
🆔 @FPGA0