جدول المحتويات:

كاميرا ZYBO OV7670 مع التحكم في الدوران / الإمالة: 39 خطوة (مع صور)
كاميرا ZYBO OV7670 مع التحكم في الدوران / الإمالة: 39 خطوة (مع صور)

فيديو: كاميرا ZYBO OV7670 مع التحكم في الدوران / الإمالة: 39 خطوة (مع صور)

فيديو: كاميرا ZYBO OV7670 مع التحكم في الدوران / الإمالة: 39 خطوة (مع صور)
فيديو: Video chroma-key overlay on FPGA 2024, يوليو
Anonim
Image
Image
كاميرا ZYBO OV7670 مع التحكم في الدوران / الإمالة
كاميرا ZYBO OV7670 مع التحكم في الدوران / الإمالة

ابدأ من الخطوة الأولى للحصول على التفاصيل حول إنشاء وحدة تحكم PWM مؤازرة ثنائية المحور.

ابدأ في مخطط الكتلة الضخم (الخطوة 19) للمشروع الكامل.

الكاميرا + إعداد عموم / إمالة استخدمنا:

تم استخدام PmodCON3 من Digilent لتوصيل الماكينات.

الخطوة 1: بناء وحدة PWM- ملف المصدر

الخطوة 2: بناء وحدة PWM- إعداد Vivado

بناء وحدة PWM- إعداد Vivado
بناء وحدة PWM- إعداد Vivado

أولاً ، قم بتنزيل موقع Vivado Design Suite من موقع Xilinx. قم بتثبيت كل مجموعة التصميم ، بما في ذلك Vivado Software Development Kit (SDK). يستخدم هذا المشروع إصدار 2017.2.

في غضون ذلك ، يجب أيضًا تثبيت Digilent Adept 2 كمشغل لوحة Zybo.

الخطوة الثالثة: بناء وحدة PWM- قم بإنشاء ملف مشروع

بناء وحدة PWM- إنشاء ملف مشروع
بناء وحدة PWM- إنشاء ملف مشروع

قبل إنشاء ملف مشروع ، يجب عليك التأكد من أنك قمت بالفعل بتثبيت ملف Zybo بشكل صحيح كبرنامج تعليمي هنا:

إصدار Vivado 2015.1 وتثبيت ملف اللوحة اللاحق

افتح Vivado 2017.2. في البداية السريعة ، انقر فوق إنشاء مشروع -> التالي -> اسم المشروع (قم بتسمية اسم مشروعك هنا) -> نوع المشروع. في نوع المشروع ، حدد مشروع RTL وضع علامة على "عدم تحديد المصادر في الوقت الحالي". بعد ذلك ، بالنسبة للجزء الافتراضي ، حدد "اللوحات" و "Zybo" كاسم العرض. بعد ذلك ، انقر فوق "إنهاء" لبدء المشروع.

الخطوة 4: إنشاء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (I)

بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (I)
بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (I)

في Flow Navigator ، انقر فوق "إنشاء قالب تصميم" ، ثم اضغط على موافق. انقر فوق علامة "+" لإضافة عناوين IP الضرورية. يضيف:

  • نظام معالجة واحد ZYNQ7 مزود بمؤقتان AXI
  • اثنان من الموقت AXI

الخطوة 5: إنشاء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (II)

بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (II)
بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (II)

بعد إضافة عناوين IP ، قم بتشغيل أتمتة الحظر وأتمتة الاتصال. بمجرد اكتمال الأتمتة ، على الكتلة “axi_timer_0” ، انقر بزر الماوس الأيمن على pwm0 -> Make External. قم بتسمية الدبوس الخارجي pwm0 كـ pwm_Xaxis. أيضًا ، كرر العملية المذكورة أعلاه على الكتلة “axi_timer_1” وقم بتسمية الدبوس الخارجي pwm0 كـ pwm_Zaxis.

الخطوة 6: إنشاء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (III)

بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (III)
بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (III)

لاحظ أنه في كل مرة عندما ننتهي من تصميم القوالب في Vivado ، نحتاج إلى إنشاء غلاف HDL. نظرًا لأنها ستكون وحدة المستوى الأعلى لكل مشروع.

الخطوة 7: إنشاء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (IV)

بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (IV)
بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (IV)

الآن ، نحتاج إلى إعداد ملف القيد الخاص بنا لتعيين دبابيس متصلة بمخطط الكتلة الخاص بنا. أغلق نافذة تصميم القوالب ، في علامة التبويب المصادر ، "إضافة مصادر" -> إضافة أو إنشاء قيود-> أضف Zybo-Master.xdc كملفات القيد الخاصة بنا.

الخطوة 8: إنشاء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (V)

بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (V)
بناء وحدة PWM - تصميم الكتلة وإعداد ملف القيد (V)

افتح ملف القيد Zybo-Master.xdc من مجلد Constraints ، وقم بإلغاء التعليق على المنافذ التي نريد تحديدها كإشارات إخراج وأعد تسمية "get_ports {XXXX}" ، والتي تشير XXXX إلى الدبوس الخارجي المسمى في مخطط الكتلة. يتم عرض إعداد ملف القيد في الشكل.

الخطوة 9: بناء وحدة PWM- تركيب الأجهزة

بناء وحدة PWM- تركيب الأجهزة
بناء وحدة PWM- تركيب الأجهزة

قم بتوصيل محركات المؤازرة بـ Pmod CON3. TowerPro SG90 هو نموذج المحرك المؤازر الذي استخدمناه في هذا المشروع. بالنسبة لأسلاك محرك المؤازرة ، يمثل السلك البرتقالي إشارة PWM ، المتصلة بدبوس SIG في Pmod CON3. السلك الأحمر Vcc هو سلك طاقة متصل بدبوس VS في Pmod CON3. أخيرًا ، السلك البني Gnd هو سلك أرضي متصل بدبوس GND. بعد ذلك ، أدخل Pmod CON3 في الصف العلوي من منفذ JD في لوحة Zybo.

الخطوة 10: إنشاء وحدة PWM- إنشاء Bitstream وتشغيل SDK

1. في علامة التبويب Project Navigator ، قم بتشغيل إنشاء BitStream.

2. تصدير الأجهزة: ملف> تصدير> تصدير الأجهزة-> وضع علامة على "تضمين دفق البت" -> موافق 3. قم بتشغيل SDK: ملف -> تشغيل SDK.

الخطوة 11: بناء وحدة PWM- قم بإنشاء تطبيق جديد في Xilinx SDK

بناء وحدة PWM- قم بإنشاء تطبيق جديد في Xilinx SDK
بناء وحدة PWM- قم بإنشاء تطبيق جديد في Xilinx SDK

إنشاء تطبيق جديد:

ملف> جديد> مشروع التطبيق -> أدخل اسم مشروعك -> إنهاء

ضمن Project Explorer ، يجب أن يكون هناك ثلاثة مجلدات.

في هذه الحالة ، "design_1_wrapper_hw_platform_0" هو المجلد الذي تم تصديره مسبقًا بواسطة Vivado. Axis_2_PWM_SDK_bsp هو مجلد حزمة دعم اللوحة. و Axis_2_PWM_SDK هو مجلد مشروعنا الرئيسي في SDK. يمكنك مشاهدة ملف "helloworld.c" ضمن مجلد "src" من Axis_2_PWM_SDK ، حيث يكون "helloworld.c" هو الملف الرئيسي.

الخطوة 12: بناء وحدة PWM- نظرة عامة على مستكشف المشروع (I)

بناء وحدة PWM- نظرة عامة على مستكشف المشروع (I)
بناء وحدة PWM- نظرة عامة على مستكشف المشروع (I)

دعنا نتحقق من بعض الملفات ضمن Project Explorer. أولاً ، في المجلد "design_1_wrapper_hw_platform_0" ، افتح "system.hdf". يوضح هذا الملف خريطة العنوان للمعالج ps7_cortex9 وكتل IP الموجودة في تصميمنا.

الخطوة 13: بناء وحدة PWM- نظرة عامة على مستكشف المشروع (II)

بناء وحدة PWM- نظرة عامة على مستكشف المشروع (II)
بناء وحدة PWM- نظرة عامة على مستكشف المشروع (II)

بعد ذلك ، تحقق من ملف "include" و "libsrc" ضمن مجلد "Axis_2_PWM_SDK_bsp". تمكننا ملفات المكتبة هنا من التفاعل مع الأجهزة الطرفية بدون "تشغيل" السجلات.

الخطوة 14: بناء وحدة PWM- نظرة عامة على مستكشف المشروع (III)

بناء وحدة PWM- نظرة عامة على مستكشف المشروع (III)
بناء وحدة PWM- نظرة عامة على مستكشف المشروع (III)

من خلال وثائق BSP ، تم العثور على xtmrctr.h كمكتبة Xilinx Timer Control Library المتعلقة بـ AXI Timer. عادة ، يمكننا العثور على وظيفة PWM المطلوبة هنا. ومع ذلك ، إذا قرأت الوثائق "tmrctr_v4_3" ، فإنها تُظهر أن برنامج التشغيل لا يدعم حاليًا تشغيل PWM للجهاز. نظرًا للنقص في وظيفة PWM ، يتعين علينا إنهاء وظيفة PWM الخاصة بنا بمساعدة xtmrctr.h و AXI Timer v2.0 LogiCORE IP Product Guide.

الخطوة 15: بناء وحدة PWM- تلخيص وظيفة PWM (I)

بناء وحدة PWM- تلخيص وظيفة PWM (I)
بناء وحدة PWM- تلخيص وظيفة PWM (I)

بالعودة إلى الملف الرئيسي "helloworld.c" ، قم بتضمين ملفات الرأس التالية:

الخطوة 16: بناء وحدة PWM- تلخيص وظيفة PWM (II)

بناء وحدة PWM- تلخيص وظيفة PWM (II)
بناء وحدة PWM- تلخيص وظيفة PWM (II)

حدد العناوين الأساسية لاثنين من TImer AXI من خلال "xparameters.h".

الخطوة 17: بناء وحدة PWM- تلخيص وظيفة PWM (III)

بناء وحدة PWM- تلخيص وظيفة PWM (III)
بناء وحدة PWM- تلخيص وظيفة PWM (III)

بناء وظيفة PWM المطلوبة.

Duty_val: يحول قيمة الدرجة إلى دورة عمل. PWM_Freq_Duty: اضبط التردد المطلوب ودورة العمل لتوليد PWM. يجب أيضًا تخصيص فترة الساعة.

PWM_START: قم بتعيين عنوان سجل PWM وابدأ في إنشاء PWM.

PWM_STOP: قم بتعيين عنوان سجل PWM وتوقف عن توليد PWM.

يتم عرض باقي الكود التجريبي في "helloworld.c" ضمن "Axis_2_PWM_SDK"

الخطوة 18: بناء وحدة PWM - اجعلها تعمل

1. برمجة FPGA من خلال SDK

  • قم بتوصيل Zybo Board من خلال منفذ USB بجهاز الكمبيوتر.
  • أدوات Xilinx -> برنامج FPGA

2. قم بتشغيل البرنامج

انقر فوق رمز "تشغيل" والقائمة المنسدلة -> تشغيل باسم -> تشغيل على الأجهزة

3. SDK Terminal

  • افتح SDK Terminal -> Connect to Serial Port -> OK
  • تشغيل البرنامج. إذا تم تشغيل الكود التجريبي بنجاح ، يجب أن ترى "تم التهيئة!" على طرف SDK.

الخطوة 19: دفق معالجة الفيديو على Digilent ZYBO مع OV7670

مرفق ملف أرشيف كامل.

الخطوة 20: إكمال مخطط الكتلة

مخطط كتلة كامل
مخطط كتلة كامل

يعرض هذا الرسم التخطيطي الكامل لجميع الاتصالات وكتل IP في المشروع

الخطوة 21: قم بتوصيل OV7670 بـ ZYBO

قم بتوصيل OV7670 بـ ZYBO
قم بتوصيل OV7670 بـ ZYBO

قم بإنشاء اتصال بسلك وحدة ov7670 إلى ZYBO Pmods

البيانات Pmod هي Pmod D

التحكم Pmod هو Pmod C

بالإضافة إلى ذلك ، قم بتوصيل PmodCON3 و servos كما هو محدد في النصف الأول من هذا البرنامج التعليمي

الخطوة 22: إنشاء تصميم بلوك

إنشاء تصميم بلوك
إنشاء تصميم بلوك

في Flow Navigator ، انقر فوق "إنشاء قالب تصميم" ، ثم اضغط على "موافق".

الخطوة 23: إضافة ملفات VHDL للتحكم والتقاط الكاميرا OV7670

أضف ملفات VHDL المرفقة بهذه الخطوة إلى المشروع

الخطوة 24: قم بإضافة ملف القيود

أضف ملف القيود المرفق إلى مشروعك.

الخطوة 25: إضافة IP Repo لـ HLS IP

إضافة IP Repo لـ HLS IP
إضافة IP Repo لـ HLS IP

خذ ملف Zip المرفق وفك ضغطه في مجلد جديد يسمى بالمثل في دليل (مجلد) جديد يسمى "HLS_repo".

أضف مستودع IP إلى مشروعك بالانتقال إلى كتالوج IP والنقر بزر الماوس الأيمن فوق تحديد "Add Repository …"

انتقل إلى دليل "HLS_repo" وحدده.

اختياري: قم بإنشاء كتلة معالجة فيديو HLS بنفسك!

الخطوة 26: أضف الوحدات النمطية و IP

أضف الوحدات النمطية و IP
أضف الوحدات النمطية و IP
أضف الوحدات النمطية و IP
أضف الوحدات النمطية و IP

أضف وحدات ov7670_axi_stream_capture و debounce و ov7670_controller إلى مخطط الكتلة عن طريق النقر بزر الماوس الأيمن فوق الخلفية وتحديد "إضافة وحدة …"

وبالمثل ، أضف عناوين IP:

  • HLS_Video_Track
  • كتابة المخزن المؤقت لإطار الفيديو
  • قراءة المخزن المؤقت لإطار الفيديو
  • تحكم توقيت الفيديو
  • AXI4- دفق إلى مخرج الفيديو
  • 3 من "شريحة"
  • ثابت
  • 2 من AXI Timer

الخطوة 27: إعدادات تكوين IP

إعدادات تكوين IP
إعدادات تكوين IP
إعدادات تكوين IP
إعدادات تكوين IP
إعدادات تكوين IP
إعدادات تكوين IP

كما هو موضح بالصور

الخطوة 28: إضافة وتكوين PS IP Block

إضافة وتكوين PS IP Block
إضافة وتكوين PS IP Block
إضافة وتكوين PS IP Block
إضافة وتكوين PS IP Block

أضف نظام المعالجة ZYNQ7 إلى مخطط الكتلة

تحرير التكوين:

  • تكوين PS-PL

    • HP

      • قم بتمكين S HP 0
      • قم بتمكين S HP 1
  • تكوين الساعة

    • ساعات قماش PL

      • FCLK_0 بسرعة 100 ميجا هرتز
      • FCLK_1 بسرعة 25 ميجاهرتز (OutputClock)
      • FLCK_2 بسرعة 35 ميجاهرتز (<= 50 ميجاهرتز) (CameraClock)

الخطوة 29: الجزء 1. بناء وحدة PWM للمحركات المؤازرة

قم بإخراج axi_timer_0 pwm0 إلى منفذ الإخراج الجديد pwm_Xaxis

قم بإخراج axi_timer_1 pwm0 إلى منفذ الإخراج الجديد pwm_Zaxis

الخطوة 30: الاتصالات الجانبية لإدخال الفيديو (مميز باسم aclk)

وصلات إدخال الفيديو الجانبية (مميز باسم aclk)
وصلات إدخال الفيديو الجانبية (مميز باسم aclk)

قم بتوصيل كتل IP الجانبية لإدخال الفيديو بشكل صحيح

(* يجب إنشاء هذه الاتصالات عن طريق تحديد الخيارات الصحيحة أثناء أتمتة الاتصال) ينتقل "aclk" من axi_stream_capture إلى:

  • ap_clk على كتابة المخزن المؤقت لإطار الفيديو
  • ap_clk على كتلة معالجة دفق الفيديو HLS
  • * aclk على AXI smartconnect IP من Video Frame Buffer اكتب إلى S_AXI_HP0
  • * ACLK المطابق لقنوات AXI Interconnect IP لقنوات S_AXI لكتلة معالجة الفيديو HLS وكتابة المخزن المؤقت لإطار الفيديو S_AXI_HP0_ACLK على كتلة PS

يتم توصيل إشارة دفق الفيديو ببساطة في سلسلة من كتلة الالتقاط إلى واجهة ذاكرة Zynq.

  • ينتقل الفيديو من كتلة الالتقاط إلى كتلة معالجة HLS.
  • ينتقل الفيديو المعالج من كتلة HLS إلى كتلة كتابة المخزن المؤقت للإطار.
  • * تتصل كتلة الكتابة في المخزن المؤقت للإطار بواجهة HP0 على كتلة Zynq PS.
  • يتم توصيل إشارة m_axis_tuser من خرج كتلة الالتقاط يدويًا إلى إشارة إدخال video_in_TUSER على كتلة معالجة HLS وإشارة ap_start على نفس الكتلة.

يتم استخدام إشارة TUSER (tuser) بواسطة بروتوكول دفق الفيديو AXI للإشارة إلى بداية إطار الفيديو. يخبر AP_Start كتلة HLS ببدء المعالجة ، وبالتالي فإننا نستخدم tuser لتشغيل كتلة HLS لمعالجة كل إطار كما هو يأتي. عند توصيل إشارة واحدة للحافلة وتقسيمها بهذه الطريقة ، من الضروري أيضًا توصيلها بنقطة النهاية العادية لبقية الحافلة. يفترض Vivado أنه إذا كنت تقوم بتوصيل الإشارة يدويًا ، فأنت تريد فصل ما يتصل به عادةً.

إعدادات تكوين كتل IP:

كتابة المخزن المؤقت لإطار الفيديو:

تنسيقات الفيديو: RGB8

عينة واحدة لكل ساعة الحد الأقصى للأعمدة: 1280 (> = 640) الحد الأقصى للصفوف: 960 (> = 480) أقصى عرض للبيانات: 8

الخطوة 31: التوصيلات بـ OV7670

اتصالات بـ OV7670
اتصالات بـ OV7670

على كتلة ov7670_axi_stream_capture

  • اجعل جميع المدخلات خارجية (انقر بزر الماوس الأيمن على دبوس واختر من القائمة ، أو انقر بزر الماوس الأيسر-> ctrl + T)
  • اترك الأسماء كما هي

على كتلة ov7670_controller

  • اجعل كل مخرجات الكتلة خارجية
  • أعد تسمية منفذ config_finished إلى led0
  • قم بتوصيل clk إلى CameraClock (<= 50 ميجا هرتز) (FCLK_2)

على كتلة debounce

  • قم بتوصيل إدخال button1 بمنفذ إدخال خارجي يسمى btn0
  • قم بتوصيل out1 بخط إعادة الإرسال على كتلة ov7670_controller IP
  • قم بتوصيل إدخال button2 بمنفذ إدخال خارجي يسمى btn3
  • قم بتوصيل out2n بإدخال ext_reset_in على عنوان IP الخاص بإعادة تعيين نظام المعالج لمجال ساعة التقاط الفيديو. (* قد يلزم القيام بذلك بعد إنشاء عنوان IP هذا *)
  • قم بتوصيل clk إلى CameraClock (<= 50 ميجا هرتز) (FCLK_2)

الخطوة 32: اتصالات على Video Out Side

التوصيلات على مخرج الفيديو
التوصيلات على مخرج الفيديو
التوصيلات على مخرج الفيديو
التوصيلات على مخرج الفيديو
التوصيلات على مخرج الفيديو
التوصيلات على مخرج الفيديو
التوصيلات على مخرج الفيديو
التوصيلات على مخرج الفيديو

اتصالات للكتل Video Timing Controller (VTC) ، AXI4-Stream to Video Out ، والشرائح

  • استخدم ساعة 25 ميجاهرتز (FCLK_1) لـ vid_io_out_clk و VTC clk
  • استخدم ساعة 100 ميجاهرتز (FCLK_0) لـ aclk على AXI4-Stream to Video Out
  • vtiming_out إلى vtiming_in
  • قراءة المخزن المؤقت لإطار الفيديو ينتقل m_axis_video إلى AXI4-Stream to Video Out video_in
  • ينتقل vtg_ce إلى gen_clken
  • ربط VTC clken ، aclken ، vid_io_out_ce بالنقطة الثابتة [0: 0]
  • قم بإحضار vid_hsync و vid_vsync إلى منافذ الإخراج الخارجية vga_hs و vga_vs ، على التوالي. (غير مصور)

شرائح:

  • يجب إعداد الشرائح كما هو موضح في الصور المرفقة

    • أعد تسمية الكتل إلى slice_red و slice_green و slice_blue
    • نطاقات شريحة الإعداد كما هو موضح في الصور حسب اسم الكتلة
    • قم بتوصيل كل مخرج شريحة بمخرج منفذ خارجي كما هو موضح في الصورة.
  • vid_data [23: 0] يتصل بمدخلات كل شريحة (Din [23: 0])

الخطوة 33: قم بتشغيل Block and Connection Automation

قم بتشغيل Block and Connection Automation
قم بتشغيل Block and Connection Automation
قم بتشغيل Block and Connection Automation
قم بتشغيل Block and Connection Automation
قم بتشغيل Block and Connection Automation
قم بتشغيل Block and Connection Automation

قم بتشغيل Block Automation لتوصيل الأشياء من كتلة ZYNQ7 PS. كما هو موضح بالصورة.

قم بتشغيل أتمتة الاتصال لإنشاء كافة عناوين IP الخاصة بالتوصيل البيني. انتبه جيدًا لجميع الخيارات في كل صورة.

في كتلة debounce ، قم بتوصيل out2n بإدخال نظام معالجة نطاق ساعة التقاط الفيديو ، إعادة تعيين إدخال ext_reset_in.

الخطوة 34: إنشاء غلاف HDL

إنشاء غلاف HDL
إنشاء غلاف HDL

قم بإنشاء غلاف HDL لتصميم الكتلة الخاصة بك.

اضبطها على أنها الوحدة العلوية.

الخطوة 35: إنشاء Bitstream وتصدير الأجهزة إلى SDK وتشغيل SDK من Vivado

تأكد من تضمين دفق البت في التصدير.

قد يستغرق إنشاء دفق البتات وقتًا طويلاً جدًا.

ثم قم بتشغيل SDK

الخطوة 36: SDK (بدون FreeRTOS)

SDK (بدون FreeRTOS)
SDK (بدون FreeRTOS)

يقوم هذا الإصدار بكل شيء دون استخدام FreeRTOS ، مما يؤدي إلى تكثيف الكود بشكل جيد.

قم بإنشاء BSP مستقل بناءً على تصميم الأجهزة. يجب أن تكون الخيارات الافتراضية جيدة. تأكد من إنشاء مصادر BSP.

قم بإنشاء التطبيق كما هو موضح في الصورة. (تطبيق فارغ)

احذف الرئيسي الذي تم إنشاؤه تلقائيًا واستورد الملفات المرفقة.

الخطوة 37: تنفيذ FreeRTOS

تطبيق FreeRTOS
تطبيق FreeRTOS

هذا الإصدار يستخدم FreeRTOS. أنشئ FreeRTOS901 BSP بناءً على تصميم الأجهزة. يجب أن تكون الخيارات الافتراضية جيدة. تأكد من إنشاء مصادر BSP.

قم بإنشاء التطبيق كما هو موضح في الصورة. (تطبيق فارغ)

احذف الرئيسي الذي تم إنشاؤه تلقائيًا واستورد الملفات المرفقة.

الخطوة 38: تعليمات الاستخدام

هذا المشروع صعب بعض الشيء للتشغيل. اتبع الخطوات بالترتيب.

تأكد من أن ZYBO الخاص بك لا يقوم بتحميل أي شيء ذاتيًا عند تشغيله. هذا يعني أنه يجب ألا يضيء مؤشر Done LED. تتمثل إحدى طرق القيام بذلك في ضبط وصلة مصدر التمهيد على JTAG.

افتح المشروع (FreeRTOS أم لا) الذي تريد برمجته من SDK

  1. قم بتشغيل ZYBO. يجب ألا يضيء مؤشر Done LED.
  2. برمجة FPGA مع ملف بت. يجب أن يضيء مؤشر Done LED. يجب ألا تضيء Led0.
  3. قم بتشغيل الكود (تذكر تجاوز نقطة توقف البداية إذا كنت تفعل ذلك).

في هذه المرحلة ، يجب أن تحصل على إخراج على شاشة VGA الخاصة بك.

لإعادة التشغيل (إذا كان هناك أخطاء أو أي شيء آخر): اضغط بسرعة على زر PS-SRST أو أوقف تشغيل ZYBO ثم أعد تشغيله. تابع من الخطوة 2.

سيؤدي إيقاف المعالج باستخدام مصحح الأخطاء إلى تثبيت الكاميرا في موضعها بدلاً من تحريكها. سيستمر دفق الفيديو على أي حال.

الخطوة 39: المراجع والروابط

أدلة مرجعية ووثائق Xilinx:

  • PG044 - دفق AXI إلى مخرج الفيديو
  • PG278 - قراءة / كتابة المخزن المؤقت لإطار الفيديو

روابط أخرى:

  • مدونة لوري - إدخال VDMA
  • مدونة Lauri - إخراج OV7670 إلى VGA باستخدام BRAM
  • Hamsterworks wiki ، بواسطة Mike Fields ، المصدر الأصلي لرمز OV7670
  • ورقة بيانات توضح مواصفات التوقيت الأساسية

موصى به: