تصميم الدارات

2013-08-31

قد تصدمك هذه الحقيقة لكن أغلب وأشهر الشركات المنتجة للرقائق الإلكترونية ليس لديها مصانع Fabless manufacturer فهو يصمم ويسوق ولا يصنع ومنها

  • Qualcomm وهي ثالث أكبر منتج لأشباه الموصلات في العالم وهي المنتجة لرقاقة Snapdragon المستخدم في الكثير من الأجهزة ومنها iPhone
  • nVidia
  • AMD و ATI منافسة intel و nvidia
  • Broadcom وهي ضمن أكبر 10 شركات لأشباه الموصلات في العالم (التاسعة في 2012 العاشرة في عام 2011)
  • Xilinx وهي من أشهر مصنع لرقائق FPGA
  • Altera وهي من أشهر مصنع لرقائق FPGA وتشكل مع سابقتها 80% من السوق
  • VIA
  • Allwinner

والكثير من الشركات كانت دون مصانع مثلا Atmel المنتجة للمتحكمات الدقيقة المستخدمة في أردوينو كانت تصنع الرقائق عند Sanyo في بداياتها لكن حتى بعد أن امتلكت مصانع فإنها لا تركز على التصنيع وهي سياسة تسمى fab-lite.

من أشهر المصنعين الذين يمتلكون fabrication plant هم TSMC التايوانية (وهي التي تصنع ل nvidia و AMD وغيرها) وإنتل و Texas Instruments الأمريكية وسامسونغ الكورية و Bosch و Fujitsu الألمانيتان و nxp التي كانت تابعة لشركة فيليبس. ربما يجدر بنا أن نذكر أن شركة GlobalFoundries لها مصنع في أبو ظبي.

هناك عتبة عالية جدا لدخول سوق تصنيع أشباه الموصلات حيث أن عدد الترانزيستورات المنتجة تتضاعف بشكل كبير (كل سنتين بحسب قانون Moore's law) مما يجعل الشركات تحشر المزيد منها في رقعة أصغر فأصغر من الشريحة السيليكونة silicon wafer (حتى تتمكن من المنافسة على السعر) فتعطي نفس الشريحة كمية أكبر من الرقائق وهو ما يعرف باسم Die shrink وغالبا ما يشار لها بنصف طول المسافة بين العناصر المتشابهة وحاليا هناك 22 نانومتر والتحضير جار لقياس 14 نانومتر. تعقيد مراحل الصناعة وهذا الكم من التصغير اللازم للمنافسة يجعل من دخول السوق شبه مستحيل حيث أن كلفة بناء مزرعة لأشباه الموصلات تتضاعف كل 4 سنوات (قانون Moore's الثاني) وقد وصلت عدة مليارات حتى الآن وهي تركز على التصنيع للكثير من الشركات أخرى وليس لنفسها فقط في حين تركز تلك الشركات الأخرى على التصميم والتسويق.

وهناك نوع ثالث من الشركات التي لا تصنّع بنفسها ولا تصنّع عند غيرها بل تصميم تصميمات كاملة أو وحدات منفصلة كل وحدة تسمى IP Core وتبيع التصميمات لشركات تقوم هي بدمج الأجزاء معا وتصنيعها (إما بنفسها أو عند غير وهو الغالب) وتسويقها. مثلا ARM تبيع تصاميم المعالج ولا تسوقه فتأتي شركة أخرى مثل Qualcomm وتضم له تصميم GPU (مثل Mali400 من ARM نفسها) وأجزاء أخرى ثم تدفع بالتصميم الناتج للنظام كاملا على رقاقة SoC وتصنعه عند شركة ثالثة.

السؤال الأهم كيف يتم تصميم تلك الدارات؟ أول طريقة لوصف تلك الدارات هي الرسوم التخطيطية. لكن مع مرور الزمن ظهرت الحاجة للغات وصف العتاد Hardware Description Languages وأهمها على الإطلاق لغتي Verilog العيارية (ملفها يتنهي ب .v) و VHDL (وملفاتها تنتهي ب .vhd) التي ظهرت في وزارة الدفاع الأمريكية (لوصف المطلوب من الشركات المزودة) ثم أصبحت لغة عيارية هي الأخرى.

وهناك عدة أدوات للتحويل بين VHDL و Verilog أو بالعكس أو ربما عبر لغة وسيطة توليد للغتين مثلا vhd2vl تحول من VHDL إلى Verilog ومع أنها لا تغطي كامل VHDL إلا أنها تؤدي الغرض

إذا كنت تستخدم Eclipse هناك إضافة له اسمها veditor تضيف دعم Verilog/VHDL له.

ولتحويل هذا التصميم (سواء verilog أو VHDL) إلى عتاد فإنك ترسله إلى شركة متخصصة لتصنعه لك بكميات تجارية على شكل رقاقات محددة الغرض أي ASIC. لكن المشكلة الرئيسية أن تلك الشركات لا تقبل إلا كميات كبيرة جدا لذا عليك أن تكون متأكد من تصميمك وهنا يأتي دور أدوات التحقق والمحاكاة

عندما بحثت في مدير الحزم في فيدورا لينكس وجدت هذه المجموعة من البرامج ذات الصلة.

  • iverilog : Icarus Verilog is a verilog compiler and simulator
  • gplcver : An interpreted Verilog HDL simulator
  • covered : Verilog code coverage analyzer
  • vrq : Verilog tool framework and parser with plugins for manipulating source code
  • ovm : Open Verification Methodology : IEEE 1800 SystemVerilog standard
  • verilator : A fast simulator for synthesizable Verilog

أيضا يمكن زرع تعليمات في لغتي verilog و vhdl يتم تجاهلها أثناء البناء لكنها تعمل أثناء الاختبار والمحاكاة.

طريقة أخرى للتحقق هي ألواح التطوير وهي تستخدم دارات يمكن إعادة برمجتها مثل FPGA أو CPLD وعلى الرغم من إختلاف مبدأ عملهما إلا أنهما يتشابهان في الوظيفة (وهي وضع تصاميمك عليها) لكن الأولى يمكنها أن تحتوي حتى مئات الآلاف من الخلايا المنطقية في حين أن الثانية بالكاد قد تصل إلى عشرات الآلاف من الخلايا المنطقية.

حتى تنصّب التصميم في دارة FPGA أو CPLD عليك أولا أن تقوم ببناء التصميم باستخدام برامج خاصة من مصنعي الدارة وهي عملية تعرف باسم البناء Synthesis تحول الملف إلى ملف مبني (من نوع SVF العيارية أو XSVF المضغوطة) هذه الأدوات منها نسخ مجانية (محدودة) هي: - Xilinx ISE Web Pack - Quartus II Web Edition Software

ثم تقوم برفع البرنامج المبني عليها في عملية تسمى البرمجة program أو الإعداد configure وهنا غالبا ما يمكنك استخدام أي أداة حتى لو كانت من مصنع آخر مثلا يمكنك استعمال ألواح عامة الأغراض مثل أردوينو (باستعمال JTAGduino أو JTAGWhisperer مع الانتباه للفولتية لأن أردوينو يعطي فولت في حين ربما تكون الدارة الهدف 3 فولت أو أقل) أو Bus Pirate (مع firmware يسمى XSVF Player كما في هذه المقالة) مما يسمح لك ببرمجة أي CPLD أو FPGA عبر JTAG. ويمكنك بناء واحد خاص بك عبر v-usb في أي متحكم دقيق من Atmel كما في مشروع thsusb

مبرمج USB Blaster عبر JTAG

مبرمج مزدوج يحتوي Altera USB Blaster و Xilinx Platform Cable وكلاهما عبر JTAG

لوح Bus Pirate يبرمج CoolRunner II

غالبا ما يتم استخدام وصلة JTAG العبارية للتخاطب مع الدارة التي يتم برمجتها سواء للبرمجة أو التمحيص. وإن كنت تريد أن تشق طرقك في هذا المجال عليك اختيار لوح تطوير رخيص (بين 10 إلى 50 دولار) رفيق بلوح التجارب breadboard friendly بعضها يكون مجرد وضع رقاقة FPGA أو CPLD من نوع SMD يوزع أرجله الكثيرة (فوق ال 40 واحدة) بطريقة DIP تناسب وضعه على لوح التجارب مثل CoolRuner-II. وقد لا يحتوي على وصلة USB بل يربط عبر جهاز يحول من USB إلى JTAG مثل Altera USB Blaster أو Bus Pirate وغيرها. أيضا من أسهل الألواح للبدئ هو Papilio One 500K لأنه يوفر بيئة قريبة من أردوينو من خلال معالج AVR برمجي soft core (تسمى المعالجات التي يمكن وضعها على FPGA باسم soft cores).

لوح CoolRunner II البسيط

لوح Xilinx Spartian 3 module

بعض ألواح التطوير الأغلى والأكثر تعقيدا تحتوي على مداخل USB وشاشات LCD و أزرار مثل Spartan-6 LX9 MicroBoard و Spartan-3E Starter Board بل وحتى تصلح أن تكون شريحة PCI توضع داخل حاسوب مثل Altera MAX II Development Kit. قبل أن تشتري يمكنك أن تقارن بين الشرائح من حيث عدد البوابات المنطقية والخلايا عبر موقع avnet.

Xilinx Spartian 3e Starter Board

لوح Altera Max II DK

هناك ألواح تطوير مرتفعة الثمن يزيد سعرها عن ألف دولار تحتوي على ملايين الخلايا المنطقية تكفي لعمل معالجات كبيرة.

ليس عليك أن تبدأ من الصفر حيث هناك عدد من الوحدات الجاهزة في مشروع open cores بعضها عبارة عن CPU كامل بل وحتى SoC بل إن شركة صن أطلقت أفضل معالج عندها بشكل مفتوح المصدر هو وكل مرفقاته وأدوات التطوير الخاصة به والذي كان اسمه UltraSPARC T1 ثم أصبح OpenSparc وهو معالج ذي 8 أنوية

وتجد على الموقع مشروع معالج zpu وهو أبسط معالج قادر على تشغيل gnu tool chain

ويمكن استخدام أدوات وسيطة لتسريع التطوير والاختبار مثلا مطوري معالج ورقاقة Milkymist انتقلوا لوصف العتاد بلغة بايثون في جيلهم الجديد عبر اداة من تطويرهم اسمها migen

وهناك مكتبة أخرى لوصف العتاد في بايثون اسمها MyHDL

ومنها بني مشروع PyCPU يمكنك عمل معالج قادر على تنفيذ جزء محدود جدا من python bytecode (بالكاد يشمل الأعداد الصحيحة والدوال والحلقات التكرارية) له مبرمج ذاتي (يقرأ البرنامج من الرام) أو تحويل برنامجك إلى معالج ببرنامج ثابت أو عمل أكثر من معالج كل واحد ينفذ برنامج مختلف على نفس الشريحة كلها تعمل معا بالتوازي.

وهناك من كتب برنامج يحول من C إلى Verilog ويمكنك تجربته مباشرة على الموقع

متى تستعمل متحكم دقيق uC ومتى تستخدم FPGA/CPLD ومتى تعمل ASIC ؟

طبعا إن كان المشروع الذي تريده أثبت جدواه الاقتصادية ويمكنك تسويقه بكميات كبيرة ولديك المال الكافي لتنفقه مسبقا فعندها تستخدم ASIC لكن إن كنت بالكاد بدأت فعليك البحث عن حل آخر.

المتحكم الدقيق يمكنك الحصول عليه بملغ بسيط (أغلبها يمكنك الحصول عليها بحوالي 5 دولار وهناك أنواع محدودة منها بأقل من دولار) ويمكنك برمجته بسهولة بمعدات بسيطة وبرمجيات بسيطة أيضا (في PIC من السهل أن تكتب بلغة الآلة مباشرة لبساطته وفي AVR يمكنك استخدام لغة سي عبر avr-gcc) وإذا كنت ستتعامل مع الإنسان (تستقبل الطلب عبر أزرار لتشغل أو تطفئ جهاز ما أو ضوء ما) فإن سرعته التي تصل إلى 20 مليون عملية في الثانية تعتبر أكثر من كافية ويمكنك استعمال وحدات خارجية modules أو shields لإنجاز ما هو أعقد من ذلك.

المتحكم الدقيق بالكاد يستطيع التخاطب عبر سرعات عالية مثلا لو كنت تريد توليد إشارات USB برمجيا داخل المتحكم الدقيق الذي لا يدعم USB فأنت بالكاد تستطيع عمل ذلك في طور أقل سرعة لناقل USB. وإن كنت تريد توليد إشارة VGA فقد تحتاج زيادة السرعة إلى 24 MHz وهي فوق التردد المنصوح به لمعالجات AVR وحتى لو وصلت إليها لن تكون النتائج كما تتوقع وطبعا لا داع أن نذكر أن HDMI تتطلب أضعاف ذلك التردد بكثير. وهناك أمثلة لتوليد DVI/HDMI من خلال FPGA.

في المقابل FPGA و CLPD أغلى بكثير من MCU وبرمجتها غالبا ما تكون معقدة حيث أن البناء Synthesis يحتاج أدوات خاصة من مصنع الرقاقة نفسه وهي ليست عيارية غالبا ما تكون مجانية لكنها ليست حرة مفتوحة المصدر. يمكن لدارات FPGA أن تعمل بسرعة تزيد عن 50 MHz لأرخص نوع وربما تزيد عن 500 MHz. وكذلك يمكنك تنفيذ أشياء بالتوازي.

بعد أن يثبت مشروعك جدواه الاقتصادية لا يمكنك الانتقال من uC إلى ASIC لكن يمكنك الانتقال من FPGA إلى ASIC لأن كليهما يستعملان Verilog أو VHDL

إليكم بعض المقالات ذات الصلة:

4


montassir
montassirمنذ سنة

, جزاك الله خيرا , استفدت كثيرا من مقالك

0

Test User