بخشی از مقاله


مقدمه:
امروزه با پيشرفت در زمينه ساخت قطعات قابل برنامه ريزي در روشهاي طراحي سخت افزار تكنولوژي V LSIجايگزين SSI شده است.رشد سريع الكترونيك سبب شده است تا امكان طراحي با مدارهاي مجتمعي فراهم شود كه درآنها استفاده از قابليت مدار مجتمع با تراكم بالا و كاربرد خاص نسبت به ساير كاربردهاي ان اهميت بيشتري دارد. از اينرواخيرا مدارهاي مجتمع با كاربرد خاص( Integrated Circuit (Application Specific به عنوان راه حل مناسبي مورد توجه قرار گرفته است(ASIC) وروشهاي متنوعي در توليداين تراشه ها پديدآمده است.در يك جمع بندي كلي مزاياي طراحي به روش A SIC عبارت است از :
• كاهش ابعاد و حجم سيستم


• كاهش هزينه و افزايش قابليت اطمينان سيستم كه اين امر ناشي ازآن است كه بخش بزرگي از يك طرح به داخل تراشه منتقل ميشود وسبب كاهش زمان ، هزينه مونتاژ راه اندازي ونگهداري طرح مي شود و در نتيجه قابليت اطمينان بالا ميرود.
• كاهش مد ت زمان طراحي وساخت وعرضه به بازار


• كاهش توان مصرفي ,نويز واغتشاش
• حفاظت از طرح:سيستم هايي مه با استفاده از تراشه هاي استاندارد ساخته مي شوند به علت وجود اطلاعات كامل در مورد اين تراشه ها به راحتي از طريق مهندسي معكوس قابل شناسايي و مشابه سازي هستند.در عين حال امنيت طرح در تجارت از اهميت زيادي بر خوردار است و اكثر طراحان مايلند تا از اين بابت اطمينان حاصل كنند .


اولين تراشه قابل برنامه ريزي كه به بازار عرضه شد ، حافظه هاي فقط خواندني برنامه پذير PROM)) بود كه خطوط آدرس به عنوان ورودي وخطوط داده به عنوان خروجي اين تراشه ها تلقي مي شد. PROM شامل دسته اي از گيتهاي AND ثابت شده(غير قابل برنامه ريزي ) كه به صورت رمز گشا بسته شده اند و نيز يك ارايه O R قابل برنامه ريزي است.


از آنجايي كه PROM داراي قابليت هاي لازم براي پياده سازي مدارهاي منطقي نمي باشد، از اين تراشه ها بيشتر به عنوان حافظه هاي قابل برنامه ريزي استفاده مي شود.
اين قطعات داراي دو آرايه قابل برنامه ريزي AND,OR هستند .در سال 1920 Philips, ساختار PLA را به بازار عرضه كرد كه دواشكال ان هزينه گران ساخت ان وسرعت كم آن بود.


شركت Memories Monolitic براي پوشش دادن اشكالات PLA ساختار آرايه قابل برنامه ريزي منطقي PAL را به بازار عرضه كرد. PAL شامل يك آرايه AND قابل برنامه ريزي و يك OR تثبيت شده است.
PALهاي استاندارد،آرايشهاي متفاوتي دارند كه هر يك از آنها توسط عددي يكتا مشخص مي شوند.اين عدد هميشه با پيشوند PAL شروع مي- شود .دو رقم بعدازPAL , تعداد وروديها را نشان مي دهد كه شامل خروجيهايي است كه به صورت ورودي به كار روند.حرف بعد از تعداد وروديها نوع خروجي را نشان مي دهد:
L يعني فعال پايين, H يعني فعال بالا و P يعني قابل برنامه ريزي .


يك يا دو عد د بعدي كه بعد از نوع خروجي قرار مي گيرد،تعداد خروجيهاست. به عنوان مثال PAL10L8 داراي 10 ورودي و8 خروجي فعال پايين است.
علاوه بر اين شماره PALمي تواند پسوند هايي براي تعيين سرعت ،نوع بسته بندي و حوزه حرارتي داشته باشد.
بعد از PAL، يكي از تراشه هاي منطقي قابل برنامه ريزي PLD(Programable Logic Device) كه در بسياري از كاربرد ها،جايگزين مدارهاي MSI,LSI با عنوان آرايه عمومي منطقي GAL)) به بازار عرضه شد.


GAL(Generic Array Logic) شامل آرايه اي قابل برنامه ريزي از گيت هاي AND است كه به گيتهاي OR متصل شده است.
درGAL به جاي فيوزاز سلولهايي از نوع CMOS كه قابل پاك شدن به صورت الكتريكي هستند (E2CMOS) هستند استفاده شده است.
GAL آرايشهاي متنوعي دارد كه هر يك توسط شماره يكتايي مشخص مي شود.اين شماره ،همواره با پيشوند GAL آغاز ميشود دو رقم اوليه كه بعد از پيشوند GAL مي آيد تعداد وروديها را نشان مي دهند كه خروجيها يي كه ميتوانند به عنوان ورودي نيز به كار روند را در بر دارد.حرف V كه بعد از وروديها مي ايد،خروجي متغير و يك يا دو رقم بعد از آن، تعداد خروجيها را نشان مي دهد.


به عنوان مثال GAL1 6V 8 داراي 16 ورودي و 8 خروجي متغير است.
به همراه تراشه هاي قابل برنامه ريزي ASIC قابل ماسك MPGA(Masked Programmable Gate Array) نيز شروع به رشد كرد كه به صورت ارايه أي از ترانزيستور هاي پيش ساخته هستند و براي پياده سازي مدارهاي منطقي ، در كارخانه هاي سازنده به يكديگر متصل مي شوند.ظرفيت آنها طي ده سال ، از حدود هزار گيت به مرز چند ده هزار گيت رسيد.


پيشرفت در ابزار هاي طراحي و نيز تراشه هاي قابل برنا مه ريزي منجر به عرضه FPGA شد.
امروزه FPGA ها از نظر تكنولوژي در زمره بزرگترين مدارهاي مجتمع موجود در بازار هستند.مثلا محصولات Altera از سري FLEX10K با تكنولوژي نيم ميكرون ، حدود ده ميليون ترانزيستور را در گستره أي به ابعاد 1.8cmدر 1.5 cmجاي داده اند.


گر چه اين محصولات ظرفيتي بيش از 300000 گيت و300 پايه I/ /O را به كاربر عرضه مي كند ولي با اين همه هنوز از تراشه هايي چون 1 6V8 و نيز سري 74LS00استفاده فراواني به عمل مي ايد. با وجود اينكه مي توان 7000 نوع از تراشه اخير در يك FPGA معمولي جاي داد.
بيشتر FPGA ها ي مورد استفاده ظرفيتي حدود 8000 گيت دارند .از هاي بزرگتر براي ساخت نمونه هاي اوليه به منظور پياده سازي نهايي با MPGA ها استفاده مي گردد .


اين امكان نتيجه پيشرفت در نرم افزار هاي طراحي است كه ميتوانند مستقل از تراشه نهايي طراحي را انجام دهند و در نهايت طراح مي تواند تصميم بگيرد كه طرح با FPGA يا MPGA پياده سازي گردد .


به نظر مي رسد كه در آينده ، ايدهFPGA همچنان قوام بيشتري به خود گرفته و با ايجاد ابزارهاي طراحي قويتر كه دستورات پيشرفته تري از VHDL(Very Hardware Description Languages) و AHDL (Altera Hardware Description Languages) را پشتيباني مي كنند، راه براي به كار گيري هر چه بيشتر اين گونه تراشه ها هموار گردد.طليعه اين گونه پيشرفت

ها را مي توان درتراشه ها ي بسيار پيشرفته (FIPSOC (Fild ed Programmable System On Chip مشاهده كرد.
ساختار كلي F PGA :
FPGAما نند MPGAتشكيل شده است از يك سري عناصر منطقي كه براي كار خاصي محدود شده اند و نيز مانند PAL داراي اتصالات قابل برنامه ريزي است. بنابر اين هر دو جزء اصلي تشكيل دهنده يك مدار يعني بلوكهاي منطقي و همچنين اتصالات بين آنها، قابل برنامه ريزي است.شكل زير ساختار اصلي يك F PGA را نشان ميدهد.


]
همانطور كه در شكل مشخص است سه جزء اصلي آن عبارتند از بلوكهاي منطقي ، عناصري كه براي اتصالات به كار مي روند وبلوكهاي ورودي ـ خروجي.
ساختار و محتويات بلوكهاي منطقي ميتواند خيلي ساده (در حد گيت NAND) و يا خيلي پيچيده(نظير چند MUXياLook-UpTable به همراه يك فليپ فلاپ) باشد.


بلوكهاي منطقي در حقيقت جايي هستند كه قسمتهاي اصلي مدار قرار مي گيرند . البته ابتدا بايد مداري كه قرار است روي F PGA قرار بگيرد به اجزاي يكساني كه همان محتويات بلوكهاي منطقي هستند تقسيم شود و بعد از اين عمل است كه مي توان با بلوكهاي پايه به هم مدار واقعي را به دست اورد.
عناصري كه براي اتصالات به كار مي روند ، همانطور كه در شكل مشخص است،معمولا بين بلوكهاي منطقي قرار مي گيرند واز قطعات فلزي كه مي توانند به هم يا به بلوك هاي منطقي متصل شوند تشكيل شده اند. براي متصل كردن اين قطعات از سوئيچهاي قابل برنامه ريزي استفاده مي شود. اين قطعات مي توانند طولهاي متفاوتي داشته باشند.


بلوكهاي ورودي - خروجي براي اينكه پين ها ي FPGA را بتوان در مد هاي مختلف 3/3 يا 5 ولت و..برنامه ريزي كرد به كار مي روند. طراحي بلوكهاي منطقي و عناصر اتصالي مهمترين قسمت طراحي يك F PGA مي باشد.زيرا طراحي اين دو با هم بايد به گونه أي باشد كه پياده سازي مدارات منطقي مختلف را روي F PGA ممكن سازد.معمولا بين پيچيدگي و انعطاف پذيري هر دوي بلوكهاي منطقي و منابع اتصالي يك نسبت معكوس وجود دارد .يعني با زياد شدن يكي ديگري كم مي شود و بر عكس.در ضمن، معماري يك بلوك منطقي و همچنين منابع اتصالي بر كل مساحت تراشه و سرعت تراشه اثر دارد.

مقايسه FPGA با MPGA:
پيشرفت تكنولوژي CMOS همواره باعث ايجاد مدارهاي مجتمع پيچيده تر و پيشرفته تر شده است .به گونه أي كه روز به روز بر بهبود وضعيت F PGA ها در برابر MPGA ها افزوده مي شود. قبل از هر چيز توجه به اين نكته ضروري است كه به طور كلي نام اختصاري FPGA هم به FPGA هاو هم به CPLD ها اتلاق مي گردد.
تا پيش از اين تنها از MPGA ها براي توليد سريع نمونه هاي اوليه در طرح هاي ASIC استفاده ميشد اما به موازات پيشرفت در تكنولوژي C MOS و امكان جاي دادن مدارهاي بسيار پيچيده بر روي يك تراشه , را براي جايگزين شدن F PGA ها به جاي MPGA ها در كاربردهايي همچون سيستمهاي كنترل صنعتي و مخابرات , هموار شد.


پس از اينكه ظرفيت FPGA به چند هزار گيت رسيد,صحبت از جايگزيني F PGA ها جنبه عملي تر يافت .به علت تنوع تكنولوژي هاي به كار رفته در ساخت FPGA و نيز وجود ابزار هاي مختلف و پيشرفته حامي هر يك از انها يك تكنولوژي به خصوص از FPGA ها را نمي توان به ساد گي انتخاب كرد.
گر چه هم اكنون فركانس كار براي F PGA ها نوعا حدود 120MHZ تا800MHZ مي باشد ,اما محدوده واقعي كاملا به نوع طرح پياده شده بستگي داشته و همچنين بسته به نوع مكان يابي و مسير يابي ابزارهاي طراحي مي باشد.


FPGA ها معمولا به اندازه كافي پينI/O فراهم ميكنند به طوريكه FPGA هايي با بيش از 300 پين نيز در دسترس مي باشند .در طرح هايي كه براي پياده سازي به چند FPGA نياز مي باشد ,از كل اين پايه ها استفاده مي شود.به خصوص اگر در در طرح,باس هاي ادرس و داده نيز وجود داشته باشد.
FPGA در مقايسه با MPGA داراي دو مزيت عمده مي باشد :


هزينه پايين براي توليد كم : اماده سازي MPGA نياز به استفاده از خط توليد كارخانه دارد ودر نتيجه براي توليد كم مقرون به صرفه نيست.
سر عت بالاي اماده سازي :به دليل بالا بودن مدت زمان اماده سازي در كار خانه و همچنين صرف زمان براي رفع عيبهاي احتمالي ,اماده شدن چيپ M PGA خيلي طولا نيتر از FPGA است كه به راحتي ظرف چند دقيقه در محل كار برنامه ريزي ميشود.


در عوض سه عيب عمده اي كه FPGA ها نسبت به MPGA ها دارند عبارتند از :
سرعت كم ( تا حد سه برابر ):به دليل تاخير زياد سوئيچهاي برنامه پذير در مسيرهاي اتصالات .(زيرا ظرفيت خازني و مقاومتي بالايي دارند.)
چگالي پايين تر منطقي :به دليل سطح اشغال شده توسط سوئيچهايومداراتي كه براي برنامه پذير كردن چيپ استفاده مي شوند.
قيمت بالا براي توليدات با تعداد زياد .


مراحل پياده سازي يك طرح بر روي F PGA:
اصولا روش طرا حي مدارات منطقي مستقل از تراشه نهايي است كه براي پياده سازي انتخاب مي گردد .معمولا در اين گونه طراحي ها ,يك كتابخانه از بلوكهاي پيش ساخته در اختيار طراح قرار دارد كه اعضاي كتابخانه از قبل طراحي شده اند.البته در اين كتابخانه بر خلاف Data Bookها به pin-out نيازي نمي باشد.اعضاي پيچيده تر نظير شمارنده ها و يا ساختار هايي شبيه تراشه هاي استانداردT T L وCMOS را ماكرو مي نامند .هر ماكرو معمولا يك يا چند سلول از تراشه ها را

اشغال مي كند كه با سيم بندي مناسب تابع مورد نظر را ايجاد مي كند .در پروسه طراحي مهمترين بخش را مرحله شبيه سازي تشكيل مي دهد. از انجا كه طرح به صورت بخش بخش مي باشد كليه اين بخش ها را مي توان جداگانه و با اعمال ورودي و دريافت هاي خروجي هاي مورد نظر تست كرده و در نهايت كل طرح را به طور يك جا تست نمود .


بر خلاف تراشه هاي استاندارد,در ماكرو ها مي توان تنها بخشهاي مورد استفاده در طرح را استفاده كردو بقيه ماكرو را بدون هدر دادن هيچ بخشي از سلول قابل برنامه ريزي ,از طرح زدود.اما با اين همه اين مشكل به گونه أي د يگر مي تواند ظهور كند.از انجا كه هر تراشه با تعداد ثابتي سلول ساخته مي شود. بنا براين پياده سازي طرح با اولين تراشه اي صورت مي گيرد كه بتواند تعداد سلولهاي مورد نياز براي طرح را بر اورده كند.از اين رو در صورتي كه كوچكترين تراشه داراي 1000 سلول و تراشه بعدي داراي 1500 سلول باشد براي طرحي كه نياز به 1010 سلول دارد, 30% از تراشه اخير بدون استفاده رها خواهد شد . شكل صفحه بعد فلو چارت مراحلي را كه براي پياده سازي يك طرح بر روي F PGA بايد طي شود نشان مي دهد.
ورودي سيستم


در يك نرم افزار طراحي مدار را به روشهاي مختلف مي توا ن وارد نمود .و از جمله اين روشها ويرايشگر هاي شماتيكي مدار , زبانهاي ساده توصيف سخت افزار ( AHDLوDBEL و…) ويرايشگر هاي موج(كه شكل موج ورودي /خروجي را به عنوان ورودي به سيستم قبول مي كنند) و زبانهاي توصيف سخت افزار در سطوح مختلف(مانند VHDLوVerilog) مي باشند.
تركيب و ترجمه


در ادامه طراحي مي توان هر قسمت از طراحي را به هر يك از روشهاي بالا كه وارد شود با قسمت هاي ديگر تركيب كرد و كل مدار را به صورت معادلات منطقي در اورد كه خروجي طبقه كامپايل و تركيب است.
بهينه سازي


در اين قسمت به وسيله يك سري از الگوريتم ها و با توجه به معادلات جبر بولي و الگوريتم هاي بهينه سازي در ان و همچنين با توجه به ساختار خاص بلوكهاي برنامه ريزي در FPGA ,معادلات بهينه به دست مي ايد.
يك نقطه ضعف در خلاصه سازي ان است كه تغيير ساختار مدار باعث دشواري رفع خطاها يي كه در مرحله شبيه سازي اشكار مي شوند,مي گردد.
نگاشت تكنولوژي


ترجمه يك مدار از گيت هاي پايه به مدارهايي با المانهاي مداري ديگر (مانند سلولهاي منطقي FPGAيا سلولهاي پايه CPLD)را نگاشت تكنولوژي گويند.از انجايي كه اطلاعات كامل در رابطه با ساختار FPGA بايد در اختيار نرم افزار نگاشت قرار گيرد,معمولا اين نرم افزارتوسط شركت فروشنده تراشه قابل برنامه ريزي توليد مي شود.
معمولا در برنامه نگاشت تكنولوژي يك فاز بهينه سازي منطقي با توجه به ساختار بلوكهاي برنامه پذير ,براي مينيمم كردن مساحت مصرفي يا بالا بردن سرعت موجود مي باشد.


جايگزيني و سيم كشي اتصالات داخلي
بعد از انجام عمل نگاشت برنامه جايگزيني براي محل قرار گيري هر بلوك منطقي مدار تصميم مي گيرد كه هر سلول منطقي در كدام سلول فيزيكي F PGA قرار گيرد.اين مساله داراي پيچيدگي زيادي است.از انجايي كه اطلاعات كامل در رابطه با ساختار اتصالات داخلي FPGA و نحوه قرار گيري سلولها درون FPGA بايد در اختيار نرم افزار جايگزيني و سيم كشي قرار گيرد ,معمولا اين نرم افزار ها توسط شركت فروشنده تراشه توليد مي شود. بعد از اين عمل جايگزيني نرم افزار سيم كش در مورد واگذاري منابع براي اتصالات مورد نياز تصميم مي گيرد.در اين تراشه ها ,استفاده از 95% سلولها و حتي بيشتر امكان پذير است .
شبيه سازي


دو نوع شبيه سازي توسط نرم افزار انجام مي شود:
شبيه سازي منطقي
اين شبيه ساز از نظر منطقي عملكرد مدار را تست مي كند.در اين عمل , اطلاعاتي از زمان بندي و همچنين عمليات بهينه سازمنطقي در اختيار نيست.اگر خطايي در طراحي باشد در اين مرحله مشخص مي شود.
شبيه ساز زماني
در اين مرحله كه پيش از مسير يابي و رفع ساير مشكلات صورت مي گيرد. پارامتر هاي تاخير ,توان و خازنهاي مدار و..نيز به محيط شبيه سازي منتقل شده و تصوير واقعي از عملكرد تراشه را به دست مي دهد . تاخير هاي فوق در واقع از كتابخانه اي كه نرم افزار در دسترس دارد ,استخراج مي شود و معمولا بدتر از حالت واقعي تراشه در نظرگرفته شده است .به گونه أي كه پس از برنامه ريزي تراشه ,عملكرد تراشه معمولا سريعتر از مقدار پيش بيني شده توسط نرم افزار شبيه سازي است.
از مرحله شروع تا جا دادن طرح در داخل يك يا چند FPGA (با توجه به اندازه مدار ) و همچنين متصل كردن بلوكهاي منطقي به هم اصطلاحا سنتز مدار روي FPGA گفته مي شود.
انواع متفاوت معماري هاي F PGA
چهارنوع مختلف معماريهاي FPGA را كه كارخانجات متفاوت استفاده مي كنند, عبارتند از :
• ارايه دو بعدي متقارن
• سطري
• دريايي از گيت ها
• مدارات سلسله مراتبي
نوع اول از يك ارايه دو بعدي از يك بلوكهاي منطقي كه منابع اتصالات به صورت سطري و ستوني بين اين بلوكها واقع شده اند,تشكيل يافته است.
اين نوع معماري توسط شركت Xilinx استفاده مي شود.


نوع دوم شبيه به نسلهاي اوليه MPGA ها مي باشد و در حال حاضر ,توسط شركت Actel پياده سازي مي شود.
نوع سوم متشكل از بلوكهاي كوچك منطقي است كه با لايه هايي براي برقراري اتصال بين اين بلوكها پوشيده شده است .در اين گونه ساختار سلولهاي منطقي تنها قادرند كه به نزديكترين سلول همسايه أي متصل شوند كه در مختصات افقي يا عمودي مشابهي قرار دارد .در اين ساختار از سلولهاي منطقي نيز مي توان در جهت برقراري ارتباط استفاده كرد.كه البته چنين كاري باعث افزايش تاخير در مسير سيگنال و نيز كاهش ظرفيت گيتي در دسترس مي گردد .اين نوع معماري شبيه به نسلهاي بعدي MPGA ها مي باشد كه ان هم توسط شركت Actel در معماريهاي جديدش استفاده مي شود.
نوع چهارم معماري FPGA بر گرفته شده ازمعماري PLD ها وCPLD ها ميباشد وتوسط شركت Atera در سري MAX ساخت اين كارخانه استفاده شده است.
معيارهاي اساسي انتخاب واستفاده ازF PGA


به هنگام طراحي يك سيستم طراح با توجه به مشخصات سيستم ابتدا بلوكهاي كلي از بخشهاي اساسي سيستم را روي كاغذ پياده مي كند.نوعا اين بلوكها شامل بلوك پردازنده , بلوكهاي حافظه و برخي ورودي ها –خروجي ها و مدار هاي واسطه لازم مي باشند.
برخي از اين بلوكها را مي توان با يك تراشه طراحي كرد حال انكه برخي قسمت ها به تعداد تراشه هاي بيشتري نياز دارند .
به موازات پيشرفت تكنولوژي امروزه بسياري از بلوكها را مي توان در يك تراشه جاي داد. از اين رو طراح بايد دست به انتخاب چنين تراشه أي بزند و طراحي ساير قسمتها رابر اين اساس پيش ببرد.


با ظهور مدارهاي LSI قابل برنامه ريزي وFPGAها,طراحان با گستره أي از انتخاب ها مواجه شدند.از اين روطراح قبل از انتخاب يك F PGA نيازبه اطلاعات اساسي در اين زمينه دارد.در اين رابطه لازم است كه طراح بتواند ميزان گيت مورد نيازو نيز تعداد پايه هاي I/O و مشخصه مورد نياز براي طراحي را تخمين بزند.
با توجه به اينكه امروزه خانواده هاي مختلفي از F PGA ها در دسترس مي باشند,مسئله أي پيش روي طراح وجود داردو ان اينست كه كدام تراشه براي يك كاربرد خاص مفيد تر است؟


با در نظر گرفتن سه فاكتور مهم در هر خانواده مي توان به انتخاب نهايي نزديك شد.انتخاب نهايي نيز مي تواند با توجه به فاكتور مهم قيمت صورت گيرد.
مقايسه مشخصه ها


از نظر مشخصه ها هنگامي مي توان FPGA ها را با يكديگر مقايسه كرد كه اين موضوع روشن شده باشد كه اندازه گيري مشخصه در خانواده هاي مختلف از راه هاي مشابهي صورت گرفته است . از فركانس كار مي توان به عنوان نمونه أي در اين زمينه نام برد.
چنين فركانسي مي تواند ماگزيمم فركانسي باشد كه فليپ فلاپها قادر به تقسيم ان دو باشند و يا مينيمم پهناي پالس H ighوLowباشد كه يك شمارنده قادر است با ان درست عمل كند و يا اصولا ماكزيمم فركانس كار يك ماشين حالت باشد.برخي نيز مبناي اندازه گيري را ميزان تاخير انتشار در نظر مي گيرند.گر چه تعاريف اخير ساده است ولي با اين همه مشكلاتي را پيش مي اورد .


بر اين اساس FPGA را به صورت يك گيت ساده برنامه ريزي كرده و تاخير بين ورودي و دريافت خروجي را اندازه گيري مي نمايند.براي مثال فرض كنيد كه يك گيت پيچيده مثلا يك AND با 20 ورودي لازم باشد, در اين حال تراشه هاي خانواده هاي PAL تاخيري به اندازه يك گيت ساده دو ورودي را ايجاد مي كنند.در حاليكه در ساختارهاي FPGA به دليل به كارگيري چند لايه براي تحقق چنين گيتي , ميزان تاخير افزايش مي يابد.

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