مصفوفة البوابات المنطقية القابلة للبرمجة FPGA: مقدمة
في الأعوام القليلة السابقة تزايد استخدام FPGA بشكل كبير ودخلت في العديد من التطبيقات وأصبحت موضع اهتمام العديد من الشركات وهذا ما دفع شركة بحجم شركة Intel في عام 2015 للاستحواذ على شركة ALTERA أحد أبرز اللاعبين في مجال صناعة شرائح الـ FPGA والتي بدأت بدمج تقنية FPGA مع معالجات Xenon المستخدمة في الحواسيب عالية الأداء.
ستكون هذه المقالة بداية لمجموعة من المقالات سوف نتعرف فيها على تقنية FPGA وأهم تطبيقاتها ثم كيفية عملها ومراحل التصميم باستخدام FPGA وماهي أهم الشركات المصنعة وأهم الاختلافات بين أنواع FPGA وأيضاً معايير اختيار FPGA ومقارنة بين أشهر لوحات تطوير الـFPGA وختاماً بناء مجموعة من المشاريع المختلفة باستخدام لوحة التطوير Altera DE1 Board Altera DE1 Board .
والآن لنبدأ رحلتنا في عالم FPGA
ما هي تقنية الـFPGA؟
هي اختصار لعبارة Field programmable Gate Array أحد أنواع الدارات المتكاملة IC وتتميز بأنها قابلة لإعادة التشكيل على مستوى الهاردوير بواسطة كتل منطقية قابلة لاعادة التشكيل (البرمجة) ومجموعة من الوصلات المنطقية القابلة للبرمجة أيضاً وهذا ما يمكّن المهندسين من تصميم دارتهم الرقمية الخاصة على مستوى الهاردوير.
ما الذي يميز الـ FPGA عن المعالجات الصغرية؟
الفرق الجوهري الذي يميز الFPGA عن المعالجات هو أنها قابلة للبرمجة على مستوى الهادوير فالكتل المنطقية ليس لها أي وظيفة إذا لم يقم المصمم بتوصيف التصميم المناسب بدءاً من التصاميم البسيطة كالبوابات المنطقية وصولا إلى الدارات الرقمية المعقدة كالمعالجات متعددة النوى باستخدام لغات توصيف العتاد HDL .
أما المعالجات الصغرية فهي لها تصميم ثابت على مستوى الهاردوير فهي تتكون من وحدة معالجة مركزية ووحدة تحكم ويتم برمجتها بواسطة لغات برمجة كـلغة C أوC++ ويتم ترجمة البرامج إلى ملف hex وتخزينها بذاكرة flash.
باختصار يتم التحكم بالمعالج الصغري بواسطة البرامج بوجود تصميم داخلي ثابت وأما الـFPGA فيتم التحكم بها عبر تهيئة الكتل المنطقية لتقوم بالتصميم المطلوب على مستوى الهاردوير.
ماهي القطاعات الرئيسية التي تستخدم فيها الـFPGA؟
تتميز الFPGA بأنها تجمع ما بين القدرة الحسابية العالية والمرونة إذا ما قورنت بالتقنيات الأخرى كالمعالجات الرسومية GPU والمعالجات متعددة النوى Multiprocessor ولذلك بدأت تدخل في مجالات وتطبيقات مختلفة كالاتصالات ومعالجة الإشارة الرقمية الرؤية الحاسوبة والتعلم العميق وتعلم الآلة الحواسب الخارقة ووانترنت الأشياء IOT.
لماذا أتعلم التصميم باستخدام الـFPGA؟
تعد FPGA أحد منصات تطوير الحوسبة القابلة لإعادة التشكيل Reconfigurable computing ،كما أن سوق FPGA ينمو بسرعة فبحسب marketandmarkets تقدر قيمة سوق الـFPGA بـ 9.5 بليون دولار أمريكي في عام 2023
فإذا كنت ترغب بالدخول في هذا المجال فهذه بعض المهارات المطلوبة لمصممي الـFPGA :
- لغات توصيف العتاد Verilog/VHDL .
- لغات البرمجة C/C++.
- أطر العمل OpenCL and OpenCV.
- Tcl Scripting & Bash Scripting.
- تطوير Linux Driver.
- معرفة واجهات النقل عالية السرعة (PCIe, AXI and Avalon.)
- معرفة بروتوكولات الاتصال (UART, CAN, I2C and SPI ).
- معرفة برتوكولات الشاشات والفيديو (VGA & HDMI).
مما تكون الـFPGA؟
تتكون الـFPGA بشكل أساسي من ثلاث عناصر رئيسية:
- الكتل المنطقية القابلة للبرمجة : Configurable Logic Blocks (CLB) تقوم بتنفيذ التابع المنطقي
- الوصلات المنطقية: تقوم بوصل CLB مع بعضها لتنجيز التابع المنطقي
- وحدات الدخل والخرج : تستخدم لربط الFPGA بالعالم الفيزيائي (الحساسات والمحركات )
تتكون الكتل المنطقية القابلة للبرمجة من عدد من وحدات المنطقية logic module المحاطة بمجموعة من الوصلات المحلية local connection والتي تقوم بوصل logic module مع بعضها البعض ومجموعة من الوصلات العالمية Global connection والتي تقوم بوصل الـ CLB مع بعضها.
وتعد logic module وحدة البناء الأساسية والتي تحتوي على عناصر الحوسبة والتخزين الأساسية المستخدمة في الأنظمة الرقمية.
أما تجهيزات FPGA الحديثة فهي تحتوي على خليط غير متجانس من الكتل المختلفة مثل ذواكر مخصصة دارات ضرب عتادي DSP وحتى وحدات معالجة مركزية MPU
تقوم الوصلات المنطقية القابلة للبرمجة بإنشاء اتصال بين الكتل المنطقية ووحدات الدخل الخرج لإكمال التصميم المنفذ من قبل المستخدم. وهي تتكون بشكل أساسي من مجموعة من pass transistor و tri-state buffers. بينما تستخدم وحدات الدخل والخرج I/O Block القابلة للبرمجة لربط الكتل المنطقية والوصلات المنطقية بالمكونات الفيزيائية، وتتميز بأنها أكثر تعقيداً من تلك الموجودة لدى MCU حيث أنها تدعم العديد من جهود التغذية والجهود المرجعية كما أنها تدعم العديد من سرعات النقل.
ماهي SoC-FPGA و SoMC-FPGA ؟
SoC-FPGA :هي دمج معمارية كلا من المعالج وFPGA بنفس الرقاقة السيليكونية، أي دمج وظائف الإدارة عالية المستوى للمعالجات والعمليات الدقيقة في الزمن الحقيقي أو معالجة البيانات على التوازي للـFPGA في جهاز واحد.مما يشكل منصة حوسبة مضمنة أكثر قوة ومرونة. ويؤدي دمج كلا التقنيتين إلى تحقيق تكامل أعلى ، واستهلاك طاقة أقل ، وحجم أصغر PCB ، واتصال أعلى بين النطاق الترددي المعالج و FPGA.
SoMC-FPGA : وهي تقنية مشابهة لتقنية SoC-FPGA إلا أن الاختلاف الوحيد هو أن المعالج والـ FPGA لا يكونوا على نفس الرقاقة السيليكونية وإنما تستخدم FPGA Card (تشبه إلى حد ما البطاقات الرسومية GPU’s) كمسرعات تربط مع المعالج عبر PCIe وتستخدم هذه التقنية في مجال الحوسبة عالية الأداء وتهدف إلى تسريع عمل الـ Datacenter ومعالجة البيانات بشكل متوازي.
المصادر وقراءة المزيد
هذا كل ما هنالك في هذا الجزء نلتقي في الجزء الثاني حيث سنقوم بشرح بينة FPGA بشكل مفصل ومراحل التصميم باستخدام FPGA. في هذه الأثناء أنصح القرّاء بالاطلاع على كتاب FPGA for Dummies والذي يعد مقدمة ممتعة وشيقة للدخول في عالم الـ FPGA بالإضافة إلى أطروحة الدكتور وليد بليد والتي تعد المرجع الأشمل للتقنية FPGA باللغة العربية.
تم الاستفادة من محتوى مجموعة من الدورات على الإنترنت والكتب وهي:
- دورة Introduction to FPGA Design for Embedded Systems من كورسيرا.
- دورة FPGA computing systems: Background knowledge and introductory materials من كورسيرا.
- كتاب Digital Fundamentals تأليف Thomas L. Floyd.