# fpga



## eng abu rashed (30 يونيو 2009)

ما هي الـ FPGA ؟
مقدمة Introduction :

إن كلمة FPGA هي اختصار لـ Field Programmable Gate Array أو بالعربية : مصفوفة البوابات القابلة للبرمجة حقلياً، وهي عبارة عن دارات متكاملة بأبعاد كبيرة يمكن برمجتها بعد عملية تصنيعها، وتشير كلمتا ( مصفوفة البوابات ) إلى بنية هذه الدارات التي تتيح عملية برمجتها، إذ تتألف عملياً من وحدات بنائية ودارات أصغر حجماً مرتبة على هيئة عناصر مصفوفة Array متداخلة فيما بينها، أما ( القابلة للبرمجة حقلياً ) فتشير إلى إمكانية برمجة هذه الدارات بناءً على الحقل العملي المراد تشغيلها فيه.


دارة FPGA من شركة Xilinx​


تأتي دارات الـ FPGA بأحجام وبنى متعددة ومختلفة في خصائصها البنيوية والوظيفية، ولكن بالتأكيد هناك ما يجمع بينها رغم تعددها وتنوعها، فهي جميعاً تتألف من بنى صغيرة من دارات المنطق القابل للبرمجة، وهذه البنى بدورها يحتوي كل منها على مجموعة من المسجلات Registers ومجموعات من العناصر المنطقية ذات المستوى المنطقي المنخفض والمرتبة على شكل سطور وأعمدة ومترابطة فيما بينها بروابط منطقية معينة. وسنجد بتناولنا بنية واحدة من بنى الـ FPGA النمطية أن الدارة بشكل عام مبنية على قاعدة من جداول الربط ( كل منها يتألف من 4 أو 5 مداخل ثنائية ) وترتبط بمسجل بت Bit واحد أو مسجلين بالإضافة لبعض العناصر المنطقية كمؤهلات الساعات والنواخب. يمكن لهذه البنى الأساسية أن تتكرر في الدارة الواحدة آلاف المرات لتشكل البنية العامة لأي جهاز FPGA .

وللحصول على مزيد من التعقيدات والوظائف المتخصصة في عمل هذه الدارات فإنه يتم ربطها بمستويات أعلى من بنى الحساب والتحكم كالضوارب والعدادات، كما يمكن تدعيمها حينئذ بدارات معالجة الإشارة، وبالإضافة إلى ذلك، يمكن ربطها بأجهزة ودارات محيطية أخرى تحوي عناصر منطقية تتمتع بقابلية البرمجة وإدخال المعطيات وإخراجها لتشكل شبكة منطقية تحكمية عالية المستوى والأداء.


صورة لواحدة من أولى دارات FPGA وقد استخدمت لمعالجة البيانات في محطات الفضاء عام 1993 ​


الخصائص العامة لدارات الـ FPGA :

تتحدد الخصائص العامة لدارات أجهزة الـ FPGA بما يسمى ( الحجم المنطقي للجهاز ) وهو باراميتر يقاس بعدد البنى المنطقية الأساسية التي تحتويها، كما تتحدد خصائصها بميزات بنيتها المنطقية، وقدراتها على المعالجة وسرعتها ومقدار استهلاكها للطاقة. وعلى الرغم من تواجدها حجمياً بدئاً من آلاف البنى المنطقية وانتهاءاً بالملايين منها فإنها تشترك في الخصائص العامة ذاتها، وهي :

• العناصر المنطقية Logic Elements: تتألف جميع أجهزة ودارات الـ FPGA من دارات منطقية رقمية صغيرة نسبياً، ولاستخدام هذه الدارات في تطبيق أو حل مسألة ما فإن الأمر يتطلب تقسيم هذا التطبيق أو المسألة إلى دارات منطقية صغيرة مترابطة فيما بينها بشكل تصميمي، ومن ثم تتم برمجة جهاز الـ FPGA بناءً على ذلك الحل التصميمي باستخدام تقنية رسم معينة تسمى ( Mapping Technology )، وهي عملية يمكن أن تتم يدوياً أو أوتوماتيكياً، ولكنها تتطلب مقداراً من الذكاء والخبرة في الجانب البشري الذي يقوم بالتصميم أو الرسم على الدارات.

• جداول الربط Lookup Tables: تتألف عناصر الـ FPGA المنطقية من مسجل منطقي قابل للبرمجة واحدٍ على الأقل ( قلاب flip-flop ) ونظام إدخال منطقي معين، ويتم غالباً التعامل مع جدول ربط مؤلف من n مدخل ( تأخذ n القيمة 5 أو أقل )، أما البنية التفصيلية لهذه العناصر المنطقية فيعتمد على الشركة المصنعة للـ FPGA ( مثل Xilinx أو Altera ) أو عائلة الـ FPGA ( مثل Xilinx Virtex أو Altera Cyclone ). إن جداول الربط LUT : Lookup Tables شبيهة إلى حد بعيد بذواكر الـ ROM، فهي قادرة على التعامل مع أي تابع منطقي تركيبي يتم إدخاله إليها. 

• مصادر الذاكرة Memory Resources : إن غالبية أجهزة ودارات الـ FPGA الحديثة تحمل على رقاقاتها بطاقات ذاكرة مدمجة بها مثل SRAM، ويمكن لهذه الذواكر أن تعمل بشكل مجموعات، ويرتبط كل عنصر للذاكرة في العناصر المنطقية المؤلفة لبنية الجهاز بالذاكرة العامة المدمجة به.

• مصادر التوجيه Routing Resources : إن التوجيه هو المعيار الأساسي للمرونة التي تتمتع بها دارات الـ FPGA، وهي تشكل معياراً للتفاضل فيما بينها إذ تمثل قدرة الشركة المصنعة على توفير لمرونة بشكل يتناسب مع الكفاءة على مستوى أداء الدارة، وتنطوي مصادر التوجيه على مجموعة من قنوات النقل التي تتسع مجالاتها بدئاً من خطوط قنوات نقل سريعة ومتداخلة ضمن الدارة وطويلة في أبعادها إلى بنى اتصالات محلية في نظام تخاطبي فيما بينها ( بنية إلى بنية )، وتقوم مفاتيح قابلة للبرمجة بربط قنوات التوجيه في دارات الـ FPGA ببعضها أو بقنوات توجيه خارجية أخرى. ( يمكن أن تكون هذه المفاتيح عبارة عن ذواكر SRAM, EEPROM, أو ذواكر قابلة للبرمجة لمرة واحدة ).

• مجاري الدخل والخرج القابلة للضبط Configurable I/Os : تحتوي التطبيقات التي تستخدم أجهزة ودارات الـ FPGA على واجهات تعامل مع نظم كاملة، ويتطلب هذا طيفاً واسعاً من المتطلبات والخصائص المعينة لمجاري دخلها وخرجها، ولذلك؛ تتمتع هذه الدارات بخصائص عديدة لضبط هذه المجاري. يمكن أن تتم عملية ضبط أرجل دارات الـ FPGA والتعامل معها كما يتم التعامل مع دارات الـ TTL, CMOS, PCI بالإضافة لإمكانيات تفعيل التخاطب مع العديد من تقنيات الدارات الإلكترونية الأخرى. كما أن غالبية دارات الـ FPGA على مجارٍ ذات سرعات عالية لدخل مصادر الساعات ومعيدات الضبط الخارجية، ويحتوي غالبيتها أيضاً على أنماط لإدارة الساعات مما يتيح تعدد مصادر التحكم الزمني بهذه الدارات وفقاً للتطبيق المطلوب. 


لوحة واجهة تخاطب وفحص لـ FPGA بمنفذ USB من شركة ALTERA​


تقنيات برمجة دارات الـ FPGA : 

تتنوع تقنيات ذواكر دارات وأجهزة الـ FPGA بشكل واسع، فهي إما SRAM أو EEPROM أو دواكرة قابلة للبرمجة لمرة واحدة، وعلى الرغم من أن قابلية الشركات تميل لتصنيع دارات مبرمجة مناسبة للحقل المراد عمل الدارة فيه، فإن إعادة برمجة هذه الدارات مرة أخرى يزداد انتشاراً يوماً بعد يوم. 

يمكن للـ FPGA أن تتم إعادة برمجتها وهي مرتبطة بالنظام الذي تعمل فيه بشكل كامل أو جزئي، وهذا ما يدفع بالعديد من الباحثين لتصميم تطبيقات قابلة للضبط ليتم استخدامها كمعايير لجميع أجهزة الـ FPGA لمختلف التطبيقات وهذا سيوجد بين يدي المبرمج قاعدة من النظم القوية وعالية الأداء مهما اختلف الحقل الذي تعمل فيه الدارة، وهي عملية ما زالت في بداياتها إلا أن العمل جارٍ بشكل مستمر.


برمجة دارة FPGA بلغة VHDL​


إن تحديد عمل الكيان الصلب وبرمجة دارات الـ FPGA يمكن أن يتم باستخدام لغة لتوصيف الكيان الصلب HDL ( كلغة VHDL ) أو من خلال استخدام توابع جاهزة لإعادة الربط بين البنى المنطقية للدارة بناءً على مخططات تمثيلية للدارة أو أدوات تصميمية تستخدم المخططات الصندوقية، وتواجدت مؤخراً العديد من هذه الأدوات التي تستخدم لغات برمجية عالية المستوى كالـ ++C, C أو حتى JAVA. ويتم كتابة البرنامج المراد تخزينه على هيئة توزيع مادي للدارة بملفات تحمل اسم netlist، وبإمكان هذه الملفات أن تعمل على تغيير البنية الوظيفية للبنى الصلبة لجهاز الـ FPGA باستخدامها أدوات الـ FPGA للتوجيه والتوضيع، وبعد تنفيذ عملية الرسم بناءً على معطيات البرنامج وتحمليه بشكل كامل على جميع وحدات الـ FPGA فإنها تكون جاهزة حينئذٍ للعمل في الحقل المطلوب.
​


----------



## ingm83 (12 مايو 2010)

thx for this information
i am master student and am work with fpga and simulink.*


----------



## qqr45 (28 يونيو 2010)

http://www.arab-eng.org/vb/t107320-2.html#post1713418 هذا اللنك لتحميل fpga v.801


----------

