⚡️ اثبات صحت عملکرد مدار به مدیر یا کارفرما (قسمت دوم)
🔷 در قسمت قبل انواع روشهای شبیهسازی را دیدید. در این قسمت دربارهی تست در حین اجرا صحبت خواهم کرد.
❇️ تحویل سیستم پیادهسازی شده به کارفرما
🔷 همانطور که گفته شد، ارزیاب سیستم، یعنی کسی که باید صحت عملکرد سیستم را به او اثبات کنید، تمایل زیادی به دیدن عملکرد سیستم در حین کار واقعی (بهجای شبیهسازی) دارد.
🔷 از طرف دیگر، ارزیاب سیستم دوست دارد که یک سناریو کامل و جامع تست (که شامل تمام حالات ورودی باشد) را ببیند؛ نه اینکه شما فقط چند نمونهی محدود را به عنوان مثال به او نشان دهید.
🔷 از طرفی، شبیهسازی یک سناریوی جامع که شامل تمام حالات ورودی باشد، بسیار زمانبر است.
🔷 این مسئله باعث شده که ما به سراغ استفاده از روش دیگری برویم که به آن، روش تست در حال اجرا یا run time test میگویند.
❇️ روش تست در حال اجرا
🔷 در روش تست در حال اجرا، به جای اینکه مدار را شبیهسازی کنید، آن را روی FPGA پیادهسازی میکنید و در حالی که مدار بر روی FPGA در حال کار است، آن را تست میکنید.
🔷 برای انجام این کار، نیاز دارید که در کنار مدار اصلیتان، سختافزارهای دیگری، در درون FPGA پیادهسازی کنید.
🔷 همچنین، برای برقراری ارتباط کامپیوتر و FPGA و دریافت نتایج تست در کامپیوتر، نیاز به برنامهنویسی در کامپیوتر دارید.
🔷 در مجموعهی نرمافزاری ISE، ابزاری وجود دارد که تمام این نیازمندیها را برای شما برآورده میکند؛ نام این ابزار، ChipScope است.
✅ در مقالهی "تست مدار با ChipScope" نحوهی انجام تنظیمات و استفاده از ChipScope را بهطور مفصل شرح دادهام:
🌎 https://bit.ly/ChipScope
🆔 @FPGA0
🔷 در قسمت قبل انواع روشهای شبیهسازی را دیدید. در این قسمت دربارهی تست در حین اجرا صحبت خواهم کرد.
❇️ تحویل سیستم پیادهسازی شده به کارفرما
🔷 همانطور که گفته شد، ارزیاب سیستم، یعنی کسی که باید صحت عملکرد سیستم را به او اثبات کنید، تمایل زیادی به دیدن عملکرد سیستم در حین کار واقعی (بهجای شبیهسازی) دارد.
🔷 از طرف دیگر، ارزیاب سیستم دوست دارد که یک سناریو کامل و جامع تست (که شامل تمام حالات ورودی باشد) را ببیند؛ نه اینکه شما فقط چند نمونهی محدود را به عنوان مثال به او نشان دهید.
🔷 از طرفی، شبیهسازی یک سناریوی جامع که شامل تمام حالات ورودی باشد، بسیار زمانبر است.
🔷 این مسئله باعث شده که ما به سراغ استفاده از روش دیگری برویم که به آن، روش تست در حال اجرا یا run time test میگویند.
❇️ روش تست در حال اجرا
🔷 در روش تست در حال اجرا، به جای اینکه مدار را شبیهسازی کنید، آن را روی FPGA پیادهسازی میکنید و در حالی که مدار بر روی FPGA در حال کار است، آن را تست میکنید.
🔷 برای انجام این کار، نیاز دارید که در کنار مدار اصلیتان، سختافزارهای دیگری، در درون FPGA پیادهسازی کنید.
🔷 همچنین، برای برقراری ارتباط کامپیوتر و FPGA و دریافت نتایج تست در کامپیوتر، نیاز به برنامهنویسی در کامپیوتر دارید.
🔷 در مجموعهی نرمافزاری ISE، ابزاری وجود دارد که تمام این نیازمندیها را برای شما برآورده میکند؛ نام این ابزار، ChipScope است.
✅ در مقالهی "تست مدار با ChipScope" نحوهی انجام تنظیمات و استفاده از ChipScope را بهطور مفصل شرح دادهام:
🌎 https://bit.ly/ChipScope
🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۲۶
🎓 تست مدار با ChipScope
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۶ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 https://bit.ly/ChipScope
#برنامه_ویدئویی۲۶
🎓 تست مدار با ChipScope
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۶ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 https://bit.ly/ChipScope
⚡️ پیاده سازی محاسبات ماتریسی در FPGA
🔷 محاسبات ماتریسی در سیستمهای دیجیتال کاربردهای فراوانی دارند.
🔷 برای مثال، در سیستمهای مخابراتی MIMO و در سیستمهای مخابراتی که از روش OFDM برای ارسال اطلاعات استفاده میکنند، به انجام محاسبات ماتریسی نیاز است.
🔷 از آنجا که تصاویر دیجیتال بهصورت ماتریس ذخیره میشوند، در سیستمهای پردازش تصویر نیز به محاسبات ماتریسی نیاز داریم.
❇️ دو نیازمندی اساسی در مبحث محاسبات ماتریسی
در زمینهی پیادهسازی ماتریسها دو نیازمندی ویژه داریم:
1⃣ ذخیرهسازی ماتریسها
2⃣ انجام محاسبات مختلف روی ماتریسها
🔷 اما با توجه به یک بعدی بودن حافظهها چگونه باید ماتریسهای چند بعدی را در آنها ذخیره کنیم؟
🔷 برای این کار، ستونها یا سطرهای ماتریس را (با توجه به نوع محاسباتمان) بهصورت پشت سر هم در حافظه ذخیره میکنیم.
🔷 مثلاً، برای ذخیرهسازی یک ماتریس سه در سه، در خانهی اول تا سوم حافظه، سطر اول ماتریس را قرار میدهیم. سپس در خانهی چهارم تا ششم، سطر دوم و در خانهی هفتم تا نهم، سطر سوم ماتریس را قرار میدهیم.
🔷 پس از ذخیرهسازی ماتریس میتوانیم به سراغ انجام محاسبات برویم.
✅ در مقالهی "پیادهسازی محاسبات ماتریسی در FPGA"، به کمک یک مثال، نحوهی ذخیرهی یک تصویر در حافظه و انجام محاسبات روی آن را توضیح دادهام:
🌎 https://bit.ly/MatrixFPGA
🆔 @FPGA0
🔷 محاسبات ماتریسی در سیستمهای دیجیتال کاربردهای فراوانی دارند.
🔷 برای مثال، در سیستمهای مخابراتی MIMO و در سیستمهای مخابراتی که از روش OFDM برای ارسال اطلاعات استفاده میکنند، به انجام محاسبات ماتریسی نیاز است.
🔷 از آنجا که تصاویر دیجیتال بهصورت ماتریس ذخیره میشوند، در سیستمهای پردازش تصویر نیز به محاسبات ماتریسی نیاز داریم.
❇️ دو نیازمندی اساسی در مبحث محاسبات ماتریسی
در زمینهی پیادهسازی ماتریسها دو نیازمندی ویژه داریم:
1⃣ ذخیرهسازی ماتریسها
2⃣ انجام محاسبات مختلف روی ماتریسها
🔷 اما با توجه به یک بعدی بودن حافظهها چگونه باید ماتریسهای چند بعدی را در آنها ذخیره کنیم؟
🔷 برای این کار، ستونها یا سطرهای ماتریس را (با توجه به نوع محاسباتمان) بهصورت پشت سر هم در حافظه ذخیره میکنیم.
🔷 مثلاً، برای ذخیرهسازی یک ماتریس سه در سه، در خانهی اول تا سوم حافظه، سطر اول ماتریس را قرار میدهیم. سپس در خانهی چهارم تا ششم، سطر دوم و در خانهی هفتم تا نهم، سطر سوم ماتریس را قرار میدهیم.
🔷 پس از ذخیرهسازی ماتریس میتوانیم به سراغ انجام محاسبات برویم.
✅ در مقالهی "پیادهسازی محاسبات ماتریسی در FPGA"، به کمک یک مثال، نحوهی ذخیرهی یک تصویر در حافظه و انجام محاسبات روی آن را توضیح دادهام:
🌎 https://bit.ly/MatrixFPGA
🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۲۵
🎓 پیادهسازی محاسبات ماتریسی در FPGA
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۲ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 https://bit.ly/MatrixFPGA
#برنامه_ویدئویی۲۵
🎓 پیادهسازی محاسبات ماتریسی در FPGA
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۲ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 https://bit.ly/MatrixFPGA
⚡️ موقعیت شغلی جدید...
🔹 یک شرکت معتبر و با سابقه در حوزه ساخت سیستمهای مخابراتی و پردازش سیگنال مبتنی بر FPGA در تهران، به دنبال نیرویهای متبحر و با انگیزه برای انجام پروژه های جدید خود است.
❇️ موارد زير برای این موقعیت شغلی مهم هستند:
1️⃣ تجربه کار با نرم افزارهای Vivado و ISE
2️⃣ بک گراند پردازشی (مباحث fixed-point را در بلوک های پردازش سيگنال تجربه کرده باشند)
3️⃣ آشنا با سيستم جنراتور (تسلط کامل نياز نيست)
4️⃣ تجربه کار با مدارات فرکانس بالا و مدارات پلی فيز مزیت محسوب می شود
5️⃣ مسئوليت پذير و منظم
7️⃣ آشنا با مستندسازی فنی
❇️ اگر فکر میکنید مهارت و خصوصیات فردی شما با موارد بالا تطبیق دارد، لطفا رزومهتان را به ایمیل زیر ارسال کنید:
📭 edu@faradandish.com
☎️ رزومه شما به شرکت مورد نظر ارسال خواهد شد و آنها پس از بررسی، در صورت نیاز با شما تماس خواهند گرفت.
🆔 @FPGA0
🔹 یک شرکت معتبر و با سابقه در حوزه ساخت سیستمهای مخابراتی و پردازش سیگنال مبتنی بر FPGA در تهران، به دنبال نیرویهای متبحر و با انگیزه برای انجام پروژه های جدید خود است.
❇️ موارد زير برای این موقعیت شغلی مهم هستند:
1️⃣ تجربه کار با نرم افزارهای Vivado و ISE
2️⃣ بک گراند پردازشی (مباحث fixed-point را در بلوک های پردازش سيگنال تجربه کرده باشند)
3️⃣ آشنا با سيستم جنراتور (تسلط کامل نياز نيست)
4️⃣ تجربه کار با مدارات فرکانس بالا و مدارات پلی فيز مزیت محسوب می شود
5️⃣ مسئوليت پذير و منظم
7️⃣ آشنا با مستندسازی فنی
❇️ اگر فکر میکنید مهارت و خصوصیات فردی شما با موارد بالا تطبیق دارد، لطفا رزومهتان را به ایمیل زیر ارسال کنید:
📭 edu@faradandish.com
☎️ رزومه شما به شرکت مورد نظر ارسال خواهد شد و آنها پس از بررسی، در صورت نیاز با شما تماس خواهند گرفت.
🆔 @FPGA0
📝 جواب:
یکی از بهترین افرادی که در زمینه FPGA میشناسم، گرایش تحصیلیش الکترونیک آنالوگ بود.
به نظرم ارتباط زیادی بین این رشتهها و انتخاب FPGA به عنوان زمینه شغلی وجود ندارد. بخشی از اطلاعاتی که در رشته الکترونیک به دست میآورید و بخشی از اطلاعاتی که در رشته مخابرات سیستم به دست میآورید در این کار برای شما مفید خواهند بود.
در مجموع به نظر من، مهمترین بخش داستان، مطالعه، یادگیری و تجربه خودتان هست که در هیچکدام از این دو گرایش به شما آموزش داده نمیشود.
من شخصاً خیلی حساسیتی در این زمینه احساس نمیکنم. به نظرم گرایشی را انتخاب کنید که الان به آن بیشتر علاقه دارید و فکر میکنید در آن موفقتر خواهید بود.
اگر به طور جدی علاقه دارید در حوزه طراحی دیجیتال با FPGA به صورت حرفهای کار کنید، مهم نیست در کدامیک از این گرایشها تحصیل میکنید. آنچه مهم است، مطالعه و یادگیری، انجام تمرین و کسب تجربه توسط خودتان است و همانطور که گفتم، اینها مواردی است که در هیچ کدام از این گرایشها به شما یاد نمیدهند.
با استفاده از منابع آموزشی خوب و راهنمایی افرادی که در این زمینه دارای تجربه حرفهای هستند، حتماً موفق خواهید شد.
🆔 @FPGA0
یکی از بهترین افرادی که در زمینه FPGA میشناسم، گرایش تحصیلیش الکترونیک آنالوگ بود.
به نظرم ارتباط زیادی بین این رشتهها و انتخاب FPGA به عنوان زمینه شغلی وجود ندارد. بخشی از اطلاعاتی که در رشته الکترونیک به دست میآورید و بخشی از اطلاعاتی که در رشته مخابرات سیستم به دست میآورید در این کار برای شما مفید خواهند بود.
در مجموع به نظر من، مهمترین بخش داستان، مطالعه، یادگیری و تجربه خودتان هست که در هیچکدام از این دو گرایش به شما آموزش داده نمیشود.
من شخصاً خیلی حساسیتی در این زمینه احساس نمیکنم. به نظرم گرایشی را انتخاب کنید که الان به آن بیشتر علاقه دارید و فکر میکنید در آن موفقتر خواهید بود.
اگر به طور جدی علاقه دارید در حوزه طراحی دیجیتال با FPGA به صورت حرفهای کار کنید، مهم نیست در کدامیک از این گرایشها تحصیل میکنید. آنچه مهم است، مطالعه و یادگیری، انجام تمرین و کسب تجربه توسط خودتان است و همانطور که گفتم، اینها مواردی است که در هیچ کدام از این گرایشها به شما یاد نمیدهند.
با استفاده از منابع آموزشی خوب و راهنمایی افرادی که در این زمینه دارای تجربه حرفهای هستند، حتماً موفق خواهید شد.
🆔 @FPGA0
⚡️ نحوهی عملکرد تابع resize در سناریوهای مختلف (قسمت اول)
🔷 گاهی برای رعایت قوانین ارجاع در زبان VHDL نیاز است که عرض بیت سیگنالها را تغییر دهیم.
🔷 برای مثال، در ارجاع ساده، باید سیگنالهای دو طرف ارجاع، عرض بیت یکسانی داشته باشند.
✅ برای این کار، میتوانیم از تابع resize استفاده کنیم.
🔷 مثلاً در ارجاع سادهی سیگنال چهاربیتی B به سیگنال هفت بیتی A، بهصورت زیر عمل میکنیم:
A <= resize (B, 7);
🔷 به این ترتیب، تعداد بیتهای سیگنال B به هفت بیت افزایش مییابد و قابل ارجاع به سیگنال A است.
✅ تابع resize، بسیار مفید و پرکاربرد است و با فراخوانی پکیج numeric_std میتوانید از آن استفاده کنید.
❓ اما این تابع به چه ترتیب عمل میکند؟
🔷 برای استفاده از تابع resize حالات مختلفی وجود دارد.
🔷 بهکمک این تابع هم میتوان تعداد بیتها را افزایش و هم میتوان کاهش داد.
🔷 از طرفی، سیگنالی که وارد تابع resize میشود میتواند علامتدار یا بدون علامت باشد.
✅ بنابراین، با توجه به علامتدار یا بدون علامت بودن عدد و عملیات کاهش یا افزایش بیت، چهار حالت مختلف برای استفاده از تابع resize وجود دارد.
✅ بنابراین، با توجه به علامتدار یا بدون علامت بودن عدد و عملیات کاهش یا افزایش بیت، چهار حالت مختلف برای استفاده از تابع resize وجود دارد.
❇️ من در پست دیگری، تابع resize و حالات مختلف آن را توضیح خواهم داد؛ اما قبل از آن بد نیست خودتان را به کمک یک کوئیز ساده تست کنید و ببینید چقدر با این تابع آشنا هستید.
ادامه دارد...
🆔 @FPGA0
🔷 گاهی برای رعایت قوانین ارجاع در زبان VHDL نیاز است که عرض بیت سیگنالها را تغییر دهیم.
🔷 برای مثال، در ارجاع ساده، باید سیگنالهای دو طرف ارجاع، عرض بیت یکسانی داشته باشند.
✅ برای این کار، میتوانیم از تابع resize استفاده کنیم.
🔷 مثلاً در ارجاع سادهی سیگنال چهاربیتی B به سیگنال هفت بیتی A، بهصورت زیر عمل میکنیم:
A <= resize (B, 7);
🔷 به این ترتیب، تعداد بیتهای سیگنال B به هفت بیت افزایش مییابد و قابل ارجاع به سیگنال A است.
✅ تابع resize، بسیار مفید و پرکاربرد است و با فراخوانی پکیج numeric_std میتوانید از آن استفاده کنید.
❓ اما این تابع به چه ترتیب عمل میکند؟
🔷 برای استفاده از تابع resize حالات مختلفی وجود دارد.
🔷 بهکمک این تابع هم میتوان تعداد بیتها را افزایش و هم میتوان کاهش داد.
🔷 از طرفی، سیگنالی که وارد تابع resize میشود میتواند علامتدار یا بدون علامت باشد.
✅ بنابراین، با توجه به علامتدار یا بدون علامت بودن عدد و عملیات کاهش یا افزایش بیت، چهار حالت مختلف برای استفاده از تابع resize وجود دارد.
✅ بنابراین، با توجه به علامتدار یا بدون علامت بودن عدد و عملیات کاهش یا افزایش بیت، چهار حالت مختلف برای استفاده از تابع resize وجود دارد.
❇️ من در پست دیگری، تابع resize و حالات مختلف آن را توضیح خواهم داد؛ اما قبل از آن بد نیست خودتان را به کمک یک کوئیز ساده تست کنید و ببینید چقدر با این تابع آشنا هستید.
ادامه دارد...
🆔 @FPGA0
همانطور که در پست قبل دیدید، گاهی برای رعایت قوانین ارجاع در زبان 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