⚡️ چگونه محاسبات علامتدار را در FPGA پیادهسازی کنیم؟ (قسمت دوم)
🔷 در پست قبلی دیدید که برای پیادهسازی اعداد علامتدار در FPGA، هر دو روش "علامت و مقدار" و "مکمل یک" معایبی داشتند.
🔷 در این پست، با روشی که از آن برای پیادهسازی اعداد علامتدار در FPGA استفاده میکنیم آشنا خواهید شد.
3⃣ روش مکمل دو (two's complement)
🔷 در روش مکمل دو، اعداد مثبت را به صورت باینری معمولی نمایش میدهیم.
🔷 اما برای نمایش اعداد منفی، مکملِ دو اعداد مثبت را حساب میکنیم.
🔷 برای محاسبهی مکمل دو، دو روش ذهنی وجود دارد:
✅ روش اول: مکملِ یک را محاسبه کنید و یک واحد به آن اضافه کنید.
✅ روش دوم: از سمت راست عدد، تمام صفرها و اولین یک را بنویسید. سپس، بقیهی رقمها را not کنید.
🔹مثال:
+4=00100
-4=11100
✅ مزایای روش مکمل دو:
🔹 پیادهسازی تفریقکننده ساده است.
🔹 برای عدد صفر، یک نمایش یکتا وجود دارد.
ادامه دارد...
🆔 @FPGA
🔷 در پست قبلی دیدید که برای پیادهسازی اعداد علامتدار در FPGA، هر دو روش "علامت و مقدار" و "مکمل یک" معایبی داشتند.
🔷 در این پست، با روشی که از آن برای پیادهسازی اعداد علامتدار در FPGA استفاده میکنیم آشنا خواهید شد.
3⃣ روش مکمل دو (two's complement)
🔷 در روش مکمل دو، اعداد مثبت را به صورت باینری معمولی نمایش میدهیم.
🔷 اما برای نمایش اعداد منفی، مکملِ دو اعداد مثبت را حساب میکنیم.
🔷 برای محاسبهی مکمل دو، دو روش ذهنی وجود دارد:
✅ روش اول: مکملِ یک را محاسبه کنید و یک واحد به آن اضافه کنید.
✅ روش دوم: از سمت راست عدد، تمام صفرها و اولین یک را بنویسید. سپس، بقیهی رقمها را not کنید.
🔹مثال:
+4=00100
-4=11100
✅ مزایای روش مکمل دو:
🔹 پیادهسازی تفریقکننده ساده است.
🔹 برای عدد صفر، یک نمایش یکتا وجود دارد.
ادامه دارد...
🆔 @FPGA
❓ سوال:
من شنیدم استفاده از FPGA در کنار DSP راه حل بسیار کارآمدی میباشد. دلیلشان این بود که بعضی از الگوریتم ها توسط DSP سریعتر از FPGA انجام میشود.
سوالم اینه که اگه چنین حرفی درسته، چه نوع الگوریتمهایی در FPGA کند هستند که در DSP سریعترند؟
📝 جواب:
استفاده از DSP در کنار FPGA همانطور که شما هم اشاره کردید در بسیاری از سیستمهای پیشرفته، یک راه مناسب برای پیادهسازی الگوریتمهای پردازشی پیچیده است. چون کار با FPGA طراحی سختافزار محسوب میشود و کار با DSP طراحی نرمافزار است، به طراحی این نوع سیستمهای ترکیبی Hardware/Software Codesign گفته میشود.
وظیفه طراح در این نوع سیستمها، تقسیم وظایف پردازشی بین سختافزار و نرمافزار است. معمولا دلیل اینکه بخشی از الگوریتمها به DSP سپرده میشود، سرعت بیشتر آن نیست، بلکه سهولت بیشتر آن در پیادهسازی الگوریتمهای پیچیده است. به طور کلی، معمولاً الگوریتمهایی که به سرعت بسیار زیادی نیاز دارند ولی آنچنان پیچیده نیستند را به کمک FPGA و الگوریتمهایی را که پیچیدگی زیاد دارند ولی سرعتشان در حد توان DSPهاست با DSP پیادهسازی میکنند.
در مورد نحوه انتخاب تکنولوژی مناسب برای پیادهسازی، میتوانید #برنامه_ویدئویی۸ را ببینید:
🌎 http://bit.ly/ChooseProperHW
موضوعی که شما در موردش سوال کردید بحث بسیار مفصلی است به طوری که بعضی از افراد در دانشگاه و صنعت متخصص این زمینه هستند و روی آن تحقیق انجام میدهند. آنها این موضوع را بررسی میکنند که وظایف پردازشی را چطور بین سختافزار (FPGA) و نرمافزار (DSP یا پردازندهای درون FPGA) تقسیم کنیم. چون این موضوع تاثیر زیادی در هزینه و زمان انجام پروژه خواهد داشت.
🆔 @FPGA0
من شنیدم استفاده از FPGA در کنار DSP راه حل بسیار کارآمدی میباشد. دلیلشان این بود که بعضی از الگوریتم ها توسط DSP سریعتر از FPGA انجام میشود.
سوالم اینه که اگه چنین حرفی درسته، چه نوع الگوریتمهایی در FPGA کند هستند که در DSP سریعترند؟
📝 جواب:
استفاده از DSP در کنار FPGA همانطور که شما هم اشاره کردید در بسیاری از سیستمهای پیشرفته، یک راه مناسب برای پیادهسازی الگوریتمهای پردازشی پیچیده است. چون کار با FPGA طراحی سختافزار محسوب میشود و کار با DSP طراحی نرمافزار است، به طراحی این نوع سیستمهای ترکیبی Hardware/Software Codesign گفته میشود.
وظیفه طراح در این نوع سیستمها، تقسیم وظایف پردازشی بین سختافزار و نرمافزار است. معمولا دلیل اینکه بخشی از الگوریتمها به DSP سپرده میشود، سرعت بیشتر آن نیست، بلکه سهولت بیشتر آن در پیادهسازی الگوریتمهای پیچیده است. به طور کلی، معمولاً الگوریتمهایی که به سرعت بسیار زیادی نیاز دارند ولی آنچنان پیچیده نیستند را به کمک FPGA و الگوریتمهایی را که پیچیدگی زیاد دارند ولی سرعتشان در حد توان DSPهاست با DSP پیادهسازی میکنند.
در مورد نحوه انتخاب تکنولوژی مناسب برای پیادهسازی، میتوانید #برنامه_ویدئویی۸ را ببینید:
🌎 http://bit.ly/ChooseProperHW
موضوعی که شما در موردش سوال کردید بحث بسیار مفصلی است به طوری که بعضی از افراد در دانشگاه و صنعت متخصص این زمینه هستند و روی آن تحقیق انجام میدهند. آنها این موضوع را بررسی میکنند که وظایف پردازشی را چطور بین سختافزار (FPGA) و نرمافزار (DSP یا پردازندهای درون FPGA) تقسیم کنیم. چون این موضوع تاثیر زیادی در هزینه و زمان انجام پروژه خواهد داشت.
🆔 @FPGA0
⚡️ چگونه محاسبات علامتدار را در FPGA پیادهسازی کنیم؟ (قسمت سوم)
🔷 در پست قبل، با روش مکمل دو آشنا شدید.
✅ برای پیادهسازی اعداد علامتدار در FPGA، از روش مکمل دو استفاده میکنیم.
✅ زیرا در این روش:
🔹 پیادهسازی تفریقکننده ساده است.
🔹 برای عدد صفر، یک نمایش یکتا وجود دارد.
❓ برای پیادهسازی اعداد به روش مکمل دو در FPGA، چه باید کرد؟
✅ طبق توصیه شرکت Xilinx، در کد VHDL، سیگنالهایی که قرار است روی آنها محاسبات ریاضی علامتدار انجام شود را از نوع signed و بقیه را از نوع unsigned تعریف کنید.
✅ بدین ترتیب، محاسبات علامتدار پیادهسازی شده در FPGA، به صورت مکمل دو انجام خواهند شد.
✅ روش مکمل دو به جز دو مزیتی که در بالا به آن اشاره شد، دارای یک مزیت کمتر شناخته شده اما مهم دیگر نیز هست که آن را در ویدئوی آموزشی زیر به طور کامل توضیح دادهام 👇
🌎 https://goo.gl/lQ1d5V
🆔 @FPGA0
🔷 در پست قبل، با روش مکمل دو آشنا شدید.
✅ برای پیادهسازی اعداد علامتدار در FPGA، از روش مکمل دو استفاده میکنیم.
✅ زیرا در این روش:
🔹 پیادهسازی تفریقکننده ساده است.
🔹 برای عدد صفر، یک نمایش یکتا وجود دارد.
❓ برای پیادهسازی اعداد به روش مکمل دو در FPGA، چه باید کرد؟
✅ طبق توصیه شرکت Xilinx، در کد VHDL، سیگنالهایی که قرار است روی آنها محاسبات ریاضی علامتدار انجام شود را از نوع signed و بقیه را از نوع unsigned تعریف کنید.
✅ بدین ترتیب، محاسبات علامتدار پیادهسازی شده در FPGA، به صورت مکمل دو انجام خواهند شد.
✅ روش مکمل دو به جز دو مزیتی که در بالا به آن اشاره شد، دارای یک مزیت کمتر شناخته شده اما مهم دیگر نیز هست که آن را در ویدئوی آموزشی زیر به طور کامل توضیح دادهام 👇
🌎 https://goo.gl/lQ1d5V
🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۲۱
🎓 پیادهسازی محاسبات علامتدار در FPGA
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۴ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 https://goo.gl/lQ1d5V
#برنامه_ویدئویی۲۱
🎓 پیادهسازی محاسبات علامتدار در FPGA
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۴ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 https://goo.gl/lQ1d5V
⚡️ چگونه اعداد مختلط را در FPGA پیادهسازی کنیم؟
🔷 بسیاری از الگوریتمهای پردازش سیگنال شامل محاسباتی روی اعداد مختلط هستند.
🔷 اما در FPGAها (و بهطورکلی در تمامی مدارات دیجیتال)، تحقق فیزیکی یا مداری خاصی برای پیادهسازی اعداد مختلط وجود ندارد.
❓ پس برای پیادهسازی سیگنالها و پورتهای ورودی و خروجی مختلط در FPGA چه راهحلی وجود دارد؟
✅ همانطور که میدانید، هر عدد مختلط از دو بخش حقیقی و موهومی تشکیل شده است.
🔷 مثال:
X = 2 + 3i
Xr = 2
Xi = 3
که در آن Xr، قسمت حقیقی و Xi، قسمت موهومی عدد X است.
✅ به ازای هر سیگنال یا پورت مختلط، دو سیگنال تعریف میکنیم:
یکی برای بخش حقیقی سیگنال و دیگری برای بخش موهومی آن.
✅ بدین ترتیب میتوانیم هر عدد مختلطی را پیادهسازی کرده و محاسبات روی آن را انجام دهیم.
✅ البته این کار شامل جزئیات دیگری هم هست که آنها را به طور کامل و به همراه یک مثال، در ویدئوی "پیادهسازی اعداد مختلط در FPGA" توضیح دادهام:
http://bit.ly/ComplexNum
🆔 @FPGA0
🔷 بسیاری از الگوریتمهای پردازش سیگنال شامل محاسباتی روی اعداد مختلط هستند.
🔷 اما در FPGAها (و بهطورکلی در تمامی مدارات دیجیتال)، تحقق فیزیکی یا مداری خاصی برای پیادهسازی اعداد مختلط وجود ندارد.
❓ پس برای پیادهسازی سیگنالها و پورتهای ورودی و خروجی مختلط در FPGA چه راهحلی وجود دارد؟
✅ همانطور که میدانید، هر عدد مختلط از دو بخش حقیقی و موهومی تشکیل شده است.
🔷 مثال:
X = 2 + 3i
Xr = 2
Xi = 3
که در آن Xr، قسمت حقیقی و Xi، قسمت موهومی عدد X است.
✅ به ازای هر سیگنال یا پورت مختلط، دو سیگنال تعریف میکنیم:
یکی برای بخش حقیقی سیگنال و دیگری برای بخش موهومی آن.
✅ بدین ترتیب میتوانیم هر عدد مختلطی را پیادهسازی کرده و محاسبات روی آن را انجام دهیم.
✅ البته این کار شامل جزئیات دیگری هم هست که آنها را به طور کامل و به همراه یک مثال، در ویدئوی "پیادهسازی اعداد مختلط در FPGA" توضیح دادهام:
http://bit.ly/ComplexNum
🆔 @FPGA0
❓ سوال:
این سوال خیلی از دوستان دیگر من هم هست: اینکه در آگهی های استخدام اومده، پیاده سازی الگوریتم های پردازشی با زبان VHDL بر روی FPGA چه رزومه و مهارت هایی رو باید داشته باشیم؟ اینکه مثلا چه الگوریتم هایی، پیاده سازیش در FPGA متداوله و یک مبتدی از کجا باید شروع کنه پردازش رو.
📝 جواب:
در جواب به این سوال، بد نیست به جز توضیح در مورد مهارتهایی که برای این کار لازم است داشته باشید، در مورد موضوعاتی که دانستن آنها ضروری نیست هم صحبت کنم، چون بسیاری از افراد به همین دلیل شجاعت وارد شدن به این حوزه را هیچ وقت به دست نمیآورند.
همانطور که چندین بار در کانال و همچنین در صفحه مربوط به دورهی پردازش سیگنال با FPGA توضیح دادم، پیشنیاز ورود به موضوع پیادهسازی الگوریتمهای پردازشی، آشنایی نسبی با FPGA و زبان VHDL یا Verilog است.
🌎 https://goo.gl/oSHLWC
تصور بسیاری از علاقمندان به این مهارت این است که مرحلهی بعدی، آشنایی با الگوریتمهای پردازش سیگنال است، که البته درست نیست. چون شما به عنوان یک پیادهساز الگوریتمهای پردازشی با FPGA نیاز به تسلط به انواع الگوریتمها و نحوهی طراحی آنها ندارید.
آنچه در این مرحله نیاز دارید، یادگیری مهارتهای ویژهای است که در پیادهسازی الگوریتمهای پردازش سیگنال با FPGA به کار میرود. برای یادگیری این مهارتها، نیاز به آشنایی با الگوریتمها ندارید.
گرچه در فرآیند پیادهسازی از نرمافزار MATLAB هم برای مدلسازی و انجام محاسباتی قبل از پیادهسازی استفاده میکنیم، اما شما نیاز به تسلط به این نرمافزار هم ندارید و میتوانید فقط چند مورد خاص و بسیار ساده را در ارتباط با این موضوع در این نرمافزار یاد بگیرید.
برای شروع، در صورتی که آشنایی نسبی با FPGA و یک زبان توصیف سختافزاری دارید، میتوانید از کتابهایی که در این زمینه وجود دارند و من دو مورد از آنها را در کانال معرفی کردهام استفاده کنید 👇
🌎 http://goo.gl/9vGL3n
🌎 https://goo.gl/DlK1lP
در صورت تمایل و برای اینکه مسیر یادگیری و تسلط بر این مهارتهای ویژه را در زمان کوتاهتری طی کنید، میتوانید در دوره پردازش سیگنال با FPGA هم شرکت کنید 👇
🌎 https://goo.gl/oSHLWC
در این دوره، شما را با یک روش ۷-مرحلهای استاندارد آشنا میکنم که به کمک آن میتوانید هر نوع الگوریتم پردازش سیگنال دیجیتال را به کمک FPGA پیادهسازی کنید. این الگوریتمها میتوانند در حوزه پردازش تصویر، پردازش صوت، مخابرات، رادار و یا هر حوزه پردازشی دیگر باشند.
🆔 @FPGA0
این سوال خیلی از دوستان دیگر من هم هست: اینکه در آگهی های استخدام اومده، پیاده سازی الگوریتم های پردازشی با زبان VHDL بر روی FPGA چه رزومه و مهارت هایی رو باید داشته باشیم؟ اینکه مثلا چه الگوریتم هایی، پیاده سازیش در FPGA متداوله و یک مبتدی از کجا باید شروع کنه پردازش رو.
📝 جواب:
در جواب به این سوال، بد نیست به جز توضیح در مورد مهارتهایی که برای این کار لازم است داشته باشید، در مورد موضوعاتی که دانستن آنها ضروری نیست هم صحبت کنم، چون بسیاری از افراد به همین دلیل شجاعت وارد شدن به این حوزه را هیچ وقت به دست نمیآورند.
همانطور که چندین بار در کانال و همچنین در صفحه مربوط به دورهی پردازش سیگنال با FPGA توضیح دادم، پیشنیاز ورود به موضوع پیادهسازی الگوریتمهای پردازشی، آشنایی نسبی با FPGA و زبان VHDL یا Verilog است.
🌎 https://goo.gl/oSHLWC
تصور بسیاری از علاقمندان به این مهارت این است که مرحلهی بعدی، آشنایی با الگوریتمهای پردازش سیگنال است، که البته درست نیست. چون شما به عنوان یک پیادهساز الگوریتمهای پردازشی با FPGA نیاز به تسلط به انواع الگوریتمها و نحوهی طراحی آنها ندارید.
آنچه در این مرحله نیاز دارید، یادگیری مهارتهای ویژهای است که در پیادهسازی الگوریتمهای پردازش سیگنال با FPGA به کار میرود. برای یادگیری این مهارتها، نیاز به آشنایی با الگوریتمها ندارید.
گرچه در فرآیند پیادهسازی از نرمافزار MATLAB هم برای مدلسازی و انجام محاسباتی قبل از پیادهسازی استفاده میکنیم، اما شما نیاز به تسلط به این نرمافزار هم ندارید و میتوانید فقط چند مورد خاص و بسیار ساده را در ارتباط با این موضوع در این نرمافزار یاد بگیرید.
برای شروع، در صورتی که آشنایی نسبی با FPGA و یک زبان توصیف سختافزاری دارید، میتوانید از کتابهایی که در این زمینه وجود دارند و من دو مورد از آنها را در کانال معرفی کردهام استفاده کنید 👇
🌎 http://goo.gl/9vGL3n
🌎 https://goo.gl/DlK1lP
در صورت تمایل و برای اینکه مسیر یادگیری و تسلط بر این مهارتهای ویژه را در زمان کوتاهتری طی کنید، میتوانید در دوره پردازش سیگنال با FPGA هم شرکت کنید 👇
🌎 https://goo.gl/oSHLWC
در این دوره، شما را با یک روش ۷-مرحلهای استاندارد آشنا میکنم که به کمک آن میتوانید هر نوع الگوریتم پردازش سیگنال دیجیتال را به کمک FPGA پیادهسازی کنید. این الگوریتمها میتوانند در حوزه پردازش تصویر، پردازش صوت، مخابرات، رادار و یا هر حوزه پردازشی دیگر باشند.
🆔 @FPGA0
🖥 سمینار آنلاین "۷ گام پیادهسازی الگوریتمهای پردازش سیگنال با FPGA" دیروز ساعت ۷ بعد از ظهر با حضور بیش از ۲۰۰ نفر برگزار شد.
❇️ با توجه به مشکلات اینترنتی کشور در چند روز گذشته، بعضی از ثبتنام کنندگان در سمینار برای ورود به جلسه دچار مشکل شدند. به همین دلیل تصمیم گرفتیم این سمینار را مجددا روز چهارشنبه ساعت ۷ بعد از ظهر برگزار کنیم.
🔷 ثبتنام رایگان در سمینار آنلاین، از فردا صبح مجددا شروع میشود.
🆔 @FPGA0
❇️ با توجه به مشکلات اینترنتی کشور در چند روز گذشته، بعضی از ثبتنام کنندگان در سمینار برای ورود به جلسه دچار مشکل شدند. به همین دلیل تصمیم گرفتیم این سمینار را مجددا روز چهارشنبه ساعت ۷ بعد از ظهر برگزار کنیم.
🔷 ثبتنام رایگان در سمینار آنلاین، از فردا صبح مجددا شروع میشود.
🆔 @FPGA0
⚡️ چگونه میتوان اعداد اعشاری را در FPGA پیادهسازی کرد؟ (قسمت اول)
1️⃣ روش اول: Floating-point
استانداردهای این روش، توسط سازمان IEEE تدوین شده که شامل استاندارد ۳۲ بیتی و ۶۴ بیتی هستند.
✅ مزیت روش Floating-point:
🔷 اعداد اعشاری را با دقت بسیار زیادی نمایش میدهد.
❎ معایب روش Floating-point:
🔷 پیادهسازی این روش، مشکل است.
🔷 منابع سختافزاری زیادی را مصرف میکند.
🔷 سرعت مدار را کاهش دهد.
2️⃣ روش دوم: Fixed-point
✅ مزایای روش Fixed-point:
🔷 منابع سختافزاری کمتری را نسبت به روش اول اشغال میکند.
🔷 سرعت بسیار بیشتری نسبت به روش اول دارد.
❎ عیب روش Fixed-point:
🔷 اعداد اعشاری را با دقت کمتری نسبت به روش Floating-point نمایش میدهد.
✅ به دلیل دو مزیتی که روش Fixed-Point دارد، اکثر پیادهسازیها در FPGA را به کمک روش Fixed-Point انجام میدهیم.
ادامه دارد...
🆔 @FPGA0
1️⃣ روش اول: Floating-point
استانداردهای این روش، توسط سازمان IEEE تدوین شده که شامل استاندارد ۳۲ بیتی و ۶۴ بیتی هستند.
✅ مزیت روش Floating-point:
🔷 اعداد اعشاری را با دقت بسیار زیادی نمایش میدهد.
❎ معایب روش Floating-point:
🔷 پیادهسازی این روش، مشکل است.
🔷 منابع سختافزاری زیادی را مصرف میکند.
🔷 سرعت مدار را کاهش دهد.
2️⃣ روش دوم: Fixed-point
✅ مزایای روش Fixed-point:
🔷 منابع سختافزاری کمتری را نسبت به روش اول اشغال میکند.
🔷 سرعت بسیار بیشتری نسبت به روش اول دارد.
❎ عیب روش Fixed-point:
🔷 اعداد اعشاری را با دقت کمتری نسبت به روش Floating-point نمایش میدهد.
✅ به دلیل دو مزیتی که روش Fixed-Point دارد، اکثر پیادهسازیها در FPGA را به کمک روش Fixed-Point انجام میدهیم.
ادامه دارد...
🆔 @FPGA0
⚡️چگونه میتوان اعداد اعشاری را در FPGA پیادهسازی کرد؟ (قسمت دوم)
🔷 برای تفسیر یک عدد باینری باید دو مورد زیر مشخص باشند:
❓عدد موردنظر، علامتدار است یا بدون علامت؟
❓نقطهی باینری (کسری)، در کدام مکان از این عدد قرار گرفته است؟
🔷 مثال: عدد باینری زیر، نشاندهندهی چه عددی در مبنای ده است؟
1001010=?
1⃣ حالت اول: اگر فرض کنیم این عدد، یک عدد بدون علامت است، با توجه به ارزشگذاری هر رقم در اعداد باینری، خواهیم داشت:
(1×2^64)+(1×2^8)+(1×2^1) = 74
2⃣ حالت دوم: اگر فرض کنیم این عدد، یک عدد علامتدار و از نوع مکمل دو است، داریم:
-((1×32)+(1×16)+(1×4)+(1×2)) = -54
3⃣ حالت سوم: اگر فرض کنیم این عدد، یک عدد اعشاری بدون علامت است و نقطهی کسری آن کنار بیت سوم قرار دارد:
1001.010 = ?
(1×2^3)+(1×2^1)+(1×2^(-2)) = 8+1+0.25 = 9.25
🔷 ما در بالا، بسته به علامتدار بودن یا نبودن عدد و محل نقطهی کسری (در صورت وجود)، سه تفسیر مختلف از یک عدد باینری داشتیم.
🔷 عدد باینری ما در این مثال، عدد 1001010 بود که در سختافزار دیجیتال قرار دارد.
🔷 بدون تغییر این عدد و تنها با تغییر فرضی که در ذهن ما وجود دارد تفسیرهای مختلفی از آن داشتیم.
🔷 پس، مفهوم یک عدد باینری به تفسیری که از آن میشود، بستگی دارد.
ادامه دارد...
🆔 @FPGA0
🔷 برای تفسیر یک عدد باینری باید دو مورد زیر مشخص باشند:
❓عدد موردنظر، علامتدار است یا بدون علامت؟
❓نقطهی باینری (کسری)، در کدام مکان از این عدد قرار گرفته است؟
🔷 مثال: عدد باینری زیر، نشاندهندهی چه عددی در مبنای ده است؟
1001010=?
1⃣ حالت اول: اگر فرض کنیم این عدد، یک عدد بدون علامت است، با توجه به ارزشگذاری هر رقم در اعداد باینری، خواهیم داشت:
(1×2^64)+(1×2^8)+(1×2^1) = 74
2⃣ حالت دوم: اگر فرض کنیم این عدد، یک عدد علامتدار و از نوع مکمل دو است، داریم:
-((1×32)+(1×16)+(1×4)+(1×2)) = -54
3⃣ حالت سوم: اگر فرض کنیم این عدد، یک عدد اعشاری بدون علامت است و نقطهی کسری آن کنار بیت سوم قرار دارد:
1001.010 = ?
(1×2^3)+(1×2^1)+(1×2^(-2)) = 8+1+0.25 = 9.25
🔷 ما در بالا، بسته به علامتدار بودن یا نبودن عدد و محل نقطهی کسری (در صورت وجود)، سه تفسیر مختلف از یک عدد باینری داشتیم.
🔷 عدد باینری ما در این مثال، عدد 1001010 بود که در سختافزار دیجیتال قرار دارد.
🔷 بدون تغییر این عدد و تنها با تغییر فرضی که در ذهن ما وجود دارد تفسیرهای مختلفی از آن داشتیم.
🔷 پس، مفهوم یک عدد باینری به تفسیری که از آن میشود، بستگی دارد.
ادامه دارد...
🆔 @FPGA0
⚡️چگونه میتوان اعداد اعشاری را در FPGA پیادهسازی کرد؟ (قسمت سوم)
❓آیا ما در FPGA ابزاری برای مشخص کردن نقطه باینری (کسری) داریم؟
✅ خیر؛ در پیادهسازی دیجیتال، ما نمیتوانیم نقطهی باینری را به صورت فیزیکی پیاده سازی کنیم.
✅ ما فقط رقمهای باینری را در خانههای حافظهی سیستم قرار میدهیم.
❓بنابراین سوالی که پیش میآید این است که "نقطهی باینری" کجاست؟
✅ پاسخ: نقطهی باینری در ذهن شما به عنوان پیادهساز مدار دیجیتال است.
✅ یعنی شما به عنوان طراح سیستم، محل نقطه باینری را با توجه به نیازتان مشخص میکنید و محاسبات و پیادسازی را بر مبنای همین نقطهی باینری که در ذهن شماست انجام میدهید.
❓اما این کار را چگونه باید انجام داد؟
✅ برای مثال، فرض کنید بخواهید یک جمع اعداد کسری به صورت زیر را به روش Fixed-Point در FPGA پیادهسازی کنید:
001101010.10011
+
10110.100
= ?
برای در نظر گرفتن نقطهی باینری در محاسبات، باید به صورت زیر عمل کنید:
1⃣ همانگونه که در جمع روی کاغذ، باید نقطههای باینری دو عدد را زیر هم قرار دهید تا عمل جمع به صورت صحیح انجام شود، در اینجا نیز باید همین کار را انجام دهید:
001101010.10011
+
10110.100
= ?
2⃣ در واقع باید در کد VHDL، به سمت راست عددی که رقم اعشار کمتری دارد، به کمک عملگر Concatenation، صفر اضافه کنید، تا عملیات جمع به صورت زیر درآید:
001101010.10011
+
10110.10000
=
001100001.00011
✅ بدین ترتیب، با اضافه کردن تعدادی صفر به سمت راست یکی از اعداد، محل نقطهی باینری (که برای هر دوی این اعداد اعشاری در ذهن شما بود)، در سختافزار زیر هم قرار میگیرد.
✅ البته این کار شامل جزئیات دیگری هم هست که آنها را به طور کامل و به همراه پیادهسازی یک مثال به زبان توصیف سختافزار VHDL، در ویدئوی "پیادهسازی محاسبات اعشاری در FPGA" توضیح دادهام:
http://bit.ly/ImplementDecimals
🆔 @FPGA0
❓آیا ما در FPGA ابزاری برای مشخص کردن نقطه باینری (کسری) داریم؟
✅ خیر؛ در پیادهسازی دیجیتال، ما نمیتوانیم نقطهی باینری را به صورت فیزیکی پیاده سازی کنیم.
✅ ما فقط رقمهای باینری را در خانههای حافظهی سیستم قرار میدهیم.
❓بنابراین سوالی که پیش میآید این است که "نقطهی باینری" کجاست؟
✅ پاسخ: نقطهی باینری در ذهن شما به عنوان پیادهساز مدار دیجیتال است.
✅ یعنی شما به عنوان طراح سیستم، محل نقطه باینری را با توجه به نیازتان مشخص میکنید و محاسبات و پیادسازی را بر مبنای همین نقطهی باینری که در ذهن شماست انجام میدهید.
❓اما این کار را چگونه باید انجام داد؟
✅ برای مثال، فرض کنید بخواهید یک جمع اعداد کسری به صورت زیر را به روش Fixed-Point در FPGA پیادهسازی کنید:
001101010.10011
+
10110.100
= ?
برای در نظر گرفتن نقطهی باینری در محاسبات، باید به صورت زیر عمل کنید:
1⃣ همانگونه که در جمع روی کاغذ، باید نقطههای باینری دو عدد را زیر هم قرار دهید تا عمل جمع به صورت صحیح انجام شود، در اینجا نیز باید همین کار را انجام دهید:
001101010.10011
+
10110.100
= ?
2⃣ در واقع باید در کد VHDL، به سمت راست عددی که رقم اعشار کمتری دارد، به کمک عملگر Concatenation، صفر اضافه کنید، تا عملیات جمع به صورت زیر درآید:
001101010.10011
+
10110.10000
=
001100001.00011
✅ بدین ترتیب، با اضافه کردن تعدادی صفر به سمت راست یکی از اعداد، محل نقطهی باینری (که برای هر دوی این اعداد اعشاری در ذهن شما بود)، در سختافزار زیر هم قرار میگیرد.
✅ البته این کار شامل جزئیات دیگری هم هست که آنها را به طور کامل و به همراه پیادهسازی یک مثال به زبان توصیف سختافزار VHDL، در ویدئوی "پیادهسازی محاسبات اعشاری در FPGA" توضیح دادهام:
http://bit.ly/ImplementDecimals
🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۲۲
🎓 پیادهسازی محاسبات اعشاری در FPGA
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۲ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 http://bit.ly/ImplementDecimals
#برنامه_ویدئویی۲۲
🎓 پیادهسازی محاسبات اعشاری در FPGA
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۲ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 http://bit.ly/ImplementDecimals
❓ سوال:
1- کتابی به من معرفی کنید که جامع و شامل باشد هرچند لاتین باشد که اعتماد به نفس کار کردن را به من بدهد.
2- برای کسب درامد خوب و عالی از FPGA چه چیزهای را در ارتباط با آن باید خوب بلد باشیم. اگر کتابی هست معرفی کنید.
3- در صنایع نظامی از یک متخصص FPGA چه چیزهایی را میخواهند.
📝 جواب:
۱- متاسفانه من چنین کتابی را نمیشناسم و احتمال میدهم که وجود هم نداشته باشد. برای یادگیری و تسلط به این حوزه، نیاز است که موارد مختلفی را از کتابها و مستندات شرکت سازنده FPGA (مثلا Xilinx) مطالعه کنید و همچنین از تجربهی افراد باسابقه در این زمینه استفاده کنید.
قبلاً چند کتاب را در کانال معرفی کردهام که میتوانید از آنها استفاده کنید:
🌎 http://goo.gl/Qv9s1E
🌎 http://goo.gl/YD75W8
۲- برای کسب درآمد عالی در این زمینه، باید اولاً، پیادهسازی مدارات دیجیتال با FPGA را به خوبی یاد بگیرید و به آن مسلط شوید. یعنی به زبان VHDL یا Verilog کاملاً مسلط شوید و آن را درک کنید و همچنین به FPGA و نحوه بکارگیری مناسب و صحیح منابع موجود در آن مسلط شوید.
در مرحلهی بعد، بهتر است در مورد نحوه پیادهسازی الگوریتمهای پردازش سیگنال دیجیتال با FPGA مطالعه و تمرین کنید؛ چون این حوزه، بیشترین کاربرد FPGA را شامل میشود و اگر شما به آن مسلط شوید، حتما درآمد خوبی هم خواهید داشت.
۳- در صنایع نظامی همه مواردی را که در بند ۲ اشاره کردم از شما انتظار دارند.
البته به این نکته هم توجه داشته باشید که همین الان افرادی با توانایی کمتر در این حوزه در صنایع مختلف مشغول به کار هستند. اما مواردی که به آنها اشاره کردم، اگر کمی تجربه هم به آن اضافه شود، میتواند برای رسیدن به درآمد خیلی خوب به شما کمک کند.
🆔 @FPGA0
1- کتابی به من معرفی کنید که جامع و شامل باشد هرچند لاتین باشد که اعتماد به نفس کار کردن را به من بدهد.
2- برای کسب درامد خوب و عالی از FPGA چه چیزهای را در ارتباط با آن باید خوب بلد باشیم. اگر کتابی هست معرفی کنید.
3- در صنایع نظامی از یک متخصص FPGA چه چیزهایی را میخواهند.
📝 جواب:
۱- متاسفانه من چنین کتابی را نمیشناسم و احتمال میدهم که وجود هم نداشته باشد. برای یادگیری و تسلط به این حوزه، نیاز است که موارد مختلفی را از کتابها و مستندات شرکت سازنده FPGA (مثلا Xilinx) مطالعه کنید و همچنین از تجربهی افراد باسابقه در این زمینه استفاده کنید.
قبلاً چند کتاب را در کانال معرفی کردهام که میتوانید از آنها استفاده کنید:
🌎 http://goo.gl/Qv9s1E
🌎 http://goo.gl/YD75W8
۲- برای کسب درآمد عالی در این زمینه، باید اولاً، پیادهسازی مدارات دیجیتال با FPGA را به خوبی یاد بگیرید و به آن مسلط شوید. یعنی به زبان VHDL یا Verilog کاملاً مسلط شوید و آن را درک کنید و همچنین به FPGA و نحوه بکارگیری مناسب و صحیح منابع موجود در آن مسلط شوید.
در مرحلهی بعد، بهتر است در مورد نحوه پیادهسازی الگوریتمهای پردازش سیگنال دیجیتال با FPGA مطالعه و تمرین کنید؛ چون این حوزه، بیشترین کاربرد FPGA را شامل میشود و اگر شما به آن مسلط شوید، حتما درآمد خوبی هم خواهید داشت.
۳- در صنایع نظامی همه مواردی را که در بند ۲ اشاره کردم از شما انتظار دارند.
البته به این نکته هم توجه داشته باشید که همین الان افرادی با توانایی کمتر در این حوزه در صنایع مختلف مشغول به کار هستند. اما مواردی که به آنها اشاره کردم، اگر کمی تجربه هم به آن اضافه شود، میتواند برای رسیدن به درآمد خیلی خوب به شما کمک کند.
🆔 @FPGA0
⚡️عملیات ضرب در FPGA چگونه پیادهسازی میشود؟ (قسمت اول)
🔷 عملیات ضرب در الگوریتمهای پردازش سیگنال بسیار پرکاربرد است.
🔷 عملیاتهای جمع، تفریق و ضرب در زبان VHDL به صورت تعریف شده هستند.
🔹یعنی برای پیادهسازی یک مدار جمع، تفریق یا ضرب نیازی نیست که خودتان مداری طراحی کنید.
🔷 بلکه فقط کافی است که در زبان VHDL، از عملگرهای + ، - و * استفاده کنید.
🔹 در این صورت، نرمافزار پیادهساز، به صورت خودکار، مدار مناسبی را درون FPGA پیادهسازی میکند.
❓اما اگر عملگر ضرب (*) را در کدتان به کار ببرید، پیادهسازی ضربکننده در مدار شما چگونه اتفاق میافتد؟
ادامه دارد...
🆔 @FPGA0
🔷 عملیات ضرب در الگوریتمهای پردازش سیگنال بسیار پرکاربرد است.
🔷 عملیاتهای جمع، تفریق و ضرب در زبان VHDL به صورت تعریف شده هستند.
🔹یعنی برای پیادهسازی یک مدار جمع، تفریق یا ضرب نیازی نیست که خودتان مداری طراحی کنید.
🔷 بلکه فقط کافی است که در زبان VHDL، از عملگرهای + ، - و * استفاده کنید.
🔹 در این صورت، نرمافزار پیادهساز، به صورت خودکار، مدار مناسبی را درون FPGA پیادهسازی میکند.
❓اما اگر عملگر ضرب (*) را در کدتان به کار ببرید، پیادهسازی ضربکننده در مدار شما چگونه اتفاق میافتد؟
ادامه دارد...
🆔 @FPGA0
⚡️عملیات ضرب در FPGA چگونه پیادهسازی میشود؟ (قسمت دوم)
🔷 به صورت کلی، برای پیادهسازی مدارات دیجیتال در FPGA، از یکی از مهمترین منابع سختافزاری داخل FPGA، یعنی Look-Up Tableها (LUTها) استفاده میشود.
🔷 بلوکهای LUT، حافظههای کوچکی هستند که میتوان هر مدار دیجیتالی را به کمک آنها پیادهسازی کرد.
🔷 در عمل، پیادهسازی یک مدار دیجیتالی بزرگ به این صورت انجام میشود:
🔹مدار به بخشها و توابع کوچکی تقسیم میشود.
🔹هر کدام از توابع کوچک، به کمک یک LUT پیادهسازی میشود.
🔹با به هم متصل کردن این LUTها، مدار اصلی تشکیل میشود.
🔷 موضوع پیادهسازی عمل ضرب در FPGAها، کمی متفاوت از عمل جمع و تفریق است.
🔷 از آنجا که عملیات ضرب در پیادهسازیهای دیجیتال بسیار پرکاربرد است، بلوکهای سختافزاری مخصوصی در FPGA وجود دارد که به طور خاص، عمل ضرب را انجام میدهند.
🔷 در FPGAهای شرکت Xilinx، به بلوکهای سختافزاری از پیش آماده شده برای پیادهسازی عملیات ضرب، اصطلاحاً بلوک DSP48 گفته میشود.
ادامه دارد...
🆔 @FPGA0
🔷 به صورت کلی، برای پیادهسازی مدارات دیجیتال در FPGA، از یکی از مهمترین منابع سختافزاری داخل FPGA، یعنی Look-Up Tableها (LUTها) استفاده میشود.
🔷 بلوکهای LUT، حافظههای کوچکی هستند که میتوان هر مدار دیجیتالی را به کمک آنها پیادهسازی کرد.
🔷 در عمل، پیادهسازی یک مدار دیجیتالی بزرگ به این صورت انجام میشود:
🔹مدار به بخشها و توابع کوچکی تقسیم میشود.
🔹هر کدام از توابع کوچک، به کمک یک LUT پیادهسازی میشود.
🔹با به هم متصل کردن این LUTها، مدار اصلی تشکیل میشود.
🔷 موضوع پیادهسازی عمل ضرب در FPGAها، کمی متفاوت از عمل جمع و تفریق است.
🔷 از آنجا که عملیات ضرب در پیادهسازیهای دیجیتال بسیار پرکاربرد است، بلوکهای سختافزاری مخصوصی در FPGA وجود دارد که به طور خاص، عمل ضرب را انجام میدهند.
🔷 در FPGAهای شرکت Xilinx، به بلوکهای سختافزاری از پیش آماده شده برای پیادهسازی عملیات ضرب، اصطلاحاً بلوک DSP48 گفته میشود.
ادامه دارد...
🆔 @FPGA0
⚡️عملیات ضرب در FPGA چگونه پیادهسازی میشود؟ (قسمت سوم)
🔷 اگر در کد شما، عملگر ضرب استفاده شود، نرمافزار سنتز به صورت پیشفرض، آن را با استفاده از یک بلوک DSP48 (و نه با استفاده از LUTها)، پیادهسازی میکند.
🔷 مثال:
اگر در کد شما، عبارتی مانند A=B*C وجود داشته باشد، نرمافزار سنتز، آن را با استفاده از یک بلوک DSP48 پیادهسازی میکند.
🔷 همانطور که میدانیم، هر سختافزار دیجیتالی (از جمله ضربکنندهها) را میتوانیم به کمک LUTها نیز پیادهسازی کنیم.
❓پس چرا نرمافزار سنتز، به صورت پیشفرض، به جای LUTها، از بلوکهای سختافزاری DSP48 برای پیادهسازی ضربکننده استفاده میکند؟
ادامه دارد...
🆔 @FPGA0
🔷 اگر در کد شما، عملگر ضرب استفاده شود، نرمافزار سنتز به صورت پیشفرض، آن را با استفاده از یک بلوک DSP48 (و نه با استفاده از LUTها)، پیادهسازی میکند.
🔷 مثال:
اگر در کد شما، عبارتی مانند A=B*C وجود داشته باشد، نرمافزار سنتز، آن را با استفاده از یک بلوک DSP48 پیادهسازی میکند.
🔷 همانطور که میدانیم، هر سختافزار دیجیتالی (از جمله ضربکنندهها) را میتوانیم به کمک LUTها نیز پیادهسازی کنیم.
❓پس چرا نرمافزار سنتز، به صورت پیشفرض، به جای LUTها، از بلوکهای سختافزاری DSP48 برای پیادهسازی ضربکننده استفاده میکند؟
ادامه دارد...
🆔 @FPGA0
⚡️عملیات ضرب در FPGA چگونه پیادهسازی میشود؟ (قسمت چهارم)
🔷 استفاده از بلوک DSP48، که مخصوص پیادهسازی ضرب است، مزایای مختلفی نسبت به استفاده از LUTها (از منابع عمومی FPGA) دارد:
1⃣ ضربکنندهای که با بلوک DSP48 پیادهسازی میشود نسبت به ضربکنندهای که با بلوک LUT پیادهسازی میشود سرعت بسیار بیشتری دارد.
🔹بنابراین، مدار شما میتواند با سرعت بیشتری کار کند.
2⃣ در صورت استفاده از بلوک DSP48 میتوانید منابع عمومی کمتری از FPGA را مصرف کنید.
🔹فرض کنید در مدار شما، تعداد زیادی ضربکننده وجود داشته باشد...
🔹اگر برای پیادهسازی همهی این ضربکنندهها از بلوکهای LUT استفاده شود، تعداد زیادی از بلوکهای LUT موجود در FPGA (که در واقع باید برای پیادهسازی بخشهای دیگر مدار استفاده شوند) هدر میروند و فضای FPGA به سرعت اشغال میشود.
3⃣ بلوکهای DSP48 نسبت به حالتی که شما بخواهید برای عملیات ضرب از تعدادی بلوک LUT استفاده کنید، توان مصرفی کمتری دارند.
✅ به این دلایل، نرمافزار به صورت پیشفرض به جای LUTها از بلوکهای DSP48 استفاده میکند.
✅ بلوک DSP48، علاوه بر ضرب ساده، عملگرهای دیگری را نیز میتواند پیادهسازی کند که آنها را به همراه مثال، در ویدئوی "پشت پرده عملیات ضرب در FPGA" توضیح دادهام:
🌎http://bit.ly/MultiplicationDSP48
🆔 @FPGA0
🔷 استفاده از بلوک DSP48، که مخصوص پیادهسازی ضرب است، مزایای مختلفی نسبت به استفاده از LUTها (از منابع عمومی FPGA) دارد:
1⃣ ضربکنندهای که با بلوک DSP48 پیادهسازی میشود نسبت به ضربکنندهای که با بلوک LUT پیادهسازی میشود سرعت بسیار بیشتری دارد.
🔹بنابراین، مدار شما میتواند با سرعت بیشتری کار کند.
2⃣ در صورت استفاده از بلوک DSP48 میتوانید منابع عمومی کمتری از FPGA را مصرف کنید.
🔹فرض کنید در مدار شما، تعداد زیادی ضربکننده وجود داشته باشد...
🔹اگر برای پیادهسازی همهی این ضربکنندهها از بلوکهای LUT استفاده شود، تعداد زیادی از بلوکهای LUT موجود در FPGA (که در واقع باید برای پیادهسازی بخشهای دیگر مدار استفاده شوند) هدر میروند و فضای FPGA به سرعت اشغال میشود.
3⃣ بلوکهای DSP48 نسبت به حالتی که شما بخواهید برای عملیات ضرب از تعدادی بلوک LUT استفاده کنید، توان مصرفی کمتری دارند.
✅ به این دلایل، نرمافزار به صورت پیشفرض به جای LUTها از بلوکهای DSP48 استفاده میکند.
✅ بلوک DSP48، علاوه بر ضرب ساده، عملگرهای دیگری را نیز میتواند پیادهسازی کند که آنها را به همراه مثال، در ویدئوی "پشت پرده عملیات ضرب در FPGA" توضیح دادهام:
🌎http://bit.ly/MultiplicationDSP48
🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۲۸
🎓 پشت پرده عملیات ضرب در FPGA
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۲۲ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 http://bit.ly/MultiplicationDSP48
#برنامه_ویدئویی۲۸
🎓 پشت پرده عملیات ضرب در FPGA
🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۲۲ دقیقه
📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 http://bit.ly/MultiplicationDSP48