# مصفوفة البوابات المنطقية القابلة للبرمجة

مصفوفة البوابات المنطقية القابلة للبرمجة (بالإنجليزية: (Field Programmable Gate Array (FPGA)‏ هي دائرة متكاملة صممت ليتم بواسطتها تعديل أو تصميم أنظمة متكاملة حتى بعد عملية التصنيع دون الحاجة لإعادة تجميع النظام أو المنتج، لذلك أخذت التسمية القابلة للبرمجة في الميدان أو Field-Programmable. بشكل عام يتم التصميم في الـ FPGA باستخدام ما يسمى بلغة وصف العتاد Hardware Description Language وهي مشابهة جداً لتلك التي يتم استخدامها في تصميم الدوائر المتكاملة ذات التطبيق المحدد (Application-Specific Integrated Circuit) أو ASIC وهي دوائر متكاملة صممت لغرض معين ولا يمكن استخدامها إلا للتطبيق الذي صممت من أجله مثل دوائر ترميز الصوت والصورة، أو دوائر التحويل التناظري-الرقمي (ADC).
تحتوي شرائح الـ FPGA على مجموعة من الوحدات المنطقية المبرمجة (Configurable Logic Blocks)، بالإضافة إلى تسلسل هرمي من التوصيلات فيما بينها، بحيث يتم توصيل هذه الوحدات بحسب ما يتطلب التصميم. هذه الوحدات المنطقية يمكن ربطتها وبرمجتها لإنشاء بوابات منطقية أساسية مثل الـ AND و XOR إلى تنفيذ مهام معقدة في المنطق المدمج (Combinational Logic)، أو يمكن استخدام عناصر الذاكرة الموجودة في معظم أنواع الـ FPGA من عناصر Flip-Flop أساسية إلى وحدات ذاكرة متكاملة لتكوين أنظمة معقدة في المنطق التتابعي (Sequential Logic).

## التصميم التقني

شرائح الـ FPGA الحديثة تحتوي على عدد كبير من البوابات المنطقية ووحدات الذاكرة من نوع (RAM) لتصميم وتنفيذ حسابات وأنظمة رقمية معقدة. لأن معظم تصاميم الـ FPGA توظف منافذ إدخال وإخراج سريعة بالإضافة إلى نواقل بيانات ثنائية الاتجاه سريعة، فإن التحقق من توقيت البيانات خلال وقت الإعداد Setup Time ووقت الاحتفاظ Hold Time يصبح نوعاً من التحدي في عملية التصميم. عملية تخطيط أرضية الدائرة المتكاملة Floor Planning تتيح تخصيص الموارد المتاحة في شريحة الـ FPGA بحيث يتم تحقيق القيود الزمنية الخاصة بالتصميم. يمكن استخدام الـ FPGA لتصميم أي نظام يمكن تصميمه باستخدام الـ ASIC، ولكن القدرة على تحديث وظيفة النظام -أي إعادة تركيب -، وإن كان ذلك بشكل جزئي لها، تعطي ميزات في عدة تطبيقات.

## تاريخ

نشأت صناعة الـ FPGA من نوعين من الوحدات المبرمجة، ذاكرة القراءة فقط المبرمجة Programmable Read-Only Memory (PROM) والأداة المنطقية المبرمجة Programmable Logic Device (PLD). كلتا الوحدتين كانت تتم برمجتهما على دفعات خلال التصنيع أو في الميدان (Field-Programmable).
في أواخر الثمانينات، قام مركز Naval Surface Warfare Center بتمويل تجربة اقترحها Steve Casselman لتطوير حاسوب يحتوي على 600,000 بوابة منطقية مبرمجة. نجح Casselman في التجربة وتم إصدار براءة اختراع خاصة بالتجربة في عام 1992.
بعض مبادئ التصنيع والتكنولوجيا الخاصة بالبوابات المنطقية المبرمجة (Programmable Logic Arrays) والبوابات والوحدات المنطقية (Logic Blocks) تم إنشاؤها من خلال براءات اختراع منحت لـ David W. Page و LuVerne R. Peterson في عام 1985.
تم إنشاء شركة Altera في عام 1983 حيث قامت بتصنيع أول PLD في عام 1984 - EP300 - التي احتوت على نافذة من الكوارتز يتم تسليط ضوء فوق بنفسجي من خلالها على الدائرة الداخلية لمسح خلايا ذاكرة EPROM التي تحتوي على معلومات تصميم الـ PLD.
مؤسسا شركة Xilinx، وهما Ross Freeman و Bernard Vonderschmitt، قاما باختراع أول شريحة FPGA متاحة تجارياً: الـ XC2064، حيث كانت بداية تطور تكنولوجيا وسوق صناعة الـ FPGA كما نعرفها الآن. احتوت شريحة XC2064 على 64 CLB بالإضافة إلى وحدات LUT ذات 3 مداخل. بعد أكثر من 20 سنة تم وضع اسم Freeman في قائمة National Inventors Hall of Fame لأجل اختراعه.
استمرت شركتا Altera و Xilinx بالنمو من 1985 إلى منتصف التسعينات، حيث ظهرتا بشكل سريع في الصناعة مع احتواء نسبة عالية من حصة سوق صناعة الـ FPGA. في عام 1993 كانت شركة Actel (الآن تعرف بـ Microsemi) تملك 18% من سوق صناعة الـ FPGA. بحلول عام 2010 شركة Altera بنسبة 31% وشركة Actel بنسبة 10% وشركة Xilinx بنسبة 36% مجتمعات قد امتلكوا ما نسبته 77% من سوق الـ FPGA.
فترة التسعينات كانت فترة نشطة لأنظمة الـ FPGA، حيث في بداية العقد كانت تطبيقات الـ FPGA بشكل أساسي في أنظمة الاتصالات والشبكات ومع نهاية العقد امتدت تطبيقات الـ FPGA إلى الإلكترونيات، السيارات ومختلف التطبيقات الصناعية.

### البوابات المنطقية

* 1982: Burroughs Advances Systems Group وصلت إلى 8192 بوابة منطقية.
* 1987: Xilinx وصلت إلى 9000.
* 1992: مركز Naval Surface Warfare Department وصل إلى 600,000.
* بداية الـ 2000 معظم الأنواع تعدت حاجز المليون بوابة منطقية.

### حجم السوق

* 1982: أول FPGA متاحة بشكل تجاري وهي XC2064.
* 1987: قدر حجم السوق بـ 14 مليون دولار.
* 1993: ما يزيد عن 385 مليون دولار.
* 2005: وصل إلى 1.9 مليار دولار.
* 2010: التقديرات تشير إلى 2.75 مليار دولار.
* 2013: يقدر بـ 5.4 مليار دولار.
* 2020: من المتوقع أن يصل إلى 9.8 مليار دولار.

## التطبيقات

* الطيران والدفاع.
** إلكترونيات الطائرات.
** الاتصالات.
** الصواريخ والذخائر.
** الفضاء
* الأنظمة الإلكترونية الطبية.
* نمذجة دوائر ASIC.
* أنظمة الصوت.
** الأجهزة المحمولة.
** الراديو.
** معالجة الإشارة الرقمية.
* السيارات
** تصوير الفيديو بجودة عالية.
** معالجة الصورة.
** أنظمة اتصال وشبكة المركبة.
** أنظمة الترفيه في السيارات.
* أنظمة البث
** محركات الفيديو بالوقت الحقيقي.
** مشفرات الفيديو.
** شاشات العرض.
** محولات وموجهات الفيديو.
* الأجهزة الإلكترونية.
** أجهزة العرض الرقمي.
** الكاميرا الرقمية.
** الطابعات.
** الأجهزة المحمولة.
** أجهزة فك التشفير والعرض (Set-top Box)
* مراكز البيانات
** الخادمات.
** أمن الشبكات والأنظمة.
** الموجهات.
** المحولات.
** نقاط التوجيه Gateways.
** أنظمة موازنة الحمل على الشبكة.
* الحوسبة ذات الأداء العالي.
** الخادمات.
** الحواسيب الخارقة.
** أنظمة SIGINT.
** الرادارات ذات الأداء العالي.
** أنظمة تكوية الشعاع Beamforming في الاتصالات.
** استخراج البيانت.
* التطبيقات الصناعية
** التصوير الصناعي.
** الشبكات الصناعية.
** التحكم بالمحركات.
* الطب
** الموجات الفوق صوتية.
** التصوير الطبقي.
** الرنين المغناطيسي.
** أشعة X.
** PET
** أنظمة الجراحة.
* الأدوات والأجهزة العلمية.
** مضخمات استعادة الإشارة Lock-in Amp.
** Boxcar averagers
** Phase-locked loops
* الأنظمة الأمنية
** التصوير الصناعي.
** حلول آمنة.
** معالجة الصورة.
* معالجة الفيديو والصور.
** فيديوهات ذات جودة عالية.
** اتصالات الفيديو عبر الـ IP.
** شاشات العرض الرقمي.
** التصوير الصناعي.
* الاتصالات السلكية.
** شبكات التناقل البصري.
** معالجة الشبكات.
** واجهات الاتصال.
* الاتصالات اللاسلكية.
** إشارات ذات تردد قاعدي Baseband.
** واجهات الاتصال.
** نقاط الحمل المتحركة Backhaul.
** الراديو.

## بنية FPGA

يتألف من مجموعة من الوحدات المنطقية التي تترابط مع بعضها كما في CPLD ولكن هنا تكون مترابطة بشكل أكثر تعقيدا، والفارق المهم بين CPLD و FPGA هو أن FPGA قابلة للبرمجة أكثر من مرة، حيث في CPLD كان يتم برمجتها عن طريق صهر الفواصم بين هذه الوحدات وفق طريقة وترتيب معين، أما في FPGA فتم استبدال الفواصم بقواطع إلكترونية (SWITCHES) وهذه القواطع هي ترانزستورات تترابط مع بعضها ومع الوحدات المنطقية بشكل معقد جدا، وبالتالي تشكل مع بعضها أيضا مصفوفة من السويتشات (SWITCHES)، وبالتالي أصبحت تدعى الوحدات المنطقية القابلة للتهيئة: CLB Confugrable Logic Block
هذه الترانزستورات تصمم بحيث:
* تقوم بتطبيقات متعددة.
* تقوم بربط الوحدات ببعضها.
* تخصص للعمل بشكل منطقي (0,1).
- بارتباط الذواكر المنطقية وتنظيمها وجدولتها ينتج لدينا ذواكر مثل (SRAM-DRAM)ظن ويتم التعامل معها بشكل نظامي من استجابة واسترجاع بيانات وتخزين وغيرها. يمكن ربط هذه الذواكر مع بعضها ومع أجزاء أخرى من FPGA مثل المعالجات كما يمكن ربطها مع الوسط الخارجي.

## برمجة FPGA

يستخدم نوعين من لغات البرمجة:
* بواسطة لغة الـ في إتش دي إل.
* بواسطة لغات منخفضة المستوى.
إن لغة VHDL لها بعض المشاكل، حيث أن برمجة FPGA بطيئة من أجل التصميمات الضخمة المعقدة. سنتوسع فيما بعد في شرح لغة في إتش دي إل.
* يمكن برمجة FPGA في أي وقت، فعند تحميل برنامج Software ظهر لدينا أخطاء يمكن إعادة تحميلها وعمل Re-Compile لها من جديد.
* عند «تحميل» (Download) برنامج الـ Software يفقد الـ FPGA وظيفته بانقطاع التيار، أما عند «برمجة» (Programming) الـ FPGA لا يفقد الـ FPGA وظيفته بانقطاع التيار.