نمذجة سطح الماء باستخدام معالج FFT و NeuroMatrix DSP

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

عندما تم تكليفي بتطوير تطبيق لمعالج DSP يتصور تشغيل FFT ، أدركت أن نمذجة الموجة مثالية لهذا الغرض.


نموذج رياضي للموجة

يمكن وصف الفكرة الأساسية لنموذج رياضي لموجة بواسطة التعبير:
 mathbfH= FFT2D (  mathbf widetildeH) ، يُشار إلى FFT2D كمشغل لـ FFT ثنائي الأبعاد.

 mathbfHهو مجال مرتفعات سطح الماء (حجم المصفوفة n1×n2أين n1و n2يمكن أن تأخذ قيم سلطات اثنين). عناصر هذه المصفوفة هي ارتفاعات الأمواج.

 mathbf widetildeH- إشارة (حجم المصفوفة n1×n2) ، تم إنشاؤها وفقًا لقانون معين ووفقًا للوقت.

 mathbf widetildeH= mathbf widetildeH0. mathbfA+ overline mathbf widetildeH0. overline mathbfAحيث عناصر المصفوفة  mathbfAإنه كذلك $ inline $ e ^ {iω_ {ij} t} = cos⁡ (ω_ {ij} t) + isin (ω_ {ij} t) $ مضمنة $ ، والمصفوفة  overline mathbfA- مترافق معقد  mathbfAمصفوفة i=0،1،...n1،j=0،1،...n2

ωijهي عناصر مصفوفة  Large mathbfω.

.- ضرب المصفوفة عنصرياً.

 mathbf widetildeH0- مجال الارتفاعات في اللحظة الأولى t = 0.

 overline mathbf widetildeH0- مترافق معقد  mathbf widetildeH0مصفوفة (الحجم n1×n2)

لإنشاء رسم متحرك لحركة الأمواج في الوقت الحقيقي ، من الضروري إعادة حساب المصفوفة  mathbf widetildeHو  mathbfHتغيير ر . المصفوفات  mathbf widetildeH0،  overline mathbf widetildeH0و  Large mathbfωيتم حسابها مرة واحدة وإعادة استخدامها.

الآن دعنا ننتقل إلى وصف معالج DSP ، والذي ، بناءً على الصيغ أعلاه ، يحتاج إلى أن يكون قادرًا على:

  1. حساب FFT.
  2. ضرب المصفوفات عنصر بعنصر.
  3. أضف المصفوفات.
  4. حساب ناقلات الجيب وجيب التمام.

كمعالج DSP ، تم استخدام 1879VM6Ya بناءً على بنية NeuroMatrix ، التي طورها المركز العلمي والتقني "Module" CJSC. الدائرة في الشكل 1.

يحتوي المعالج على نوى تشغيل متوازيين NMPU0 و NMPU1 (يعمل بتردد 500 ميجاهرتز) ، يحتوي كل منهما على معالج RISC ومعالج متجه (NMCore FPU للنقطة العائمة و NMCore INT للحساب الصحيح). نواة NMPU0 مخصصة لمعالجة بيانات الفاصلة العائمة ، و NMPU1 للبيانات الصحيحة. يحتوي NMPU0 على 8 بنوك SRAM داخلية (128 كيلوبايت لكل منها) ، و NMPU1 به ​​4 بنوك (128 كيلوبايت) من نفس الذاكرة. في 1879VM6Ya ، يتم تثبيت وحدة تحكم DMA وواجهة DDR2.

الصورة

التين. 1. مخطط المعالج 1879VM6YA

يقع المعالج على وحدة العدادات MC121.01 (انظر الشكل 2). تحتوي هذه الوحدة أيضًا على 512 ميجابايت من ذاكرة DDR2.

الصورة
الشكل 2. MS121.01



التين. 3. مخطط تفاعل MC121.01 و PC

يتفاعل MC121.01 مع الكمبيوتر عبر USB (الرسم التخطيطي في الشكل 3). على مستوى البرامج ، يتم تنظيم هذا التفاعل باستخدام مكتبة التنزيل وتبادل البيانات ، والتي تعد جزءًا من SDK لهذه اللوحة. مصفوفات ما قبل الحوسبة  mathbf widetildeH0،  overline mathbf widetildeH0و  Large mathbfωيتم تحميلها في ذاكرة DDR2 من خلال وظائف مكتبة التنزيل والتبادل. نسخ وحدة تحكم DMA  mathbf widetildeH0،  overline mathbf widetildeH0و  Large mathbfωسطرا بسطر في الذاكرة الداخلية (SRAM) للمعالج. التنزيل إلى DDR2 يرجع إلى حقيقة أن أيا من هذه المصفوفات لا تتناسب تمامًا مع SRAM. يتم النسخ سطرا بسطر هنا ، لأن 1879BM6Ya يحسب من SRAM بشكل أسرع من DDR2. علاوة على ذلك ، يمكن إجراء جزء كبير من الحسابات على خلفية DMA.

باستخدام وظائف المتجه لمكتبة NMPP لحساب الجيوب وجيب التمام والضرب وإضافة المتجهات ، يقوم المعالج بحساب صفوف المصفوفة  mathbf widetildeHويأخذ منها FFT أحادي البعد. يتم إرسال النتيجة بواسطة DMA إلى DDR2. لذلك في DDR2 يتم تكوين مصفوفة وسيطة ، من أعمدتها يقوم المعالج بحساب FFT أحادي البعد (بعد تحميل أعمدة المصفوفة الوسيطة بواسطة DMA إلى SRAM). وهكذا ، يتم تكوين مصفوفة في DDR2  mathbfH. يتم تنزيل هذه المصفوفة على جهاز الكمبيوتر لرسم إطار واحد مع صورة سطح الموجة. لتحريك الصورة في الوقت الحقيقي ، تحتاج إلى حساب المصفوفة وفقًا للخوارزمية الموضحة أعلاه  mathbfHعن طريق زيادة المعلمة ر .

من الناحية العملية ، اتضح أن 18796 يحسب المصفوفة  mathbfHأسرع من الكمبيوتر يفرغه. وبسبب هذا ، قد يكون المعالج خاملاً ، في انتظار أن يلتقط الكمبيوتر الدفعة التالية من البيانات. كان من الممكن حل هذه المشكلة باستخدام المخزن المؤقت الحلقي (الذي يحتوي على عدة مصفوفات  mathbfH) منظمة في لوحة ذاكرة DDR2.

على مستوى البرنامج ، يتم العمل مع وحدة تحكم DMA والمخزن المؤقت الحلقي باستخدام وظائف مكتبة HAL (مستوى تجريد الأجهزة) لمعالجات NeuroMatrix.

تصور سطح الموجة

عندما DEM  mathbfHتحميلها في ذاكرة الكمبيوتر ، يمكنك تصور السطح. لعرضه بشكل أكثر وضوحًا ، تحتاج إلى تنسيق x ، y ، z ، مع وصف النقاط على السطح ، مضروبًا في مصفوفة الدوران . لذا نحصل على الإحداثيات الجديدة للسطح x '، y'، z '، ونحوله بزاوية معينة.

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


الخلاصة

في الختام ، أود أن أقول إن الحساب ونقل مصفوفة واحدة عبر USB  mathbfHمع حجم 256x256 رقم عائم ، يتم إنفاق 4.7 مليون دورة ساعة تقريبًا (72 دورة ساعة لكل تعويم). معدل الإطار ~ 107. إذا كنت لا تأخذ في الاعتبار الوقت المستغرق لنقل البيانات عبر USB ، فستكلف الحسابات ~ 2.5 مليون دورة (38 دورة لكل تعويم). هذا هو إجمالي الوقت الذي يقضيه المعالج 18796 في الضرب بالعناصر وإضافة المصفوفات وحساب FFT والجيب وجيب التمام والنسخ باستخدام DMA. يتم إجراء هذه الحسابات على خلفية نقل بيانات USB.

يشير الفرق بين 2.2 مليون دورة ساعة (4.7 مليون - 2.5 مليون = 2.2 مليون) إلى أن USB في نظام PC-MC121.01 هو "عنق الزجاجة" ، ويمكن تحميل 1879VM6YA بحسابات بنسبة 46٪ أكثر دون تلقي سحب FPS.

أود أيضًا أن أشير إلى أنه على خلفية نقل بيانات USB والحسابات على معالج مشترك لنقطة عائمة ، يمكن استخدام معالج مشترك للحساب الصحيح ، الذي لم يتم استخدامه في هذه المهمة.

يوضح الجدول أداء بعض وظائف المتجه لمكتبة nmpp.
الوظيفةالحانات
FFT أحادي البعد ، 256 نقطة1770
جيب 256 نقطة1400
جيب التمام ، 256 نقطة1400


المراجع:

NMPP - مكتبة البدائيين لهندسة NeuroMatrix
HAL - مكتبة التجريد NeuroMatrix المعتمدة على الأجهزة
VSHELL - مكتبة معالجة الصور وعرضها

Source: https://habr.com/ru/post/ar419161/


All Articles