شبیه‌سازی ساختار ارجاع شرطی در ISIMمهندسی پزشکی با FPGA - آموزش FPGA قسمت ششم

blog
۱۳۹۸-۰۳-۰۴
7 دقیقه

ساختار ارجاع شرطی;

در قسمت پنجم از آموزش FPGA یاد گرفتیم که چگونه می‌توان یک ماژول را به ماژول دیگر اضافه کرد، و در نهایت توانستیم یک تمام جمع‌کننده‌ی چهار بیتی را با استفاده از این الگو، و چهار بار اضافه کردن یک ماژول، به ماژول اصلی پیاده‌سازی کنیم.

در این قسمت قصد داریم به شما آموزش بدهیم که چگونه وقتی با استفاده از کد، یک مدار را در زبان VHDL توصیف کردیم، از صحت عملکرد آن مطمئن باشیم. شاید راه‌های مختلفی برای انجام این کار به ذهنتان برسد اما دم‌دست‌ترین راه و همچنین آسان‌ترین راه، شبیه‌سازی مدار می‌باشد. شاید بهتر باشد برای اطمینان کامل از صحت مدار، کد نوشته شده را در FPGA پروگرام کنیم و در عمل نتیجه را مشاهده کنیم، اما اگر یک سری اصول را در شبیه‌سازی رعایت کنیم در اکثر اوقات نتیجه‌ها، هم در شبیه‌سازی و هم در عمل یکسان خواهد بود. این موضوع فقط مختص به FPGA نمی‌باشد و در هر جای دیگری این موضوع برقرار می‌باشد. پس به حرف افرادی که می‌گویند شبیه‌سازی عملا بی فایده است و کارایی لازم را ندارد، توجه‌ای نکنید، چون به احتمال زیاد این افراد اصول شبیه‌سازی را به درستی انجام نمی‌دهند و به شما نیز توصیه می‌کنند که از انجام این کار پرهیز کنید.

در این قسمت ما قصد داریم یک ALU را با استفاده از ساختار ارجاع شرطی زبان VHDL توصیف و سپس آموزش دهیم که چگونه این مدار را شبیه‌سازی کنیم.

شاید برخی از اصطلاحاتی که در بالا به کار بردیم برایتان نا‌آشنا باشد، نگران نباشید، در ادامه به طور مفصل در مورد هرکدام از این اصطلاحات صحبت خواهیم کرد.

ALU چیست؟

ALU یک مدار دیجیتال می‌باشد که می‌تواند عملیات جبری و منطقی را روی ورودی‌های n بیتی محاسبه کند و نتیجه را در خروجی برگرداند. در بازار تراشه‌های مختلفی برای انجام این کار وجود دارند، اما ما نمی‌خواهیم از این تراشه‌ها استفاده کنیم، بلکه قصد داریم عملکرد یکی از این تراشه‌ها را با استفاده از کد VHDL توصیف کنیم و در نهایت کد موردنظر را شبیه‌سازی کنیم تا از عملکرد صحیح مدار توصیف شده، مطمئن شویم.

در اینگونه تراشه‌ها معمولا دو ورودی و یک خروجی وجود دارد. و همچنین ورودی دیگری برای اینکه چه عملیاتی روی دو ورودی که در ابتدا بیان کردیم صورت بگیرد نیز وجود دارد.

در زیر، جدولی را مشاهده می‌کنید که بیان می‌کند با توجه به ارزش ورودی 3 بیتی S، چه عملیاتی روی دو ورودی A و B صورت بگیرد.

 

شبیه‌سازی ساختار ارجاع شرطی در ISIMمهندسی پزشکی با FPGA - آموزش FPGA قسمت ششم

 

ما قصد داریم عملیات جدول بالا را مرحله به مرحله روی دو ورودی 4 بیتی اعمال کرده و سپس نتیجه این عملیات را به یک خروجی 4 بیتی ارجاع دهیم و نتیجه را مشاهده کنیم.

اما قبل از انجام این کار، نیاز است که با موضوع جدیدی به اسم ساختار ارجاع شرطی در زبان VHDL آشنا شویم.

ساختار ارجاع شرطی

همانطور که از اسم این ساختار مشخص است، زمانی از این ساختار استفاده می‌شود که نیاز باشد یک سری کارها با توجه به شروط خاصی انجام بگیرد. از ویژگی‌های خوب این ساختار می‌توان به اولویت‌دار بودن شرط‌ها اشاره کرد، که اتفاقا در بعضی از مدارات دیجیتال، که قرار است کارها با اولویت خاصی انجام بگیرند، این ساختار می‌تواند مفید باشد.

در ادامه کدی خواهیم نوشت که شما با توجه به این کد، می‌توانید با الگوی ساختار ارجاع شرطی آشنا شوید.

ابتدا یک فایل برای توصیف کد ALU ایجاد می‌کنیم، که در زیر می‌توانید این کد را مشاهده کنید.

در ابتدا سه پورت A, B, F همه را به صورت چهار بیتی و از نوع علامت‌دار و همچنین پورت S را به صورت سه بیتی و از نوع بدون علامت تعریف می‌کنیم. سوالی که ممکن است برایتان پیش بیایید، این است که چه موقع پورت‌ها را علامت‌دار و چه موقع بدون علامت تعریف می‌کنیم؟ توجه کنید از این به بعد پورت‌ها یا سیگنال‌هایی که قرار است محاسبات ریاضی روی آن‌ها صورت گیرد را از نوع علامت‌دار، و پورت‌ها یا سیگنال‌هایی که قرار نیست محاسبات ریاضی روی آن‌ها صورت گیرد و صرفا از آن‌ها به عنوان شمارنده یا مشخص کردن حالت‌های مختلف کاری، شبیه کاری که ما در این پروژه انجام دادیم استفاده می‌کنیم، را از نوع بدون علامت تعریف می‌کنیم.

قبل از begin مربوط به architecture سیگنال‌های علامت‌داری برای انجام عملیات مختلفی که در جدول بالا مشاهده کردید تعریف می‌کنیم.

تا اینجای کد فقط پورت‌ها و سیگنال‌هایی را تعریف کردیم که قرار است در کد موردنظر از آن‌ها استفاده کنیم، و عملا تا اینجا ما هیچ تعریف یا توصیفی از ALU ارائه ندادیم. کل کد مربوط به توصیف ALU، بعد از begin مربوط به architecture می‌باشد که ساختار ارجاع شرطی نیز به طور کاملا واضحی در این کد مشهود می‌باشد.

حال زمان آن رسیده است که از عملکرد کد مربوطه مطمئن شویم، برای این کار باید یک فایل جداگانه برای شبیه‌سازی ایجاد کنیم، که به فایل Test Bench معروف است. برای ساختن این فایل در قسمت Hierarchy راست کلیک کرده و گزینه New Source را انتخاب می‌کنیم. پنجره‌ای که باز خواهد شد برای شما جدید نمی‌باشد، چون قبلا ما در همین پنجره یک فایل VHDL Module ایجاد کردیم. اما اکنون قصد داریم با نوعی فایل جدید به اسم VHDL Test Bench آشنا شویم که از این فایل برای شبیه‌سازی استفاده می‌کنیم.

شبیه‌سازی ساختار ارجاع شرطی در ISIMمهندسی پزشکی با FPGA - آموزش FPGA قسمت ششم

 

شبیه تصویر بالا حواستان باشد گزینه‌ی VHDL Test Bench را انتخاب کرده باشید، چون در غیر این‌صورت ممکن است فایلی با نوعی دیگر برایتان ایجاد گردد.

پس از طی مراحل بالا، فایل Test Bench برای شما ساخته خواهد شد، اما شما این فایل را مشاهده نمی‌کنید!

شبیه‌سازی ساختار ارجاع شرطی در ISIMمهندسی پزشکی با FPGA - آموزش FPGA قسمت ششم

برای رفع این مشکل همانند تصویر بالا، در بالای قسمت Hierarchy، گزینه View را روی حالت Simulation قرار دهید. سپس با دو بار کلیک کردن روی فایل ALU_tb، این فایل برایتان باز خواهد شد.

در این فایل به صورت پیش‌فرض نوع پورت‌ها و سیگنال‌ها از نوع std_logic_vector تعریف شده است. شما با توجه به فایل اصلی پروژه می‌توانید نوع آن‌ها را تغییر دهید. همچنین به صورت پیش‌فرض قسمت‌هایی برای کلاک در نظر گرفته شده است، اما چون مدار توصیف شده ما از نوع ترکیبی می‌باشد باید قسمت‌های مربوط به کلاک را در کد حذف کنیم.

شما اگر قصد دارید این پروژه را خودتان انجام دهید و مرحله به مرحله پیش بروید فایل Test Bench مورد نظر را مانند کدی که در زیر خواهیم آورد ویرایش کنید.

قاعدتا برای اینکه شبیه‌سازی انجام شود، بایستی یک سری ورودی به مدار اعمال شود. برای این کار مانند کد زیر در قسمت insert stimulus here مقادیری را به پورت‌های ورودی اعمال خواهیم کرد.

اگر به کد بالا دقت کنید ما مقدار”0011″ به منزله‌ی 3 دهدهی را به ورودی A و مقدار “0100” به منزله‌ی 4 دهدهی را به ورودی B، و همچنین مقدار “110” را به ورودی S اعمال کردیم که با این مقدار، طبق جدول بالا، باید حالت A Plus B فعال شود و ارزش عددی A و B با همدیگر جمع شده و در خروجی F نمایش داده شود. پس ما باید در شبیه‌سازی مقدار “0111” یا همان 7 دهدهی را در خروجی مشاهده کنیم.

حال برای مشاهده‌ی نتایج شبیه‌سازی باید ابتدا فایل ALU_tb را انتخاب کرده و سپس مانند تصویر زیر، در قسمت Processes، با دو بار کلیک کردن روی گزینه Simulate Behavioral Model محیط شبیه‌سازی یا همان نرم‌افزار ISim باز خواهد شد.

شبیه‌سازی ساختار ارجاع شرطی در ISIMمهندسی پزشکی با FPGA - آموزش FPGA قسمت ششم

کمی طول می‌کشد تا نرم‌افزار ISim باز شود. پس از اینکه نرم‌افزار باز شد، به طور خودکار به مدت یک میکرو ثانیه شبیه‌سازی انجام می‌شود.

شبیه‌سازی ساختار ارجاع شرطی در ISIMمهندسی پزشکی با FPGA - آموزش FPGA قسمت ششم

خب همانطور که در تصویر بالا مشاهده می‌کنید مقدار خروجی “0111” می‌باشد، و برابر با مقدار مورد انتظار است. شاید شما بخواهید این اعداد را به صورت دهدهی نیز مشاهده نمائید، بدین منظور همه‌ی ورودی-خروجی‌ها را انتخاب کرده و سپس با راست کلیک کردن بر روی آن‌ها از گزینه Radix حالت Signed Decimal را انتخاب نمائید.

شبیه‌سازی ساختار ارجاع شرطی در ISIMمهندسی پزشکی با FPGA - آموزش FPGA قسمت ششم

 

شما می‌توانید در پروژه‌های مختلف، مدارتان را طبق اصولی که در بالا بیان کردیم، از لحاظ رفتاری شبیه‌سازی کنید و از صحت عملکرد مدار خود مطمئن شوید.

در قسمت هفتم با ساختار ارجاع انتخابی آشنا خواهیم شد، و همچنین به مقایسه این ساختار با ساختار ارجاع شرطی می‌پردازیم. پس با سیسوگ همراه باشید.

 

اطلاعات
17
0
لینک و اشتراک
profile

سپهر

متخصص الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
جواتی گفت :
۱۳۹۹-۱۰-۰۴ ۱۷:۰۸

سلام آقای کامین جلیلی
من متعجبم بعضی از دوستان یک طرفه پیش قاضی می روند اگر قرار باشد کسی از این کد ها استفاده نکند دیگران هم حق ندارند از سیستم عامل ویندوز و حتی جزوات دوران مدرسه استفاده کنند. این همه ریاکاری جای تعجب دارد

profile
کامین جلیلی گفت :
۱۳۹۹-۱۰-۰۶ ۰۹:۵۷

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

از کتابخانه TensorFlow گفتم به این نکته هم اشاره کنم که با فراگیر شدن هوش مصنوعی به احتمال زیاد مفهومی به اسم کپی اصلا وجود نخواهد داشت حتی در حوزه هنر و موسیقی. فکر کنید همه نت‌ها، ترکیب‌ها همه و همه و هر چیزی که فکر کنید با هوش مصنوعی تولید خواهد شد و هیچ انحصاری دیگه وجود نخواهد داشت.

profile
محمدصادق گفت :
۱۳۹۸-۱۰-۰۶ ۰۷:۴۶

سلام. چی شد بالاخره نتیجه مذاکرات با اقای ثقفی؟! واسه این میپرسم که مطمئن باشم ایشون راضی هستن. چون ایشون همین الان دارن از همین کلاس درامدزایی میکنن. ممنون میشم خبرشو بدید

profile
Phoenix گفت :
۱۳۹۸-۱۰-۰۶ ۱۸:۵۹

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

profile
زئوس Zeus گفت :
۱۳۹۸-۱۰-۰۶ ۰۹:۵۲

سلام دوست عزیز
بله با ایشون هماهنگ شده و مشلی نیست میتونید از خود ایشون هم استعلام کنید 🙂
و لازم اضافه کنم ای کاش این میزان حساسیت رو هم در استفاده از نرم افزارهای دزدی و قفل شکسته داشتیم !

profile
سید مسعود گفت :
۱۳۹۸-۰۹-۲۴ ۰۸:۵۵

سلام وتشکر از مطالب خوبتون

profile
Phoenix گفت :
۱۳۹۸-۰۹-۲۴ ۱۲:۵۲

درود. سپاس از نظر مثبت شما.

profile
سید مسعود گفت :
۱۳۹۸-۰۸-۰۱ ۰۹:۲۵

با سلام
تشکر از مطالبی که در موردFPGA گذاشتید

profile
Phoenix گفت :
۱۳۹۸-۰۸-۰۴ ۱۰:۲۲

سلام مسعود عزیز. خوشحالیم از اینکه این مطالب برای شما مفید واقع شده است.

profile
سید محمد سجادیان گفت :
۱۳۹۸-۰۳-۱۰ ۱۷:۰۱

سلام
ترجیحا این مطالب را از روی سایت دیگه کپی نکنید. اگرم میکنید، لینک بکنید.

profile
Sisoog OS گفت :
۱۳۹۸-۰۳-۱۰ ۱۷:۴۳

دوست عزیز ممنون میشم مستند بفرمائید از کدوم سایت کپی شده تا همین الان منبعش قرار بگیره و از این که مجدد این اتفاق بیفته جلوگیری بشه؟

profile
محمد گفت :
۱۳۹۸-۰۷-۱۶ ۲۳:۲۱

سلام،

متاسفانه شما عین مطالب دوره FPGA استاد ثقفی از آموزشگاه فراد اندیش رو با همون ترتیب و با اعتماد به نفسی بیشتر از مهندس ثقفی منتشر می کنید و حتی اشاره ای هم به این موضوع نمی کنید.

من در کلاس حضوری ایشون شرکت کردم و شما حتی کدها و مثال ها رو هم عوض نکردید و عینا تمام نکات کلاس رو به نام خودتون منتشر می کنید. این واقعا جای تاسف داره.

profile
Phoenix گفت :
۱۳۹۸-۰۷-۱۷ ۰۹:۰۴

سلام دوست نازنینم
بله بنده قبلا شاگرد استاد ثقفی بود و FPGA را به صورت اصولی از ایشون یاد گرفتم و این یادگیری را هم مدیون ایشون هستم و صد البته به طبع همین مورد سبک کدنویسیم هم به این شیوست، مثلا همیشه پورت‌های ورودی-خروجی را signed یا unsigned تعریف می‌کنم و …

چون موضوعش مطرح نشده بود عنوان نشده بود و با افتخار هم این مورد را اظهار میکنم

در مورد کدها هم لازمه بگم در کتابهای مرجع خیلی از این کدها یکسان هم هستند مثلا به کتاب پدرونی مراجعه کنید تا دقیقا همین کد ALU را ببینید و بنده موقع نگارش هم سعی کردم به خیلی از این کتابهای مرجع رجوع کنم
بازم ممنون بابت اظهار نظرتون امیدوارم پاسخ خودتون را گرفته باشید

profile
محمد گفت :
۱۳۹۸-۰۷-۱۷ ۱۲:۱۰

متاسفانه عمده پاسخ شما سفسطه است. من بیش از این بحث را ادامه نمی دهم چون نفع و ضرری برای من ندارد و فقط به خاطر حضور در کلاس استاد ثقفی و دینی که به ایشان احساس می کردم این مطالب را نوشتم. شما خودتان منصفانه فکر کنید و ببینید آیا انتشار جزء به جزء مطالب یک کلاس خصوصی به سبک خود استاد کار درستی است یا نه.

profile
Sisoog OS گفت :
۱۳۹۸-۰۷-۲۲ ۰۰:۲۸

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

با توجه به این که امکان داره این موضوع برای برخی دوستان دیگه هم شائبه ایجاد کنه این مورد و نظر آقای مهندس ثقفی در صفحه اول اموزش FPGA منعکس خواهد شد و ما هم خوشحال میشیم و با افتخار هم خواهیم نوشت که این آموزشها خروجی یکی از شاگردهای استاد ثقفی بوده است.
بازم ممنون از نظر شما

profile
محمد گفت :
۱۳۹۸-۰۷-۱۷ ۱۰:۰۳

سلام،

من هم شاگرد استاد ثقفی بودم و در کلاس ایشون شرکت کردم و همان فایل های صوتی کلاس را که شما به آن دسترسی دارید من هم دارم و بارها و بارها گوش دادم طوری که ملکه ذهنم شده.

منظور من از کامنت قبلی فقط کد ALU و حتی فقط این مقاله نبود. من تمام مقالات شما در مورد FPGA را دیدم. ترتیبت ارائه مطالب و مثال ها و حتی تیکه کلام های استاد هم در مقالات شما استفاده شده.

برای من واضح است که شما همان فایل های صوتی را مرجع کرده اید.

دلیل اینکه این کامنت را می نویسم این است که خودم را مدیون استاد ثقفی می دانم و طبق گفته خودشان که مطمئنم به شما هم گفتند میدانم که ایشان راضی به انتشار این مطالب به این صورت نیستند. شما ظریف ترین نکات کلاس ایشان را با افتخار به نام خودتان در این مقالات منتشر می کنید و حتی اشاره ای هم به منبع نمی کنید. گرچه اگر اشاره هم بکنید باز این بسیار کار نادرستیی است.

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله