الاستبدال المحلي لـ ZYNQ عملياً: كم يتغير عند الانتقال من Xilinx ZYNQ إلى PBC7Z020G/021G
يستخدم التصميم الأصلي Xilinx Zynq-7000 (XC7Z020) لمخطط ARM برنامجاً وفمنطق FPGA لحظياً غير متجانس، ويحتاج الآن إلى التوطين. هل يعني تبديل الرقاقة إعادة كتابة المشروع كله أم تعديلات محلية فقط؟ يقسم المقال هجرة HWD7Z020 (المتوافق مع XC7Z020) إلى PBC7Z020G/021G إلى ثلاث طبقات: برنامج PS ومنطق PL والإقلاع وBSP، ويشرح حجم التغيير الفعلي والأجزاء القابلة لإعادة الاستخدام ونقاط الخطر.
1. لماذا نهاجر: من XC7Z020 إلى HWD7Z020 المحلي
قيمة ZYNQ أن شريحة واحدة تجمع نوى ARM Cortex-A9 ثنائية (PS، تشغيل برنامج النظام والشبكة ونظام الملفات) والمنطق القابل للبرمجة (PL، التنفيذ الموازي والتسريع البروتوكولي وIO اللحظي). حين يلزم توطين مشروع XC7Z020، الهدف ليس معمارية مختلفة تماماً بل بديل متوافق في مجموعة التعليمات والطرفيات وتدفق Vivado. يحمل PBC7Z020G شريحة HWD7Z020-1PBGA400 ويحمل PBC7Z021G HWD7Z020-1CLG484؛ كلاهما صناعي، نوى A9@800MHz ثنائية مع FPGA، متوافق أصلاً مع Vivado دون تصحيح، ومدى حرارة -55~125℃ واسع جداً.
قبل الهجرة اقسم المشروع إلى ثلاث طبقات وقدّر كل طبقة:
1. برنامج PS: برامج bare-metal ومهام FreeRTOS وتطبيقات Linux وتعريفاتها على A9.
2. منطق PL: RTL ونوى IP والقيود وتعيين الأرجل المكتوبة في Vivado، العامل في نسيج FPGA.
3. الإقلاع وBSP: صورة الإقلاع وإعداد تشغيل QSPI/eMMC/SD وشجرة الجهاز وحزمة دعم اللوحة.
2. هجرة برنامج PS: أعلى قابلية إعادة استخدام BSP
1. Bare-Metal وFreeRTOS: المشروع لا يتغير تقريباً
تستدعي مشاريع bare-metal وFreeRTOS واجهات طرفيات A9 (UART وGPIO والمؤقتات ووحدة المقاطعات) عبر BSP. تخطيط سجلات PS في HWD7Z020 متوافق مع XC7Z020، فتعريفات SDK/BSP قابلة لإعادة الاستخدام ولا يلزم إعادة كتابة كود التطبيق. تتركز التعديلات على إعادة توليد BSP تحت مكتبة الجهاز المحلي وإعادة الترجمة والتحقق من أرقام المقاطعات وإعداد الساعة. الحجم بالأيام لا بالشهور.
2. Linux: تعديلات محلية على شجرة الجهاز وU-Boot والنواة
في مشاريع PS لنظام Linux يتغير جانب PS أكثر من bare-metal لكنه ليس بداية من الصفر:
- شجرة الجهاز (DTS): أعد تعيين عقد طرفيات PS ووصلات PL من شجرة XC7Z020 إلى موصلات اللوحة الجديدة؛ واملأ سعة DDR3 وعرضها وأقسام eMMC/QSPI وعقد Ethernet/USB للوحة الجديدة.
- U-Boot والنواة: اقتص بالإعداد المتوافق مع XC7Z020؛ اضبط bootargs ومعدل باود الكونسول وتركيب rootfs؛ وأعد ترجمة التعريفات الذاتية واختبرها على الجهاز المحلي.
- طبقة التطبيق: خدمات المستخدم وبرامج الشبكة وخوارزميات الأعمال مستقلة عن الرقاقة وتُنقل مباشرة.
قدّر عرض نطاق DDR3 أولاً من إعداد اللوحة: يستخدمان DDR3 1GB ناقل 32بت بسرعة 1066Mbps؛ عرض البايت = 4B × 1066MT/s ≈ 4.26 جيجابايت/ث، يكفي للتحكم المدمج المعتاد ونقل الصور الخفيف فلا حاجة لتغيير المنصة بسبب العرض.
3. هجرة منطق PL: أعد تخطيط القيود بعد مطابقة الموارد
مقارنة موارد PL (فئة XC7Z020 مقابل HWD7Z020 / PBC7Z021G)
| المورد | فئة XC7Z020 | PBC7Z021G (HWD7Z020-1CLG484) | حكم الهجرة |
|---|---|---|---|
| خلايا المنطق | ~85K | 85K | نفس الفئة يتسع |
| LUT | ~53.2K | 53,200 | نفس الفئة |
| الفليب فلاوب | ~106K | 106,400 | نفس الفئة |
| مضاعفات DSP | 220 | 220 | نفس الفئة |
| Block RAM | 4.9Mb | 4.9Mb | نفس الفئة |
| IO المتاح في PL | — | 198 (مع 48 زوج LVDS و100 IO قابل للضبط بالجهد) | أعد التخطيط للموصلات الجديدة |
كود RTL السلوكي والمنطق التوافقي/التسلسلي الصافٍ ومعظم نوى IP (BRAM وFIFO وPLL/MMCM وAXI interconnect) تُجمّع مباشرة في التدفق المتوافق دون إعادة كتابة.
القيود وIP وإعادة تعيين الأرجل
بعد الانتقال من غلاف PBGA400 (020G، صغير 35×42mm) إلى 1CLG484 (021G، 60×60mm) تختلف الأرجل الفيزيائية وIO المُخرَج، فيجب إعادة تعيين ملف قيود XDC حسب موصلات اللوحة الجديدة؛ كما يُراجع شجرة الطاقة وتوجيه DDR3 والبلورات (021G: بلورة PS 33.33MHz وبلورة PL 50MHz) مع اللوحة الجديدة. إن استخدم IP كتلة صلبة خاصة بالبائع (بعض المرسلات ووحدات الأمان) تحقق من IP مكافئ لدى الجهاز المحلي؛ وإلا استبدله بـ RTL عام.
4. سلسلة الإقلاع وقائمة تنفيذ الأرض
أوضاع الإقلاع وصورة boot
يحجز PBC7Z021G JTAG بـ6 دبابيس ويدعم أوضاع JTAG/QSPS/SD عبر مفتاح DIP؛ ويستخدم PBC7Z020G موصلي Panasonic 120-pin وتغذية 5V. أنفذ الهجرة بالقائمة:
1. برنامج PS: أعِد توليد BSP وأعد ترجمة bare-metal/FreeRTOS واختبرهما؛ ولنظام Linux حدّث شجرة الجهاز وbootargs U-Boot وإعداد النواة.
2. منطق PL: جمّع المشروع الأصلي واكتب قيود XDC للغلاف الجديد وتحقق من توافق IP واختزال التوقيت.
3. إعداد الإقلاع: أكّد الوضع (تصحيح JTAG → إنتاج QSPI/SD) وابنِ boot.bin (FSBL وbitstream وشجرة الجهاز) وrootfs.
4. المدى الحراري والموثوقية: اللوحات المحلية -55~125℃ (020G/021G)؛ أجرِ دورات حرارية واختبار تشغيل طويل للحالة الهدف وأكد هامش الطاقة.
الاختيار: 020G / 021G / FPGA خالٍ حسب الحجم وIO
- بديل فائق الصغر (PBC7Z020G، ¥799): 35×42×5.5mm وموصلان 120-pin، لعقد مدمجة مصغّرة ضيقة المكان ذات منطق متوسط.
- إنتاج كامل الإخراج (PBC7Z021G، ¥999): 60×60mm وأربعة موصلات 80-pin و198 PL IO و48 زوج LVDS، موارد PS/PL مُخرَجة كاملة، للإنتاج الهندسي والتصاميم ذات IO خارجي أكثر.
- توسعة FPGA خالٍ بموارد كبيرة (PBC7K325G، ¥1,999): حين يحتاج جانب PL إلى مرسلات عالية السرعة أو منطق كبير (16 مسار GTX@12.5Gb/s و2GB DDR3 و326K خلية)، يتولى SoM محلي معمارية Kintex-7 مكملاً مخطط ZYNQ.
الاستبدال المحلي لـ ZYNQ ليس إعادة بناء: برنامج PS وطبقة التطبيق يُعاد استخدامهما أكثر ما يكون؛ ما تلمسه فعلاً هو إعادة تخطيط قيود PL للغلاف الجديد وتحديث شجرة الجهاز وصورة الإقلاع. قدّر PS وPL والإقلاع منفصلة؛ في التدفق المتوافق يحتاج المشروع إلى تعديل محلي فقط، ويتركز الخطر على توافق IP والانحدار الحراري الواسع فتُنفَّذ الهجرة وفق الخطة.
