آیا تا به حال به این نکته فکر کردهاید که بر اساس چه معیاری میتوان تکنولوژی مناسب پیادهسازی یک پروژه را انتخاب کرد؟
وقتی پروژه یا موضوع جدیدی به شما معرفی میشود، چطور از بین تکنولوژیهایی مثل AVR ،ARM ،DSP و FPGA یکی را به عنوان راهحل انتخاب میکنید؟
در فرآیند طراحی و پیادهسازی حرفهای، انتخاب تکنولوژی مناسب پیادهسازی یکی از مهمترین بخشهای تولید محصول است.
در این برنامه ویدئویی، روشی را به شما آموزش میدهم که برای انتخاب تکنولوژی مناسب پیادهسازی در دهها پروژه حرفهای به کار بردهام.
More...
ویدئو یا متن؟
محتوای این برنامه آموزشی، به دو صورت ویدئو و متن آماده شده است. اگر علاقمند به یادگیری این مطلب به صورت ویدئویی هستید، ویدئوی زیر را ببینید و اگر ترجیح میدهید آن را به صورت متن مطالعه کنید، ادامه این مطلب را بخوانید.
برای دانلود نسخه با کیفیت این ویدئو، روی دکمه زیر کلیک کنید:
قبل از شروع پیادهسازی یک پروژه، چه سوالاتی ممکن است در رابطه با آن مطرح شود؟
در ابتدای پیادهسازی هر پروژه ممکن است سوالات زیادی برای فردی که میخواهد عمل پیادهسازی را انجام دهد مطرح شود؛ یکی از سوالات مهم این است که پروژه با چه سختافزار و تکنولوژیای باید پیادهسازی شود.
پاسخ به این سوال، موضوع مورد بحث ما در ادامه این مقاله خواهد بود.
در ادامه به شما روشی را آموزش میدهم که برای پیادهسازی اکثر پروژههایی که در سالهای گذشته انجام دادهام، استفاده شده است.
بدست آوردن موقیعت شغلی تنها با یک سوال اساسی و مهم
شاید برای شما جالب باشد بدانید که در بسیاری از مصاحبههای شغلی، این سوال را از افرادی که متقاضی شغل هستند، میپرسم و اگر احیانا کسی جواب صحیحی بدهد، بدون اینکه سوال بیشتری پرسیده شود، میتواند موقعیت شغلی را بدست آورد.
در مقالات قبلی با بسیاری از کاربردهای FPGA آشنا شدید. اما مسئلهای که وجود دارد این است که بسیاری از این کاربردها را در اغلب موارد میشود با تکنولوژیهای دیگر مثل پردازندهها پیادهسازی کرد.
در این مقاله میخواهم شما را با روشی آشنا کنم که به کمک آن میتوانید مناسبترین تکنولوژی را برای انجام یک پروژه انتخاب کنید.
برای انتخاب یک راهحل یا تکنولوژی مناسب برای پیادهسازی، معیارهای مختلفی وجود دارد. از جمله این موارد، هزینهی کمتر، زمان کمتر، امکانات در دسترس و سهولت انجام پروژه است.
در مورد FPGAها شما میدانید که به خاطر قابلیت پیادهسازی موازی، سرعت بسیار زیادی دارند. همینطور به خاطر وجود پایهها یا پینهای زیادی که دارند، انعطافپذیری زیادی در ارتباط با قطعات خارجی دارند.
اما با وجود اینکه FPGAها مزایای زیادی دارند، دارای معایبی نیز هستند. به عنوان مثال، یکی از معایب آنها قیمت زیادی است که نسبت به پردازندهها دارند.
یکی دیگر از مسائل مهم در بحث طراحی و پیادهسازی با FPGAها، این است که زمان طراحی، تست و عیبیابی آنها معمولا بیشتر از پردازندهها است.
اولویت انتخاب با پردازندهها
بر این مبنا، بهتر است وقتی میخواهید تکنولوژیای را برای پیادهسازی انتخاب کنید، ابتدا از پردازندهها و همچنین از ارزانترین پردازنده شروع کنید.
در صورتی که پردازندهها قابلیت پیادهسازی پروژهی شما را نداشتند، آن موقع میتوانید به انتخابهای گرانتر، مثل FPGA فکر کنید.
دو سوال اساسی که باید از خود پرسید!
اما برای اینکه واقعا متوجه شوید که یک پروژه را با چه تکنولوژیای میتوانیم پیادهسازی کنید، باید به دو سوال اساسی زیر پاسخ دهید:
سوال اساسی اول برای انتخاب یک تکنولوژی مناسب برای پیادهسازی، این است که الگوریتمی که میخواهیم پیادهسازی کنیم چه مقدار حجم محاسباتی دارد؟
و سوال اساسی دوم این است که برای انجام حجم محاسباتی مطرح شده در سوال اول، چه مدت زمانی در نظر گرفته شده است؟
در واقع آن چیزی که به ما کمک میکند تا بتوانیم تکنولوژی مناسب برای انجام یک پروژه را انتخاب کنیم، رابطهی میان حجم محاسباتی و مدت زمان انجام این حجم محاسباتی است.
تکنولوژیای را که انتخاب میکنید باید بتواند حجم محاسباتی را که در سوال اول به آن جواب دادید، در مدت زمان موجود در سوال دوم انجام دهد.
برای اینکه این موضوع برای شما بیشتر ملموس شود، اجازه دهید یک مثال را با هم بررسی کنیم.
مثال
مثالی که میخواهیم بررسی کنیم، مثال آژیر هشدار برای مشاهدهی یک جسم متحرک است.فرض کنید به کمک یک دوربین از یک ناحیه فیلمبرداری میکنیم و انتظار داریم اگر جسم متحرکی به این ناحیه وارد شد، در کمتر از ۱۰ میلیثانیه آژیر به صدا در بیاید.
در این سیستم، یک واحد پردازش یا Processing Unit داریم که باید الگوریتم تشخیص حرکت در تصویر را برای ما انجام دهد و در صورتی که حرکتی را مشاهده کرد، آژیر را به صدا در آورد.

انتخاب تکنولوژی مناسب برای پیادهسازی پروژه
حال سوال مطرح شده این است که برای پیادهسازی بخش پردازش از چه تکنولوژیای استفاده کنیم؟
همانطور که گفتم، برای انتخاب تکنولوژی باید به دو سوال اساسی پاسخ دهیم.
اجازه دهید ابتدا منظورم را از حجم محاسباتی که در سوال اساسی اول مطرح شد دقیقتر بیان کنم.
حجم محاسباتی معمولا به صورت تعداد عمل جمع یا ضرب لازم برای یک بار انجام الگوریتم بر روی یک مجموعه دیتای ورودی، بیان میشود.
فرض کنید که الگوریتم تشخیص حرکت در مثال ما نیاز به پنج میلیون عمل جمع و ضرب دارد.
بنابراین پاسخ به سوال اساسی اول میشود پنج میلیون عمل ریاضی روی تصاویر دریافتی برای یکبار انجام این الگوریتم.
پاسخ به سوال اساسی دوم میتواند یک مقدار چالشبرانگیزتر باشد و به دقت بیشتری نیاز داشته باشد.
برای رسیدن به پاسخ سوال اساسی دوم باید به صورت مسئله بیشتر دقت کنیم. در مسئله گفته شده است کمتر از ده میلیثانیه بعد از اینکه جسم متحرک در محدودهی دید دوربین قرار گرفت، باید آژیر به صدا در بیاید. بنابراین، زمان هشدار، حداکثر ۱۰ میلیثانیه است.
پاسخی که به دنبال آن هستیم، این است که برای انجام الگوریتم تشخیص حرکت چه مقدار زمان نیاز داریم تا بتوانیم خواستهی مسئله را که هشدار بعد از حداکثر ۱۰ میلیثانیه است، برآورده کنیم.
با توجه به اینکه حداکثر زمان هشدار ۱۰ میلیثانیه است، احتمالا اولین عددی که برای انجام الگوریتم به ذهن شما هم میرسد، زمان ۱۰ میلیثانیه است.
اجازه دهید این عدد را با هم بررسی کنیم. فرض کنید که در زمان صفر ثانیه اولین مجموعه تصاویر از ناحیهی مورد نظر ثبت میشود.
در این لحظه چون تصویر متحرک در محدودهی دید دوربین نیست، بنابراین انتظار داریم که بعد از ۱۰ میلیثانیه که الگوریتم به پایان میرسد آژیری هم به صدا در نیاید.
اما فرض کنید که بعد از سه میلیثانیه، یک جسم متحرک در محدودهی دید دوربین قرار میگیرد. چون در این لحظه، بخش پردازش در حال انجام عملیات قبلی است، جسم متحرک جدید را نمیبیند و در نتیجه همانطور که انتظار داریم، بعد از ۱۰ میلیثانیه آژیر به صدا در نمیآید.
بعد از ۱۰ میلیثانیه مجددا تصاویر جدیدی برداشته میشود و دوباره بعد از ۱۰ میلیثانیه، انتظار داریم که آژیر به صدا در بیاید.
با توجه به اینکه در حال حاضر جسم متحرک در محدودهی دید دوربین قرار دارد، باید ببینیم از لحظهای که جسم متحرک برای اولین بار وارد محدودهی دید دوربین شده است تا زمان به صدا در آمدن آژیر چقدر زمان طول کشیده است.
این زمان ۱۷ میلیثانیه است که خیلی بیشتر از زمان ۱۰ میلیثانیه یا حداکثر زمان هشداری است که در صورت مسئله تعیین شده بود.

انتخاب تکنولوژی مناسب برای پیادهسازی پروژه
اجازه دهید کمی اجرای الگوریتم را سریعتر کنیم تا ببینیم که آیا میتوانیم به جواب مسئله برسیم یا خیر؟
در این حالت فرض کنید که برای اجرای الگوریتم، زمان پنج میلیثانیه را در نظر گرفتیم. یعنی انجام پنج میلیون عمل جمع و ضرب که برای الگوریتم تشخیص حرکت در تصویر در نظر گرفته بودیم، پنج میلیثانیه طول خواهد کشید.
در ثانیهی صفر، اولین مجموعهی تصاویر ثبت میشود. این بار هم دوباره فرض کنید که بعد از سه میلیثانیه، تصویر متحرک در محدودهی دید دوربین قرار میگیرد.
بعد از پنج میلیثانیه انتظار داریم که زمان پردازش الگوریتم به پایان برسد، اما آژیری به صدا در نمیآید چون هنگام تصویربرداری جسم متحرک در محدودهی دید دوربین قرار نداشته است.
بعد از پنج میلیثانیه، دوباره یک مجموعهی جدیدی از تصاویر ثبت میشود.
حالا چون تصویر متحرک در محدودهی دید دوربین قرار دارد، انتظار داریم که بعد از پنج میلیثانیه، آژیر به صدا در بیاید.
از لحظهای که تصویر در محدودهی دید دوربین قرار گرفت، تا لحظهای که آژیر به صدا در آمد، هفت میلیثانیه طول کشید که این کمتر از حداکثر مقدار زمان هشدار یا همان زمان ۱۰ میلیثانیه است.
بنابراین، به نظر میآید که پنج میلیثانیه زمان مناسبی برای انجام الگوریتم باشد.
در بدترین حالت اگر جسم متحرک دقیقا بعد از اولین تصویربرداری در محدودهی دوربین قرار بگیرد، باز هم مدت زمانی که از حضور جسم متحرک در محدودهی دید دوربین تا زمان به صدا در آمدن آژیر طول خواهد کشید، کمتر از ۱۰ میلیثانیه است و بنابراین عدد پنج میلیثانیه، عددی مناسب و بهینه برای زمان انجام این الگوریتم است.

انتخاب تکنولوژی مناسب برای پیادهسازی پروژه
نحوهی انتخاب تکنولوژی مناسب پس از پاسخ به دو سوال اساسی
اکنون با دانستن پاسخ دو سوال اساسی، میتوانیم تکنولوژی مناسب برای پروژه را انتخاب کنیم.
مدت زمان لازم برای انجام این الگوریتم، پنج میلیثانیه است. بنابراین سرعت لازم برای انجام الگوریتم برابر است با پنج میلیون عمل جمع و ضرب، تقسیم بر پنج میلیثانیه که برابر است با 1GOPS (مخفف Giga Operation Per Second) یا یک میلیارد عمل ریاضی در ثانیه.
فرض کنید انتخابهایی که برای پیادهسازی بخش پردازش این سیستم داریم، یک پردازندهی AVR با کلاک ۲۰ مگاهرتز، یک پردازندهی ARM با کلاک ۴۰۰ مگاهرتز و یک FPGA است.
با توجه به اینکه پردازندهی AVR از همه ارزانتر است، ابتدا بررسی میکنیم که آیا میتوانیم این پروژه را با پردازندهی AVR پیادهسازی کنیم؟
در صورتی که جواب منفی بود، سراغ پردازندهی ARM میرویم و در صورت منفی بودن مجدد جواب، سراغ FPGA میرویم.
با توجه به اینکه کلاک AVR بیست مگاهرتز است و با فرض اینکه اجرای هر دستور جمع یا ضرب فقط نیاز به یک کلاک داشته باشد، میخواهیم بررسی کنیم که آیا این پردازنده برای اجرای الگوریتم مناسب است یا خیر.
اگر کلاک را معکوس کنیم، نتیجه میگیریم که اجرای هر دستور ۵۰ نانوثانیه طول خواهد کشید. بنابراین زمان لازم برای اینکه کل الگوریتم را یک بار اجرا کنیم برابر است با حاصلضربِ زمان لازم برای انجام یک دستور در پنج میلیون عمل جمع و ضرب.
برای محاسبه این مدت زمان باید پنج میلیون را ضربدر ۵۰ نانوثانیه کنیم که نهایتا عدد ۲۵۰ میلیثانیه به دست میآید. ۲۵۰ میلیثانیه از پنج میلیثانیهی مورد نظر ما خیلی بزرگتر است، در نتیجه AVR پردازندهی مناسبی برای پیادهسازی این الگوریتم نیست.
کلاک پردازندهی ARM را برابر با ۴۰۰ مگاهرتز فرض کردیم و با فرض اینکه اجرای هر دستور در این پردازنده هم یک کلاک بیشتر طول نمیکشد، با معکوس کردن کلاک به عدد ۲/۵ نانوثانیه خواهیم رسید.
یعنی زمان اجرای هر دستور برابر با ۲/۵ نانوثانیه است.
پس زمان لازم برای اجرای یک بار الگوریتم تشخیص حرکت در تصویر، برابر است با پنج میلیون عمل جمع و ضرب ضربدر ۲/۵ نانوثانیه است که میشود ۱۲/۵ میلیثانیه.
۱۲/۵ میلیثانیه نیز بیشتر از پنج میلیثانیهی مورد نظر ما است. در نتیجه ARM هم نمیتواند نیاز ما را برای پیادهسازی این پروژه برآورده کند.
پس میتوانید با خیال راحت سراغ FPGA بروید و به کمک قابلیت پیادهسازی موازی و منابع دیجیتالی دیگری که در FPGA وجود دارند، این الگوریتم را به راحتی پیادهسازی کنید.
دیگر عوامل موثر در انتخاب تکنولوژی مناسب
آخرین نکتهای که در انتخاب تکنولوژی مناسب وجود دارد این است که خود الگوریتم به تنهایی، ملاک انتخاب تکنولوژی نیست و معیارهای دیگری هم وجود دارند؛ مثلا سهولت دسترسی.
فرض کنید قبلا پروژهای را انجام دادهاید و به دلیل وجود الگوریتمهای خاصی در آن، از FPGA استفاده کردهاید. اکنون میخواهید ماژولها یا بخشهای پردازشی دیگری نیز به این پروژه اضافه کنید و با اطلاعاتی که در اختیار دارید، میدانید که آنها را میشود با یک پردازندهی ارزان هم پیادهسازی کرد.
اما با توجه به اینکه قبلا از FPGA در پروژه استفاده کردهاید، پس بهتر است که آن الگوریتمها را هم علیرغم اینکه میشود با پردازندهها پیادهسازی کرد، با FPGA پیادهسازی کنید.
مسئلهی قیمت و زمان هم یکی از مهمترین مسائل در زمینهی انجام پروژهها است. فرض کنید قبلا ماژولهایی را به کمک FPGA طراحی کردید و کدهای آنها را اکنون در اختیار دارید.
حال با اطلاعاتی که از این مقاله بدست آوردید، متوجه میشوید که آن ماژولها را با تکنولوژیهای ارزانتری مثل پردازندهی AVR هم میتوانید پیادهسازی کنید.
اما با توجه به اینکه این ماژولها را اکنون در اختیار دارید و پیادهسازی مجدد آنها با پردازنده AVR، برای شما وقتگیر است و همچنین اگر این پیادهسازی را به فرد دیگری بسپارید، میتواند هزینهی زیادی برای شما داشته باشد، پس بهتر است که از همان ماژولهای قبلیای که به کمک FPGA پیادهسازی کردید مجددا استفاده کنید.
امیدوارم با دانشی که پس از خواندن این مقاله کسب کردید، همواره بتوانید مناسبترین تکنولوژی را برای پیادهسازی پروژههایتان انتخاب کنید تا هم هزینهی کمتری بپردازید و هم اینکه در سریعترین زمان ممکن، پروژه خودتان را پیادهسازی کنید.
آیا برنامه ویدئویی انتخاب تکنولوژی مناسب پیادهسازی برای شما مفید بود؟
لطفا نظرتان را در مورد این برنامه در پایین همین پست با دیگران به اشتراک بگذارید. همچنین با کلیک روی هر کدام از دکمههای اشتراک گذاری ابتدای این مطلب و به اشتراکگذاری آن در شبکههای اجتماعی میتوانید افراد بیشتری را در یادگیری این مطالب سهیم کنید.
خیلی ازتون ممنونم استاد
ویدیو هاتون بسیار تمیز و واضح هستند
خواهش میکنم. امیدوارم برنامههای بعدی هم که به زودی منتشر میشوند مورد توجه شما قرار گیرند.
تکنیک آموزش به کار رفته خاص و منحصربه فرداست.
آرزوی موفقیت دارم…
ممنون از توجه شما به این برنامه.
ویدیو هایی مثل این برای کسایی که تو شهرستان هستند و متاسفانه امکان شرکت در کلاسهای شما رو ندارن واقعا ارزشمنده ، امیدوارم این ویدیو ها ادامه داشته باشه و شما هم همیشه موفق و پیروز باشین.
خوشحالم که مورد توجهتون واقع شدند. امیدوارم این برنامهها براتون مفید باشند و به زودی برنامههای ویژهای را در سایت راهاندازی خواهیم کردم که میتونید در هر نقطهای از دنیا که باشید از اونها استفاده کنید.
سلام
عالی بود، بسیار عالی، کاملاً علمی ، مفید، جامع و در عین حال بدون اطاله کلام صحبت می کنید.
ممنون از تلاش های قشنگتون.
شاد، پر انرژی و پر از خیر و برکت باشید.
سلام،
ممنون از لطف و توجه شما. خوشحالم که برایتون مفید بوده.
موفق باشید.
باسلام
ویدئوهاعالیه
کاش استفاده ازکلاس برای شهرستانیها هم امکانپذیربودبه صورت آنلاین یا فروش ویدئوهای کلاس …
باتشکر
سلام،
ممنون از توجه شما به این برنامه.
در حال حاضر این امکان فراهم شده است و شما میتوانید از تمام دورهها به صورت آنلاین استفاده کنید.
برای اطلاع بیشتر در مورد دوره آنلاین طراحی دیجیتال با FPGA روی لینک زیر کلیک کنید:
جزئیات دوره آنلاین طراحی دیجیتال با FPGA
موفق باشید.
با سلام و سپاس فراوان.این که مجموعه بی نظیری دارین درش شکی نیس.واقعا جایه تشکر داره.
ببخشید اخیرا در کانالتون مطالب جدید پست نمیکنیند یکم نگرانمون کرده.آیا این کانال با این نظم فوق العاده پا برجاست؟
سلام، ممنون از لطف و توجه شما.
کار کانال و سایت حتما با برنامههای مختلف ادامه پیدا خواهد کرد. اینکه بعضی اوقات مطالب با سرعت کمتری در سایت و کانال قرار بگیرند تقریبا طبیعی است و دلیل آن این است که بعد از تولید یک مجموعه از محتوا، کمی زمان لارم است تا یک سری محتوای جدید تولید شود.
لطفا در مورد کانال و سایت فراد اندیش به این نکته توجه داشته باشید که تمام برنامههای منتشر شده در این دو منبع، تولیدی هستند و برای هر کدام زمان قابل توجهی صرف میشود.
موضوع دیگر در ارتباط با سایت این است که ما در حال آمادهسازی دورههای جدیدی در زمینه FPGA هستیم که این نیز مقداری در کم شدن برنامههای کانال نقش داشته است.
موفق باشید
سلام وبا تشکر به خاطر سایت مفیدتان
چرا فایل ویدیویی دانلود نمی شود؟
سلام، ممنون از شما.
من الان امتحان کردم و مشکلی در دانلود وجود نداشت. لطفا روی لینک دانلود یا دکمه دانلود کلیک راست کنید و گزینه Save Link As را انتخاب کنید.
موفق باشید.
با سلام و خسته نباشید.خیلی مفید بود.کاش dsp رو هم بررسی میکردین.چون داخل کانال علاوه بر fpga وarm و avr به dsp هم اشاره شده
سلام، خواهش میکنم.
منطق گفته شده در ویدئو، برای DSPها هم صادق است.
موفق باشید.
سلام امیدوارم حالتون خوب باشه می خواستم بدونم دوره های dsp شرگت TI رو هم برگزار می کنید؟ و اگر ندارید امگانش هستش در اینده این دوره ها رو هم برگزار گنید؟ ممنون برای زحماتتون
سلام، ممنون از شما.
متاسفانه ما برنامهای برای برگزاری دورههای مرتبط با DSP نداریم.
موفق باشید.
سلام
ضمن تشکر از مطالب مفیدتون
در مثال دو نکته رو هم باید در نظر داشت
اول اینکه فرکانس برداشت تصویر هم باید در نظر گرفته بشه – مثلا به فرض تصویر برداری هر یک میلی ثانیه انجام میشه لذا اگر در ثانیه صفر – یک – دو و سه به ترتیب تصویر برداری انجام بشه با توجه به اینکه زمان لازم برای پردازش ۵ میلی ثانیه در نظر گرفته شد، در لحظه ۵ اطلاعات ثانیه صفر- در لحظه ده اطلاعات لحظه ۱ و در لحظه ۱۵ اطلاعات ۲ و نهایتا در لحظه ۲۰ اطلاعات ثانیه ۳ پرداش میشن و لذا هشدار در لحظه ۲۰ میلی ثانیه به صدا در میاد
اما اگر هر سه میلی ثانیه تصویر برداری بشه این مثال درست هست اما باز هم کامل نیست – چرا که ممکنه جسم در میلی ثانیه یک وارد بشه و در میلی ثانیه دو خارج لذا در میلی ثانیه سه تصویرش برداشته نمیشه
مساله دوم اینه که با توجه به اینکه زمان پردازش مورد نیاز ۵ میلی ثانیه محاسبه شد و مثلا پردازنده آرم ۱۲٫۵ میلی ثانیه زمان لازم داره اگر ما چند پردازنده رو همزمان به صورت موازی استفاده کنیم مساله با آرم هم حل میشه
که ممکنه ارزان تر هم در بیاد (من نمی دونم آیا چهار تا پردازنده آرم ارزونتر هست یا یک fpga) ولی این هم یک راه حل هست
به هرحال متوجه هستم که این یک مثال برای درک مطلب بود ولی خوب هست که جوانب دیگر امر هم در نظر گرفته میشد
با سپاس و احترام
سلام،
ممنون از توجه و توضیحات شما.
موفق باشید.
بسیار عالی بود. ممنونم و آرزوی توفیق روزافزون برای شما استاد بزرگوار دارم.
ممنون از شما. خوشحالم که این آموزش برای شما مفید بوده است. موفق باشید.
استاد عزیز لینک ویدئو برا من باز نشد….
سلام،
لینک ویدئو به روز رسانی شد.
موفق باشید.
مفید بود….ممنون
یه جایی میخوندم که بعنوان مثال میگفت PIC میکروکنترلر صنعتی است و دیگر از AVR استفاده نمی شود همیشه برام سوال بود که منظورش از صنعتی بودن چیه که حدودا با این مقاله متوجه شدم منظور از صنعتی بودن چیه
باتشکر
مقالات و مطالب این سایت مخصوصا برای آشنایی اولیه عالیه و باعث میشه علاقهمندان با اطمینان بیشتری نسبت به یادگیری FPGA تصمیم بگیرن. با تشکر
ممنونم تازه متوجه می شوم که درس آسانی است ولی متاسفانه زمان ندارم ودیر پیداتون کردم وقول میدم از امکانات تون درست استفاده کنم تمامی مطالبی را که تابحال ارسال کردید دراین دو روز خوندم نیاز به مشاوره دارم و هماهنگی کلاس شما با امتحانات ترم وار طرفی سایت تلگرام نیز aďd کنید