روش بهینه برای پیادهسازی اعداد علامتدار در FPGA کدام است؟
Anonymous Quiz
24%
روش sign & magnitude
12%
روش one's complement
65%
روش tow's complement
♨️ در مجموعه پست زیر با روشهای مختلف پیادهسازی اعداد علامتدار و ویژگیهای هر کدام آشنا میشوید: 👇👇👇
https://t.me/fpga0/811
https://t.me/fpga0/812
https://t.me/fpga0/817
🆔 @FPGA0
https://t.me/fpga0/811
https://t.me/fpga0/812
https://t.me/fpga0/817
🆔 @FPGA0
⚡️ تبدیل انواع داده به یکدیگر در زبان VHDL (قسمت اول)
🔷 در پیادهسازی مدارات دیجیتال به کمک زبان VHDL گاهی نیاز دارید انواع داده را به یکدیگر ارجاع دهید.
🔷 از طرف دیگر، با توجه به قوانین ارجاع در زبان VHDL، نوع (type) تمام سیگنالهای حاضر در یک ارجاع باید یکسان باشد.
🔷 بنابراین، در کدنویسی VHDL نیاز دارید از قابلیت «تبدیل نوع» یا «Type Conversion» استفاده کنید.
✅ به طور کلی، در زبان VHDL چهار نوع دادهی برداری داریم:
1⃣ نوع std_logic_vector
2⃣ نوع بدون علامت (unsigned)
3⃣ نوع علامتدار (signed)
4⃣ نوع integer
✅ در پستهای آینده، دربارهی نحوهی تبدیل این دادههای برداری به یکدیگر صحبت خواهم کرد.
ادامه دارد...
🆔 @FPGA0
🔷 در پیادهسازی مدارات دیجیتال به کمک زبان VHDL گاهی نیاز دارید انواع داده را به یکدیگر ارجاع دهید.
🔷 از طرف دیگر، با توجه به قوانین ارجاع در زبان VHDL، نوع (type) تمام سیگنالهای حاضر در یک ارجاع باید یکسان باشد.
🔷 بنابراین، در کدنویسی VHDL نیاز دارید از قابلیت «تبدیل نوع» یا «Type Conversion» استفاده کنید.
✅ به طور کلی، در زبان VHDL چهار نوع دادهی برداری داریم:
1⃣ نوع std_logic_vector
2⃣ نوع بدون علامت (unsigned)
3⃣ نوع علامتدار (signed)
4⃣ نوع integer
✅ در پستهای آینده، دربارهی نحوهی تبدیل این دادههای برداری به یکدیگر صحبت خواهم کرد.
ادامه دارد...
🆔 @FPGA0
⚡️ موقعیت شغلی جدید در مرکز تهران...
🔹 در یک شرکت دانش بنیان به چند کارشناس برق به صورت تمام وقت یا نیمه وقت در حوزههای زیر نیاز است:
1️⃣ شبیهسازی الگوریتمها و پردازش سیگنال و سنسورها (کارشناسی یا ارشد برق)
2️⃣ کدنویسی ARM و FPGA و طراحی PCB (حوزه الکترونیک یا الکترونیک قدرت) (کارشناسی یا ارشد برق)
3️⃣ مونتاژ، تست و راه اندازی برد (دیپلم یا کارشناسی برق)
🔺 با بیمه
🏢 محل کار: دانشکده فنی دانشگاه تهران
❇️ اگر فکر میکنید مهارت و علاقه شما حداقل با یکی از موارد بالا تطبیق دارد، لطفا رزومهتان را به ایمیل زیر ارسال کنید.:
📭 edu@faradandish.com
☎️ رزومه شما به شرکت مورد نظر ارسال خواهد شد و آنها پس از بررسی، در صورت نیاز با شما تماس خواهند گرفت.
🆔 @FPGA0
🔹 در یک شرکت دانش بنیان به چند کارشناس برق به صورت تمام وقت یا نیمه وقت در حوزههای زیر نیاز است:
1️⃣ شبیهسازی الگوریتمها و پردازش سیگنال و سنسورها (کارشناسی یا ارشد برق)
2️⃣ کدنویسی ARM و FPGA و طراحی PCB (حوزه الکترونیک یا الکترونیک قدرت) (کارشناسی یا ارشد برق)
3️⃣ مونتاژ، تست و راه اندازی برد (دیپلم یا کارشناسی برق)
🔺 با بیمه
🏢 محل کار: دانشکده فنی دانشگاه تهران
❇️ اگر فکر میکنید مهارت و علاقه شما حداقل با یکی از موارد بالا تطبیق دارد، لطفا رزومهتان را به ایمیل زیر ارسال کنید.:
📭 edu@faradandish.com
☎️ رزومه شما به شرکت مورد نظر ارسال خواهد شد و آنها پس از بررسی، در صورت نیاز با شما تماس خواهند گرفت.
🆔 @FPGA0
⚡️ تبدیل انواع داده به یکدیگر در زبان VHDL (قسمت دوم)
✅ در پست قبلی گفتیم که برای رعایت قوانین ارجاع در زبان VHDL، باید تمامی سیگنالهای حاضر در یک ارجاع، نوع یکسان داشته باشند.
✅ در این مجموعه پست، روشهای تبدیل انواع داده به یکدیگر را در سه دسته بیان خواهم کرد.
❇️ دستهی اول: این دسته شامل تبدیل نوع std_logic_vector ،unsigned و signed به یکدیگر است.
◀️ مثال. ارجاع زیر را در نظر بگیرید:
B <= A;
🔹 فرض کنید:
سیگنال A: از نوع std_logic_vector
سیگنال B: از نوع علامتدار
🔹 با توجه به قانون ارجاع ساده، چنین ارجاعی قابل انجام نیست و حتما باید تبدیل نوع انجام دهیم.
✅ طبق قواعد زبان VHDL، همیشه باید نوع سیگنالی که قرار است به سیگنال دیگر منتقل شود را تغییر دهیم.
🔹 بنابراین، در این مثال باید نوع سیگنال A را به signed تغییر دهیم؛ برای این کار به صورت زیر عمل میکنیم:
B <= signed (A);
ادامه دارد...
🆔 @FPGA0
✅ در پست قبلی گفتیم که برای رعایت قوانین ارجاع در زبان VHDL، باید تمامی سیگنالهای حاضر در یک ارجاع، نوع یکسان داشته باشند.
✅ در این مجموعه پست، روشهای تبدیل انواع داده به یکدیگر را در سه دسته بیان خواهم کرد.
❇️ دستهی اول: این دسته شامل تبدیل نوع std_logic_vector ،unsigned و signed به یکدیگر است.
◀️ مثال. ارجاع زیر را در نظر بگیرید:
B <= A;
🔹 فرض کنید:
سیگنال A: از نوع std_logic_vector
سیگنال B: از نوع علامتدار
🔹 با توجه به قانون ارجاع ساده، چنین ارجاعی قابل انجام نیست و حتما باید تبدیل نوع انجام دهیم.
✅ طبق قواعد زبان VHDL، همیشه باید نوع سیگنالی که قرار است به سیگنال دیگر منتقل شود را تغییر دهیم.
🔹 بنابراین، در این مثال باید نوع سیگنال A را به signed تغییر دهیم؛ برای این کار به صورت زیر عمل میکنیم:
B <= signed (A);
ادامه دارد...
🆔 @FPGA0
⚡️ تبدیل انواع داده به یکدیگر در زبان VHDL (قسمت سوم)
🔷 در پست قبلی به دستهی اول از روشهای تبدیل انواع داده به یکدیگر پرداختم.
✅ در این پست، دستهی دوم را بررسی میکنیم.
❇️ دستهی دوم: این دسته شامل تبدیل سیگنالهای unsigned و signed به integer است.
🔷 فرض کنید سیگنال هشت بیتی X در کد ما وجود دارد و با توجه به مقدار سیگنال سه بیتی i که ورودی مدار و از نوع unsigned است میخواهیم بیت iام سیگنال X را به سیگنال تک بیتی Y ارجاع دهیم.
🔷 این کار را میتوانیم به کمک تابع ()to_integer به صورت زیر انجام دهیم:
Y <= X(to_integer(i));
🔷 در این کد، نوع سیگنال i را به کمک تابع ()to_integer از unsigned به integer تغییر دادهایم چون نوع اندیس یا آرگومان یک سیگنال حتما باید integer باشد.
ادامه دارد...
🆔 @FPGA0
🔷 در پست قبلی به دستهی اول از روشهای تبدیل انواع داده به یکدیگر پرداختم.
✅ در این پست، دستهی دوم را بررسی میکنیم.
❇️ دستهی دوم: این دسته شامل تبدیل سیگنالهای unsigned و signed به integer است.
🔷 فرض کنید سیگنال هشت بیتی X در کد ما وجود دارد و با توجه به مقدار سیگنال سه بیتی i که ورودی مدار و از نوع unsigned است میخواهیم بیت iام سیگنال X را به سیگنال تک بیتی Y ارجاع دهیم.
🔷 این کار را میتوانیم به کمک تابع ()to_integer به صورت زیر انجام دهیم:
Y <= X(to_integer(i));
🔷 در این کد، نوع سیگنال i را به کمک تابع ()to_integer از unsigned به integer تغییر دادهایم چون نوع اندیس یا آرگومان یک سیگنال حتما باید integer باشد.
ادامه دارد...
🆔 @FPGA0
⚡️ تبدیل انواع داده به یکدیگر در زبان VHDL (قسمت چهارم)
🔷 در دو پست قبل، دستهی اول و دوم از روشهای تبدیل انواع داده به یکدیگر را معرفی کردم.
✅ در این پست، دستهی سوم را بررسی خواهیم کرد.
❇️ دستهی سوم: این گروه از تبدیلها، تبدیل نوع integer به نوع unsigned و signed است که بسیار پرکاربرد است.
🔷 یکی از کاربردهای پرتکرار آن، مقداردهی سیگنالهای علامتدار و بدون علامت است.
◀️ فرض کنید میخواهیم مقدار ۴۴ را به سیگنال بدون علامت و ۱۳ بیتی X ارجاع دهیم.
✅ روش اصولی برای مقداردهی سیگنال، استفاده از تبدیل نوع integer به unsigned است:
X <= to_unsigned(44,13);
✅ در واقع، تبدیل to_unsigned، یک عدد integer را به یک عدد بدون علامت تبدیل میکند. در این مثال، عدد ۱۳ بیانگر عرض بیت سیگنال است.
✅ برای آشنایی بیشتر با جزئیات تبدیل نوع در زبان VHDL و بررسی چند مثال مفصلتر، پیشنهاد میکنم مقاله "کاربردهای تبدیل انواع داده در کدنویسی به زبان VHDL" را در سایت فراد اندیش مطالعه کنید 👇
🆔 @FPGA0
🔷 در دو پست قبل، دستهی اول و دوم از روشهای تبدیل انواع داده به یکدیگر را معرفی کردم.
✅ در این پست، دستهی سوم را بررسی خواهیم کرد.
❇️ دستهی سوم: این گروه از تبدیلها، تبدیل نوع integer به نوع unsigned و signed است که بسیار پرکاربرد است.
🔷 یکی از کاربردهای پرتکرار آن، مقداردهی سیگنالهای علامتدار و بدون علامت است.
◀️ فرض کنید میخواهیم مقدار ۴۴ را به سیگنال بدون علامت و ۱۳ بیتی X ارجاع دهیم.
✅ روش اصولی برای مقداردهی سیگنال، استفاده از تبدیل نوع integer به unsigned است:
X <= to_unsigned(44,13);
✅ در واقع، تبدیل to_unsigned، یک عدد integer را به یک عدد بدون علامت تبدیل میکند. در این مثال، عدد ۱۳ بیانگر عرض بیت سیگنال است.
✅ برای آشنایی بیشتر با جزئیات تبدیل نوع در زبان VHDL و بررسی چند مثال مفصلتر، پیشنهاد میکنم مقاله "کاربردهای تبدیل انواع داده در کدنویسی به زبان VHDL" را در سایت فراد اندیش مطالعه کنید 👇
🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۱
🎓 کاربردهای انواع داده در کدنویسی به زبان VHDL
📚 نوشته فاطمه مشاک
📥 در سایت فراد اندیش بخوانید 👇👇👇👇
🌎 https://bit.ly/VHDLTypeConversion
#مقاله۱۱
🎓 کاربردهای انواع داده در کدنویسی به زبان VHDL
📚 نوشته فاطمه مشاک
📥 در سایت فراد اندیش بخوانید 👇👇👇👇
🌎 https://bit.ly/VHDLTypeConversion
معیارهای انتخاب تکنولوژی مناسب برای پیادهسازی یک پروژه چه مواردی هستند؟
Anonymous Quiz
5%
هزینه تکنولوژی
2%
سرعت تکنولوژی
2%
سهولت پیادهسازی
91%
همه موارد
♨️ برای آشنایی با نحوهی انتخاب تکنولوژی مناسب یک پروژه به مجموعه پست زیر مراجعه کنید:👇👇👇
https://t.me/fpga0/808
https://t.me/fpga0/809
https://t.me/fpga0/810
🆔 @FPGA0
https://t.me/fpga0/808
https://t.me/fpga0/809
https://t.me/fpga0/810
🆔 @FPGA0
⚡️ مراحل پیادهسازی یک مدار دیجیتال در FPGA (قسمت اول)
🔷 در پست قبلی گفته شد که کد VHDLای که توصیفکنندهی یک مدار دیجیتال است، از دو بخش تشکیل میشود:
❇️ در بخش Entity، پورتهای ورودی/خروجی مدار دیجیتال توصیف میشوند.
❇️ در بخش Architecture نیز مدار دیجیتال موردنظر توصیف میشود.
🔷 معمولاً، مدار دیجیتال، مقادیر را از پورتهای ورودی دریافت کرده و پس از انجام عملیات منطقی، حاصل را به پورتهای خروجی ارسال میکند.
❇️ مراحل پیادهسازی مدار در FPGA
🔷 برای پیادهسازی یک طرح دیجیتال بهکمک FPGA، مراحل مختلفی وجود دارد که باید بهدقت انجام شوند. نرمافزارهای مخصوص این کار، کمک بزرگی به انجام این روند میکنند. در ادامه، مراحل پیادهسازی یک مدار دیجیتال در FPGA را بررسی میکنم.
1⃣ ورود طرح و کامپایل
🔷 اولین مرحله، ورود طرح به نرمافزار است. همانطور که در یکی از پستهای قبل گفته شد، برای این کار دو روش وجود دارد:
۱. توصیف مدار بهکمک شماتیک
۲. استفاده از یک زبان توصیف سختافزاری مانند VHDL یا Verilog
🔷 معمولاً برای ورود طرح، از روش دوم، یعنی از یک زبان HDL استفاده میکنیم.
🔷 پس از وارد کردن طرح و بررسی خطاهای احتمالی در نوشتن آن (syntax error)، باید آن را کامپایل کرد.
🔷 کامپایل کردن بهمعنی تبدیل توصیف HDL به مجموعهای از معادلات منطقی است.
2⃣ شبیهسازی منطقی
🔷 برای ارزیابی صحت طرح، معمولاً آن را شبیهسازی میکنند. شبیهسازی در این مرحله را شبیهسازی منطقی (Functional) یا رفتاری (Behavioral) مینامند؛ زیرا آنچه را در این مرحله میتوان شبیهسازی کرد فقط منطق طرح است و مواردی مثل تأخیر گیتها و مسیرها هنوز برای ابزار طراحی شناخته شده نیست.
✅ برای آشنایی با نحوهی شبیهسازی بهکمک نرمافزار ISim به مقالهی زیر از سایت فراداندیش مراجعه کنید:
🌎 https://bit.ly/Simulation-ISim
ادامه دارد...
🆔 @FPGA0
🔷 در پست قبلی گفته شد که کد VHDLای که توصیفکنندهی یک مدار دیجیتال است، از دو بخش تشکیل میشود:
❇️ در بخش Entity، پورتهای ورودی/خروجی مدار دیجیتال توصیف میشوند.
❇️ در بخش Architecture نیز مدار دیجیتال موردنظر توصیف میشود.
🔷 معمولاً، مدار دیجیتال، مقادیر را از پورتهای ورودی دریافت کرده و پس از انجام عملیات منطقی، حاصل را به پورتهای خروجی ارسال میکند.
❇️ مراحل پیادهسازی مدار در FPGA
🔷 برای پیادهسازی یک طرح دیجیتال بهکمک FPGA، مراحل مختلفی وجود دارد که باید بهدقت انجام شوند. نرمافزارهای مخصوص این کار، کمک بزرگی به انجام این روند میکنند. در ادامه، مراحل پیادهسازی یک مدار دیجیتال در FPGA را بررسی میکنم.
1⃣ ورود طرح و کامپایل
🔷 اولین مرحله، ورود طرح به نرمافزار است. همانطور که در یکی از پستهای قبل گفته شد، برای این کار دو روش وجود دارد:
۱. توصیف مدار بهکمک شماتیک
۲. استفاده از یک زبان توصیف سختافزاری مانند VHDL یا Verilog
🔷 معمولاً برای ورود طرح، از روش دوم، یعنی از یک زبان HDL استفاده میکنیم.
🔷 پس از وارد کردن طرح و بررسی خطاهای احتمالی در نوشتن آن (syntax error)، باید آن را کامپایل کرد.
🔷 کامپایل کردن بهمعنی تبدیل توصیف HDL به مجموعهای از معادلات منطقی است.
2⃣ شبیهسازی منطقی
🔷 برای ارزیابی صحت طرح، معمولاً آن را شبیهسازی میکنند. شبیهسازی در این مرحله را شبیهسازی منطقی (Functional) یا رفتاری (Behavioral) مینامند؛ زیرا آنچه را در این مرحله میتوان شبیهسازی کرد فقط منطق طرح است و مواردی مثل تأخیر گیتها و مسیرها هنوز برای ابزار طراحی شناخته شده نیست.
✅ برای آشنایی با نحوهی شبیهسازی بهکمک نرمافزار ISim به مقالهی زیر از سایت فراداندیش مراجعه کنید:
🌎 https://bit.ly/Simulation-ISim
ادامه دارد...
🆔 @FPGA0
⚡️ مراحل پیادهسازی یک مدار دیجیتال در FPGA (قسمت دوم)
🔷 در پست قبل، به مرحلهی اول و دوم پیادهسازی یک مدار دیجیتال در FPGA پرداختم؛ در این پست مراحل کار را پی میگیریم.
3⃣ سنتز طرح و شبیهسازی زمانی
🔷 پس از اینکه بهکمک شبیهسازی منطقی از صحت عملکرد طرح اطمینان حاصل شد، با یک کلیک، به نرمافزار پیادهساز دستور میدهیم که آن را سنتز کند.
🔷 عملیات سنتز در FPGA، یعنی پیادهسازی معادلات و روابط منطقی حاصل از مرحلهی کامپایل، بهکمک منابع سختافزاری موجود در FPGA.
🔷 به عبارت دیگر، نرمافزار پیادهساز باید بتواند بهکمک منابعی که در یک FPGA خاص وجود دارد، مثل LUTها، مالتیپلکسرها، ضربکنندهها و غیره، توصیف سختافزاری موردنظر را پیادهسازی کند.
🔷 بنابراین، نرمافزار پیادهساز نسبت به منابع سختافزاری موجود در FPGAای که برای آن تعیین میکنید آگاهی کامل دارد و سنتز طرح را بر اساس آن انجام میدهد.
🔷 در مرحلهی سنتز، تأخیر گیتها و منابع سختافزاری دیگر که در طراحی بهکار میروند محاسبه و در نظر گرفته میشود.
🔷 بنابراین، بعد از مرحلهی سنتز میتوان مجدداً طرح را شبیهسازی کرد. تفاوت این شبیهسازی که به آن شبیهسازی زمانی (Timing Simulation) گفته میشود، با شبیهسازی منطقی در این است که تأخیرهای انتشار (Propagation Delays) منابع بهکار گرفته شده در طرح نیز در شبیهسازی دخیل میشوند و درنتیجه، شبیهسازی به آنچه در عمل رخ میدهد نزدیکتر است.
4⃣ جانمایی طرح
🔷 مرحله مهم بعدی در طراحی دیجیتال بهکمک FPGA، جانمایی (Placement) است.
🔷 با توجه به اینکه منابع سختافزاری موجود در هر FPGA، در مکانهای مشخص و ثابتی درون آن قرار دارند، باید مشخص شود که منابع بهکار گرفته شده در مرحلهی سنتز، دقیقاً در چه مکانهایی از FPGA هستند.
🔷 نرمافزار پیادهساز، این کار را با توجه به معیارهای مختلفی انجام میدهد؛ یکی از مهمترین معیارها این است که منابع را از نقاطی از FPGA انتخاب کند که بتواند با مسیرهای کوتاهتری آنها را به هم متصل نماید.
5⃣ مسیریابی و شبیهسازی زمانی
🔷 مرحله بسیار مهم دیگر در پیادهسازی طرح، مسیریابی (Routing) است.
🔷 در این مرحله، نرمافزار پیادهساز بهکمک الگوریتمهای پیچیدهای سعی در یافتن بهترین مسیرها برای اتصال منابع بهکار گرفته شده در طرح مورد نظر دارد.
🔷 با توجه به اینکه خود مسیرها (سیمها) دارای تأخیر هستند، میتوان در این مرحله نیز مجدداً طرح را شبیهسازی زمانی کرد.
🔷 در این شبیهسازی که به آن شبیهسازی بعد از جانمایی و مسیریابی (Post-Place & Rout Simulation) میگویند، نه تنها تأخیر گیتها و منابع دیجیتالی دیگر، بلکه تأخیر مربوط به سیمهای متصلکنندهی منابع دیجیتالی به یکدیگر نیز در نظر گرفته میشود.
ادامه دارد...
🆔 @FPGA0
🔷 در پست قبل، به مرحلهی اول و دوم پیادهسازی یک مدار دیجیتال در FPGA پرداختم؛ در این پست مراحل کار را پی میگیریم.
3⃣ سنتز طرح و شبیهسازی زمانی
🔷 پس از اینکه بهکمک شبیهسازی منطقی از صحت عملکرد طرح اطمینان حاصل شد، با یک کلیک، به نرمافزار پیادهساز دستور میدهیم که آن را سنتز کند.
🔷 عملیات سنتز در FPGA، یعنی پیادهسازی معادلات و روابط منطقی حاصل از مرحلهی کامپایل، بهکمک منابع سختافزاری موجود در FPGA.
🔷 به عبارت دیگر، نرمافزار پیادهساز باید بتواند بهکمک منابعی که در یک FPGA خاص وجود دارد، مثل LUTها، مالتیپلکسرها، ضربکنندهها و غیره، توصیف سختافزاری موردنظر را پیادهسازی کند.
🔷 بنابراین، نرمافزار پیادهساز نسبت به منابع سختافزاری موجود در FPGAای که برای آن تعیین میکنید آگاهی کامل دارد و سنتز طرح را بر اساس آن انجام میدهد.
🔷 در مرحلهی سنتز، تأخیر گیتها و منابع سختافزاری دیگر که در طراحی بهکار میروند محاسبه و در نظر گرفته میشود.
🔷 بنابراین، بعد از مرحلهی سنتز میتوان مجدداً طرح را شبیهسازی کرد. تفاوت این شبیهسازی که به آن شبیهسازی زمانی (Timing Simulation) گفته میشود، با شبیهسازی منطقی در این است که تأخیرهای انتشار (Propagation Delays) منابع بهکار گرفته شده در طرح نیز در شبیهسازی دخیل میشوند و درنتیجه، شبیهسازی به آنچه در عمل رخ میدهد نزدیکتر است.
4⃣ جانمایی طرح
🔷 مرحله مهم بعدی در طراحی دیجیتال بهکمک FPGA، جانمایی (Placement) است.
🔷 با توجه به اینکه منابع سختافزاری موجود در هر FPGA، در مکانهای مشخص و ثابتی درون آن قرار دارند، باید مشخص شود که منابع بهکار گرفته شده در مرحلهی سنتز، دقیقاً در چه مکانهایی از FPGA هستند.
🔷 نرمافزار پیادهساز، این کار را با توجه به معیارهای مختلفی انجام میدهد؛ یکی از مهمترین معیارها این است که منابع را از نقاطی از FPGA انتخاب کند که بتواند با مسیرهای کوتاهتری آنها را به هم متصل نماید.
5⃣ مسیریابی و شبیهسازی زمانی
🔷 مرحله بسیار مهم دیگر در پیادهسازی طرح، مسیریابی (Routing) است.
🔷 در این مرحله، نرمافزار پیادهساز بهکمک الگوریتمهای پیچیدهای سعی در یافتن بهترین مسیرها برای اتصال منابع بهکار گرفته شده در طرح مورد نظر دارد.
🔷 با توجه به اینکه خود مسیرها (سیمها) دارای تأخیر هستند، میتوان در این مرحله نیز مجدداً طرح را شبیهسازی زمانی کرد.
🔷 در این شبیهسازی که به آن شبیهسازی بعد از جانمایی و مسیریابی (Post-Place & Rout Simulation) میگویند، نه تنها تأخیر گیتها و منابع دیجیتالی دیگر، بلکه تأخیر مربوط به سیمهای متصلکنندهی منابع دیجیتالی به یکدیگر نیز در نظر گرفته میشود.
ادامه دارد...
🆔 @FPGA0
⚡️ مراحل پیادهسازی یک مدار دیجیتال در FPGA (قسمت سوم)
🔷 در پستهای قبل، مراحل پیادهسازی یک مدار دیجیتال در FPGA را تا مرحلهی مسیریابی بررسی کردم؛ در این پست به دو مرحلهی نهایی خواهم پرداخت.
6⃣ ساخت فایل پیکربندی
🔷 مرحله بعدی پیادهسازی، ساخت فایل پیکربندی (Configuration File) است.
🔷 این فایل که یک فایل باینری است، حاصل تمام مراحل طراحی را بهکمک مجموعهای از صفرها و یکها برای ارسال به FPGA آماده میکند.
🔷 اینکه کدامیک از منابع سختافزاری در FPGA استفاده میشود، داخل LUTها چگونه پر میشوند و مسیرها چگونه به یکدیگر متصل میشوند، همگی درون این فایل باینری قرار دارند.
✅ برای آشنایی با نحوه ساخت فایل پیکربندی و پروگرام کردن FPGA، مقاله زیر از سایت فراداندیش را ملاحظه کنید:
🌎 https://bit.ly/FPGA-Configuration
7⃣ پیکربندی یا پروگرام کردن FPGA
🔷 آخرین مرحله، پیکربندی FPGA است.
🔷 در این مرحله، بهکمک یک پروگرامر و رابط Jtag موجود در FPGA، فایل باینری پیکربندی درون FPGA بارگذاری میشود.
🔷 بعد از بارگذاری این فایل، FPGA تبدیل به سختافزاری که بهکمک زبان HDL توصیف کرده بودیم میشود.
✅ برای مشاهدهی فلوچارت مراحل پیادهسازی و جزئیات بیشتر، مقالهی زیر از سایت فراداندیش را ببینید 👇👇👇👇
🌎 https://bit.ly/Steps-to-Configure-FPGA
🆔 @FPGA0
🔷 در پستهای قبل، مراحل پیادهسازی یک مدار دیجیتال در FPGA را تا مرحلهی مسیریابی بررسی کردم؛ در این پست به دو مرحلهی نهایی خواهم پرداخت.
6⃣ ساخت فایل پیکربندی
🔷 مرحله بعدی پیادهسازی، ساخت فایل پیکربندی (Configuration File) است.
🔷 این فایل که یک فایل باینری است، حاصل تمام مراحل طراحی را بهکمک مجموعهای از صفرها و یکها برای ارسال به FPGA آماده میکند.
🔷 اینکه کدامیک از منابع سختافزاری در FPGA استفاده میشود، داخل LUTها چگونه پر میشوند و مسیرها چگونه به یکدیگر متصل میشوند، همگی درون این فایل باینری قرار دارند.
✅ برای آشنایی با نحوه ساخت فایل پیکربندی و پروگرام کردن FPGA، مقاله زیر از سایت فراداندیش را ملاحظه کنید:
🌎 https://bit.ly/FPGA-Configuration
7⃣ پیکربندی یا پروگرام کردن FPGA
🔷 آخرین مرحله، پیکربندی FPGA است.
🔷 در این مرحله، بهکمک یک پروگرامر و رابط Jtag موجود در FPGA، فایل باینری پیکربندی درون FPGA بارگذاری میشود.
🔷 بعد از بارگذاری این فایل، FPGA تبدیل به سختافزاری که بهکمک زبان HDL توصیف کرده بودیم میشود.
✅ برای مشاهدهی فلوچارت مراحل پیادهسازی و جزئیات بیشتر، مقالهی زیر از سایت فراداندیش را ببینید 👇👇👇👇
🌎 https://bit.ly/Steps-to-Configure-FPGA
🆔 @FPGA0
طبق توصیهی شرکت Xilinx، برای پیادهسازی اعداد بهصورت tow's complement در FPGA، باید از کدام نوع داده استفاده کنیم؟
Anonymous Quiz
34%
std_logic_vector
66%
signed
♨️ برای اطلاعات بیشتر درباره نحوه پیادهسازی اعداد علامتدار در FPGA به مجموعه پست زیر مراجعه کنید👇👇👇
https://t.me/fpga0/811
https://t.me/fpga0/812
https://t.me/fpga0/817
🆔 @FPGA0
https://t.me/fpga0/811
https://t.me/fpga0/812
https://t.me/fpga0/817
🆔 @FPGA0
⚡️ منابع سختافزاری درون FPGA (قسمت اول)
🔷 تسلط واقعی به پیادهسازی مدارات دیجیتال بهکمک FPGA نیاز به یادگیری دو مهارت مهم دارد:
1⃣ کدنویسی اصولی به یک زبان توصیف سختافزاری، مانند VHDL یا Verilog
2⃣ آشنایی با استفادهی اصولی از منابع سختافزاری درون FPGA
🔷 بسیاری از افراد، فقط روی مهارت اول متمرکز میشوند. در حالی که آشنایی با منابع سختافزاری درون FPGA و نحوهی استفاده اصولی از آنها، مهمترین مهارتی است که برای پیادهسازی بهینه مدارات دیجیتال بر روی FPGA باید بر آن مسلط شوید.
❓ اگر این امکان وجود داشت که یک تراشه FPGA را باز میکردید و داخل آن را میدیدید، دقیقاً با چه منابع سختافزاری مواجه میشدید؟
✅ در این مجموعه پست، شما را با منابع سختافزاری درون FPGA و کاربرد هر کدام آشنا میکنم.
❇️ LUT:
🌀 هر FPGA، از هزاران LUT تشکیل شده است که بهکمک آنها میتوانیم مدارهای بزرگ را پیادهسازی کنیم.
🌀 هر تابع منطقی را میتوانیم بهکمک یک Look-Up Table یا LUT پیادهسازی کنیم.
🌀 در واقع، مدارهای بزرگتر به توابع کوچکتر تقسیم میشوند و هر کدام بهکمک یک LUT پیادهسازی میشود.
🌀 سپس، باید این LUTها را به هم متصل کنیم تا مدار اصلی تشکیل شود.
🌀 برای این کار، سیمهای زیادی بین LUTها تعبیه شده است تا بتوانیم با اتصال مناسب آنها به یکدیگر، مدار اصلی را تشکیل دهیم.
🌀 در اصطلاح، به عمل سیمبندی بین LUT ها، Routing گفته میشود.
❇️ Routing Matrix:
🌀 این سختافزار شامل سیمها و شبکهی اتصالات قابل برنامهریزی (سوئیچها) است.
🌀 میتوانیم منابع دیجیتالی مختلف، از جمله LUTها را بهکمک این سیمها به یکدیگر متصل کنیم.
❇️ Logic Block:
🌀 تراشهی FPGA از دریایی از logic blockها تشکیل شده است.
🌀 در واقع، logic blockها مجموعهای شامل LUTها و فلیپفلاپها هستند که منابع عمومی سختافزاری درون FPGA را تشکیل میدهند.
🌀 معمولاً به Logic Blockها، Logic Cell نیز گفته میشود.
🌀 با استفاده از فلیپفلاپهای درون Logic Blockها میتوانید مدارات سنکرون را طراحی کنید.
🌀 برای طراحی مدارات سنکرون، نیاز دارید که تغییرات مدار را همزمان با یک سیگنال خارجی، که به آن کلاک گفته میشود انجام دهید که این کار توسط فلیپفلاپ انجام میشود.
ادامه دارد...
🆔 @FPGA0
🔷 تسلط واقعی به پیادهسازی مدارات دیجیتال بهکمک FPGA نیاز به یادگیری دو مهارت مهم دارد:
1⃣ کدنویسی اصولی به یک زبان توصیف سختافزاری، مانند VHDL یا Verilog
2⃣ آشنایی با استفادهی اصولی از منابع سختافزاری درون FPGA
🔷 بسیاری از افراد، فقط روی مهارت اول متمرکز میشوند. در حالی که آشنایی با منابع سختافزاری درون FPGA و نحوهی استفاده اصولی از آنها، مهمترین مهارتی است که برای پیادهسازی بهینه مدارات دیجیتال بر روی FPGA باید بر آن مسلط شوید.
❓ اگر این امکان وجود داشت که یک تراشه FPGA را باز میکردید و داخل آن را میدیدید، دقیقاً با چه منابع سختافزاری مواجه میشدید؟
✅ در این مجموعه پست، شما را با منابع سختافزاری درون FPGA و کاربرد هر کدام آشنا میکنم.
❇️ LUT:
🌀 هر FPGA، از هزاران LUT تشکیل شده است که بهکمک آنها میتوانیم مدارهای بزرگ را پیادهسازی کنیم.
🌀 هر تابع منطقی را میتوانیم بهکمک یک Look-Up Table یا LUT پیادهسازی کنیم.
🌀 در واقع، مدارهای بزرگتر به توابع کوچکتر تقسیم میشوند و هر کدام بهکمک یک LUT پیادهسازی میشود.
🌀 سپس، باید این LUTها را به هم متصل کنیم تا مدار اصلی تشکیل شود.
🌀 برای این کار، سیمهای زیادی بین LUTها تعبیه شده است تا بتوانیم با اتصال مناسب آنها به یکدیگر، مدار اصلی را تشکیل دهیم.
🌀 در اصطلاح، به عمل سیمبندی بین LUT ها، Routing گفته میشود.
❇️ Routing Matrix:
🌀 این سختافزار شامل سیمها و شبکهی اتصالات قابل برنامهریزی (سوئیچها) است.
🌀 میتوانیم منابع دیجیتالی مختلف، از جمله LUTها را بهکمک این سیمها به یکدیگر متصل کنیم.
❇️ Logic Block:
🌀 تراشهی FPGA از دریایی از logic blockها تشکیل شده است.
🌀 در واقع، logic blockها مجموعهای شامل LUTها و فلیپفلاپها هستند که منابع عمومی سختافزاری درون FPGA را تشکیل میدهند.
🌀 معمولاً به Logic Blockها، Logic Cell نیز گفته میشود.
🌀 با استفاده از فلیپفلاپهای درون Logic Blockها میتوانید مدارات سنکرون را طراحی کنید.
🌀 برای طراحی مدارات سنکرون، نیاز دارید که تغییرات مدار را همزمان با یک سیگنال خارجی، که به آن کلاک گفته میشود انجام دهید که این کار توسط فلیپفلاپ انجام میشود.
ادامه دارد...
🆔 @FPGA0
⚡️ منابع سختافزاری درون FPGA (قسمت دوم)
✅ در پست قبل، تعدادی از منابع سختافزاری درون FPGA را معرفی کردم. در این پست، به معرفی موارد دیگری از این منابع میپردازم.
❇️ IO Block:
🌀 هر کدام از پایههای IOی FPGA به مداری بهنام IO Block متصل است که این مدار قابلیتهایی را ایجاد میکند.
🌀 تبدیل هر پایه IO به ورودی، خروجی، یا IOی دوطرفه، یکی از قابلیتهای این بلوک است.
🌀 همچنین، شما بهوسیلهی IO Block میتوانید انواع استانداردهای I/O را برای این پایهها تعریف کنید.
🌀 مثلاً، میتوانید مقدار جریاندهی پایههای خروجی را تعریف کنید، یا سطح ولتاژ پایههای ورودی-خروجی را تعیین کنید. بهکمک این قابلیت میتوانید پایههای FPGA را به انواع مختلف قطعات جانبی وصل کنید.
❇️ حافظههای بلوکی:
🌀 معمولاً در مدارات دیجیتال، به مقداری حافظه موقت نیز نیاز است.
🌀 ممکن است محاسباتی در سیستم انجام شود و بخواهید از نتیجهی آن در مراحل بعدی استفاده کنید.
🌀 یا ممکن است سیگنالی در حال نمونهبرداری باشد و بخواهید آن را به کامپیوتر یا به سیستم دیگری ارسال کنید.
✅ در هر صورت، نیاز دارید که مقادیری را بهصورت موقت در جایی ذخیره کنید.
✅ برای این کار، در FPGAها حافظههایی بهصورت بلوک سختافزاری طراحی شده است.
❇️ ضربکنندهها:
🌀 در تمام FPGAهای شرکت Xilinx، ضرب کنندهها بخش بسیار مهمی هستند که علاوه بر عملیات ضرب، قابلیتهای بسیار زیاد دیگری نیز دارند.
🌀 عمل ضرب در بسیاری از پیادهسازیهای دیجیتال، خصوصاً پیادهسازی الگوریتمهای پردازش سیگنال دیجیتال کاربرد بسیار زیادی دارد.
🌀 اگر ضربکنندههای از پیش ساخته شده در FPGA وجود نداشت، شما مجبور بودید از LUTها استفاده کنید و بهکمک آنها ضربکنندهها را پیادهسازی کنید.
ادامه دارد...
🆔 @FPGA0
✅ در پست قبل، تعدادی از منابع سختافزاری درون FPGA را معرفی کردم. در این پست، به معرفی موارد دیگری از این منابع میپردازم.
❇️ IO Block:
🌀 هر کدام از پایههای IOی FPGA به مداری بهنام IO Block متصل است که این مدار قابلیتهایی را ایجاد میکند.
🌀 تبدیل هر پایه IO به ورودی، خروجی، یا IOی دوطرفه، یکی از قابلیتهای این بلوک است.
🌀 همچنین، شما بهوسیلهی IO Block میتوانید انواع استانداردهای I/O را برای این پایهها تعریف کنید.
🌀 مثلاً، میتوانید مقدار جریاندهی پایههای خروجی را تعریف کنید، یا سطح ولتاژ پایههای ورودی-خروجی را تعیین کنید. بهکمک این قابلیت میتوانید پایههای FPGA را به انواع مختلف قطعات جانبی وصل کنید.
❇️ حافظههای بلوکی:
🌀 معمولاً در مدارات دیجیتال، به مقداری حافظه موقت نیز نیاز است.
🌀 ممکن است محاسباتی در سیستم انجام شود و بخواهید از نتیجهی آن در مراحل بعدی استفاده کنید.
🌀 یا ممکن است سیگنالی در حال نمونهبرداری باشد و بخواهید آن را به کامپیوتر یا به سیستم دیگری ارسال کنید.
✅ در هر صورت، نیاز دارید که مقادیری را بهصورت موقت در جایی ذخیره کنید.
✅ برای این کار، در FPGAها حافظههایی بهصورت بلوک سختافزاری طراحی شده است.
❇️ ضربکنندهها:
🌀 در تمام FPGAهای شرکت Xilinx، ضرب کنندهها بخش بسیار مهمی هستند که علاوه بر عملیات ضرب، قابلیتهای بسیار زیاد دیگری نیز دارند.
🌀 عمل ضرب در بسیاری از پیادهسازیهای دیجیتال، خصوصاً پیادهسازی الگوریتمهای پردازش سیگنال دیجیتال کاربرد بسیار زیادی دارد.
🌀 اگر ضربکنندههای از پیش ساخته شده در FPGA وجود نداشت، شما مجبور بودید از LUTها استفاده کنید و بهکمک آنها ضربکنندهها را پیادهسازی کنید.
ادامه دارد...
🆔 @FPGA0
⚡️ منابع سختافزاری درون FPGA (قسمت سوم)
✅ در پستهای قبل، تعدادی از منابع سختافزاری درون FPGA را معرفی کردم. در این پست، به معرفی موارد دیگری از این منابع میپردازم.
❇️ منابع کلاک:
🌀 مسئلهی کلاک، بهخصوص در طراحی مدارات سنکرون مسئلهی بسیار مهمی است.
🌀 در FPGAها، برای پیادهسازی کلاک تمهیدات مختلفی اندیشیده شده است که کمک میکنند یک سیگنال با کیفیت کلاک در بین بخشهای مختلف مدار نوزیع شود.
🔷 یکی از منابعی که در بخش کلاک FPGAها در اختیار ما قرار دارد، منبع تغییر فرکانس است.
🌀 معمولاً وقتی شما با بُردی که دارای یک FPGA است کار میکنید، این بُرد شامل یک اسیلاتور است که یک فرکانس ثابت و مشخص (مثلاً 50 مگاهرتز) تولید میکند و به یکی از پینهای FPGA متصل است.
🌀 شما میتوانید در مدار سنکرون از این سیگنال کلاک استفاده کنید. اما ممکن است مداری که در حال طراحی آن هستید، نیاز به سیگنال کلاک با فرکانس متفاوتی داشته باشد.
🌀 مثلاً، ممکن است شما بخواهید مداری با فرکانس کلاک 128 مگاهرتز طراحی کنید.
🌀 بنابراین، نیاز دارید که از فرکانس اسیلاتور، فرکانس جدیدی ایجاد کنید.
🌀 این کار بهکمک یک منبع سختافزاری که از قبل در FPGA وجود دارد قابل انجام است.
✅ این منبع سختافزاری در FPGAهای شرکت XILINX با نام DCM یا در FPGAهای جدیدتر با نام MMCM شناخته میشود.
🌀 بهکمک این منابع میتوانید فرکانس اسیلاتور موجود روی برد را تغییر دهید و سیگنال کلاکی با فرکانس متفاوت داشته باشید.
🌀 استفاده از بلوک DCM مزایای دیگری نیز دارد که در پست زیر بهطور مفصل به آنها پرداختهام:
🆔 https://t.me/fpga0/888
✅ از آنجا که مدارات درون FPGA را همواره بهصورت ترتیبی سنکرون پیادهسازی میکنیم، مسئله کلاک بسیار مهم است. این موضوع را در برنامه ملزومات پیادهسازی کلاک در FPGA بهطور دقیقتر توضیح دادهام:
🌎 https://bit.ly/FPGA_Clock
🆔 @FPGA0
✅ در پستهای قبل، تعدادی از منابع سختافزاری درون FPGA را معرفی کردم. در این پست، به معرفی موارد دیگری از این منابع میپردازم.
❇️ منابع کلاک:
🌀 مسئلهی کلاک، بهخصوص در طراحی مدارات سنکرون مسئلهی بسیار مهمی است.
🌀 در FPGAها، برای پیادهسازی کلاک تمهیدات مختلفی اندیشیده شده است که کمک میکنند یک سیگنال با کیفیت کلاک در بین بخشهای مختلف مدار نوزیع شود.
🔷 یکی از منابعی که در بخش کلاک FPGAها در اختیار ما قرار دارد، منبع تغییر فرکانس است.
🌀 معمولاً وقتی شما با بُردی که دارای یک FPGA است کار میکنید، این بُرد شامل یک اسیلاتور است که یک فرکانس ثابت و مشخص (مثلاً 50 مگاهرتز) تولید میکند و به یکی از پینهای FPGA متصل است.
🌀 شما میتوانید در مدار سنکرون از این سیگنال کلاک استفاده کنید. اما ممکن است مداری که در حال طراحی آن هستید، نیاز به سیگنال کلاک با فرکانس متفاوتی داشته باشد.
🌀 مثلاً، ممکن است شما بخواهید مداری با فرکانس کلاک 128 مگاهرتز طراحی کنید.
🌀 بنابراین، نیاز دارید که از فرکانس اسیلاتور، فرکانس جدیدی ایجاد کنید.
🌀 این کار بهکمک یک منبع سختافزاری که از قبل در FPGA وجود دارد قابل انجام است.
✅ این منبع سختافزاری در FPGAهای شرکت XILINX با نام DCM یا در FPGAهای جدیدتر با نام MMCM شناخته میشود.
🌀 بهکمک این منابع میتوانید فرکانس اسیلاتور موجود روی برد را تغییر دهید و سیگنال کلاکی با فرکانس متفاوت داشته باشید.
🌀 استفاده از بلوک DCM مزایای دیگری نیز دارد که در پست زیر بهطور مفصل به آنها پرداختهام:
🆔 https://t.me/fpga0/888
✅ از آنجا که مدارات درون FPGA را همواره بهصورت ترتیبی سنکرون پیادهسازی میکنیم، مسئله کلاک بسیار مهم است. این موضوع را در برنامه ملزومات پیادهسازی کلاک در FPGA بهطور دقیقتر توضیح دادهام:
🌎 https://bit.ly/FPGA_Clock
🆔 @FPGA0
🆔 @FPGA0
#مقاله۸
🎓 ملزومات پیادهسازی کلاک در FPGA
📚 نوشته احمد ثقفی
📥 در سایت فراد اندیش بخوانید 👇👇👇👇
🌎 https://bit.ly/FPGA_Clock
#مقاله۸
🎓 ملزومات پیادهسازی کلاک در FPGA
📚 نوشته احمد ثقفی
📥 در سایت فراد اندیش بخوانید 👇👇👇👇
🌎 https://bit.ly/FPGA_Clock
برای پیادهسازی اعداد اعشاری در FPGA معمولاً از چه روشی استفاده میکنیم؟
Anonymous Quiz
46%
floating-point
54%
fixed-point